comparison lisp/minibuf.el @ 4734:74a5eaa67982

Make switch-to-buffer completion avoid current buffer.
author Didier Verna <didier@xemacs.org>
date Mon, 09 Nov 2009 17:05:19 +0100
parents 3c92890f3750
children fd36a980d701
comparison
equal deleted inserted replaced
4733:a5210e70ffbe 4734:74a5eaa67982
37 37
38 ;; 06/11/1997 - Use char-(after|before) instead of 38 ;; 06/11/1997 - Use char-(after|before) instead of
39 ;; (following|preceding)-char. -slb 39 ;; (following|preceding)-char. -slb
40 40
41 ;;; Code: 41 ;;; Code:
42
43 (require 'cl)
42 44
43 (defgroup minibuffer nil 45 (defgroup minibuffer nil
44 "Controling the behavior of the minibuffer." 46 "Controling the behavior of the minibuffer."
45 :group 'environment) 47 :group 'environment)
46 48
1465 'variable-history 1467 'variable-history
1466 (if (symbolp default-value) 1468 (if (symbolp default-value)
1467 (symbol-name default-value) 1469 (symbol-name default-value)
1468 default-value)))) 1470 default-value))))
1469 1471
1470 (defun read-buffer (prompt &optional default require-match) 1472 (defun read-buffer (prompt &optional default require-match exclude)
1471 "Read the name of a buffer and return as a string. 1473 "Read the name of a buffer and return as a string.
1472 Prompts with PROMPT. Optional second arg DEFAULT is value to return if user 1474 Prompts with PROMPT. Optional second arg DEFAULT is value to return if user
1473 enters an empty line. If optional third arg REQUIRE-MATCH is non-nil, 1475 enters an empty line. If optional third arg REQUIRE-MATCH is non-nil,
1474 only existing buffer names are allowed." 1476 only existing buffer names are allowed. Optional fourth argument EXCLUDE is
1477 a buffer or a list of buffers to exclude from the completion list."
1478 (when (bufferp exclude)
1479 (setq exclude (list exclude)))
1475 (let ((prompt (if default 1480 (let ((prompt (if default
1476 (format "%s(default %s) " 1481 (format "%s(default %s) "
1477 (gettext prompt) (if (bufferp default) 1482 (gettext prompt) (if (bufferp default)
1478 (buffer-name default) 1483 (buffer-name default)
1479 default)) 1484 default))
1480 prompt)) 1485 prompt))
1481 (alist (mapcar #'(lambda (b) (cons (buffer-name b) b)) 1486 (alist (mapcar #'(lambda (b) (cons (buffer-name b) b))
1482 (buffer-list))) 1487 (remove-if (lambda (elt) (member elt exclude))
1483 result) 1488 (buffer-list))))
1489 result)
1484 (while (progn 1490 (while (progn
1485 (setq result (completing-read prompt alist nil require-match 1491 (setq result (completing-read prompt alist nil require-match
1486 nil 'buffer-history 1492 nil 'buffer-history
1487 (if (bufferp default) 1493 (if (bufferp default)
1488 (buffer-name default) 1494 (buffer-name default)