2011-11-02 73 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;看起来好像这可能是这个函数更好的键绑定。