branch: elpa/slime
commit dd992eb810059bab03a0ab22760cef2fd3a24e51
Author: Stas Boukarev <stass...@gmail.com>
Commit: Stas Boukarev <stass...@gmail.com>

    slime-fuzzy-done: check if slime-fuzzy-target-buffer is alive.
    
    Fixes #799
---
 contrib/slime-fuzzy.el | 32 +++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/contrib/slime-fuzzy.el b/contrib/slime-fuzzy.el
index 2b005799ed7..82edcbdd613 100644
--- a/contrib/slime-fuzzy.el
+++ b/contrib/slime-fuzzy.el
@@ -212,6 +212,13 @@ Complete listing of keybindings with *Fuzzy Completions*:
   (set (make-local-variable 'slime-fuzzy-current-completion-overlay)
        (make-overlay (point) (point) nil t nil)))
 
+(defun slime-minibuffer-respecting-message (format &rest format-args)
+  "Display TEXT as a message, without hiding any minibuffer contents."
+  (let ((text (format " [%s]" (apply #'format format format-args))))
+    (if (minibuffer-window-active-p (minibuffer-window))
+        (minibuffer-message text)
+        (message "%s" text))))
+
 (defun slime-fuzzy-completions (prefix &optional default-package)
   "Get the list of sorted completion objects from completing
 `prefix' in `package' from the connected Lisp."
@@ -554,16 +561,19 @@ run."
 
 (defun slime-fuzzy-done ()
   "Cleans up after the completion process."
-  (when slime-fuzzy-target-buffer
-    (set-buffer slime-fuzzy-target-buffer)
-    (slime-fuzzy-disable-target-buffer-completions-mode)
-    (let ((window (get-buffer-window (slime-get-fuzzy-buffer))))
-      (when window
-        (quit-window nil window)))
-    (if (slime-minibuffer-p slime-fuzzy-target-buffer)
-        (select-window (minibuffer-window))
-        (pop-to-buffer slime-fuzzy-target-buffer))
-    (goto-char slime-fuzzy-end)
-    (setq slime-fuzzy-target-buffer nil)))
+  (cond ((buffer-live-p slime-fuzzy-target-buffer)
+         (set-buffer slime-fuzzy-target-buffer)
+         (slime-fuzzy-disable-target-buffer-completions-mode)
+         (let ((window (get-buffer-window (slime-get-fuzzy-buffer))))
+           (when window
+             (quit-window nil window)))
+         (if (slime-minibuffer-p slime-fuzzy-target-buffer)
+             (select-window (minibuffer-window))
+             (pop-to-buffer slime-fuzzy-target-buffer))
+         (goto-char slime-fuzzy-end)
+         (setq slime-fuzzy-target-buffer nil))
+        (t
+         (bury-buffer)
+         (setq slime-fuzzy-target-buffer nil))))
 
 (provide 'slime-fuzzy)

Reply via email to