我认为这足以让Lisp在这里取代TeX Stackexchange。希望我是对的。我想使用命令 C-c C-j 插入两个换行符,然后插入一个项目。当我调用它的定义时,它告诉我它在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)))
答案 0 :(得分:0)
您对LaTeX-newline
的假设是正确的。它插入一个换行符。如果调用了修改后的函数,它将按您希望的那样工作。
它很可能永远不会被调用。
也许您已将定义添加到init文件中,但在该定义后 加载了AUCTeX,并且LaTeX-insert-item
以原始方式重新定义。
您不应重新定义LaTeX-insert-item
,而应定义一个新功能,例如my-LaTeX-insert-item
,并将该功能用作:override
的{{1}}建议,并在您的初始化文件中添加以下行:
LaTeX-insert-item
如果在装入软件包(advice-add 'LaTeX-insert-item :override #'my-LaTeX-insert-item)
之前定义了my-LaTeX-insert-item
,该建议也将起作用。
请注意,我假设您使用带有软件包latex
的更新版本的Emacs。据我所知nadvice
是在Emacs 24.4中引入的。
如果 Mx nadvice
RET locate-library
RET 为您提供了很好的库路径