在 AUCTeXM-RET中,它绑定了(LaTeX-insert-item)
一个新的正确缩进的行并插入\item
和一个空格,光标放置在该空格之后。我想扩展此功能,使其C-M-RET具有类似的功能,但用于\item[description]
.
我想要的C-M-RET是
- 制作一个新的正确缩进的行并插入
\item[]
, - 将光标放在方括号之间,然后
\item[]
按as后将光标放置一个空格Tab。
在 AUCTeXM-RET中,它绑定了(LaTeX-insert-item)
一个新的正确缩进的行并插入\item
和一个空格,光标放置在该空格之后。我想扩展此功能,使其C-M-RET具有类似的功能,但用于\item[description]
.
我想要的C-M-RET是
\item[]
,\item[]
按as后将光标放置一个空格Tab。下面的函数是从 latex.el 中抄来的,并稍作修改以调用参数提示版本LaTeX-item-argument
,而不是直接插入项目。
(defun LaTeX-insert-item-arg ()
"Insert a new item in an environment, prompting for an item label.
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))
(if (assoc environment LaTeX-item-list)
(funcall (cdr (assoc environment LaTeX-item-list)))
(LaTeX-item-argument)) ;; ONLY THIS LINE IS DIFFERENT
(indent-according-to-mode)))
您可以将该功能绑定到您喜欢的任何键:
(add-hook 'LaTeX-mode-hook (lambda ()
(local-set-key [(control return)] 'LaTeX-insert-item-arg)))
如果您愿意M-C-RET
,请(meta control return)
改用,尽管它似乎只适用于Alt
密钥,而不是Esc
密钥(通常行为相同......)
听起来您想要 Textmate 片段行为。
您需要yasnippet来进行片段扩展/字段移动。IMO,将其绑定到密钥不是一个好的解决方案,因为密钥的数量是有限的,但 yasnippet 也允许您这样做。