[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#11008: 24.0.94; ido-mode: Setting ido-completion-buffer to nil is br
From: |
Leo |
Subject: |
bug#11008: 24.0.94; ido-mode: Setting ido-completion-buffer to nil is broken |
Date: |
Wed, 14 Mar 2012 00:56:07 +0800 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.94 (Mac OS X 10.6.8) |
Could you try the following patch? Thanks.
=== modified file 'lisp/ido.el'
--- lisp/ido.el 2012-02-04 00:59:58 +0000
+++ lisp/ido.el 2012-03-13 16:47:52 +0000
@@ -1722,8 +1722,8 @@
(unless (and ido-enable-tramp-completion
(string-match "\\`/[^/]*@\\'" dir))
(setq dir (ido-final-slash dir t))))
- (if (get-buffer ido-completion-buffer)
- (kill-buffer ido-completion-buffer))
+ (when (and ido-completion-buffer (get-buffer ido-completion-buffer))
+ (kill-buffer ido-completion-buffer))
(cond
((equal dir ido-current-directory)
nil)
@@ -1736,8 +1736,8 @@
(t
(ido-trace "cd" dir)
(setq ido-current-directory dir)
- (if (get-buffer ido-completion-buffer)
- (kill-buffer ido-completion-buffer))
+ (when (and ido-completion-buffer (get-buffer ido-completion-buffer))
+ (kill-buffer ido-completion-buffer))
(setq ido-directory-nonreadable (ido-nonreadable-directory-p dir))
(setq ido-directory-too-big (and (not ido-directory-nonreadable)
(ido-directory-too-big-p dir)))
@@ -1982,8 +1982,8 @@
(setq ido-text-init nil))
ido-completion-map nil hist))))
(ido-trace "read-from-minibuffer" ido-final-text)
- (if (get-buffer ido-completion-buffer)
- (kill-buffer ido-completion-buffer))
+ (when (and ido-completion-buffer (get-buffer ido-completion-buffer))
+ (kill-buffer ido-completion-buffer))
(ido-trace "\n_EXIT_" ido-exit)
@@ -3837,8 +3837,8 @@
(defun ido-choose-completion-string (choice &rest ignored)
(when (ido-active)
;; Insert the completion into the buffer where completion was requested.
- (if (get-buffer ido-completion-buffer)
- (kill-buffer ido-completion-buffer))
+ (when (and ido-completion-buffer (get-buffer ido-completion-buffer))
+ (kill-buffer ido-completion-buffer))
(cond
((ido-active t) ;; ido-use-merged-list
(setq ido-current-directory ""
@@ -3857,7 +3857,8 @@
"Show possible completions in a *File Completions* buffer."
(interactive)
(setq ido-rescan nil)
- (let ((temp-buf (get-buffer ido-completion-buffer))
+ (let ((temp-buf (and ido-completion-buffer
+ (get-buffer ido-completion-buffer)))
display-it full-list)
(if (and (eq last-command this-command) temp-buf)
;; scroll buffer
@@ -3876,37 +3877,37 @@
(scroll-other-window))
(set-buffer buf))
(setq display-it t))
- (if display-it
- (with-output-to-temp-buffer ido-completion-buffer
- (let ((completion-list (sort
- (cond
- (ido-directory-too-big
- (message "Reading directory...")
- (setq ido-directory-too-big nil
- ido-ignored-list nil
- ido-cur-list (ido-all-completions)
- ido-rescan t)
- (ido-set-matches)
- (or ido-matches ido-cur-list))
- (ido-use-merged-list
- (ido-flatten-merged-list (or ido-matches
ido-cur-list)))
- ((or full-list
ido-completion-buffer-all-completions)
- (ido-all-completions))
- (t
- (copy-sequence (or ido-matches
ido-cur-list))))
- #'ido-file-lessp)))
- (if (featurep 'xemacs)
- ;; XEmacs extents are put on by default, doesn't seem to be
- ;; any way of switching them off.
- ;; This obscure code avoids a byte compiler warning in Emacs.
- (let ((f 'display-completion-list))
- (funcall f completion-list
- :help-string "ido "
- :activate-callback
- (lambda (x y z) (message "Doesn't work yet,
sorry!"))))
- ;; else running Emacs
- ;;(add-hook 'completion-setup-hook 'completion-setup-function)
- (display-completion-list completion-list)))))))
+ (when (and display-it ido-completion-buffer)
+ (with-output-to-temp-buffer ido-completion-buffer
+ (let ((completion-list (sort
+ (cond
+ (ido-directory-too-big
+ (message "Reading directory...")
+ (setq ido-directory-too-big nil
+ ido-ignored-list nil
+ ido-cur-list (ido-all-completions)
+ ido-rescan t)
+ (ido-set-matches)
+ (or ido-matches ido-cur-list))
+ (ido-use-merged-list
+ (ido-flatten-merged-list (or ido-matches
ido-cur-list)))
+ ((or full-list
ido-completion-buffer-all-completions)
+ (ido-all-completions))
+ (t
+ (copy-sequence (or ido-matches
ido-cur-list))))
+ #'ido-file-lessp)))
+ (if (featurep 'xemacs)
+ ;; XEmacs extents are put on by default, doesn't seem to be
+ ;; any way of switching them off.
+ ;; This obscure code avoids a byte compiler warning in Emacs.
+ (let ((f 'display-completion-list))
+ (funcall f completion-list
+ :help-string "ido "
+ :activate-callback
+ (lambda (x y z) (message "Doesn't work yet, sorry!"))))
+ ;; else running Emacs
+ ;;(add-hook 'completion-setup-hook 'completion-setup-function)
+ (display-completion-list completion-list)))))))
;;; KILL CURRENT BUFFER
(defun ido-kill-buffer-at-head ()