]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/comint.el (comint-after-pmark-p): Check if buffer has a live process.
authorJuri Linkov <juri@linkov.net>
Sat, 10 Feb 2018 21:46:13 +0000 (23:46 +0200)
committerJuri Linkov <juri@linkov.net>
Sat, 10 Feb 2018 21:46:13 +0000 (23:46 +0200)
Return nil if not.
(comint-history-isearch-setup): Don't check if process is live.
Always check if shell prompt is empty regardless of the value
of comint-history-isearch. (Bug#30187)

lisp/comint.el

index b4fbfc86ed99c7c8f7f5232fe02aef75c5e8052a..3163afeff40c3439d20cab7dda34354a0ad40174 100644 (file)
@@ -1448,17 +1448,18 @@ If nil, Isearch operates on the whole comint buffer."
 (defun comint-history-isearch-setup ()
   "Set up a comint for using Isearch to search the input history.
 Intended to be added to `isearch-mode-hook' in `comint-mode'."
-  (when (and (get-buffer-process (current-buffer))
-            (or (eq comint-history-isearch t)
-                (and (eq comint-history-isearch 'dwim)
-                     ;; Point is at command line.
-                     (comint-after-pmark-p)
-                     ;; Prompt is not empty like in Async Shell Command buffers
-                     (not (eq (save-excursion
-                                (goto-char (comint-line-beginning-position))
-                                (forward-line 0)
-                                (point))
-                              (comint-line-beginning-position))))))
+  (when (and
+         ;; Prompt is not empty like in Async Shell Command buffers
+         ;; or in finished shell buffers
+         (not (eq (save-excursion
+                   (goto-char (comint-line-beginning-position))
+                   (forward-line 0)
+                   (point))
+                 (comint-line-beginning-position)))
+        (or (eq comint-history-isearch t)
+            (and (eq comint-history-isearch 'dwim)
+                 ;; Point is at command line.
+                 (comint-after-pmark-p))))
     (setq isearch-message-prefix-add "history ")
     (setq-local isearch-search-fun-function
                 #'comint-history-isearch-search)
@@ -2288,8 +2289,10 @@ If this takes us past the end of the current line, don't skip at all."
 
 (defun comint-after-pmark-p ()
   "Return t if point is after the process output marker."
-  (let ((pmark (process-mark (get-buffer-process (current-buffer)))))
-    (<= (marker-position pmark) (point))))
+  (let ((process (get-buffer-process (current-buffer))))
+    (when process
+      (let ((pmark (process-mark process)))
+        (<= (marker-position pmark) (point))))))
 
 (defun comint-simple-send (proc string)
   "Default function for sending to PROC input STRING.