X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/41882805d6711e32ac0f066119226d84dbdedc13..739d627a477191703f57ca4cfbd1bf8dc25625f9:/lisp/iswitchb.el diff --git a/lisp/iswitchb.el b/lisp/iswitchb.el index 3fd03cf5d0..4e89659dc8 100644 --- a/lisp/iswitchb.el +++ b/lisp/iswitchb.el @@ -1,18 +1,17 @@ ;;; iswitchb.el --- switch between buffers using substrings ;; Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, -;; 2005 Free Software Foundation, Inc. +;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ;; Author: Stephen Eglen ;; Maintainer: Stephen Eglen ;; Keywords: completion convenience -;; location: http://www.anc.ed.ac.uk/~stephen/emacs/ ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) +;; the Free Software Foundation; either version 3, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, @@ -245,27 +244,8 @@ ;;; Code: -;; CL needed for cadr and last -(if (not (and (fboundp 'cadr) - (fboundp 'last))) - (require 'cl)) - (require 'font-lock) -;; Set up the custom library. -;; taken from http://www.dina.kvl.dk/~abraham/custom/ -(eval-and-compile - (condition-case () - (require 'custom) - (error nil)) - (if (and (featurep 'custom) (fboundp 'custom-declare-variable)) - nil ;; We've got what we needed - ;; We have the old custom-library, hack around it! - (defmacro defgroup (&rest args) - nil) - (defmacro defcustom (var value doc &rest args) - `(defvar ,var ,value ,doc)))) - ;;; User Variables ;; ;; These are some things you might want to change. @@ -290,7 +270,7 @@ is temporarily case sensitive." "*List of regexps or functions matching buffer names to ignore. For example, traditional behavior is not to list buffers whose names begin with a space, for which the regexp is `^ '. See the source file for -example functions that filter buffernames." +example functions that filter buffer names." :type '(repeat (choice regexp function)) :group 'iswitchb) (put 'iswitchb-buffer-ignore 'risky-local-variable t) @@ -326,15 +306,14 @@ window with completion alternatives, or `iswitchb-next-match' or :type 'hook :group 'iswitchb) -;;; Examples for setting the value of iswitchb-buffer-ignore -;(defun iswitchb-ignore-c-mode (name) -; "Ignore all c mode buffers -- example function for iswitchb." -; (save-excursion -; (set-buffer name) -; (string-match "^C$" mode-name))) +;; Examples for setting the value of iswitchb-buffer-ignore +;;(defun iswitchb-ignore-c-mode (name) +;; "Ignore all c mode buffers -- example function for iswitchb." +;; (with-current-buffer name +;; (derived-mode-p 'c-mode))) -;(setq iswitchb-buffer-ignore '("^ " iswitchb-ignore-c-mode)) -;(setq iswitchb-buffer-ignore '("^ " "\\.c$" "\\.h$")) +;;(setq iswitchb-buffer-ignore '("^ " iswitchb-ignore-c-mode)) +;;(setq iswitchb-buffer-ignore '("^ " "\\.c\\'" "\\.h\\'")) (defcustom iswitchb-default-method 'always-frame "*How to switch to new buffer when using `iswitchb-buffer'. @@ -375,7 +354,7 @@ See also `iswitchb-newbuffer'." :group 'iswitchb) (defcustom iswitchb-use-faces t - "*Non-nil means use font-lock fonts for showing first match." + "*Non-nil means use font-lock faces for showing first match." :type 'boolean :group 'iswitchb) (define-obsolete-variable-alias 'iswitchb-use-fonts 'iswitchb-use-faces "22.1") @@ -397,7 +376,7 @@ See documentation of `walk-windows' for useful values.") (defcustom iswitchb-minibuffer-setup-hook nil "Iswitchb-specific customization of minibuffer setup. -This hook is run during minibuffer setup iff `iswitchb' will be active. +This hook is run during minibuffer setup if `iswitchb' is active. For instance: \(add-hook 'iswitchb-minibuffer-setup-hook '\(lambda () (set (make-local-variable 'max-mini-window-height) 3))) @@ -496,14 +475,13 @@ interfere with other minibuffer usage.") (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) + (dolist (b '((switch-to-buffer . iswitchb-buffer) + (switch-to-buffer-other-window . iswitchb-buffer-other-window) + (switch-to-buffer-other-frame . iswitchb-buffer-other-frame) + (display-buffer . iswitchb-display-buffer))) + (if (fboundp 'command-remapping) + (define-key map (vector 'remap (car b)) (cdr b)) + (substitute-key-definition (car b) (cdr b) map global-map))) map) "Global keymap for `iswitchb-mode'.") @@ -543,9 +521,7 @@ selected.") ;;; ISWITCHB KEYMAP (defun iswitchb-define-mode-map () - "Set up the keymap for `iswitchb-buffer'. -This is obsolete. Use \\[iswitchb-mode] or customize the -variable `iswitchb-mode'." + "Set up the keymap for `iswitchb-buffer'." (interactive) (let (map) ;; generated every time so that it can inherit new functions. @@ -566,6 +542,10 @@ variable `iswitchb-mode'." (setq iswitchb-mode-map map) (run-hooks 'iswitchb-define-mode-map-hook))) +(make-obsolete 'iswitchb-define-mode-map + "use M-x iswitchb-mode or customize the variable `iswitchb-mode'." + "21.1") + ;;; MAIN FUNCTION (defun iswitchb () "Switch to buffer matching a substring. @@ -626,7 +606,7 @@ Return the name of a buffer selected. PROMPT is the prompt to give to the user. DEFAULT if given is the default buffer to be selected, which will go to the front of the list. -If REQUIRE-MATCH is non-nil, an existing-buffer must be selected. +If REQUIRE-MATCH is non-nil, an existing buffer must be selected. If START is a string, the selection process is started with that string. If MATCHES-SET is non-nil, the buflist is not updated before @@ -705,7 +685,7 @@ the selection process begins. Used by isearchb.el." "Find common completion of `iswitchb-text' in `iswitchb-matches'. The result is stored in `iswitchb-common-match-string'." - (let* (val) + (let (val) (setq iswitchb-common-match-string nil) (if (and iswitchb-matches (not iswitchb-regexp) ;; testing @@ -795,8 +775,7 @@ If no buffer exactly matching the prompt exists, maybe create a new one." (setq iswitchb-exit 'findfile) (exit-minibuffer)) -(eval-when-compile - (defvar recentf-list)) +(defvar recentf-list) (defun iswitchb-next-match () "Put first element of `iswitchb-matches' at the end of the list." @@ -905,7 +884,7 @@ current frame, rather than all frames, regardless of value of "Set `iswitchb-matches' to the list of buffers matching prompt." (if iswitchb-rescan (setq iswitchb-matches - (let* ((buflist iswitchb-buflist)) + (let ((buflist iswitchb-buflist)) (iswitchb-get-matched-buffers iswitchb-text iswitchb-regexp buflist)) iswitchb-virtual-buffers nil))) @@ -915,7 +894,7 @@ current frame, rather than all frames, regardless of value of "Return buffers matching REGEXP. If STRING-FORMAT is nil, consider REGEXP as just a string. BUFFER-LIST can be list of buffers or list of strings." - (let* ((case-fold-search (iswitchb-case)) + (let ((case-fold-search (iswitchb-case)) name ret) (if (null string-format) (setq regexp (regexp-quote regexp))) (setq iswitchb-invalid-regexp nil) @@ -1068,7 +1047,7 @@ Return the modified list with the last element prepended to it." ;;; VISIT CHOSEN BUFFER (defun iswitchb-visit-buffer (buffer) "Visit buffer named BUFFER according to `iswitchb-method'." - (let* (win newframe) + (let (win newframe) (cond ((eq iswitchb-method 'samewindow) (switch-to-buffer buffer)) @@ -1140,9 +1119,7 @@ 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. - -Obsolescent. Use `iswitchb-mode'." +adds a hook to the minibuffer." (interactive) (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup) (global-set-key "\C-xb" 'iswitchb-buffer) @@ -1150,6 +1127,8 @@ Obsolescent. Use `iswitchb-mode'." (global-set-key "\C-x4\C-o" 'iswitchb-display-buffer) (global-set-key "\C-x5b" 'iswitchb-buffer-other-frame)) +(make-obsolete 'iswitchb-default-keybindings 'iswitchb-mode "21.1") + (defun iswitchb-buffer () "Switch to another buffer. @@ -1252,9 +1231,8 @@ Copied from `icomplete-exhibit' with two changes: (insert (iswitchb-completions contents)))))) -(eval-when-compile - (defvar most-len) - (defvar most-is-exact)) +(defvar most-len) +(defvar most-is-exact) (defun iswitchb-output-completion (com) (if (= (length com) most-len) @@ -1442,7 +1420,7 @@ This is an example function which can be hooked on to (iswitchb-to-end summaries))) (defun iswitchb-case () - "Return non-nil iff we should ignore case when matching. + "Return non-nil if we should ignore case when matching. See the variable `iswitchb-case' for details." (if iswitchb-case (if (featurep 'xemacs) @@ -1452,7 +1430,7 @@ See the variable `iswitchb-case' for details." ;;;###autoload (define-minor-mode iswitchb-mode "Toggle Iswitchb global minor mode. -With arg, turn Iswitchb mode on if and only iff ARG is positive. +With arg, turn Iswitchb mode on if ARG is positive, otherwise turn it off. This mode enables switching between buffers using substrings. See `iswitchb' for details." nil nil iswitchb-global-map :global t :group 'iswitchb