diff options
-rw-r--r-- | lisp/progmodes/compile.el | 12 |
1 files 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 |