作者coldnew (夜影)
看板Editor
標題Re: [emac] 近乎無用的shell script語法高亮...orz
時間Mon Feb 13 02:27:51 2012
※ 引述《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
1F:推 kuan:感謝!請問font-lock-type-face這是什麼意思?其實現在還是沒 02/13 22:53
2F:→ kuan:辦法 02/13 22:53
3F:→ kuan:使用。另外,最結尾好像少了一個) 02/13 22:53
少複製一個),已補上
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)
4F:推 kuan:嗯...我是emacs 23,有裝color-theme。但我剛剛又試了一下, 02/15 00:13
5F:→ kuan:還是無法生效的樣子...附上我的.emacs該部份: 02/15 00:15
7F:→ kuan:(看來用emacs最好還是得學一點lisp/elisp,我只會改快速鍵而 02/15 00:17
8F:→ kuan:已...orz) 02/15 00:17
會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)
9F:推 kuan:可以了!感謝! 02/15 17:21
10F:→ kuan:目前好像有點問題,要把輸入游標移到指令後面更動一下,顏色 02/15 17:24
11F:→ kuan:才會改變;如果打開任何一個已有的script檔案還是看不到高亮 02/15 17:25
這就是我說的bug......
12F:→ kuan:(一直提問真的很不好意思...orz) 02/15 17:26
13F:推 kuan:但是已經能頂著用了,再次感謝~ 02/15 17:28
等我有空在寫成plugin吧 :)
※ 編輯: coldnew 來自: 120.126.41.45 (02/17 16:10)
14F:推 kuan:(worship) 02/17 19:20