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)))))