]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow `tex-buffer' to work on buffers not visiting files
authorLars Ingebrigtsen <larsi@gnus.org>
Wed, 11 Aug 2021 19:26:29 +0000 (21:26 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Wed, 11 Aug 2021 19:26:29 +0000 (21:26 +0200)
* lisp/textmodes/tex-mode.el (tex-region): Make `tex-buffer' work
again on unsaved files (bug#34082).

lisp/textmodes/tex-mode.el

index 5169377c1363b351014022370d061f6a6cb13453..51216bdbe73c5e8995dbf3c0e34ed5d5d33c6231 100644 (file)
@@ -2533,7 +2533,10 @@ The value of `tex-command' specifies the command to use to run TeX."
           (file-name-as-directory (expand-file-name tex-directory)))
          (tex-out-file (expand-file-name (concat tex-zap-file ".tex")
                                         zap-directory))
-        (main-file (expand-file-name (tex-main-file)))
+         ;; We may be running from an unsaved buffer, in which case
+         ;; there's no point in guessing for a main file name.
+        (main-file (and buffer-file-name
+                         (expand-file-name (tex-main-file))))
         (ismain (string-equal main-file (buffer-file-name)))
         already-output)
     ;; Don't delete temp files if we do the same buffer twice in a row.
@@ -2542,9 +2545,11 @@ The value of `tex-command' specifies the command to use to run TeX."
     (let ((default-directory zap-directory)) ; why?
       ;; We assume the header is fully contained in tex-main-file.
       ;; We use f-f-ns so we get prompted about any changes on disk.
-      (with-current-buffer (find-file-noselect main-file)
-       (setq already-output (tex-region-header tex-out-file
-                                               (and ismain beg))))
+      (if (not main-file)
+          (setq already-output 0)
+        (with-current-buffer (find-file-noselect main-file)
+         (setq already-output (tex-region-header tex-out-file
+                                                 (and ismain beg)))))
       ;; Write out the specified region (but don't repeat anything
       ;; already written in the header).
       (write-region (if ismain