0

AUCTeXでは、適切にインデントされた新しい行を作成し、スペースを挿入してからカーソルを置くM-RETようにバインドされています。この機能を拡張して、同様の機能を持つようにしたいと思いますが、 .(LaTeX-insert-item)\itemC-M-RET\item[description]

私が欲しいのC-M-RET

  1. 適切にインデントされた新しい行を作成して挿入\item[]し、
  2. 角括弧の間にカーソルを置き、
  3. \item[]asTabを押した後にカーソルを 1 スペース置きます。
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)AltEsc

于 2011-10-19T14:36:12.503 に答える
1

Textmate スニペットの動作が必要なようです。

スニペットの展開/フィールドの移動を行うには、yasnippetが必要です。IMO、キーの数が限られているため、これをキーにバインドするのは良い解決策ではありませんが、yasnippet ではそれも可能です。

于 2011-10-19T12:29:52.563 に答える