2011-08-23 27 views
1

我正在尋找一種突出顯示或使用純文本引用文本的不同面部的方法。似乎應該有一個複雜/增強的文本模式,但我找不到它。更改Emacs中雙引號之間的純文本的臉部

如果沒有簡單的解決方案,你能告訴我應該在哪裏開始寫一個函數嗎?

非常感謝!

誰一直在使用Emacs從19.xx

+0

你能更具體地描述你引用的意思嗎?你是指「兩個」之間的「標誌」?或「塊引用:由空格縮進」?或者是其他東西? –

+0

標題使@Rupert Swarbrick更清晰。 – JasonFruit

回答

2

我不知道這一點已經這樣做的主要模式,但你可以很輕鬆地使用定義衍生模式

使一個一個小白
(define-derived-mode rich-text-mode text-mode "Rich Text" 
    "text mode with string highlighting." 

    ;;register keywords 
    (setq rich-text-font-lock-keywords 
     '(("\"\\(\\(?:.\\|\n\\)*?[^\\]\\)\"" 0 font-lock-string-face))) 
    (setq font-lock-defaults rich-text-font-lock-keywords) 
    (font-lock-mode 1)) 

或者,你可以添加一個鉤子文本模式:

(defun add-quotes-to-font-lock-keywords() 
    (font-lock-add-keywords nil '(("\"\\(\\(?:.\\|\n\\)*?[^\\]\\)\"" 0 font-lock-string-face)))) 

(add-hook 'text-mode-hook 'add-quotes-to-font-lock-keywords) 

一般來說,用於編輯文本的任何一個很好的模式是組織模式。儘管如此,它默認不會字體鎖定字符串。

0

對於正則表達式,我想你想在字符串內容中排除"本身,除了轉義時。事情是這樣的--- ",後跟一個非"或轉義字符,然後"

\"\\([^\"]\\|\\\\\\(.\\|[\n]\\)\\)*\" 

但要注意,匹配報價「......」是臭名昭著。我在Info+中做了這個,但是有幾個Info節點,這些突出顯示被偶爾的\"?\"引用到引用這樣的編程結構的手冊中。

相關問題