2004-04-17 John Wiegley <johnw@newartisans.com>
* iswitchb.el (iswitchb-max-to-show): Added a new config variable which optionally limits the number of names shown in the minibuffer. Off by default. (iswitchb-completions): Use `iswitchb-max-to-show'. This speeds up iswitchb for users with a multitude of open buffers, by showing only the first and last N/2 buffers in the completion list (which is enough for C-s/C-r, and to know that more characters need to be typed to refine the completion list).
This commit is contained in:
parent
554e27417b
commit
c80d953400
1 changed files with 28 additions and 17 deletions
|
@ -298,6 +298,13 @@ example functions that filter buffernames."
|
|||
:type '(repeat (choice regexp function))
|
||||
:group 'iswitchb)
|
||||
|
||||
(defcustom iswitchb-max-to-show nil
|
||||
"*If non-nil, limit the number of names shown in the minibuffer.
|
||||
This can greatly speed up iswitchb if you have a multitude of
|
||||
buffers open."
|
||||
:type 'integer
|
||||
:group 'iswitchb)
|
||||
|
||||
(defcustom iswitchb-cannot-complete-hook 'iswitchb-completion-help
|
||||
"*Hook run when `iswitchb-complete' can't complete any more.
|
||||
The most useful values are `iswitchb-completion-help', which pops up a
|
||||
|
@ -1185,6 +1192,15 @@ Copied from `icomplete-exhibit' with two changes:
|
|||
contents
|
||||
(not minibuffer-completion-confirm)))))))
|
||||
|
||||
(defun iswitchb-output-completion (com)
|
||||
(if (= (length com) most-len)
|
||||
;; Most is one exact match,
|
||||
;; note that and leave out
|
||||
;; for later indication:
|
||||
(ignore
|
||||
(setq most-is-exact t))
|
||||
(substring com most-len)))
|
||||
|
||||
(defun iswitchb-completions (name require-match)
|
||||
"Return the string that is displayed after the user's text.
|
||||
Modified from `icomplete-completions'."
|
||||
|
@ -1224,28 +1240,23 @@ Modified from `icomplete-completions'."
|
|||
"")
|
||||
(if (not iswitchb-use-fonts) " [Matched]")))
|
||||
(t ;multiple matches
|
||||
(if (and iswitchb-max-to-show
|
||||
(> (length comps) iswitchb-max-to-show))
|
||||
(setq comps
|
||||
(append
|
||||
(subseq comps 0 (/ iswitchb-max-to-show 2))
|
||||
(list "...")
|
||||
(subseq comps (- (length comps)
|
||||
(/ iswitchb-max-to-show 2))))))
|
||||
(let* (
|
||||
;;(most (try-completion name candidates predicate))
|
||||
(most nil)
|
||||
(most-len (length most))
|
||||
most-is-exact
|
||||
(alternatives
|
||||
(apply
|
||||
(function concat)
|
||||
(cdr (apply
|
||||
(function nconc)
|
||||
(mapcar '(lambda (com)
|
||||
(if (= (length com) most-len)
|
||||
;; Most is one exact match,
|
||||
;; note that and leave out
|
||||
;; for later indication:
|
||||
(progn
|
||||
(setq most-is-exact t)
|
||||
())
|
||||
(list ","
|
||||
(substring com
|
||||
most-len))))
|
||||
comps))))))
|
||||
(alternatives (if most
|
||||
(mapconcat 'iswitchb-output-completion
|
||||
comps ",")
|
||||
(mapconcat 'identity comps ","))))
|
||||
|
||||
(concat
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue