如何强制Emacs重新着色

7

有时候Emacs无法正确进行语法高亮,导致缓冲区中的颜色出现问题。是否有任何方法可以强制Emacs“重新着色”?只是尝试重做?即使需要一点时间也可以。

2个回答

11

我认为 M-x font-lock-fontify-buffer 可以实现你想要的功能。或者选择一块区域,然后执行 M-o M-o (或者 M-x font-lock-fontify-block)。


谢谢Jon!非常有效。我知道我只是缺少一些Emacs词汇:“Fontify”。 - sligocki
没问题!很高兴它有用。 - user725091
目前,此功能不考虑通过调用(例如在scratch缓冲区中)font-lock-add-keywords加载缓冲区后进行的任何更改。要应用这些更改,您需要执行M-x normal-modeM-x revert-buffer - Mark

1
我曾经编写了以下简单的函数,将缓冲区重置为其自然模式,重新格式化它,将光标所在行居中显示在屏幕上,禁用菜单栏、工具栏并将滚动条向左移动。这与IT相关。
(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 这个快捷键,看起来这可能是更好的绑定方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接