;;; completion.el --- dynamic word-completion code
;; Copyright (C) 1990, 1993, 1995, 1997, 2002, 2003, 2004,
-;; 2005 Free Software Foundation, Inc.
+;; 2005, 2006 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: abbrev convenience
;; SAVING/LOADING COMPLETIONS
;; Completions are automatically saved from one session to another
;; (unless save-completions-flag or enable-completion is nil).
-;; Activating this minor-mode calling completion-initialize) causes Emacs
-;; to load a completions database for a saved completions file
+;; Activating this minor-mode (calling completion-initialize) loads
+;; a completions database for a saved completions file
;; (default: ~/.completions). When you exit, Emacs saves a copy of the
-;; completions that you
-;; often use. When you next start, Emacs loads in the saved completion file.
+;; completions that you often use. When you next start, Emacs loads in
+;; the saved completion file.
;;
;; The number of completions saved depends loosely on
;; *saved-completions-decay-factor*. Completions that have never been
(cond
((file-readable-p olddef) olddef)
((file-directory-p (convert-standard-filename "~/.emacs.d/"))
- (convert-standard-filename (expand-file-name completions "~/.emacs.d/")))
+ (convert-standard-filename
+ (expand-file-name "completions" "~/.emacs.d/")))
(t olddef)))
"The filename to save completions to."
:type 'file
(save-excursion
(goto-char (point-min))
(catch 'finish-add-completions
- (with-syntax-table completion-c-def-syntax-table
+ (with-syntax-table completion-c-def-syntax-table
(while t
;; we loop here only when scan-sexps fails
;; (i.e. unbalance exps.)
(cond
((= (preceding-char) ?#)
;; preprocessor macro, see if it's one we handle
- (setq string (buffer-substring (point) (+ (point) 6)))
- (cond ((member string '("define" "ifdef "))
+ (cond ((looking-at "\\(define\\|ifdef\\)\\>")
;; skip forward over definition symbol
;; and add it to database
(and (forward-word 2)
(throw 'finish-add-completions t))
(error
;; Check for failure in scan-sexps
- (if (or (string-equal (nth 1 e)
- "Containing expression ends prematurely")
- (string-equal (nth 1 e) "Unbalanced parentheses"))
+ (if (member (nth 1 e)
+ '("Containing expression ends prematurely"
+ "Unbalanced parentheses"))
;; unbalanced paren., keep going
;;(ding)
(forward-line 1)
TYPE is the type of the wrapper to be added. Can be :before or :under."
(put function-name 'completion-function
(cdr (assq type
- '((:separator 'use-completion-before-separator)
- (:before 'use-completion-before-point)
- (:backward-under 'use-completion-backward-under)
- (:backward 'use-completion-backward)
- (:under 'use-completion-under-point)
- (:under-or-before 'use-completion-under-or-before-point)
- (:minibuffer-separator 'use-completion-minibuffer-separator))))))
+ '((:separator . use-completion-before-separator)
+ (:before . use-completion-before-point)
+ (:backward-under . use-completion-backward-under)
+ (:backward . use-completion-backward)
+ (:under . use-completion-under-point)
+ (:under-or-before . use-completion-under-or-before-point)
+ (:minibuffer-separator
+ . use-completion-minibuffer-separator))))))
(defun use-completion-minibuffer-separator ()
(let ((completion-syntax-table completion-standard-syntax-table))
(if dynamic-completion-mode
(add-hook (car x) (cdr x))
(remove-hook (car x) (cdr x))))
-
+
;; "Complete" Key Keybindings. We don't want to use a minor-mode
;; map because these have too high a priority. We could/should
;; probably change the interpretation of minor-mode-map-alist such