# HG changeset patch # User Richard M. Stallman # Date 835742650 0 # Node ID 1252826f389bc2c479ebced1fe106903211494cd # Parent 47d9b7a1dee35b46ed4cb4ae05fd2c49a30bd2db (tex-common-initialization): Set skeleton-further-elements. (tex-latex-block): Define as a skeleton. diff -r 47d9b7a1dee3 -r 1252826f389b lisp/textmodes/tex-mode.el --- a/lisp/textmodes/tex-mode.el Tue Jun 25 22:35:26 1996 +0000 +++ b/lisp/textmodes/tex-mode.el Tue Jun 25 22:44:10 1996 +0000 @@ -556,6 +556,9 @@ (setq parse-sexp-ignore-comments t) (make-local-variable 'compare-windows-whitespace) (setq compare-windows-whitespace 'tex-categorize-whitespace) + (make-local-variable 'skeleton-further-elements) + (setq skeleton-further-elements + '((indent-line-function 'indent-relative-maybe))) (make-local-variable 'facemenu-add-face-function) (make-local-variable 'facemenu-end-add-face) (make-local-variable 'facemenu-remove-face-function) @@ -728,25 +731,20 @@ (insert ?}))) ;;; Like tex-insert-braces, but for LaTeX. -(defun tex-latex-block (name) - "Creates a matching pair of lines `\\begin{NAME}' and `\\end{NAME}' at point. +(define-skeleton tex-latex-block + "Create a matching pair of lines \\begin[OPT]{NAME} and \\end{NAME} at point. Puts point on a blank line between them." - (interactive - (prog2 - (barf-if-buffer-read-only) - (list - (completing-read "LaTeX block name: " - (mapcar 'list - (append standard-latex-block-names - latex-block-names)))))) - (let ((col (current-column))) - (insert (format "\\begin{%s}\n" name)) - (indent-to col) - (save-excursion - (insert ?\n) - (indent-to col) - (insert-string (format "\\end{%s}" name)) - (if (eobp) (insert ?\n))))) + (completing-read "LaTeX block name: " + (mapcar 'list + (append standard-latex-block-names + latex-block-names))) + "\\begin[" + (skeleton-read "[options]: ") & ?\] | -1 + ?\{ + str + ?\} \n + _ \n + "\\end{" str ?\}) (defun tex-last-unended-begin () "Leave point at the beginning of the last `\\begin{...}' that is unended."