Emacs:如何消除自动完成弹出窗口中的空白模式?

emi*_*ish 15 emacs elisp dot-emacs

这是一个出错的截图:

Imgur

正如你所看到的,空白字符正在妨碍自动完成弹出文本并使事情看起来非常糟糕.

真的,我希望它看起来像这样:

Imgur

是否有人能够使用空白模式但是在自动完成的东西中弹出它?

小智 2

Prelude 问题跟踪器中存在有关自动完成和空白模式之间兼容性的问题,其注释中有以下解决方法(比原始版本稍有改进):

(defvar my-prev-whitespace-mode nil)
(make-variable-buffer-local 'my-prev-whitespace-mode)

(defadvice popup-draw (before my-turn-off-whitespace activate compile)
  "Turn off whitespace mode before showing autocomplete box"
  (if whitespace-mode
      (progn
        (setq my-prev-whitespace-mode t)
        (prelude-turn-off-whitespace))
    (setq my-prev-whitespace-mode nil)))

(defadvice popup-delete (after my-restore-whitespace activate compile)
  "Restore previous whitespace mode when deleting autocomplete box"
  (if my-prev-whitespace-mode
      (prelude-turn-on-whitespace)))
Run Code Online (Sandbox Code Playgroud)

本质上,这会在显示弹出窗口时禁用整个缓冲区的空白模式。

popup.el 问题跟踪器中也报告了该问题。