From 5e56fb538040c979575a27a88c3bfbfde4bf88d4 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 9 Jun 2003 17:42:22 +0000 Subject: [PATCH] (tex-search-noncomment): New macro. (tex-last-unended-begin, tex-next-unmatched-end): Use it so we don't get confused by \begin and \end in comments. (tex-compile): Change dir before calling tex-compile-default. --- lisp/textmodes/tex-mode.el | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index e06e98ba4cf..583c106c173 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -1263,17 +1263,30 @@ Puts point on a blank line between them." ;;;; LaTeX syntax navigation ;;;; +(defmacro tex-search-noncomment (&rest body) + "Execute BODY as long as it return non-nil and point is in a comment. +Return the value returned by the last execution of BODY." + (declare (debug t)) + (let ((res-sym (make-symbol "result"))) + `(let (,res-sym) + (while + (and (setq ,res-sym (progn ,@body)) + (save-excursion (skip-chars-backward "^\n%") (not (bolp))))) + ,res-sym))) + (defun tex-last-unended-begin () "Leave point at the beginning of the last `\\begin{...}' that is unended." (condition-case nil - (while (and (re-search-backward "\\\\\\(begin\\|end\\)\\s *{") + (while (and (tex-search-noncomment + (re-search-backward "\\\\\\(begin\\|end\\)\\s *{")) (looking-at "\\\\end")) (tex-last-unended-begin)) (search-failed (error "Couldn't find unended \\begin")))) (defun tex-next-unmatched-end () "Leave point at the end of the next `\\end' that is unended." - (while (and (re-search-forward "\\\\\\(begin\\|end\\)\\s *{[^}]+}") + (while (and (tex-search-noncomment + (re-search-forward "\\\\\\(begin\\|end\\)\\s *{[^}]+}")) (save-excursion (goto-char (match-beginning 0)) (looking-at "\\\\begin"))) (tex-next-unmatched-end))) @@ -1813,13 +1826,14 @@ FILE is typically the output DVI or PDF file." ;; FIXME: Use time-stamps on files to decide the next op. (interactive (let* ((file (tex-main-file)) - (dir (prog1 (file-name-directory (expand-file-name file)) - (setq file (file-name-nondirectory file)))) + (default-directory + (prog1 (file-name-directory (expand-file-name file)) + (setq file (file-name-nondirectory file)))) (root (file-name-sans-extension file)) (fspec (list (cons ?r (comint-quote-filename root)) (cons ?f (comint-quote-filename file)))) (default (tex-compile-default fspec))) - (list dir + (list default-directory (completing-read (format "Command [%s]: " (tex-summarize-command default)) (mapcar (lambda (x)