0

在 AUCTeXM-RET中,它绑定了(LaTeX-insert-item)一个新的正确缩进的行并插入\item和一个空格,光标放置在该空格之后。我想扩展此功能,使其C-M-RET具有类似的功能,但用于\item[description].

我想要的C-M-RET

  1. 制作一个新的正确缩进的行并插入\item[]
  2. 将光标放在方括号之间,然后
  3. \item[]按as后将光标放置一个空格Tab
4

2 回答 2

2

下面的函数是从 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密钥(通常行为相同......)

于 2011-10-19T14:36:12.503 回答
1

听起来您想要 Textmate 片段行为。

您需要yasnippet来进行片段扩展/字段移动。IMO,将其绑定到密钥不是一个好的解决方案,因为密钥的数量是有限的,但 yasnippet 也允许您这样做。

于 2011-10-19T12:29:52.563 回答