作者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