Emacs编译模式总是使用可视线模式


1

我试图让emacs编译模式总是使用visual-line-mode。我正在使用的代码是:

(add-hook 'compilation-mode-hook (visual-line-mode))

我尝试了各种其他排列。比如版本:

或全局启用可视线模式

(setq-default global-visual-line-mode t) 

然而,emacs坚持要截断行。我已经确认钩子正在执行。这有解决方案吗?

更新0

主要问题是Lisp新手问题:该功能visual-line-mode未被引用。这导致立即评估而不是在发射钩子时进行评估。

这没有解决问题:编译模式仍然没有包装行。我已经通过放置一个未定义的标识符来确认挂钩是在预期的时间执行而不是t。在输入编译模式时,Emacs会按预期抱怨未定义的标识符。

有没有办法追踪执行compile?使用(trace-function 'compile)产品:

======================================================================
1 -> compile: command="make" comint=nil
1 <- compile: #<buffer *compilation*>

仅此而已。

更新1

解决了!

除了错误的引用,问题出在我的emacs配置的另一部分:

(add-hook 'after-change-major-mode-hook
      (function
        (lambda ()
            (fci-mode)
            (turn-on-auto-fill)
        )
      )
)

这有效地解除了visual-line-mode设置!

Answers:


1

lawlist提供的答案是正确的,但是,还有一些主要模式使用的编译次要模式(例如,CIDER的堆栈跟踪模式)。因此,我有以下内容:

(add-hook 'compilation-mode-hook
          (lambda () (visual-line-mode 1)))

(add-hook 'compilation-minor-mode-hook
          (lambda () (visual-line-mode 1)))

我提到这个是因为次要代码在状态栏上也显示为“编译”,我花了一点时间才发现它是次要的,而不是主要的模式。

(我更愿意简单评论一下法律名单的答案,但我目前没有足够的代表这样做。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.