diff options
author | Richard M. Stallman <rms@gnu.org> | 1993-12-23 04:38:57 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1993-12-23 04:38:57 +0000 |
commit | 63034cf9fe33dc1f7a364ea5170fe6abbc122cd1 (patch) | |
tree | 7b7ac021e4ee8521ab959711a1bf7942d08d22b4 | |
parent | 60b8d20e2ea823ac3471728c30c7359b938da67d (diff) | |
download | emacs-63034cf9fe33dc1f7a364ea5170fe6abbc122cd1.tar.gz |
(;; Keywords:): Changed to "abbrev".
(hippie-expand-ignore-buffers): New variable.
(he-regexp-member): New function.
(hippie-expand-try-functions-list): Added `try-expand-list'.
(try-expand-line-all-buffers, try-expand-list-all-buffers,
try-expand-dabbrev-all-buffers): Use `he-regexp-member' and
`hippie-expand-ignore-buffers'.
(he-list-search): Don't find list containing point.
(he-dab-search-regexp): Just match at beginning of words.
(he-dabbrev-beg): Never move point forward.
-rw-r--r-- | lisp/hippie-exp.el | 66 |
1 files changed, 44 insertions, 22 deletions
diff --git a/lisp/hippie-exp.el b/lisp/hippie-exp.el index 9036427b2fa..65317f96a9d 100644 --- a/lisp/hippie-exp.el +++ b/lisp/hippie-exp.el @@ -1,11 +1,11 @@ ;;; hippie-exp.el --- expand text trying various ways to find its expansion. ;; Author: Anders Holst <aho@sans.kth.se> -;; Last change: 22 June 1993 -;; Version: 1.2 -;; Keywords: extensions +;; Last change: 2 September 1993 +;; Version: 1.3 +;; Keywords: abbrev -;; Copyright (C) 1992 Free Software Foundation, Inc. +;; Copyright (C) 1992, 1993 Free Software Foundation, Inc. ;; ;; This file is part of GNU Emacs. @@ -36,6 +36,7 @@ ;; ARG functions forward in this list. Given some other argument ;; (a negative argument or just Ctrl-U) it undoes the tried ;; completion. +;; ;; If the variable `hippie-expand-verbose' is non-nil, `hippie-expand' ;; outputs in a message which try-function in the list that is used ;; currently (ie. was used currently and will be tried first the next @@ -43,6 +44,10 @@ ;; The variable `hippie-expand-max-buffers' determines in how many ;; buffers, apart from the current, to search for expansions in. It ;; is used by the try-functions named "-all-buffers". +;; The variable `hippie-expand-ignore-buffers' is a list of regexps +;; matching buffer names (as strings) or major modes (as atoms) of +;; buffers that should not be searched by the try-functions named +;; "-all-buffers". ;; See also the macro `make-hippie-expand-function' below. ;; ;; A short description of the current try-functions in this file: @@ -127,7 +132,7 @@ ;; because different try-functions may try to complete different ;; lengths of text, and thus put different amounts of the ;; text in `he-try-table'. Anyway this seems to occur seldom enough not -;; to be too disturbing. Also it should NOT bee possible for the +;; to be too disturbing. Also it should NOT be possible for the ;; opposite situation to occur, that `hippie-expand' misses some ;; suggestion because it thinks it has already tried it. ;; @@ -164,6 +169,7 @@ ;;;###autoload (defvar hippie-expand-try-functions-list '(try-complete-file-name try-expand-all-abbrevs + try-expand-list try-expand-line try-expand-dabbrev try-expand-dabbrev-all-buffers @@ -182,6 +188,12 @@ or insert functions in this list.") If nil, all buffers are searched.") ;;;###autoload +(defvar hippie-expand-ignore-buffers '("^ \\*.*\\*$" dired-mode) + "*A list specifying which buffers not to search (if not current). +Can contain both regexps matching buffer names (as strings) and major modes +(as atoms)") + +;;;###autoload (defun hippie-expand (arg) "Try to expand text before point, using multiple methods. The expansion functions in `hippie-expand-try-functions-list' are @@ -295,6 +307,15 @@ undoes the expansion." (setq lst (cdr lst))) lst) +;; Check if STR matches any regexp in LST. +;; Ignore possible non-strings in LST. +(defun he-regexp-member (str lst) + (while (and lst + (or (not (stringp (car lst))) + (not (string-match (car lst) str)))) + (setq lst (cdr lst))) + lst) + ;; For the real hippie-expand enthusiast: A macro that makes it ;; possible to use many functions like hippie-expand, but with ;; different try-functions-lists. @@ -527,10 +548,9 @@ string). It returns t if a new completion is found, nil otherwise." (< he-searched-n-bufs hippie-expand-max-buffers))) (set-buffer (car he-search-bufs)) (if (and (not (eq (current-buffer) buf)) - (not (string-match " \\*Minibuf-[0-9]+\\*" - (buffer-name (current-buffer)))) - (not (eq major-mode 'dired-mode))) - ;; Dont search minibuffers nor dired buffers + (not (memq major-mode hippie-expand-ignore-buffers)) + (not (he-regexp-member (buffer-name) + hippie-expand-ignore-buffers))) (save-excursion (goto-char he-search-loc) (setq strip-prompt (and (get-buffer-process (current-buffer)) @@ -650,10 +670,9 @@ string). It returns t if a new completion is found, nil otherwise." (< he-searched-n-bufs hippie-expand-max-buffers))) (set-buffer (car he-search-bufs)) (if (and (not (eq (current-buffer) buf)) - (not (string-match " \\*Minibuf-[0-9]+\\*" - (buffer-name (current-buffer)))) - (not (eq major-mode 'dired-mode))) - ;; Dont search minibuffers nor dired buffers + (not (memq major-mode hippie-expand-ignore-buffers)) + (not (he-regexp-member (buffer-name) + hippie-expand-ignore-buffers))) (save-excursion (goto-char he-search-loc) (setq expansion (he-list-search he-search-string nil)) @@ -689,6 +708,9 @@ string). It returns t if a new completion is found, nil otherwise." (condition-case () (forward-list 1) (error (setq err t))) + (if (and reverse + (> (point) he-string-beg)) + (setq err t)) (if (not err) (progn (setq result (buffer-substring beg (point))) @@ -795,10 +817,9 @@ string). It returns t if a new expansion is found, nil otherwise." (< he-searched-n-bufs hippie-expand-max-buffers))) (set-buffer (car he-search-bufs)) (if (and (not (eq (current-buffer) buf)) - (not (string-match " \\*Minibuf-[0-9]+\\*" - (buffer-name (current-buffer)))) - (not (eq major-mode 'dired-mode))) - ;; Dont search minibuffers nor dired buffers + (not (memq major-mode hippie-expand-ignore-buffers)) + (not (he-regexp-member (buffer-name) + hippie-expand-ignore-buffers))) (save-excursion (goto-char he-search-loc) (setq expansion (he-dab-search he-search-string nil)) @@ -821,7 +842,7 @@ string). It returns t if a new expansion is found, nil otherwise." t)))) (defun he-dab-search-regexp (pat) - (concat "\\b" (regexp-quote pat) + (concat "\\<" (regexp-quote pat) "\\(\\sw\\|\\s_\\)+")) (defun he-dab-search (pattern reverse) @@ -838,10 +859,11 @@ string). It returns t if a new expansion is found, nil otherwise." result)) (defun he-dabbrev-beg () - (save-excursion - (skip-syntax-backward "w_") - (skip-syntax-forward "_") - (point))) + (min (point) + (save-excursion + (skip-syntax-backward "w_") + (skip-syntax-forward "_") + (point)))) (provide 'hippie-exp) |