在emacs中,我可以为代码设置一组换行设置,为文本设置一个换行设置吗?

时间:2012-04-19 19:24:51

标签: emacs word-wrap

经过大量的实验,我认为我喜欢:

(setq truncate-lines nil)
(setq word-wrap t)

用于文本编辑,但

(setq truncate-lines t)
(setq word-wrap nil)

用于编程。

在所有模式中,我都喜欢:

(setq fill-column 80)

这样我就可以使用M-qC-u M-q将文字传输到80列,但我也发现我不喜欢auto-fill模式,并且永远不会喜欢它。

我也不是那么热衷visual-line-mode(或至少不是word-wrap的那一点)

我可以在我的.emacs文件中放一些让我开心的咒语吗?

我认为很高兴:'这一切都只是做我想要的,我不需要再考虑这个了。'

3 个答案:

答案 0 :(得分:7)

使用prog-mode-hooktext-mode-hook设置这些变量:

(add-hook 'text-mode-hook '(lambda ()
    (setq truncate-lines nil
          word-wrap t)))

(add-hook 'prog-mode-hook '(lambda ()
    (setq truncate-lines t
          word-wrap nil)))

答案 1 :(得分:2)

很抱歉没有在我的回答中提供源代码,但我可以向您保证,您所考虑的设置是可能的。它只取决于你对“编程模式”的定义。大多数模式都带有一个所谓的钩子函数(参见http://www.gnu.org/software/emacs/manual/html_node/emacs/Hooks.html)。这些基本上是加载模式时执行的功能。这样的钩子会调整您的设置。

答案 2 :(得分:1)

(setq truncate-lines t)仍然不起作用?

罪魁祸首可能是另一种模式。视线模式是我的(全局 - 可视线模式),所以我不得不将禁用功能放入钩子中:

(add-hook 'neotree-mode-hook
       (lambda ()
         (visual-line-mode -1)
         (setq truncate-lines t)))