Mercurial > emacs
changeset 45292:e3ba76f78075
(dabbrev-case-distinction): New option.
(dabbrev--try-find): Handle dabbrev-case-distinction.
(dabbrev--search): Clean up the code.
(dabbrev-upcase-means-case-search): Doc fix.
(dabbrev-case-replace): Fix custom tags and docs.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 14 May 2002 19:45:09 +0000 |
parents | 01f46f9c1fa0 |
children | 90b0de205115 |
files | lisp/dabbrev.el |
diffstat | 1 files changed, 39 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/dabbrev.el Tue May 14 18:49:33 2002 +0000 +++ b/lisp/dabbrev.el Tue May 14 19:45:09 2002 +0000 @@ -147,23 +147,41 @@ (defcustom dabbrev-upcase-means-case-search nil "*The significance of an uppercase character in an abbreviation. -nil means case fold search, non-nil means case sensitive search. +nil means case fold search when searching for possible expansions; +non-nil means case sensitive search. This variable has an effect only when the value of `dabbrev-case-fold-search' says to ignore case." :type 'boolean :group 'dabbrev) -(defcustom dabbrev-case-replace 'case-replace - "*Controls whether dabbrev preserves case when expanding the abbreviation. -A value of nil means preserve case. -A value of `case-replace' means preserve case if `case-replace' is nil. -Any other non-nil version means do not preserve case. +(defcustom dabbrev-case-distinction 'case-replace + "*Whether dabbrev treats expansions as the same if they differ in case. + +A value of nil means treat them as different. +A value of `case-replace' means distinguish them if `case-replace' is nil. +Any other non-nil value means to treat them as the same. This variable has an effect only when the value of `dabbrev-case-fold-search' specifies to ignore case." :type '(choice (const :tag "off" nil) - (const :tag "like M-x query-replace" case-replace) + (const :tag "based on `case-replace'" case-replace) + (other :tag "on" t)) + :group 'dabbrev + :version "21.4") + +(defcustom dabbrev-case-replace 'case-replace + "*Whether dabbrev applies the abbreviations's case pattern to the expansion. + +A value of nil means preserve the expansion's case pattern. +A value of `case-replace' means preserve it if `case-replace' is nil. +Any other non-nil value means modify the expansion +by applying the abbreviation's case pattern to it. + +This variable has an effect only when the value of +`dabbrev-case-fold-search' specifies to ignore case." + :type '(choice (const :tag "off" nil) + (const :tag "based on `case-replace'" case-replace) (other :tag "on" t)) :group 'dabbrev) @@ -689,7 +707,11 @@ (while (and (> count 0) (setq expansion (dabbrev--search abbrev reverse - ignore-case))) + (and ignore-case + (if (eq dabbrev-case-distinction 'case-replace) + case-replace + dabbrev-case-distinction)) + ))) (setq count (1- count)))) (and expansion (setq dabbrev--last-expansion-location (point))) @@ -950,7 +972,7 @@ "\\(" dabbrev--abbrev-char-regexp "\\)")) (pattern2 (concat (regexp-quote abbrev) "\\(\\(" dabbrev--abbrev-char-regexp "\\)+\\)")) - (found-string nil)) + found-string result) ;; Limited search. (save-restriction (and dabbrev-limit @@ -974,7 +996,8 @@ ;; We have a truly valid match. Find the end. (re-search-forward pattern2) (setq found-string (buffer-substring-no-properties - (match-beginning 1) (match-end 1))) + (match-beginning 0) (match-end 0))) + (setq result found-string) (and ignore-case (setq found-string (downcase found-string))) ;; Ignore this match if it's already in the table. (if (dabbrev-filter-elements @@ -986,16 +1009,12 @@ (goto-char (match-beginning 0)) (goto-char (match-end 0)))) ;; If we found something, use it. - (if found-string - ;; Put it into `dabbrev--last-table' - ;; and return it (either downcased, or as is). - (let ((result (buffer-substring-no-properties - (match-beginning 0) (match-end 0)))) - (setq dabbrev--last-table - (cons found-string dabbrev--last-table)) - (if (and ignore-case (eval dabbrev-case-replace)) - result - result))))))) + (when found-string + ;; Put it into `dabbrev--last-table' + ;; and return it (either downcased, or as is). + (setq dabbrev--last-table + (cons found-string dabbrev--last-table)) + result))))) (dolist (mess '("^No dynamic expansion for .* found$" "^No further dynamic expansion for .* found$"