]> git.eshelyaron.com Git - emacs.git/commitdiff
Use regexp matching instead of checking exit status
authorDmitry Gutov <dgutov@yandex.ru>
Mon, 29 May 2017 21:58:39 +0000 (00:58 +0300)
committerDmitry Gutov <dgutov@yandex.ru>
Mon, 29 May 2017 21:59:03 +0000 (00:59 +0300)
* lisp/progmodes/xref.el (xref-collect-matches):
See if the output buffer contents look like Grep output
instead of checking exit status (bug#23451).

lisp/progmodes/xref.el

index c43f3a4ca838040b614fb6f80c3848205ef378b1..b8ec50f14aedb54a193e5f6cce87dfee63c09d93 100644 (file)
@@ -935,11 +935,14 @@ IGNORES is a list of glob patterns."
       (erase-buffer)
       (setq status
             (call-process-shell-command command nil t))
-      (when (and (not (zerop status))
-                 ;; Nonzero status can mean "no matches found".
-                 (/= (point-min) (point-max)))
-        (user-error "Search failed with status %d: %s" status (buffer-string)))
       (goto-char (point-min))
+      ;; Can't use the exit status: Grep exits with 1 to mean "no
+      ;; matches found".  Find exits with 1 if any of the invocations
+      ;; exit with non-zero. "No matches" and "Grep program not found"
+      ;; are all the same to it.
+      (when (and (/= (point-min) (point-max))
+                 (not (looking-at grep-re)))
+        (user-error "Search failed with status %d: %s" status (buffer-string)))
       (while (re-search-forward grep-re nil t)
         (push (list (string-to-number (match-string 2))
                     (match-string 1)