[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/iswitchb.el
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/iswitchb.el |
Date: |
Sat, 04 Jun 2005 15:10:07 -0400 |
Index: emacs/lisp/iswitchb.el
diff -c emacs/lisp/iswitchb.el:1.56 emacs/lisp/iswitchb.el:1.57
*** emacs/lisp/iswitchb.el:1.56 Sat Jun 4 18:50:38 2005
--- emacs/lisp/iswitchb.el Sat Jun 4 19:10:07 2005
***************
*** 1,6 ****
;;; iswitchb.el --- switch between buffers using substrings
! ;; Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
;; Author: Stephen Eglen <address@hidden>
;; Maintainer: Stephen Eglen <address@hidden>
--- 1,6 ----
;;; iswitchb.el --- switch between buffers using substrings
! ;; Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 Free Software
Foundation, Inc.
;; Author: Stephen Eglen <address@hidden>
;; Maintainer: Stephen Eglen <address@hidden>
***************
*** 165,175 ****
;; Font-Lock
! ;; If you have font-lock loaded, the first matching buffer is
! ;; highlighted. To switch this off, set (setq iswitchb-use-fonts nil)
! ;; I don't use font-lock that much, so I've hardcoded the faces. If
! ;; this is too harsh, let me know. Colouring of the matching buffer
! ;; name was suggested by Carsten Dominik (address@hidden)
;; Replacement for read-buffer
--- 165,174 ----
;; Font-Lock
! ;; font-lock is used to highlight the first matching buffer. To
! ;; switch this off, set (setq iswitchb-use-faces nil). Colouring of
! ;; the matching buffer name was suggested by Carsten Dominik
! ;; (address@hidden)
;; Replacement for read-buffer
***************
*** 230,245 ****
;; Regexp matching
! ;; There is limited provision for regexp matching within iswitchb,
! ;; enabled through `iswitchb-regexp'. This allows you to type `c$'
! ;; for example and see all buffer names ending in `c'. This facility
! ;; is quite limited though in two respects. First, you can't
! ;; currently type in expressions like `[0-9]' directly -- you have to
! ;; type them in when iswitchb-regexp is nil and then toggle on the
! ;; regexp functionality. Likewise, don't enter an expression
! ;; containing `\' in regexp mode. If you try, iswitchb gets confused,
! ;; so just hit C-g and try again. Secondly, no completion mechanism
! ;; is currently offered when regexp searching.
;;; TODO
--- 229,238 ----
;; Regexp matching
! ;; There is provision for regexp matching within iswitchb, enabled
! ;; through `iswitchb-regexp'. This allows you to type `c$' for
! ;; example and see all buffer names ending in `c'. No completion
! ;; mechanism is currently offered when regexp searching.
;;; TODO
***************
*** 256,261 ****
--- 249,256 ----
(fboundp 'last)))
(require 'cl))
+ (require 'font-lock)
+
;; Set up the custom library.
;; taken from http://www.dina.kvl.dk/~abraham/custom/
(eval-and-compile
***************
*** 377,386 ****
:type 'boolean
:group 'iswitchb)
! (defcustom iswitchb-use-fonts t
"*Non-nil means use font-lock fonts for showing first match."
:type 'boolean
:group 'iswitchb)
(defcustom iswitchb-use-frame-buffer-list nil
"*Non-nil means use the currently selected frame's buffer list."
--- 372,382 ----
:type 'boolean
:group 'iswitchb)
! (defcustom iswitchb-use-faces t
"*Non-nil means use font-lock fonts for showing first match."
:type 'boolean
:group 'iswitchb)
+ (define-obsolete-variable-alias 'iswitchb-use-fonts 'iswitchb-use-faces
"22.1")
(defcustom iswitchb-use-frame-buffer-list nil
"*Non-nil means use the currently selected frame's buffer list."
***************
*** 408,413 ****
--- 404,438 ----
:type 'hook
:group 'iswitchb)
+ (defface iswitchb-single-match-face
+ '((t
+ (:inherit font-lock-comment-face)))
+ "Iswitchb face for single matching buffer name."
+ :version "22.1"
+ :group 'iswitchb)
+
+ (defface iswitchb-current-match-face
+ '((t
+ (:inherit font-lock-function-name-face)))
+ "Iswitchb face for current matching buffer name."
+ :version "22.1"
+ :group 'iswitchb)
+
+ (defface iswitchb-virtual-matches-face
+ '((t
+ (:inherit font-lock-builtin-face)))
+ "Iswitchb face for matching virtual buffer names.
+ See also `iswitchb-use-virtual-buffers'."
+ :version "22.1"
+ :group 'iswitchb)
+
+ (defface iswitchb-invalid-regexp-face
+ '((t
+ (:inherit font-lock-warning-face)))
+ "Iswitchb face for indicating invalid regexp. "
+ :version "22.1"
+ :group 'iswitchb)
+
;; Do we need the variable iswitchb-use-mycompletion?
;;; Internal Variables
***************
*** 507,512 ****
--- 532,542 ----
(defvar iswitchb-minibuf-depth nil
"Value we expect to be returned by `minibuffer-depth' in the minibuffer.")
+ (defvar iswitchb-common-match-inserted nil
+ "Non-nil if we have just inserted a common match in the minibuffer.")
+
+ (defvar iswitchb-invalid-regexp)
+
;;; FUNCTIONS
;;; ISWITCHB KEYMAP
***************
*** 564,569 ****
--- 594,600 ----
;;`iswitchb-buffer-ignore')
(let* ((prompt "iswitch ")
+ iswitchb-invalid-regexp
(buf (iswitchb-read-buffer prompt)))
;;(message "chosen text %s" iswitchb-final-text)
***************
*** 572,578 ****
(cond ( (eq iswitchb-exit 'findfile)
(call-interactively 'find-file))
!
(t
;; View the buffer
;;(message "go to buf %s" buf)
--- 603,610 ----
(cond ( (eq iswitchb-exit 'findfile)
(call-interactively 'find-file))
! (iswitchb-invalid-regexp
! (message "Won't make invalid regexp named buffer"))
(t
;; View the buffer
;;(message "go to buf %s" buf)
***************
*** 602,611 ****
buf-sel
iswitchb-final-text
(icomplete-mode nil) ;; prevent icomplete starting up
! ;; can only use fonts if they have been bound.
! (iswitchb-use-fonts (and iswitchb-use-fonts
! (boundp 'font-lock-comment-face)
! (boundp 'font-lock-function-name-face))))
(iswitchb-define-mode-map)
(setq iswitchb-exit nil)
--- 634,640 ----
buf-sel
iswitchb-final-text
(icomplete-mode nil) ;; prevent icomplete starting up
! )
(iswitchb-define-mode-map)
(setq iswitchb-exit nil)
***************
*** 691,697 ****
(let (res)
(cond ((not iswitchb-matches)
(run-hooks 'iswitchb-cannot-complete-hook))
!
((= 1 (length iswitchb-matches))
;; only one choice, so select it.
(exit-minibuffer))
--- 720,728 ----
(let (res)
(cond ((not iswitchb-matches)
(run-hooks 'iswitchb-cannot-complete-hook))
! (iswitchb-invalid-regexp
! ;; Do nothing
! )
((= 1 (length iswitchb-matches))
;; only one choice, so select it.
(exit-minibuffer))
***************
*** 703,709 ****
(not (equal res iswitchb-text)))
;; found something to complete, so put it in the minibuffer.
(progn
! (setq iswitchb-rescan nil)
(delete-region (minibuffer-prompt-end) (point))
(insert res))
;; else nothing to complete
--- 734,741 ----
(not (equal res iswitchb-text)))
;; found something to complete, so put it in the minibuffer.
(progn
! (setq iswitchb-rescan nil
! iswitchb-common-match-inserted t)
(delete-region (minibuffer-prompt-end) (point))
(insert res))
;; else nothing to complete
***************
*** 889,894 ****
--- 921,927 ----
(do-string (stringp (car list)))
name
ret)
+ (setq iswitchb-invalid-regexp nil)
(catch 'invalid-regexp
(mapcar
(lambda (x)
***************
*** 898,914 ****
(setq name (buffer-name x)))
(cond
! ((and (or (and string-format
! (condition-case error
! (string-match regexp name)
! (invalid-regexp
! (throw 'invalid-regexp (setq ret (cdr error))))))
! (and (null string-format)
! (string-match (regexp-quote regexp) name)))
!
(not (iswitchb-ignore-buffername-p name)))
! (setq ret (cons name ret))
! )))
list))
ret))
--- 931,945 ----
(setq name (buffer-name x)))
(cond
! ((and (if (not string-format)
! (string-match (regexp-quote regexp) name)
! (condition-case error
! (string-match regexp name)
! (invalid-regexp
! (setq iswitchb-invalid-regexp t)
! (throw 'invalid-regexp (setq ret (cdr error))))))
(not (iswitchb-ignore-buffername-p name)))
! (setq ret (cons name ret)))))
list))
ret))
***************
*** 994,1000 ****
(temp-buf "*Completions*")
(win))
! (if (eq last-command this-command)
;; scroll buffer
(progn
(set-buffer temp-buf)
--- 1025,1032 ----
(temp-buf "*Completions*")
(win))
! (if (and (eq last-command this-command)
! (not iswitchb-common-match-inserted))
;; scroll buffer
(progn
(set-buffer temp-buf)
***************
*** 1021,1028 ****
(fundamental-mode))
(display-completion-list (if iswitchb-matches
iswitchb-matches
! iswitchb-buflist))
! )))))
;;; KILL CURRENT BUFFER
--- 1053,1060 ----
(fundamental-mode))
(display-completion-list (if iswitchb-matches
iswitchb-matches
! iswitchb-buflist))))
! (setq iswitchb-common-match-inserted nil))))
;;; KILL CURRENT BUFFER
***************
*** 1232,1239 ****
;; Insert the match-status information:
(insert (iswitchb-completions
! contents
! (not minibuffer-completion-confirm)))))))
(eval-when-compile
(defvar most-len)
--- 1264,1270 ----
;; Insert the match-status information:
(insert (iswitchb-completions
! contents))))))
(eval-when-compile
(defvar most-len)
***************
*** 1248,1274 ****
(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'."
(let ((comps iswitchb-matches)
; "-determined" - only one candidate
! (open-bracket-determined (if require-match "(" "["))
! (close-bracket-determined (if require-match ")" "]"))
;"-prospects" - more than one
candidate
(open-bracket-prospects "{")
(close-bracket-prospects "}")
first)
! (if (and iswitchb-use-fonts comps)
(progn
(setq first (car comps))
(setq first (format "%s" first))
(put-text-property 0 (length first) 'face
(if (= (length comps) 1)
! 'font-lock-comment-face
! 'font-lock-function-name-face)
first)
(setq comps (cons first (cdr comps)))))
--- 1279,1307 ----
(setq most-is-exact t))
(substring com most-len)))
! (defun iswitchb-completions (name)
"Return the string that is displayed after the user's text.
Modified from `icomplete-completions'."
(let ((comps iswitchb-matches)
; "-determined" - only one candidate
! (open-bracket-determined "[")
! (close-bracket-determined "]")
;"-prospects" - more than one
candidate
(open-bracket-prospects "{")
(close-bracket-prospects "}")
first)
! (if (and iswitchb-use-faces comps)
(progn
(setq first (car comps))
(setq first (format "%s" first))
(put-text-property 0 (length first) 'face
(if (= (length comps) 1)
! (if iswitchb-invalid-regexp
! 'iswitchb-invalid-regexp-face
! 'iswitchb-single-match-face)
! 'iswitchb-current-match-face)
first)
(setq comps (cons first (cdr comps)))))
***************
*** 1297,1303 ****
(let ((comp comps))
(while comp
(put-text-property 0 (length (car comp))
! 'face 'font-lock-builtin-face
(car comp))
(setq comp (cdr comp))))))
--- 1330,1336 ----
(let ((comp comps))
(while comp
(put-text-property 0 (length (car comp))
! 'face 'iswitchb-virtual-matches-face
(car comp))
(setq comp (cdr comp))))))
***************
*** 1305,1320 ****
open-bracket-determined
close-bracket-determined))
! ((null (cdr comps)) ;one match
! (concat (if (and (> (length (car comps))
! (length name)))
! (concat open-bracket-determined
;; when there is one match, show the
;; matching buffer name in full
(car comps)
! close-bracket-determined)
! "")
! (if (not iswitchb-use-fonts) " [Matched]")))
(t ;multiple matches
(if (and iswitchb-max-to-show
(> (length comps) iswitchb-max-to-show))
--- 1338,1360 ----
open-bracket-determined
close-bracket-determined))
! (iswitchb-invalid-regexp
! (concat " " (car comps)))
! ((null (cdr comps)) ;one match
! (concat
! (if (if (not iswitchb-regexp)
! (= (length name)
! (length (car comps)))
! (string-match name (car comps))
! (string-equal (match-string 0 (car comps))
! (car comps)))
! ""
! (concat open-bracket-determined
;; when there is one match, show the
;; matching buffer name in full
(car comps)
! close-bracket-determined))
! (if (not iswitchb-use-faces) " [Matched]")))
(t ;multiple matches
(if (and iswitchb-max-to-show
(> (length comps) iswitchb-max-to-show))