Re: [emac] 近乎無用的shell script語法高亮...orz

看板Editor (編輯器(vim/emacs))作者 (夜影)時間12年前 (2012/02/13 02:27), 編輯推噓5(509)
留言14則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《kuan (/dev/zero)》之銘言: : Emacs剛學不久,昨天想試著用Emacs來寫Shell Script時發現一件很蛋疼的事:Emacs23雖 : 然有內建Shell Script的語法高亮(M-x shell-script-mode),但真正一用發現簡直是殘廢 : ,一堆很常用的程式如ls、mkdir、rm、mv、cp都認不出來...: : http://imgur.com/eLbDM
: ...它只認識cd跟echo啊(好像是因為這是linux內建指令的關係)orz : Google過了,可是找不到有人問這個問題。 : 之前我都是用Kate寫Script,語法高亮支援就很完整。 : 請問有什麼方法能更好地支援Shell Script嗎? : 附上Kate的效果: : http://imgur.com/xjJNv
看了一下似乎真的沒有 那我們來寫一個簡單的版本吧 (defun font-lock-system-command (&optional limit) "" (and (search-forward-regexp "\\<[a-zA-Z\\-]+\\>" limit t) (executable-find (buffer-substring-no-properties (car (bounds-of-thing-at-point 'word)) (cdr (bounds-of-thing-at-point 'word))) ))) (font-lock-add-keywords 'sh-mode '((font-lock-system-command . font-lock-type-face))) ^ | 改我可以換顏色 註1: 目前這個版本只是「堪用」... 還有很多bug沒處理 修改 font-lock-type-face 成你想要的face -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.126.41.45

02/13 22:53, , 1F
感謝!請問font-lock-type-face這是什麼意思?其實現在還是沒
02/13 22:53, 1F

02/13 22:53, , 2F
辦法
02/13 22:53, 2F

02/13 22:53, , 3F
使用。另外,最結尾好像少了一個)
02/13 22:53, 3F
少複製一個),已補上 emacs 內建許多 font-lock-*face,這些是控制顏色的部份 比如function的名稱,語法高亮控制顏色的就是 font-lock-function-face這個變數 如果你是用 emacs-23 以下的版本,內建顏色常用的改法是改 color-theme 自從emacs24之後,已經不需要color-theme這個package 使用者可以用 (deftheme theme-name.... 來製作自己的顏色配置 或是你可以自行定義 face (defface font-lock-system-command-face '((((class color)) (:foreground "seagreen2"))) "I am comment" :group 'font-lock-faces) 然後將上面的 (font-lock-add-keywords 'sh-mode '((font-lock-system-command . font-lock-type-face))) 改成 (font-lock-add-keywords 'sh-mode '((font-lock-system-command . 'font-lock-system-command-face))) ※ 編輯: coldnew 來自: 120.126.41.45 (02/14 00:10)

02/15 00:13, , 4F
嗯...我是emacs 23,有裝color-theme。但我剛剛又試了一下,
02/15 00:13, 4F

02/15 00:15, , 5F
還是無法生效的樣子...附上我的.emacs該部份:
02/15 00:15, 5F

02/15 00:15, , 6F

02/15 00:17, , 7F
(看來用emacs最好還是得學一點lisp/elisp,我只會改快速鍵而
02/15 00:17, 7F

02/15 00:17, , 8F
已...orz)
02/15 00:17, 8F
會elisp很方便的,不會還是可以玩emacs,只是可能很多想實現的功能必須不段的 search看看有沒有人做過 my-fault, 要加上 ' ,看上面紫色的,已更正程式 至於為什麼,可以看一下 font-lock.el, 或是以下的link http://lists.gnu.org/archive/html/bug-gnu-emacs/2003-12/msg00191.html 已測試於emacs 23 on ubuntu 11.10 ※ 編輯: coldnew 來自: 120.126.41.45 (02/15 04:16)

02/15 17:21, , 9F
可以了!感謝!
02/15 17:21, 9F

02/15 17:24, , 10F
目前好像有點問題,要把輸入游標移到指令後面更動一下,顏色
02/15 17:24, 10F

02/15 17:25, , 11F
才會改變;如果打開任何一個已有的script檔案還是看不到高亮
02/15 17:25, 11F
這就是我說的bug......

02/15 17:26, , 12F
(一直提問真的很不好意思...orz)
02/15 17:26, 12F

02/15 17:28, , 13F
但是已經能頂著用了,再次感謝~
02/15 17:28, 13F
等我有空在寫成plugin吧 :) ※ 編輯: coldnew 來自: 120.126.41.45 (02/17 16:10)

02/17 19:20, , 14F
(worship)
02/17 19:20, 14F
文章代碼(AID): #1FE0IgXb (Editor)
文章代碼(AID): #1FE0IgXb (Editor)