少年,不怕!   emacs for erlang ---> so easy

 我們這些程序員,我覺得都應該記住,馬士兵說過的一句話:學東西,先要讓它跑起來,再去研究它的工作原理!

所以,我也是這樣做的!

emacs,要是先弄懂那一堆的亂七八糟的配置,再幹活的話,學習曲線會很慢且很容易打擊人的!弄懂一些基本的命了就行了,比如:c-x-f c-x-c c-x-s 等等

嗯!我呢,是google老師的好學生,自己想要的,就找他了! 

以下是我的整理資料 + 感想:

 

步驟:

1.自己的ubuntu 安裝好了erlang: ubuntu11.10 安裝erlang

2.安裝emacs。  

  1. 第一種: 
  2. sudo apt-get install emacs23 
  3.  
  4. 第二種: 
  5. 軟件中心安裝 

 

3. 配置 .emacs 文件:

 

  1. (setq default-directory "~/dika/erlang/")可以改成你喜歡的工作目錄 
  2. (global-set-key (kbd "C-SPC") 'nil) 
  3. ;; share clipboard with outside programs 
  4. (setq x-select-enable-clipboard t) 
  5.  
  6. (desktop-save-mode 1) 
  7.  
  8.  
  9. (tool-bar-mode nil) 
  10. ;;(menu-bar-mode nil) 
  11. (scroll-bar-mode nil) 
  12. (setq make-backup-files nil) 
  13. ;; 設置另外一些顏色:語法高亮顯示的背景和主題,區域選擇的背景和主題,二次選擇的背景和選擇 
  14. (set-face-foreground 'highlight "white") 
  15. (set-face-background 'highlight "blue") 
  16. (set-face-foreground 'region "cyan") 
  17. (set-face-background 'region "blue") 
  18. (set-face-foreground 'secondary-selection "skyblue") 
  19. (set-face-background 'secondary-selection "darkblue") 
  20. (set-foreground-color "grey") 
  21. (set-background-color "black") 
  22. (set-cursor-color "gold1") 
  23. (set-mouse-color "gold1") 
  24. ;;(set-scroll-bar-mode nil) 
  25. ;設定光標爲短線 
  26. (setq-default cursor-type 'bar) 
  27. ;設置標題 
  28. (setq frame-title-format 
  29.         '("  mayi - Emacs   -   [ " (buffer-file-name "%f \]" 
  30.                 (dired-directory dired-directory "%b \]")))) 
  31. ;設置啓動大小 
  32. (set-frame-height (selected-frame) 65) 
  33. (set-frame-width (selected-frame) 170) 
  34.  
  35. (setq inhibit-startup-message t);關閉起動時LOGO 
  36. (setq visible-bell t);關閉出錯時的提示聲 
  37. (setq default-major-mode 'erlang-mode);一打開就起用 text 模式 
  38. (global-font-lock-mode t);語法高亮 
  39. (auto-image-file-mode t);打開圖片顯示功能 
  40. (fset 'yes-or-no-p 'y-or-n-p);以 y/n代表 yes/no 
  41. (column-number-mode t);顯示列號 
  42. (show-paren-mode t);顯示括號匹配 
  43. (setq mouse-yank-at-point t);支持中鍵粘貼 
  44. (transient-mark-mode t);允許臨時設置標記 
  45. (setq x-select-enable-clipboard t);支持emacs和外部程序的粘貼 
  46. (setq auto-save-default nil);關閉備份文件#xxx# 
  47.  
  48. ;;-----kill ring 長度 
  49. (setq kill-ring-max 200) 
  50.           
  51. (require 'linum) 
  52. (global-linum-mode 1) 
  53.  
  54.  
  55. ;;--------------------------快捷鍵定義------------------------ 
  56. (global-set-key [(f12)] 'loop-alpha)  ;;玻璃 
  57. ;;F1列模式 
  58. (global-set-key [f1] 'cua-mode) 
  59. ;;恢復,常用鍵 
  60. (global-set-key [f2] 'undo) 
  61. ;;F4,kill鍵,習慣設置,關閉當前buffer 
  62. (global-set-key [f4] 'kill-this-buffer) 
  63. ;;定義查找快捷鍵 
  64. (global-set-key [f5] 'replace-regexp) ;;支持正則表達式 
  65. (global-set-key [f6] 'replace-string) 
  66.  
  67. (global-set-key [f8] 'erlang-mode) 
  68. (global-set-key [f7] 'ecb-activate) ;;定義F7鍵爲激活ecb 
  69. (global-set-key [C-f7] 'ecb-deactivate) 
  70. (global-set-key [f11] 'delete-other-windows) ;;設置F11爲刪除其它窗口 
  71. (global-set-key (kbd "C-c z") (quote shell)) 
  72.  
  73. ;;-------------------------------全選--------------------- 
  74.  
  75.  
  76. (defun select-all () 
  77.   "Select the whole buffer." 
  78.   (interactive) 
  79.   (goto-char (point-min)) 
  80.   ;; Mark current position and push it into the mark ring. 
  81.   (push-mark-command nil nil) 
  82.   (goto-char (point-max)) 
  83.   (message "ok.")) 
  84.  
  85. (provide 'select-all) 
  86.  
  87. (autoload 'select-all "select-all" 
  88.   "Select the whole buffer." t nil) 
  89.  
  90. ;; user defined keys 
  91.  
  92. (global-set-key "\C-x\C-a" 'select-all) 
  93. ;;-------------------glass style------------------ 
  94.  
  95.  
  96. (setq alpha-list '((85 55) (100 100)))   
  97.   
  98. (defun loop-alpha ()   
  99.   (interactive)   
  100.   (let ((h (car alpha-list)))                   
  101.     ((lambda (a ab)   
  102.        (set-frame-parameter (selected-frame) 'alpha (list a ab))   
  103.        (add-to-list 'default-frame-alist (cons 'alpha (list a ab)))   
  104.        ) (car h) (car (cdr h)))   
  105.     (setq alpha-list (cdr (append alpha-list (list h))))   
  106.     ))   
  107.  
  108.  
  109. ;;--------------------------erlang---------------------------------------------------------------------------------------------------------- 
  110. ;改成自己的erlang安裝目錄,不過erlang編譯安裝的默認目錄就是這個 
  111. (setq load-path (cons "/usr/local/lib/erlang/lib/tools-2.6.7/emacs" load-path))   
  112. (setq erlang-root-dir "/usr/local/lib/erlang") 
  113. (setq exec-path (cons "/usr/local/lib/erlang/bin" exec-path)) 
  114. (setq erlang-man-root-dir "/usr/local/lib/erlang/man") 
  115. ;以上四句都要改了 
  116. (require 'erlang-start) 
  117.  
  118. (add-to-list 'auto-mode-alist '("\\.erl?$" . erlang-mode)) 
  119. (add-to-list 'auto-mode-alist '("\\.hrl?$" . erlang-mode)) 
  120. (add-to-list 'load-path "~/.emacs.d/erlware-mode") 
  121.  
  122. ;;----------------------distel------------------- 
  123.  
  124. (let ((distel-dir "~/.emacs.d/distel/elisp")) 
  125.     (unless (member distel-dir load-path) 
  126.         ;; Add distel-dir to the end of load-path 
  127.         (setq load-path (append load-path (list distel-dir))))) 
  128.  
  129. (require 'distel) 
  130. (distel-setup) 
  131.  
  132. ;; Some Erlang customizations 
  133.  
  134. (add-hook 'erlang-mode-hook 
  135.   (lambda () 
  136.  
  137.   ;; when starting an Erlang shell in Emacs, default in the node name 
  138.  
  139.     (setq inferior-erlang-machine-options '("-sname" "emacs")) 
  140.      
  141.     ;; add Erlang functions to an imenu menu 
  142.  
  143.     (imenu-add-to-menubar "imenu"))) 
  144.  
  145. ;; prevent annoying hang-on-compile 
  146. (defvar inferior-erlang-prompt-timeout t) 
  147.  
  148. ;; tell distel to default to that node 
  149. (setq erl-nodename-cache 
  150.       (make-symbol 
  151.        (concat 
  152.         "emacs@" 
  153.         ;; Mac OS X uses "name.local" instead of "name", this should work 
  154.         ;; pretty much anywhere without having to muck with NetInfo 
  155.         ;; ... but I only tested it on Mac OS X. 
  156.         (car (split-string (shell-command-to-string "hostname")))))) 
  157.  
  158.  
  159. ;; A number of the erlang-extended-mode key bindings are useful in the shell too 
  160. (defconst distel-shell-keys 
  161.   '(("\C-\M-i"   erl-complete) 
  162.     ("\M-?"      erl-complete) 
  163.     ("\M-."      erl-find-source-under-point) 
  164.     ("\M-,"      erl-find-source-unwind) 
  165.     ("\M-*"      erl-find-source-unwind) 
  166.     ) 
  167.   "Additional keys to bind when in Erlang shell.") 
  168.  
  169. (add-hook 'erlang-shell-mode-hook 
  170.   (lambda () 
  171. ;; add some Distel bindings to the Erlang shell 
  172.         (dolist (spec distel-shell-keys) 
  173.         (define-key erlang-shell-mode-map (car spec) (cadr spec))))) 
  174.  
  175. ;;------------------------esense-------------------- 
  176.  
  177. (setq load-path (cons "~/.emacs.d/esense-1.12" load-path)) 
  178. (require 'esense-start) 
  179. (setq esense-indexer-program "~/.emacs.d/esense-1.12/esense.sh") 
  180.  
  181.  
  182.  
  183. ;;-------------------flymake------------------- 
  184. ;(defun flymake-erlang-init () 
  185. ;    (let* ((temp-file (flymake-init-create-temp-buffer-copy 
  186. ;                       'flymake-create-temp-inplace)) 
  187. ;           (local-file (file-relative-name 
  188. ;                        temp-file 
  189. ;                       (file-name-directory buffer-file-name)))) 
  190. ;    (list "/usr/local/bin/emakefly" (list local-file)))) 
  191. ;(add-to-list 'flymake-allowed-file-name-masks '("\\.erl\\'" flymake-erlang-init)) 
  192. ;(add-hook 'find-file-hook 'flymake-find-file-hook) 
  193. ;(require 'erlang-flymake) 
  194.  
  195.  
  196. -------------------mayi-flymake---------------- 
  197. ;使用erlang自帶的語法檢查,上面那個是dp自己搞的,不知從哪裏來的! 
  198. ;;僅在存盤時進行檢查 
  199. (erlang-flymake-only-on-save) 
  200.  
  201. ;;鍵盤映射 
  202. (defvar flymake-mode-map (make-sparse-keymap)) 
  203. (define-key flymake-mode-map (kbd "<f3>") 'flymake-goto-next-error) 
  204. (define-key flymake-mode-map (kbd "C-c <f3>") 'flymake-goto-prev-error) 
  205. (define-key flymake-mode-map (kbd "<f4>") 'flymake-display-err-menu-for-current-line) 
  206. (or (assoc 'flymake-mode minor-mode-map-alist) 
  207. (setq minor-mode-map-alist 
  208. (cons (cons 'flymake-mode flymake-mode-map) 
  209. minor-mode-map-alist))) 
  210.  
  211.  
  212.  
  213.  
  214.  
  215. ;;----------------ecb-------------- 
  216. ;; cedet 
  217. (load-file "~/.emacs.d/cedet-1.0/common/cedet.el") 
  218. (global-ede-mode 1)                      ; Enable the Project management system 
  219. (semantic-load-enable-code-helpers)      ; Enable prototype help and smart completion 
  220. (global-srecode-minor-mode 1)            ; Enable template insertion menu 
  221.  
  222.  
  223. (add-to-list 'load-path "~/.emacs.d/ecb-2.40") 
  224. (require 'ecb) 
  225. ;;(require 'ecb-autoloads) 
  226. ;;(setq ecb-auto-activate t) 
  227. (setq ecb-tip-of-the-day nil) 
  228.  
  229. ;; tabbar 
  230. (add-to-list 'load-path "~/.emacs.d/tabbar") 
  231. (require 'tabbar) 
  232. (tabbar-mode t) 
  233. (global-set-key [(meta j)] 'tabbar-backward) 
  234. (global-set-key [(meta k)] 'tabbar-forward) 
  235.  
  236. ;;--------------------- tabbar---------- 
  237. (set-face-attribute 'tabbar-default-face nil 
  238.                     :family "DejaVu Sans Mono" 
  239.                     :background "gray80" 
  240.                     :foreground "gray30" 
  241.                     :height 1.0 
  242.                     ) 
  243. (set-face-attribute 'tabbar-button-face nil 
  244.                     :inherit 'tabbar-default 
  245.                     :box '(:line-width 1 :color "yellow70") 
  246.                     ) 
  247. (set-face-attribute 'tabbar-selected-face nil 
  248.                     :inherit 'tabbar-default 
  249.                     :foreground "DarkGreen" 
  250.                     :background "LightGoldenrod" 
  251.                     :box '(:line-width 2 :color "Darkgoldenrod") 
  252.                     :overline "black" 
  253.                     :underline "black" 
  254.                     :weight 'bold 
  255.                     ) 
  256. (set-face-attribute 'tabbar-unselected-face nil 
  257.                     :inherit 'tabbar-default 
  258.                     :box '(:line-width 2 :color "#00B2BF") 
  259.                     ) 
  260. (custom-set-variables 
  261.   ;; custom-set-variables was added by Custom. 
  262.   ;; If you edit it by hand, you could mess it up, so be careful. 
  263.   ;; Your init file should contain only one such instance. 
  264.   ;; If there is more than one, they won't work right. 
  265.  '(ecb-options-version "2.40") 
  266.  '(ecb-primary-secondary-mouse-buttons (quote mouse-1--C-mouse-1))) 
  267. (custom-set-faces 
  268.   ;; custom-set-faces was added by Custom. 
  269.   ;; If you edit it by hand, you could mess it up, so be careful. 
  270.   ;; Your init file should contain only one such instance. 
  271.   ;; If there is more than one, they won't work right. 
  272.  ) 
  273. ;;wrangler 
  274.  
  275. ;; --------- wrangler ----------------------- 
  276. (add-to-list 'load-path "/usr/local/share/wrangler/elisp") 
  277. (require 'wrangler) 
  278.  
  279. ;;---------------------YASnippet-------------------- 
  280.  
  281. (add-to-list 'load-path 
  282.              "~/.emacs.d") 
  283. (require 'yasnippet-bundle) 
  284.  
  285.  
  286. ;;----------------------auto-complete------------- 
  287.  
  288.  
  289. ;;(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict") 
  290. ;;(require 'auto-complete-config) 
  291. ;;(ac-config-default) 
  292. (add-to-list 'load-path "~/.emacs.d/") 
  293. (require 'auto-complete-config) 
  294. (add-to-list 'ac-dictionary-directories "~/.emacs.d//ac-dict") 
  295. (ac-config-default) 

 PS:記得要改一些東西的哦!  我有在上面標示了 ,在下載文件裏沒改! 

文件下載:

 

 

下載後,解壓,要是看不到文件,就Ctrl + h  顯示隱藏文件,然後全部複製到用戶(~/)目錄下,覆蓋原本的文件即可!

打開emacs,一般都OK了  ,不行再找我吧

 

 貼一下源吧:dp0304  ----->傻逼星  ,(*^__^*) 嘻嘻……

 

 這個也不錯:

ubuntu 11.10 使用 emacs-23.4 開發 erlang 整理之 使用自帶erlang-flymake.el

適合我這種新手練手用!

 

2012-06-11-00時21分41秒

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章