changeset 51533:fd5c388dd142

(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.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 09 Jun 2003 17:42:22 +0000
parents 4ecd894b3fd4
children e9384e053437
files lisp/textmodes/tex-mode.el
diffstat 1 files changed, 19 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/textmodes/tex-mode.el	Mon Jun 09 17:05:55 2003 +0000
+++ b/lisp/textmodes/tex-mode.el	Mon Jun 09 17:42:22 2003 +0000
@@ -1263,17 +1263,30 @@
 ;;;; 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 @@
   ;; 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)