emacs 开发环境 lisp erlang golang
代码主题
;; ----------------------------- color theme ----------------------------- ;; (add-to-list 'load-path "C:/Program Files/emacs/plugins/color theme/") (require 'color-theme) (color-theme-initialize) (color-theme-oswald)
全局配置
;; ----------------------------- global config ----------------------------- ;; (custom-set-variables '(tool-bar-mode nil)) ;; -*- 删除工具栏 -*- (custom-set-faces '(default ((t (:family "Monaco"))))) ;; -*- 设置字体 -*- (global-linum-mode t) ;; -*- 显示行号 -*- (setq default-make-backup-files nil) ;; -*- 不自动备份 -*- (setq default-frame-alist '((width . 160) (height . 40))) ;; -*- 设置窗体大小 -*- (set-frame-parameter (selected-frame) 'alpha '(85 85)) ;; -*- 设置透明度 -*- (setq inhibit-startup-screen t) ;; -*- 启动界面 -*- (setq default-buffer-file-coding-system 'utf-8-unix) ;; -*- 设置文件编码 -*- (set-terminal-coding-system 'utf-8-unix) ;; -*- 设置终端编码 -*- (set-keyboard-coding-system 'utf-8-unix) ;; -*- 设置输入编码 -*- (setq-default indent-tabs-mode nil tab-always-indent nil tab-width 4) ;; -*- 使用空格代替缩进 -*- (setq default-directory "~/Desktop") ;; -*- 默认路径 -*- (show-paren-mode t) ;; -*- 显示括号匹配, 而不是匹配后短暂的跳到另一个括号 -*- (setq show-paren-style 'parentheses) ;; -*- 显示括号匹配样式 -*- (setq-default kill-whole-line t) ;; -*- 使用 C-k 删除整行 -*- (defalias 'yes-or-no-p 'y-or-n-p) ;; -*- 不要问 yes-or-no,只问 y-or-n -*- (setq frame-title-format "Emacs@%b %f") ;; -*- 设置 emacs 的标题 -*- (icomplete-mode t) ;; -*- 在minibuffer里启用自动补全函数和变量 -*- (setq-default cursor-type 'bar) ;; -*- 光标为竖线 -*- (global-set-key [f2] 'undo) ;; -*- 撤销 -*- (global-set-key [f4] 'kill-this-buffer) ;; -*- 关闭当前buffer -*- (global-set-key [M-left] 'windmove-left) ;; -*- 移动到左边的buffer -*- (global-set-key [M-right] 'windmove-right) ;; -*- 移动到右边的buffer -*- (global-set-key [M-up] 'windmove-up) ;; -*- 移动到上边的buffer -*- (global-set-key [M-down] 'windmove-down) ;; -*- 移动到下边的buffer -*- (global-set-key [C-tab] 'next-buffer) ;; -*- 切换buffer -*-
自动提示
;; ----------------------------- auto-complete ----------------------------- ;; (add-to-list 'load-path "C:/Program Files/emacs/plugins/auto-complete/") (require 'auto-complete-config) (add-to-list 'ac-dictionary-directories "C:/Program Files/emacs/plugins/auto-complete/ac-dict") (ac-config-default) (local-set-key (kbd "M-/") 'semantic-complete-analyze-inline) (local-set-key "." 'semantic-complete-self-insert) (local-set-key ">" 'semantic-complete-self-insert)
tab标签栏
;; ----------------------------- tabbar ----------------------------- ;; (add-to-list 'load-path "C:/Program Files/emacs/plugins/one/") (require 'tabbar) (setq tabbar-ruler-global-tabbar 't) ; If you want tabbar (require 'tabbar-ruler) (tabbar-mode 1)
ccl
;; ----------------------------- ccl lisp ----------------------------- ;; (add-to-list 'load-path "C:/Program Files/ccl/") (setq inferior-lisp-program "wx86cl")
slime
;; ----------------------------- slime ----------------------------- ;; (add-to-list 'load-path "C:/Program Files/emacs/plugins/slime/") (require 'slime-autoloads) (slime-setup '(slime-fancy)) (slime-setup '(slime-repl)) (require 'ac-slime) (add-hook 'slime-mode-hook 'set-up-slime-ac) (add-hook 'slime-repl-mode-hook 'set-up-slime-ac) (eval-after-load "auto-complete" '(add-to-list 'ac-modes 'slime-repl-mode))
erlang
;; ----------------------------- erlang ----------------------------- ;; (setq load-path (cons "C:/Program Files/erl5.9.2/lib/tools-2.6.8/emacs" load-path)) (setq erlang-root-dir "C:/Program Files/erl5.9.2") (setq exec-path (cons "C:/Program Files/erl5.9.2/bin" exec-path)) (require 'erlang-start)
golang
;; ----------------------------- golang ----------------------------- ;; (setq load-path (cons "C:/Program Files/emacs/plugins/golang" load-path)) (require 'go-mode-load) (require 'go-autocomplete) ;(speedbar 1) ;(speedbar-add-supported-extension ".go") (add-hook 'go-mode-hook '(lambda () ;; gocode (auto-complete-mode 1) (setq ac-sources '(ac-source-go)) ;; Imenu & Speedbar (setq imenu-generic-expression '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1) ("func" "^func *\\(.*\\) {" 1))) (imenu-add-to-menubar "Index") ;; Outline mode (make-local-variable 'outline-regexp) (setq outline-regexp "//\\.\\|//[^\r\n\f][^\r\n\f]\\|pack\\|func\\|impo\\|cons\\|var.\\|type\\|\t\t*....") (outline-minor-mode 1) (local-set-key "\M-a" 'outline-previous-visible-heading) (local-set-key "\M-e" 'outline-next-visible-heading) ;; Menu bar (require 'easymenu) (defconst go-hooked-menu '("Go tools" ["Go run buffer" go t] ["Go reformat buffer" go-fmt-buffer t] ["Go check buffer" go-fix-buffer t])) (easy-menu-define go-added-menu (current-local-map) "Go tools" go-hooked-menu) ;; Other (setq show-trailing-whitespace t))) ;; helper function (defun go () "run current buffer" (interactive) (compile (concat "go run " (buffer-file-name)))) ;; helper function (defun go-fmt-buffer () "run gofmt on current buffer" (interactive) (if buffer-read-only (progn (ding) (message "Buffer is read only")) (let ((p (line-number-at-pos)) (filename (buffer-file-name)) (old-max-mini-window-height max-mini-window-height)) (show-all) (if (get-buffer "*Go Reformat Errors*") (progn (delete-windows-on "*Go Reformat Errors*") (kill-buffer "*Go Reformat Errors*"))) (setq max-mini-window-height 1) (if (= 0 (shell-command-on-region (point-min) (point-max) "gofmt" "*Go Reformat Output*" nil "*Go Reformat Errors*" t)) (progn (erase-buffer) (insert-buffer-substring "*Go Reformat Output*") (goto-char (point-min)) (forward-line (1- p))) (with-current-buffer "*Go Reformat Errors*" (progn (goto-char (point-min)) (while (re-search-forward "<standard input>" nil t) (replace-match filename)) (goto-char (point-min)) (compilation-mode)))) (setq max-mini-window-height old-max-mini-window-height) (delete-windows-on "*Go Reformat Output*") (kill-buffer "*Go Reformat Output*")))) ;; helper function (defun go-fix-buffer () "run gofix on current buffer" (interactive) (show-all) (shell-command-on-region (point-min) (point-max) "go tool fix -diff"))
cedet ecb
;; ----------------------------- cedet + ecb ----------------------------- ;; (setq stack-trace-on-error t) (require 'cedet) (require 'semantic/analyze) (provide 'semantic-analyze) (provide 'semantic-ctxt) (provide 'semanticdb) (provide 'semanticdb-find) (provide 'semanticdb-mode) (provide 'semantic-load) (add-to-list 'load-path "C:/Program Files/emacs/plugins/ecb/") (setq ecb-options-version "2.40" ecb-auto-compatibility-check nil ecb-auto-activate t ecb-tip-of-the-day nil ecb-windows-witdh 0.1 ecb-fix-window-size t ecb-primary-secondary-mouse-buttons (quote mouse-1--C-mouse-1) ecb-source-path '("D:/Code/" "D:/Code/Erlang" "D:/Code/Lisp")) (require 'ecb) (require 'ecb-autoloads)
yasnippet
;; ----------------------------- yasnippet ----------------------------- ;; (add-to-list 'load-path "C:/Program Files/emacs/plugins/yasnippet/") (require 'yasnippet) (setq yas/snippet-dirs '("C:/Program Files/emacs/plugins/yasnippet/snippets" "C:/Program Files/emacs/plugins/yasnippet/extras/imported")) (yas/global-mode 1)
blog comments powered by Disqus
发布日期
2012-07-20