mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-13 16:38:14 +00:00
Some doc fixes.
(iswitchb-mode-map): Define completely initially. Inherit minibuffer-local-map. (iswitchb-completion-help) <!iswitchb-xemacs>: Use fundamental-mode. (iswitchb-global-map): New variable. (iswitchb-summaries-to-end): Amalgamate regexps. (iswitchb-mode): New. (iswitchb-mode-hook): New variable. (iswitchb) <defgroup>: Add URL link. Use group `completion', not `extensions'.
This commit is contained in:
parent
281096ed46
commit
19db4308b6
143
lisp/iswitchb.el
143
lisp/iswitchb.el
@ -1,10 +1,10 @@
|
||||
;;; iswitchb.el --- switch between buffers using substrings
|
||||
|
||||
;; Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Stephen Eglen <stephen@anc.ed.ac.uk>
|
||||
;; Maintainer: Stephen Eglen <stephen@anc.ed.ac.uk>
|
||||
;; Keywords: extensions convenience
|
||||
;; Keywords: completion convenience
|
||||
;; location: http://www.anc.ed.ac.uk/~stephen/emacs/
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
@ -27,20 +27,16 @@
|
||||
;;; Commentary:
|
||||
|
||||
;; Installation:
|
||||
;; To get the functions in this package bound to keys, do
|
||||
;; (iswitchb-default-keybindings)
|
||||
;;
|
||||
;; If you want to use the features of iswitchb, but without rebinding
|
||||
;; the keys as above, then you need to add the following hook:
|
||||
;; (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)
|
||||
;; To get the functions in this package bound to keys, use
|
||||
;; M-x iswitchb-mode or customize the option `iswitchb-mode'.
|
||||
|
||||
;; As you type in a substring, the list of buffers currently matching
|
||||
;; the substring are displayed as you type. The list is ordered so
|
||||
;; the substring is displayed as you type. The list is ordered so
|
||||
;; that the most recent buffers visited come at the start of the list.
|
||||
;; The buffer at the start of the list will be the one visited when
|
||||
;; you press return. By typing more of the substring, the list is
|
||||
;; narrowed down so that gradually the buffer you want will be at the
|
||||
;; top of the list. Alternatively, you can use C-s an C-r to rotate
|
||||
;; top of the list. Alternatively, you can use C-s and C-r to rotate
|
||||
;; buffer names in the list until the one you want is at the top of
|
||||
;; the list. Completion is also available so that you can see what is
|
||||
;; common to all of the matching buffers as you type.
|
||||
@ -233,13 +229,29 @@
|
||||
|
||||
(defgroup iswitchb nil
|
||||
"Switch between buffers using substrings."
|
||||
:group 'extensions
|
||||
:group 'convenience
|
||||
;; These links are to be added in later versions of custom and
|
||||
;; so are currently commented out.
|
||||
:group 'completion
|
||||
:link '(emacs-commentary-link :tag "Commentary" "iswitchb.el")
|
||||
:link '(url-link "http://www.anc.ed.ac.uk/~stephen/emacs/")
|
||||
:link '(emacs-library-link :tag "Lisp File" "iswitchb.el"))
|
||||
|
||||
;;;###autoload
|
||||
(defcustom iswitchb-mode nil
|
||||
"Toggle Iswitchb mode.
|
||||
Setting this variable directly does not take effect;
|
||||
use either \\[customize] or the function `iswitchb-mode'."
|
||||
:set (lambda (symbol value)
|
||||
(iswitchb-mode (or value 0)))
|
||||
:initialize 'custom-initialize-default
|
||||
:group 'iswitchb
|
||||
:version "21.1"
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom iswitchb-mode-hook nil
|
||||
"Hook run at the end of function `iswitchb-mode'."
|
||||
:group 'iswitchb
|
||||
:type 'hook)
|
||||
|
||||
(defcustom iswitchb-case case-fold-search
|
||||
"*Non-nil if searching of buffer names should ignore case.
|
||||
If this is non-nil but the user input has any upper case letters, matching
|
||||
@ -305,7 +317,7 @@ See also `iswitchb-newbuffer'."
|
||||
:group 'iswitchb)
|
||||
|
||||
(defcustom iswitchb-define-mode-map-hook nil
|
||||
"*Hook to define keys in `iswitchb-mode-map' for extra keybindings."
|
||||
"Hook to define keys in `iswitchb-mode-map' for extra keybindings."
|
||||
:type 'hook
|
||||
:group 'iswitchb)
|
||||
|
||||
@ -320,7 +332,7 @@ See also `iswitchb-newbuffer'."
|
||||
:group 'iswitchb)
|
||||
|
||||
(defcustom iswitchb-make-buflist-hook nil
|
||||
"*Hook to run when list of matching buffers is created."
|
||||
"Hook to run when list of matching buffers is created."
|
||||
:type 'hook
|
||||
:group 'iswitchb)
|
||||
|
||||
@ -329,20 +341,21 @@ See also `iswitchb-newbuffer'."
|
||||
See documentation of `walk-windows' for useful values.")
|
||||
|
||||
(defcustom iswitchb-minibuffer-setup-hook nil
|
||||
"*Iswitchb-specific customization of minibuffer setup.
|
||||
"Iswitchb-specific customization of minibuffer setup.
|
||||
|
||||
This hook is run during minibuffer setup iff `iswitchb' will be active.
|
||||
It is intended for use in customizing iswitchb for interoperation
|
||||
with other packages. For instance:
|
||||
with other packages."
|
||||
;;; For instance:
|
||||
|
||||
\(add-hook 'iswitchb-minibuffer-setup-hook
|
||||
\(function
|
||||
\(lambda ()
|
||||
\(make-local-variable 'resize-minibuffer-window-max-height)
|
||||
\(setq resize-minibuffer-window-max-height 3))))
|
||||
;;; \(add-hook 'iswitchb-minibuffer-setup-hook
|
||||
;;; \(function
|
||||
;;; \(lambda ()
|
||||
;;; \(make-local-variable 'resize-minibuffer-window-max-height)
|
||||
;;; \(setq resize-minibuffer-window-max-height 3))))
|
||||
|
||||
will constrain rsz-mini to a maximum minibuffer height of 3 lines when
|
||||
iswitchb is running. Copied from `icomplete-minibuffer-setup-hook'."
|
||||
;;; will constrain rsz-mini to a maximum minibuffer height of 3 lines when
|
||||
;;; iswitchb is running. Copied from `icomplete-minibuffer-setup-hook'."
|
||||
:type 'hook
|
||||
:group 'iswitchb)
|
||||
|
||||
@ -389,8 +402,34 @@ interfere with other minibuffer usage.")
|
||||
(defvar iswitchb-matches nil
|
||||
"List of buffers currently matching `iswitchb-text'.")
|
||||
|
||||
(defvar iswitchb-mode-map nil
|
||||
"Keymap for `iswitchb-buffer'.")
|
||||
(defvar iswitchb-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(set-keymap-parent map minibuffer-local-map)
|
||||
(define-key map "?" 'iswitchb-completion-help)
|
||||
(define-key map "\C-s" 'iswitchb-next-match)
|
||||
(define-key map "\C-r" 'iswitchb-prev-match)
|
||||
(define-key map "\t" 'iswitchb-complete)
|
||||
(define-key map "\C-j" 'iswitchb-select-buffer-text)
|
||||
(define-key map "\C-t" 'iswitchb-toggle-regexp)
|
||||
(define-key map "\C-x\C-f" 'iswitchb-find-file)
|
||||
(define-key map "\C-c" 'iswitchb-toggle-case)
|
||||
(define-key map "\C-k" 'iswitchb-kill-buffer)
|
||||
(define-key map "\C-m" 'iswitchb-exit-minibuffer)
|
||||
map)
|
||||
"Minibuffer keymap for `iswitchb-buffer'.")
|
||||
|
||||
(defvar iswitchb-global-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(substitute-key-definition 'switch-to-buffer ; normally C-x b
|
||||
'iswitchb-buffer map global-map)
|
||||
(substitute-key-definition 'switch-to-buffer-other-window ; C-x 4 b
|
||||
'iswitchb-buffer-other-window map global-map)
|
||||
(substitute-key-definition 'switch-to-buffer-other-frame ; C-x 5 b
|
||||
'iswitchb-buffer-other-frame map global-map)
|
||||
(substitute-key-definition 'display-buffer ; C-x 4 C-o
|
||||
'iswitchb-display-buffer map global-map)
|
||||
map)
|
||||
"Global keymap for `iswtichb-mode'.")
|
||||
|
||||
(defvar iswitchb-history nil
|
||||
"History of buffers selected using `iswitchb-buffer'.")
|
||||
@ -423,7 +462,9 @@ selected.")
|
||||
|
||||
;;; ISWITCHB KEYMAP
|
||||
(defun iswitchb-define-mode-map ()
|
||||
"Set up the keymap for `iswitchb-buffer'."
|
||||
"Set up the keymap for `iswitchb-buffer'.
|
||||
This is obsolete. Use \\[iswitchb-mode] or customize the
|
||||
variable `iswitchb-mode'."
|
||||
(interactive)
|
||||
(let (map)
|
||||
;; generated every time so that it can inherit new functions.
|
||||
@ -468,7 +509,7 @@ in a separate window.
|
||||
\\[iswitchb-toggle-regexp] Toggle regexp searching.
|
||||
\\[iswitchb-toggle-case] Toggle case-sensitive searching of buffer names.
|
||||
\\[iswitchb-completion-help] Show list of matching buffers in separate window.
|
||||
\\[iswitchb-find-file] Exit iswitchb and drop into find-file.
|
||||
\\[iswitchb-find-file] Exit iswitchb and drop into `find-file'.
|
||||
\\[iswitchb-kill-buffer] Kill buffer at head of buffer list."
|
||||
;;\\[iswitchb-toggle-ignore] Toggle ignoring certain buffers (see \
|
||||
;;`iswitchb-buffer-ignore')
|
||||
@ -540,7 +581,7 @@ If REQUIRE-MATCH is non-nil, an existing-buffer must be selected."
|
||||
'iswitchb-history)))
|
||||
;; Handling the require-match must be done in a better way.
|
||||
(if (and require-match (not (iswitchb-existing-buffer-p)))
|
||||
(error "must specify valid buffer"))
|
||||
(error "Must specify valid buffer"))
|
||||
|
||||
(if (or
|
||||
(eq iswitchb-exit 'takeprompt)
|
||||
@ -605,7 +646,7 @@ The result is stored in `iswitchb-common-match-string'."
|
||||
;;; TOGGLE FUNCTIONS
|
||||
|
||||
(defun iswitchb-toggle-case ()
|
||||
"Toggle the value of `iswitchb-case'."
|
||||
"Toggle the value of variable `iswitchb-case'."
|
||||
(interactive)
|
||||
(setq iswitchb-case (not iswitchb-case))
|
||||
;; ask for list to be regenerated.
|
||||
@ -646,7 +687,7 @@ If no buffer exactly matching the prompt exists, maybe create a new one."
|
||||
(exit-minibuffer))
|
||||
|
||||
(defun iswitchb-find-file ()
|
||||
"Drop into find-file from buffer switching."
|
||||
"Drop into `find-file' from buffer switching."
|
||||
(interactive)
|
||||
(setq iswitchb-exit 'findfile)
|
||||
(exit-minibuffer))
|
||||
@ -725,7 +766,7 @@ it is put to the start of the list."
|
||||
|
||||
(defun iswitchb-get-buffers-in-frames (&optional current)
|
||||
"Return the list of buffers that are visible in the current frame.
|
||||
If optional argument `current' is given, restrict searching to the
|
||||
If optional argument CURRENT is given, restrict searching to the
|
||||
current frame, rather than all frames, regardless of value of
|
||||
`iswitchb-all-frames'."
|
||||
(let ((iswitchb-bufs-in-frame nil))
|
||||
@ -843,7 +884,7 @@ If `iswitchb-change-word-sub' cannot be found in WORD, return nil."
|
||||
|
||||
;; from Wayne Mesard <wmesard@esd.sgi.com>
|
||||
(defun iswitchb-rotate-list (lis)
|
||||
"Destructively removes the last element from LIS.
|
||||
"Destructively remove the last element from LIS.
|
||||
Return the modified list with the last element prepended to it."
|
||||
(if (<= (length lis) 1)
|
||||
lis
|
||||
@ -891,6 +932,8 @@ Return the modified list with the last element prepended to it."
|
||||
(lambda (x y z)
|
||||
(message "doesn't work yet, sorry!")))
|
||||
;; else running Emacs
|
||||
(with-current-buffer standard-output
|
||||
(fundamental-mode))
|
||||
(display-completion-list (if iswitchb-matches
|
||||
iswitchb-matches
|
||||
iswitchb-buflist))
|
||||
@ -996,7 +1039,9 @@ If BUFFER is visible in the current frame, return nil."
|
||||
(defun iswitchb-default-keybindings ()
|
||||
"Set up default keybindings for `iswitchb-buffer'.
|
||||
Call this function to override the normal bindings. This function also
|
||||
adds a hook to the minibuffer."
|
||||
adds a hook to the minibuffer.
|
||||
|
||||
Obsolescent. Use `iswitchb-mode'."
|
||||
(interactive)
|
||||
(add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)
|
||||
(global-set-key "\C-xb" 'iswitchb-buffer)
|
||||
@ -1260,11 +1305,10 @@ Copied from `icomplete-tidy'."
|
||||
This is an example function which can be hooked on to
|
||||
`iswitchb-make-buflist-hook'. Any buffer matching the regexps
|
||||
`Summary' or `output\*$'are put to the end of the list."
|
||||
(let ((summaries (delq nil (mapcar
|
||||
(let ((summaries (delq nil
|
||||
(mapcar
|
||||
(lambda (x)
|
||||
(if (or
|
||||
(string-match "Summary" x)
|
||||
(string-match "output\\*$" x))
|
||||
(if (string-match "Summary\\|output\\*$" x)
|
||||
x))
|
||||
iswitchb-temp-buflist))))
|
||||
(iswitchb-to-end summaries)))
|
||||
@ -1277,6 +1321,29 @@ See the variable `iswitchb-case' for details."
|
||||
(isearch-no-upper-case-p iswitchb-text)
|
||||
(isearch-no-upper-case-p iswitchb-text t))))
|
||||
|
||||
;;;###autoload
|
||||
(defun iswitchb-mode (&optional arg)
|
||||
"Toggle Iswitchb global minor mode.
|
||||
With arg, turn Iswitchb mode on if and only iff ARG is positive.
|
||||
This mode enables switching between buffers using substrings. See
|
||||
`iswitchb' for details."
|
||||
(interactive "P")
|
||||
(setq iswitchb-mode
|
||||
(if arg
|
||||
(> (prefix-numeric-value arg) 0)
|
||||
(not iswitchb-mode)))
|
||||
(if iswitchb-mode
|
||||
(add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)
|
||||
(remove-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup))
|
||||
(run-hooks 'iswitchb-mode-hook)
|
||||
(if (interactive-p)
|
||||
(message "Iswitchb mode %sabled"
|
||||
(if iswitchb-mode "en" "dis"))))
|
||||
|
||||
(unless (assq 'iswitchb-mode minor-mode-map-alist)
|
||||
(push (cons 'iswitchb-mode iswitchb-global-map)
|
||||
minor-mode-map-alist))
|
||||
|
||||
(provide 'iswitchb)
|
||||
|
||||
;;; iswitchb.el ends here
|
||||
|
Loading…
Reference in New Issue
Block a user