From 88eadc75d0de8534b26fd490143c94ab2ee4cc45 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Sun, 13 Oct 2019 22:22:31 +0200 Subject: [PATCH] Fix hitting RET on some text in compilation-mode * 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 | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 7d7a1b99d97..cd7a5dc677e 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -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 -- 2.39.5