在 Emacs 23.2.1 中修复 c-fill-paragraph 注释问题

在 Emacs 23.2.1 中修复 c-fill-paragraph 注释问题

当我最终升级到 ubuntu 10.10 时,我刚刚升级到 emacs 23.2.1,但我注意到的第一件事是 c-fill-paragraph (Mq) 不再能很好地处理注释,或者至少不能像升级前那样在 emacs 23.1 中工作。

主要问题是,如果我有这样的注释行

//This is a long comment to illustrate an issue I have with emacs lorem ipsum

然后执行填充段落(Mq),我得到

//This is a long comment to illustrate an issue I have with
emacs lorem ipsum

而我应该得到

//This is a long comment to illustrate an issue I have with
//emacs lorem ipsum

我已经删除了我的 .emacs 文件,试图缩小问题出现的范围,但即使在 vanilla emacs 中这个问题仍然会出现。

答案1

找到答案这里带有一个补丁,可以在从头开始重新编译 emacs 时使用。事实证明这是 cc-mode 中的一个错误,希望在下一个版本的 emacs 中得到修复。

另一个稍微更简单的解决方案是简单地使用fill-paragraph而不是c-fill-paragraph

编辑:来自php 模式 emacs 页面,看来您必须手动应用补丁,因为行号与当前 emacs 源不一致。

答案2

你有longlines-mode没有用过?自动填充和长线不能很好地混合(但我有一个解决办法):

(defadvice fill-paragraph (around fill-paragraph-ignore-longlines act)
  "Ignore longlines-mode when calling fill-paragraph."
  (let ((restore-ll-mode nil))
    (when (boundp 'longlines-mode)
      (setq restore-ll-mode longlines-mode))
    (when restore-ll-mode
      (longlines-mode 0))
    ad-do-it
    (when restore-ll-mode
      (longlines-mode t))))

为了获得普通的 emacs,请emacs -q --no-site-init在 shell 提示符下输入。

相关内容