我正在尋找一種突出顯示或使用純文本引用文本的不同面部的方法。似乎應該有一個複雜/增強的文本模式,但我找不到它。更改Emacs中雙引號之間的純文本的臉部
如果沒有簡單的解決方案,你能告訴我應該在哪裏開始寫一個函數嗎?
非常感謝!
誰一直在使用Emacs從19.xx
我正在尋找一種突出顯示或使用純文本引用文本的不同面部的方法。似乎應該有一個複雜/增強的文本模式,但我找不到它。更改Emacs中雙引號之間的純文本的臉部
如果沒有簡單的解決方案,你能告訴我應該在哪裏開始寫一個函數嗎?
非常感謝!
誰一直在使用Emacs從19.xx
我不知道這一點已經這樣做的主要模式,但你可以很輕鬆地使用定義衍生模式
使一個一個小白(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)
一般來說,用於編輯文本的任何一個很好的模式是組織模式。儘管如此,它默認不會字體鎖定字符串。
對於正則表達式,我想你想在字符串內容中排除"
本身,除了轉義時。事情是這樣的--- "
,後跟一個非"
或轉義字符,然後"
:
\"\\([^\"]\\|\\\\\\(.\\|[\n]\\)\\)*\"
但要注意,匹配報價「......」是臭名昭著。我在Info+中做了這個,但是有幾個Info節點,這些突出顯示被偶爾的\"
或?\"
引用到引用這樣的編程結構的手冊中。
你能更具體地描述你引用的意思嗎?你是指「兩個」之間的「標誌」?或「塊引用:由空格縮進」?或者是其他東西? –
標題使@Rupert Swarbrick更清晰。 – JasonFruit