emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master a17a5da 1/2: xref: Input history and minor tweaks


From: Dmitry Gutov
Subject: [Emacs-diffs] master a17a5da 1/2: xref: Input history and minor tweaks
Date: Thu, 22 Jan 2015 02:24:53 +0000

branch: master
commit a17a5daebf50f9abd00341f606eae8aff73e9737
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>

    xref: Input history and minor tweaks
    
    * lisp/progmodes/xref.el (xref--current): Rename from `xref--selected'.
    (xref--inhibit-mark-current): Rename from
    `xref--inhibit-mark-selected'.  Update the usages.
    (xref-quit): Reword the docstring.  Kill buffers after quitting
    windows instead of before.
    (xref--insert-xrefs): Tweak help-echo.
    (xref--read-identifier-history, xref--read-pattern-history):
    New variables.
    (xref--read-identifier, xref-find-apropos): Use them.
---
 lisp/ChangeLog         |   12 ++++++++++
 lisp/progmodes/xref.el |   55 +++++++++++++++++++++++++++--------------------
 2 files changed, 44 insertions(+), 23 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7aa66bf..9b50a66 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,15 @@
+2015-01-22  Dmitry Gutov  <address@hidden>
+
+       * progmodes/xref.el (xref--current): Rename from `xref--selected'.
+       (xref--inhibit-mark-current): Rename from
+       `xref--inhibit-mark-selected'.  Update the usages.
+       (xref-quit): Reword the docstring.  Kill buffers after quitting
+       windows instead of before.
+       (xref--insert-xrefs): Tweak help-echo.
+       (xref--read-identifier-history, xref--read-pattern-history):
+       New variables.
+       (xref--read-identifier, xref-find-apropos): Use them.
+
 2015-01-21  Ulrich Müller  <address@hidden>
 
        * play/gamegrid.el (gamegrid-add-score-with-update-game-score):
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index ee81250..b82cd8e 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -342,15 +342,15 @@ WINDOW controls how the buffer is displayed:
 (defvar-local xref--temporary-buffers nil
   "List of buffers created by xref code.")
 
-(defvar-local xref--selected nil
-  "t if the current buffer has ever been selected.
+(defvar-local xref--current nil
+  "Non-nil if this buffer was once current, except while displaying xrefs.
 Used for temporary buffers.")
 
-(defvar xref--inhibit-mark-selected nil)
+(defvar xref--inhibit-mark-current nil)
 
 (defun xref--mark-selected ()
-  (unless xref--inhibit-mark-selected
-    (setq xref--selected t))
+  (unless xref--inhibit-mark-current
+    (setq xref--current t))
   (remove-hook 'buffer-list-update-hook #'xref--mark-selected t))
 
 (defun xref--save-to-history (buf win)
@@ -375,7 +375,7 @@ Used for temporary buffers.")
   (condition-case err
       (let ((xref-buf (current-buffer))
             (bl (buffer-list))
-            (xref--inhibit-mark-selected t))
+            (xref--inhibit-mark-current t))
         (xref--goto-location location)
         (let ((buf (current-buffer)))
           (unless (memq buf bl)
@@ -438,29 +438,28 @@ Used for temporary buffers.")
   (setq buffer-read-only t))
 
 (defun xref-quit (&optional kill)
-  "Perform cleanup, then quit the current window.
-The cleanup consists of burying all temporarily displayed
-buffers, and if KILL is non-nil, of killing all buffers that were
-created in the process of showing xrefs.
-
-Exceptions are made for buffers switched to by the user in the
-meantime, and other window configuration changes.  These are
-preserved."
+  "Bury temporarily displayed buffers, then quit the current window.
+
+If KILL is non-nil, kill all buffers that were created in the
+process of showing xrefs, and also kill the current buffer.
+
+The buffers that the user has otherwise interacted with in the
+meantime are preserved."
   (interactive "P")
   (let ((window (selected-window))
         (history xref--display-history))
     (setq xref--display-history nil)
+    (pcase-dolist (`(,buf . ,win) history)
+      (when (and (window-live-p win)
+                 (eq buf (window-buffer win)))
+        (quit-window nil win)))
     (when kill
-      (let ((xref--inhibit-mark-selected t)
+      (let ((xref--inhibit-mark-current t)
             kill-buffer-query-functions)
         (dolist (buf xref--temporary-buffers)
-          (unless (buffer-local-value 'xref--selected buf)
+          (unless (buffer-local-value 'xref--current buf)
             (kill-buffer buf)))
         (setq xref--temporary-buffers nil)))
-    (pcase-dolist (`(,buf . ,win) history)
-      (when (and (window-live-p win)
-                 (eq buf (window-buffer win)))
-        (quit-window nil win)))
     (quit-window kill window)))
 
 (defconst xref-buffer-name "*xref*"
@@ -496,7 +495,9 @@ GROUP is a string for decoration purposes and XREF is an
                              'face 'font-lock-keyword-face
                              'mouse-face 'highlight
                              'keymap xref--button-map
-                             'help-echo "mouse-2: display in another window, 
RET or mouse-1: navigate")
+                             'help-echo
+                             (concat "mouse-2: display in another window, "
+                                     "RET or mouse-1: follow reference"))
                        description))
                     (when (or more1 more2)
                       (insert "\n")))))
@@ -535,6 +536,10 @@ Return an alist of the form ((FILENAME . (XREF ...)) ...)."
 (defvar xref-show-xrefs-function 'xref--show-xref-buffer
   "Function to display a list of xrefs.")
 
+(defvar xref--read-identifier-history nil)
+
+(defvar xref--read-pattern-history nil)
+
 (defun xref--show-xrefs (input kind arg window)
   (let* ((bl (buffer-list))
          (xrefs (funcall xref-find-function kind arg))
@@ -557,7 +562,8 @@ Return an alist of the form ((FILENAME . (XREF ...)) ...)."
     (cond ((or current-prefix-arg (not id))
            (completing-read prompt
                             (funcall xref-identifier-completion-table-function)
-                            nil t id))
+                            nil t id
+                            'xref--read-identifier-history))
           (t id))))
 
 
@@ -593,12 +599,15 @@ With prefix argument, prompt for the identifier."
   (interactive (list (xref--read-identifier "Find references of: ")))
   (xref--show-xrefs identifier 'references identifier nil))
 
+(declare-function apropos-parse-pattern "apropos" (pattern))
+
 ;;;###autoload
 (defun xref-find-apropos (pattern)
   "Find all meaningful symbols that match PATTERN.
 The argument has the same meaning as in `apropos'."
   (interactive (list (read-from-minibuffer
-                      "Search for pattern (word list or regexp): ")))
+                      "Search for pattern (word list or regexp): "
+                      nil nil nil 'xref--read-pattern-history)))
   (require 'apropos)
   (xref--show-xrefs pattern 'apropos
                     (apropos-parse-pattern



reply via email to

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