|
|
|
|
@ -1205,6 +1205,103 @@ |
|
|
|
|
(pop-mark) |
|
|
|
|
(pop-mark)))) |
|
|
|
|
#+END_SRC |
|
|
|
|
Shadow the AucTeX version of this function |
|
|
|
|
#+BEGIN_SRC emacs-lisp |
|
|
|
|
(defun LaTeX-insert-environment (environment &optional extra) |
|
|
|
|
"Insert LaTeX ENVIRONMENT with optional argument EXTRA." |
|
|
|
|
(let ((active-mark (and (TeX-active-mark) (not (eq (mark) (point))))) |
|
|
|
|
prefix content-start env-start env-end) |
|
|
|
|
(when (and active-mark (< (mark) (point))) (exchange-point-and-mark)) |
|
|
|
|
;; Compute the prefix. |
|
|
|
|
(when (and LaTeX-insert-into-comments (TeX-in-commented-line)) |
|
|
|
|
(save-excursion |
|
|
|
|
(beginning-of-line) |
|
|
|
|
(looking-at |
|
|
|
|
(concat "^\\([ \t]*" TeX-comment-start-regexp "+\\)+[ \t]*")) |
|
|
|
|
(setq prefix (match-string 0)))) |
|
|
|
|
;; What to do with the line containing point. |
|
|
|
|
(cond (;; if the line contains only whitespace, delete them |
|
|
|
|
(save-excursion (beginning-of-line) |
|
|
|
|
(looking-at (concat prefix "[ \t]*$"))) |
|
|
|
|
(delete-region (match-beginning 0) (match-end 0))) |
|
|
|
|
;; otherwise, something is written on the line. We can be |
|
|
|
|
;; at the beginning of the text |
|
|
|
|
((TeX-looking-at-backward (concat "^" prefix "[ \t]*") |
|
|
|
|
(line-beginning-position)) |
|
|
|
|
;;this morally opens a new line |
|
|
|
|
(beginning-of-line) |
|
|
|
|
(newline) |
|
|
|
|
(beginning-of-line 0)) |
|
|
|
|
((bolp) |
|
|
|
|
(delete-horizontal-space) |
|
|
|
|
(newline) |
|
|
|
|
(beginning-of-line 0)) |
|
|
|
|
((looking-at "[ \t]*$") |
|
|
|
|
(delete-horizontal-space) |
|
|
|
|
(newline) |
|
|
|
|
(when prefix (insert prefix)) |
|
|
|
|
(beginning-of-line)) |
|
|
|
|
(t |
|
|
|
|
(delete-horizontal-space) |
|
|
|
|
(newline 2) |
|
|
|
|
(when prefix (insert prefix)) |
|
|
|
|
(beginning-of-line 0))) |
|
|
|
|
;; What to do with the line containing mark. |
|
|
|
|
(when active-mark |
|
|
|
|
(save-excursion |
|
|
|
|
(goto-char (mark)) |
|
|
|
|
(cond ((save-excursion (beginning-of-line) |
|
|
|
|
(or (looking-at (concat prefix "[ \t]*$")) |
|
|
|
|
(looking-at "[ \t]*$"))) |
|
|
|
|
(delete-region (match-beginning 0) (match-end 0))) |
|
|
|
|
((TeX-looking-at-backward (concat "^" prefix "[ \t]*") |
|
|
|
|
(line-beginning-position)) |
|
|
|
|
(beginning-of-line) |
|
|
|
|
(newline) |
|
|
|
|
(beginning-of-line 0)) |
|
|
|
|
((looking-at "[ \t]*$") |
|
|
|
|
(delete-horizontal-space) |
|
|
|
|
(insert-before-markers "\n") |
|
|
|
|
;(newline) |
|
|
|
|
(when prefix (insert prefix))) |
|
|
|
|
(t |
|
|
|
|
(delete-horizontal-space) |
|
|
|
|
(insert-before-markers "\n") |
|
|
|
|
(newline) |
|
|
|
|
(when prefix (insert prefix)))))) |
|
|
|
|
;; Now insert the environment. |
|
|
|
|
(when prefix (insert prefix)) |
|
|
|
|
(setq env-start (point)) |
|
|
|
|
(insert TeX-esc "begin" TeX-grop environment TeX-grcl) |
|
|
|
|
(indent-according-to-mode) |
|
|
|
|
(when extra (insert extra)) |
|
|
|
|
(setq content-start (line-beginning-position 2)) |
|
|
|
|
(unless active-mark |
|
|
|
|
(newline) |
|
|
|
|
(when prefix (insert prefix)) |
|
|
|
|
(newline)) |
|
|
|
|
(when active-mark (goto-char (mark))) |
|
|
|
|
(when prefix (insert prefix)) |
|
|
|
|
(insert TeX-esc "end" TeX-grop environment TeX-grcl) |
|
|
|
|
(end-of-line 0) |
|
|
|
|
(if active-mark |
|
|
|
|
(progn |
|
|
|
|
(or (assoc environment LaTeX-indent-environment-list) |
|
|
|
|
(if auto-fill-function |
|
|
|
|
;; Fill the region only when `auto-fill-mode' is active. |
|
|
|
|
(LaTeX-fill-region content-start (line-beginning-position 2)))) |
|
|
|
|
(set-mark content-start)) |
|
|
|
|
(indent-according-to-mode)) |
|
|
|
|
(save-excursion (beginning-of-line 2) (indent-according-to-mode)) |
|
|
|
|
(TeX-math-input-method-off) |
|
|
|
|
(setq env-end (save-excursion |
|
|
|
|
(search-forward |
|
|
|
|
(concat TeX-esc "end" TeX-grop |
|
|
|
|
environment TeX-grcl)) |
|
|
|
|
(match-beginning 0))) |
|
|
|
|
(run-hook-with-args 'LaTeX-after-insert-env-hooks |
|
|
|
|
environment env-start env-end))) |
|
|
|
|
#+END_SRC |
|
|
|
|
*** The hook |
|
|
|
|
#+BEGIN_SRC emacs-lisp |
|
|
|
|
(add-hook 'LaTeX-mode-hook |
|
|
|
|
|