emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master aaeb101: * lisp/comint.el (comint-after-pmark-p): C


From: Juri Linkov
Subject: [Emacs-diffs] master aaeb101: * lisp/comint.el (comint-after-pmark-p): Check if buffer has a live process.
Date: Sat, 10 Feb 2018 16:46:22 -0500 (EST)

branch: master
commit aaeb101d899a09e18630466c348041a172cd5d91
Author: Juri Linkov <address@hidden>
Commit: Juri Linkov <address@hidden>

    * lisp/comint.el (comint-after-pmark-p): Check if buffer has a live process.
    
    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 | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/lisp/comint.el b/lisp/comint.el
index b4fbfc8..3163afe 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]