Function: latex-env-before-change
latex-env-before-change is a byte-compiled function defined in
tex-mode.el.gz.
Signature
(latex-env-before-change START END)
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/tex-mode.el.gz
(defun latex-env-before-change (start end)
(when (get-text-property start 'latex-env-pair)
(condition-case err
(with-silent-modifications
;; Remove properties even if don't find a pair.
(remove-list-of-text-properties
(previous-single-property-change (1+ start) 'latex-env-pair)
(next-single-property-change start 'latex-env-pair)
'(latex-env-pair))
(unless (or (get-char-property start 'text-clones)
(get-char-property (1+ start) 'text-clones)
(save-excursion
(goto-char start)
(not (re-search-backward
"\\\\\\(?:end\\|begi\\(n\\)\\) *{"
(line-beginning-position) t))))
(let ((cmd-start (match-beginning 0))
(type (match-end 1)) ;nil for \end, else \begin.
(arg-start (1- (match-end 0))))
(save-excursion
(goto-char (match-end 0))
(when (and (looking-at "[^\n{}]*}")
(> (match-end 0) end))
(let ((arg-end (match-end 0)))
(if (null type) ;\end
(progn (goto-char arg-end)
(latex-forward-sexp -1)
(forward-word-strictly 1))
(goto-char cmd-start)
(latex-forward-sexp 1)
(let (forward-sexp-function) (backward-sexp)))
(when (looking-at
(regexp-quote (buffer-substring arg-start arg-end)))
(text-clone-create arg-start arg-end))))))))
(scan-error nil)
(error (message "Error in latex-env-before-change: %S" err)))))