summaryrefslogtreecommitdiff
path: root/common.el
diff options
context:
space:
mode:
Diffstat (limited to 'common.el')
-rw-r--r--common.el34
1 files changed, 34 insertions, 0 deletions
diff --git a/common.el b/common.el
index 7da6129..aa90a88 100644
--- a/common.el
+++ b/common.el
@@ -156,6 +156,40 @@ ARG means do this command ARG times."
((< arg 0)
(goto-char (point-max))))))))
+(defun durand-completion-goto-minibuffer ()
+ "Go to the minibuffer."
+ (interactive)
+ (let ((active-minibuffer-window (active-minibuffer-window))
+ (completion-windows
+ (delq nil
+ (mapcar
+ (lambda (w)
+ (and (consp
+ (delq nil
+ (mapcar
+ (lambda (name)
+ (string-match-p
+ name
+ (buffer-name (window-buffer w))))
+ durand-completion-buffer-names)))
+ w))
+ (window-list nil 'nomini))))
+ (in-completion-p (consp
+ (delq nil
+ (mapcar
+ (lambda (name)
+ (string-equal name (buffer-name)))
+ durand-completion-buffer-names))))
+ (in-minibuffer-p
+ (minibuffer-window-active-p (selected-window))))
+ (cond
+ ((and active-minibuffer-window
+ (not in-minibuffer-p))
+ (select-window active-minibuffer-window))
+ ((and (consp completion-windows)
+ (not in-completion-p))
+ (select-window (car completion-windows))))))
+
;; This can be optimized by not duplicating an element on the stack.
;;;###autoload