emacs-diffs
[Top][All Lists]
Advanced

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

master 6fe5c21: project-switch-to-buffer: Use the "other buffer" as defa


From: Dmitry Gutov
Subject: master 6fe5c21: project-switch-to-buffer: Use the "other buffer" as default
Date: Thu, 18 Jun 2020 20:44:11 -0400 (EDT)

branch: master
commit 6fe5c21c723c1ebf1d4df911761d14c47970262f
Author: Andrii Kolomoiets <andreyk.mad@gmail.com>
Commit: Dmitry Gutov <dgutov@yandex.ru>

    project-switch-to-buffer: Use the "other buffer" as default
    
    * lisp/progmodes/project.el
    (project-switch-to-buffer): Pass the "other buffer" as DEF to
    read-buffer if it belongs to the current project (bug#41879).
---
 lisp/progmodes/project.el | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 7a41df6..89dcee9 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -777,14 +777,24 @@ Arguments the same as in `compile'."
 (defun project-switch-to-buffer ()
   "Switch to a buffer in the current project."
   (interactive)
-  (let ((root (project-root (project-current t))))
+  (let* ((root (project-root (project-current t)))
+         (current-buffer (current-buffer))
+         (other-buffer (other-buffer current-buffer))
+         (other-name (buffer-name other-buffer))
+         (predicate
+          (lambda (buffer)
+            ;; BUFFER is an entry (BUF-NAME . BUF-OBJ) of Vbuffer_alist.
+            (and (not (eq (cdr buffer) current-buffer))
+                 (when-let ((file (buffer-local-value 'default-directory
+                                                      (cdr buffer))))
+                   (file-in-directory-p file root))))))
     (switch-to-buffer
      (read-buffer
-      "Switch to buffer: " nil t
-      (lambda (buffer)
-        ;; BUFFER is an entry (BUF-NAME . BUF-OBJ) of Vbuffer_alist.
-        (when-let ((file (buffer-file-name (cdr buffer))))
-          (file-in-directory-p file root)))))))
+      "Switch to buffer: "
+      (when (funcall predicate (cons other-name other-buffer))
+        other-name)
+      t
+      predicate))))
 
 (defcustom project-kill-buffers-skip-conditions
   '("\\*Help\\*")



reply via email to

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