如何在emacs(markdown-mode)中自动填充括号内的行?

4
我对Emacs还比较陌生,但一直在尝试使用它并考虑是否值得转换。我使用Markdown编写,并使用pandoc进行转换。如果有所影响的话,我的操作系统是Ubuntu 12.04版本,Emacs版本为23.3.1。
我是人文学科的研究生,因此我的写作中会有很多脚注。在pandoc中,脚注是用方括号格式化的。现在遇到的问题是自动填充模式似乎会忽略方括号内的文本,因此我的脚注内容会横跨整个页面。目前唯一能找到的解决方法是每次编辑段落时手动换行,这显然不是最理想的方法(另外,我也可以放弃使用行内脚注,并将它们作为单独的参考文献,但我不想这么做,而且似乎也没有必要)。
所以我的问题是,有没有办法让自动填充模式也针对方括号内的文本进行操作呢?默认情况下为什么不能这样做?
非常感谢您的帮助,
-- Brian

你处于哪个主要模式?(M-x describe-mode)。如果你禁用所有本地配置(通过从命令行启动emacs时使用“emacs -Q”),问题是否仍然存在? - David Röthlisberger
我正在使用Markdown模式,但问题似乎仅限于该模式。我已经发送了一封电子邮件给维护者,但如果有人在此期间有任何建议,我很乐意听取。 - Brian Hamilton
3个回答

3

避免在方括号中断行的特定提交是:http://jblevins.org/git/markdown-mode.git/commit/?id=66566a55 -- 因此您可以重新定义markdown-nobreak-p函数始终返回true(这很取巧,但应该有效)。 - David Röthlisberger
@DavidRöthlisberger 如果您能在另一个答案中向我解释如何重新定义这个问题,我将非常乐意将其标记为我的答案。那将非常有帮助。 - Brian Hamilton

2

Brian,

请在你的init文件中添加以下内容,以允许在markdown-mode中自动填充时在方括号内断开行:

(require 'markdown-mode)
(defun markdown-nobreak-p () nil)

我们所做的是重新定义函数 "markdown-nobreak-p"(最初在此处定义:http://jblevins.org/git/markdown-mode.git/commit/?id=66566a55),使其始终返回 "nil",这意味着“是的,您可以在此处断行”。该函数的原始版本会对方括号内的点返回非 nil 值。
http://www.gnu.org/software/emacs/manual/html_node/emacs/Find-Init.html

0

自动填充本身并不能防止在括号内填充。但是,可以通过主模式来告诉它这样做,所以我想问题取决于您的主模式。如果您正在使用mardown-mode,则请向其维护者报告此问题。无论如何,您可能希望尝试使用M-q来显式填充段落,因为它不总是遵循与自动填充相同的约定:它比自动填充更明确,但仍然比手动放置换行符更自动化。


谢谢,@Stefan。我发现确实是Markdown模式引起了问题,我会给维护者发送电子邮件以找出解决方法。我已经尝试过M-q,但不幸的是它也不起作用。 - Brian Hamilton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接