Сделать CM-RET вставку \ item [] - PullRequest
       18

Сделать CM-RET вставку \ item []

0 голосов
/ 19 октября 2011

В AUCTeX M-RET связан с (LaTeX-insert-item), который создает новую строку с правильными отступами и вставляет \item и пробел, после которого устанавливается курсор.Я хотел бы расширить эту функцию, чтобы CM-RET обладал аналогичной функциональностью, но для \item[description].

я хотел бы, чтобы CM-RET для

  1. создайте новую строку с правильными отступами и вставьте \item[],
  2. , поместите курсор в квадратные скобки и
  3. поместите курсор на один пробел после \item[]при нажатии Tab .

Ответы [ 2 ]

2 голосов
/ 19 октября 2011

Следующая функция взята из 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 (который обычно ведет себя так же ...)

1 голос
/ 19 октября 2011

Звучит так, будто вы хотите поведение фрагментов Textmate.

Вам нужно yasnippet , чтобы сделать расширение / перемещение фрагмента поля. IMO, это не очень хорошее решение связать это с ключом, потому что количество ключей ограничено, но yasnippet также позволяет вам это делать

...