;;; icomplete.el --- minibuffer completion incremental feedback
;; Copyright (C) 1992, 1993, 1994, 1997, 1999, 2001, 2002, 2003,
-;; 2004, 2005 Free Software Foundation, Inc.
+;; 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
;; Author: Ken Manheimer <klm@i.am>
;; Maintainer: Ken Manheimer <klm@i.am>
;; 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,
(defcustom icomplete-minibuffer-setup-hook nil
"*Icomplete-specific customization of minibuffer setup.
-This hook is run during minibuffer setup iff icomplete will be active.
+This hook is run during minibuffer setup if icomplete is active.
It is intended for use in customizing icomplete for interoperation
with other features and packages. For instance:
(if (commandp func-name)
(save-excursion
(let* ((sym (intern func-name))
- (buf (other-buffer))
+ (buf (other-buffer nil t))
(map (save-excursion (set-buffer buf) (current-local-map)))
(keys (where-is-internal sym map)))
(if keys
(< (length x) (length y))))
", ")
">"))))))
+;;;_ = icomplete-with-completion-tables
+(defvar icomplete-with-completion-tables '(internal-complete-buffer)
+ "Specialized completion tables with which icomplete should operate.
+
+Icomplete does not operate with any specialized completion tables
+except those on this list.")
;;;_ > icomplete-mode (&optional prefix)
;;;###autoload
(define-minor-mode icomplete-mode
"Toggle incremental minibuffer completion for this Emacs session.
-With a numeric argument, turn Icomplete mode on iff ARG is positive."
+With a numeric argument, turn Icomplete mode on if ARG is positive,
+otherwise turn it off."
:global t :group 'icomplete
(if icomplete-mode
;; The following is not really necessary after first time -
(and (window-minibuffer-p (selected-window))
(not executing-kbd-macro)
minibuffer-completion-table
- ;; (or minibuffer-completing-file-name
- (not (functionp minibuffer-completion-table)))) ;; )
+ (or (not (functionp minibuffer-completion-table))
+ (member minibuffer-completion-table
+ icomplete-with-completion-tables))))
;;;_ > icomplete-minibuffer-setup ()
(defun icomplete-minibuffer-setup ()
"Remove completions display \(if any) prior to new user input.
Should be run in on the minibuffer `pre-command-hook'. See `icomplete-mode'
and `minibuffer-setup-hook'."
- (when icomplete-eoinput
+ (when (and icomplete-mode icomplete-eoinput)
(unless (>= icomplete-eoinput (point-max))
- (let ((buffer-undo-list t)) ; prevent entry
+ (let ((buffer-undo-list t) ; prevent entry
+ deactivate-mark)
(delete-region icomplete-eoinput (point-max))))
;; Reestablish the safe value.
"Insert icomplete completions display.
Should be run via minibuffer `post-command-hook'. See `icomplete-mode'
and `minibuffer-setup-hook'."
- (when (icomplete-simple-completing-p)
+ (when (and icomplete-mode (icomplete-simple-completing-p))
(save-excursion
(goto-char (point-max))
;; Register the end of input, so we know where the extra stuff
minibuffer-completion-table
minibuffer-completion-predicate
(not minibuffer-completion-confirm)))))
- (buffer-undo-list t))
+ (buffer-undo-list t)
+ deactivate-mark)
;; Do nothing if while-no-input was aborted.
(if (consp text) (insert (car text))))))))
;;;_* Local emacs vars.
;;;Local variables:
-;;;outline-layout: (-2 :)
+;;;allout-layout: (-2 :)
;;;End:
;; arch-tag: 339ec25a-0741-4eb6-be63-997532e89b0f