[英]Make LaTeX-insert-item Drop Down Two Lines in AucTeX
我觉得这足以让 Lisp 在这里保证而不是 TeX Stackexchange。 希望我是正确的。 我想使用命令Cc Cj插入两个换行符,然后是一个项目。 当我调用它的定义时,它告诉我它在latex.el
。 重要的代码片段是
(unless (bolp) (LaTeX-newline))
我不太了解 Lisp,但这似乎是“除非点是行的开头,否则插入新行”。 由于我想要两行,我将其替换为
(unless (bolp) (LaTeX-newline)
(LaTeX-newline))
但是,新代码不会下拉两行。 我做错了什么? 谢谢。 我已经包含了整个命令定义,以防我的解释有误。
(defun LaTeX-insert-item ()
"Insert a new item in an environment.
You may use `LaTeX-item-list' to change the routines used to insert
the item."
(interactive "*")
(let ((environment (LaTeX-current-environment)))
(when (and (TeX-active-mark)
(> (point) (mark)))
(exchange-point-and-mark))
(unless (bolp) (LaTeX-newline)
(LaTeX-newline))
(if (assoc environment LaTeX-item-list)
(funcall (cdr (assoc environment LaTeX-item-list)))
(TeX-insert-macro "item"))
(indent-according-to-mode)))
您对LaTeX-newline
假设是正确的。 它插入一个换行符。 如果将调用您修改后的函数,它将按您的需要工作。
它很可能永远不会被调用。
也许您将定义添加到 init 文件中,但 AUCTeX在该定义之后加载,并且LaTeX-insert-item
以原始方式重新定义。
您不应重新定义LaTeX-insert-item
而是定义一个新函数,例如my-LaTeX-insert-item
并将该函数用作LaTeX-insert-item
的:override
建议,并在您的 init 文件中使用以下行:
(advice-add 'LaTeX-insert-item :override #'my-LaTeX-insert-item)
如果在加载包latex
之前定义了my-LaTeX-insert-item
该建议也适用。
请注意,我假设您使用更新的 Emacs 版本和包nadvice
。 据我所知, nadvice
是在 Emacs 24.4 中引入的。
如果Mx locate-library
RET nadvice
RET为您提供了图书馆的路径,您就可以开始了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.