my emacs fav config

(setenv "PATH" (concat "/usr/local/bin:"(getenv "PATH") ))
(setenv "GOPATH" "/Volumes/untitled/sgt/fpj/src/go")

; misc
(turn-on-font-lock)
(setq default-truncate-lines 1)
(set-background-color "black")
(set-foreground-color "white")
(set-cursor-color "white")
(setq-default indent-tabs-mode nil)

; hide tool bar
(tool-bar-mode -1)

; set misc
;(setq default-directory "z:/projects")

(load-file "/Applications/Emacs.app/Contents/Resources/lisp/graphviz-dot-mode.el")

; modes
;(add-to-list 'load-path "D:/usr/emacs-22.3/lisp/progmodes")
;php mode
;(load "php-mode")
;(add-to-list 'auto-mode-alist '("\.php[34]?\'\|\.phtml\'" . php-mode))

;(autoload 'flex-mode "flex-mode" nil t)
(require 'godot-gdscript)
;(add-to-list 'auto-mode-alist (cons (purecopy "\.gd\'") 'godot-gdscript-mode))
;(add-to-list 'interpreter-mode-alist (cons (purecopy "godot-gdscript[0-9.]*") 'godot-gdscript-mode))

;flex mode
(autoload 'flex-mode "flex-mode" nil t)
(add-to-list 'auto-mode-alist '("\.l$" . flex-mode))

;bison mode
(autoload 'bison-mode "bison-mode" nil t)
(add-to-list 'auto-mode-alist '("\.y$" . bison-mode))

;javascript mode
(autoload 'javascript-mode "js2" nil t)
(add-to-list 'auto-mode-alist '("\.js$" . javascript-mode))

;;actionscript mode
;; actionscript
; "Symbol's value as variable is void: running-on-x"といわれたので。
; via http://blog.pettomato.com/content/site-lisp/.emacs
(defvar running-on-x (eq window-system 'x))
(autoload 'actionscript-mode "actionscript-mode" "Major mode for actionscript." t)
;; Activate actionscript-mode for any files ending in .as
(add-to-list 'auto-mode-alist '("\.as$" . actionscript-mode))
;; Load our actionscript-mode extensions.
(eval-after-load "actionscript-mode" '(load "as-config"))

;(autoload 'actionscript-mode "actionscript-mode"
;"Major mode for editing ActionScript files." t)
;(add-to-list 'auto-mode-alist '("\.as[123]?$" . actionscript-mode))

;; actionscript
;(autoload 'actionscript-mode "actionscript-mode" "Major mode for actionscript." t)
;(add-to-list 'auto-mode-alist '("\.as$" . actionscript-mode))
;(eval-after-load "actionscript-mode" '(load "actionscript-config"))

;sgml mode
(add-to-list 'hs-special-modes-alist
'(sgml-mode
"<!--\|<[^/>]*[^/]>" ;; regexp for start block
"-->\|</[^/>]*[^/]>" ;; regexp for end block
"<!--" ;; regexp for comment start. (need this??)
sgml-skip-tag-forward
nil))


(put 'upcase-region 'disabled nil)

(put 'downcase-region 'disabled nil)

(setq c-default-style "bsd"
c-basic-offset 4)

;cg-mode
(setq load-path (cons "/Applications/Emacs.app/Contents/Resources/lisp/" load-path))
(require 'cg-mode)

;csharp
(autoload 'csharp-mode "csharp-mode" "Major mode for editing C# code." t)
(setq auto-mode-alist
(append '(("\.cs$" . csharp-mode)) auto-mode-alist))

;glsl
(autoload 'glsl-mode "glsl-mode" nil t)
(add-to-list 'auto-mode-alist '("\.glsl\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\.vert\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\.frag\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\.geom\'" . glsl-mode))

;;povray
;(add-to-list 'load-path "C:/Program Files/emacs-22.3/lisp/pov-mode-3.2")
;(autoload 'pov-mode "pov-mode" "PoVray scene file mode" t)
;(add-to-list 'auto-mode-alist '("\.pov\'" . pov-mode))
;(add-to-list 'auto-mode-alist '("\.inc\'" . pov-mode))
;
;;rib
;(add-to-list 'load-path "C:/Program Files/emacs-22.3/lisp/progmodes")
;(autoload 'rib-mode "rib-mode" "renderman scene file mode" t)
;(add-to-list 'auto-mode-alist '("\.rib\'" . rib-mode))
;
;;rls
;(autoload 'rsl-mode "rsl-mode" "renderman shader language mode" t)
;(add-to-list 'auto-mode-alist '("\.sl\'" . rsl-mode))
;(custom-set-variables
; ;; custom-set-variables was added by Custom.
; ;; If you edit it by hand, you could mess it up, so be careful.
; ;; Your init file should contain only one such instance.
; ;; If there is more than one, they won't work right.
; '(current-language-environment "UTF-8")
; '(tool-bar-mode nil))
;(custom-set-faces
; ;; custom-set-faces was added by Custom.
; ;; If you edit it by hand, you could mess it up, so be careful.
; ;; Your init file should contain only one such instance.
; ;; If there is more than one, they won't work right.
; )
;
;;;(defun copy-word (&optional arg)
;;; "Copy words at point into kill-ring"
;;; (interactive "P")
;;; (copy-thing 'backward-word 'forward-word arg)
;;; ;;(paste-to-mark arg)
;;; )
;
(defun copy-word (&optional arg)
"Copy words at point"
(interactive "P")
(let ((beg (progn (if (looking-back "[a-zA-Z0-9\_-]" 1) (backward-word 1)) (point)))
(end (progn (forward-word arg) (point))))
(copy-region-as-kill beg end))
)

(global-set-key (kbd "C-c w") (quote copy-word))


(defun copy-paragraph (&optional arg)
"Copy paragraphes at point"
(interactive "P")
(let ((beg (progn (backward-paragraph 1) (point)))
(end (progn (forward-paragraph arg) (point))))
(copy-region-as-kill beg end))
)

(global-set-key (kbd "C-c p") (quote copy-paragraph))


(defun get-point (symbol &optional arg)
"get the point"
(funcall symbol arg)
(point))

(defun copy-thing (begin-of-thing end-of-thing &optional arg)
"copy thing between beg & end into kill ring"
(save-excursion
(let ((beg (get-point begin-of-thing 1))
(end (get-point end-of-thing arg)))
(copy-region-as-kill beg end))))

(defun paste-to-mark(&optional arg)
"Paste things to mark, or to the prompt in shell-mode"
(let ((pasteMe
(lambda()
(if (string= "shell-mode" major-mode)
(progn (comint-next-prompt 25535) (yank))
(progn (goto-char (mark)) (yank) )))))
(if arg
(if (= arg 1)
nil
(funcall pasteMe))
(funcall pasteMe))))

;;; "[()\,.;&-<>"[]={}]"
(defun beginning-of-string(&optional arg)
" "
(re-search-backward "[ ()\,.;&-<>"={}]" (line-beginning-position) 3 1)
(if (looking-at "[ ()\,.;&-<>"={}]") (goto-char (+ (point) 1)) ))


(defun end-of-string(&optional arg)
" "
(re-search-forward "[ ()\,.;&-<>"={}]" (line-end-position) 3 arg)
(if (looking-back "[ ()\,.;&-<>"={}]") (goto-char (- (point) 1)) ))

(defun thing-copy-string-to-mark(&optional arg)
" Try to copy a string and paste it to the mark
When used in shell-mode, it will paste string on shell prompt by default "
(interactive "P")
(copy-thing 'beginning-of-string 'end-of-string arg))

(global-set-key (kbd "C-c s") (quote thing-copy-string-to-mark))

(defun copy-line (&optional arg)
"Save current line into Kill-Ring without mark the line "
(interactive "P")
(copy-thing 'beginning-of-line 'end-of-line arg))

(global-set-key (kbd "C-c l") (quote copy-line))

; header
; save
;;(autoload 'auto-update-file-header "header2")
;;(add-hook 'write-file-hooks 'auto-update-file-header)

; insert new
(autoload 'auto-make-header "header2")
(add-hook 'c-mode-common-hook 'auto-make-header)
(add-hook 'python-mode-hook 'auto-make-header)
(add-hook 'go-mode-hook 'auto-make-header)

(add-to-list 'load-path "/Applications/Emacs.app/Contents/Resources/lisp/")
(require 'go-mode-autoloads)

原文地址:https://www.cnblogs.com/mweiguo/p/3198570.html