当我最终升级到 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 提示符下输入。