AUCTeX:自定义'fill-nobreak-predicate'钩子来尊重大括号

时间:2012-06-13 10:07:16

标签: emacs autofill auctex

在编写LaTeX代码时,我使用以下C-ish缩进/支撑样式:

\foo{
  blah blah... this line is getting too long and should be wrapped
}

每当我需要重新换行(技术上,重新填充)一个块/段时,根据fill-column选项(本例中为50),我点击M-q。这也改变了大括号的位置:

\foo{ blah blah blah... this line is getting too
  long and should be wrapped }

伤害了我的眼睛:-( 事实上,我想保持原始位置中的大括号,即:

\foo{ 
  blah blah blah... this line is getting too
  long and should be wrapped 
}

我想我应该为AUCTeX添加自定义fill-nobreak-predicate挂钩,或者自定义paragraph-startparagraph-separate,但我不熟悉emacs lisp ......

由于此问题可能适用于任何标记文本模式,因此请自由填充以将其移至上游。

2 个答案:

答案 0 :(得分:2)

实际上,没有fill-nobreak-predicate(顾名思义)避免在某些地方破坏线,而你想强制在某些地方破坏线。 paragraph-separate可能会更好地为您提供服务:声明仅包含}或仅\cmd{的行不应被视为段落的一部分。

答案 1 :(得分:0)

有了@Stefan的建议。我想出了这个,似乎运作良好,简单的测试,

(add-hook 'LaTeX-mode-hook
          '(lambda ()
            (setq paragraph-separate (concat " *}\\|^ *\\\\[a-zA-Z]* ?{\\|"
                                              paragraph-separate))))