]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix hitting RET on some text in compilation-mode
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 13 Oct 2019 20:22:31 +0000 (22:22 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 13 Oct 2019 20:22:31 +0000 (22:22 +0200)
* lisp/progmodes/compile.el (compilation-next-error-function):
Don't bug out with an incomprehensible error message on "make[2]:"
texts (bug#5316).
(compilation-find-file): Protect against there being no file name.

lisp/progmodes/compile.el

index 7d7a1b99d970f6de22974ce0fc737756de0c6d8f..cd7a5dc677efdbe9dce97ed60ba57d0345976e00 100644 (file)
@@ -2509,6 +2509,8 @@ This is the value of `next-error-function' in Compilation buffers."
         (loc (compilation--message->loc msg))
         (end-loc (compilation--message->end-loc msg))
         (marker (point-marker)))
+    (unless loc
+      (user-error "No next error"))
     (setq compilation-current-error (point-marker)
          overlay-arrow-position
            (if (bolp)
@@ -2822,7 +2824,8 @@ attempts to find a file whose name is produced by (format FMT FILENAME)."
                       (expand-file-name directory)
                     default-directory))
         buffer thisdir fmts name)
-    (if (file-name-absolute-p filename)
+    (if (and filename
+             (file-name-absolute-p filename))
         ;; The file name is absolute.  Use its explicit directory as
         ;; the first in the search path, and strip it from FILENAME.
         (setq filename (abbreviate-file-name (expand-file-name filename))
@@ -2850,8 +2853,11 @@ attempts to find a file whose name is produced by (format FMT FILENAME)."
            (and w (progn (compilation-set-window w marker)
                           (compilation-set-overlay-arrow w))))
           (let* ((name (read-file-name
-                        (format "Find this %s in (default %s): "
-                                compilation-error filename)
+                        (format "Find this %s in%s: "
+                                compilation-error
+                                (if filename
+                                    (format " (default %s)" filename)
+                                  ""))
                         spec-dir filename t nil
                         ;; The predicate below is fine when called from
                         ;; minibuffer-complete-and-exit, but it's too