2011-11-02 35 views
5

每隔一段時間,Emacs都會在語法突出顯示時出現故障,並且着色在緩衝區中變得非常怪異。有什麼辦法可以強制Emacs「重新着色」語法嗎?試試看?我不介意是否需要一點時間。如何強制emacs重新着色

回答

8

我認爲M-x font-lock-fontify-buffer會做你正在尋找的。或選擇一個地區,並做M-o M-o(或M-x font-lock-fontify-block)。

+0

謝謝Jon!工作很好。我知道必須有一些我錯過的Emacs詞彙:「Fontify」。 – sligocki

+0

沒問題!很高興它是有用的。 –

+0

這不會(當前)考慮通過調用(例如* scratch * buffer)'font-lock-add-keywords'加載緩衝區後所做的任何更改。要應用這些,您需要執行「M-x normal-mode」或「M-x revert-buffer」。 – Mark

0

我曾經寫過如下簡單函數來將緩衝區重置爲自然模式,進行重新化處理,將光標所在的行移至屏幕中心,禁用菜單欄,禁用工具欄並移動左側的滾動條。

(defun --normal-mode-no-gimmicks() 
    "Enable buffer `normal-mode' and refontify. 
Disable frame menu, toolbar, scrollbars." 
    (interactive) 
    (menu-bar-mode 0) 
    (tool-bar-mode 0) 
    (set-scroll-bar-mode 'left) 
    (toggle-scroll-bar 1) 
    (normal-mode) (recenter-top-bottom) 
    (font-lock-fontify-buffer)) 

這可能是非常有用的,當模式改變,Emacs的突然顯示菜單欄或遇到其他問題。然後我只需按M-g g即可治癒它。

(global-set-key [?\M-g ?g] '--normal-mode-no-gimmicks) 

我不知道M-o M-o;看起來好像這可能是這個函數更好的鍵綁定。