2009-04-16 51 views
4

我正在嘗試使用define-generic-mode爲emacs編寫新模式。我找到了一些教程,展示瞭如何添加關鍵字(字符串),然後將其突出顯示。是否有可能給define-generic-mode一個正則表達式,以便它可以突出顯示與該關鍵字匹配的任何內容?在定義通用模式下匹配正則表達式作爲關鍵字

我想有一種模式,其中以15/01/09格式顯示日期的任何內容都以不同的字體顯示(最好用下劃線,但我會接受不同的顏色)。

任何想法?

羅賓

爲了突出FIXME,TODO和XXX爲主要模式的警告使用字體鎖定添加的關鍵字,例如

回答

7

下面是define-generic-mode一個例子樹立正則表達式有使用自定義的臉選爲實例的某些屬性的所有日期fontified:

(make-face 'my-date-face) 
(set-face-attribute 'my-date-face nil :underline t) 
(set-face-attribute 'my-date-face nil :family "times") 
(set-face-attribute 'my-date-face nil :slant 'normal) 
(set-face-attribute 'my-date-face nil :height '340) 

(define-generic-mode my-date-mode 
    nil 
    nil 
    '(("\\([0-9]+/[0-9]+/[0-9]+\\)" 
    (1 'my-date-face))) 
    nil 
    nil) 

哦,很明顯,由設置模式。這可以通過自動模式alist自動完成(第5個參數爲define-generic-mode)。

+0

感謝您的回覆。我似乎無法得到這個工作,雖然。我已經複製了代碼,並且eval緩衝區正常工作,但正確的位不會被加下劃線。任何想法是什麼問題? – robintw 2009-04-16 17:08:38

5

(dolist (mode '(c-mode 
    java-mode 
    cperl-mode 
    html-mode-hook 
    css-mode-hook 
    emacs-lisp-mode)) 
      (font-lock-add-keywords mode 
      '(("\\(XXX\\|FIXME\\|TODO\\)" 
      1 font-lock-warning-face prepend))))