Mercurial > emacs
annotate lisp/dabbrev.el @ 16945:d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
might need it.
(fmod): Ensure that the magnitude of the result does not exceed that
of the divisor, and that the sign of the result does not disagree with
that of the dividend. This does not yield a
particularly accurate result, but at least it will be in the
range promised by fmod.
author | Paul Eggert <eggert@twinsun.com> |
---|---|
date | Tue, 28 Jan 1997 04:51:45 +0000 |
parents | 71ede15e1ca3 |
children | b712c50d2c84 |
rev | line source |
---|---|
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
1 ;;; dabbrev.el --- dynamic abbreviation package |
14169 | 2 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
3 ;; Copyright (C) 1985, 1986, 1992, 1994 Free Software Foundation, Inc. |
846
20674ae6bf52
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
807
diff
changeset
|
4 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
5 ;; Author: Don Morrison |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
6 ;; Maintainer: Lars Lindberg <Lars.Lindberg@sypro.cap.se> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
7 ;; Created: 16 Mars 1992 |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
8 ;; Lindberg's last update version: 5.7 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
9 ;; Keywords: abbrev expand completion |
267 | 10 |
14169 | 11 ;; This file is part of GNU Emacs. |
12 | |
13 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
267 | 14 ;; it under the terms of the GNU General Public License as published by |
14169 | 15 ;; the Free Software Foundation; either version 2, or (at your option) |
16 ;; any later version. | |
17 | |
18 ;; GNU Emacs is distributed in the hope that it will be useful, | |
267 | 19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
14169 | 22 |
267 | 23 ;; You should have received a copy of the GNU General Public License |
14169 | 24 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
26 ;; Boston, MA 02111-1307, USA. | |
267 | 27 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
793
diff
changeset
|
28 ;;; Commentary: |
267 | 29 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
30 ;; The purpose with this package is to let you write just a few |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
31 ;; characters of words you've written earlier to be able to expand |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
32 ;; them. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
33 ;; |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
34 ;; To expand a word, just put the point right after the word and press |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
35 ;; M-/ (dabbrev-expand) or M-C-/ (dabbrev-completion). |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
36 ;; |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
37 ;; Check out the customizable variables below to learn about all the |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
38 ;; features of this package. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
39 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
40 ;;; Hints and tips for major modes writers: |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
41 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
42 ;; Recommended values C/Lisp etc text |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
43 ;; dabbrev-case-fold-search nil t |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
44 ;; dabbrev-case-replace nil t |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
45 ;; |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
46 ;; Set the variables you want special for your mode like this: |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
47 ;; (set (make-local-variable 'dabbrev-case-replace) nil) |
14040 | 48 ;; Then you don't interfere with other modes. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
49 ;; |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
50 ;; If your mode handles buffers that refers to other buffers |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
51 ;; (i.e. compilation-mode, gud-mode), then try to set |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
52 ;; `dabbrev-select-buffers-function' or `dabbrev-friend-buffer-function' |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
53 ;; to a function that point out those buffers. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
54 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
55 ;; Same goes for major-modes that are connected to other modes. There |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
56 ;; are for instance a number of mail-modes. One for reading, one for |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
57 ;; creating a new mail etc. Maybe those should be connected. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
58 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
59 ;; Example for GNUS (when we write a reply, we want dabbrev to look in |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
60 ;; the article for expansion): |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
61 ;; (set (make-local-variable 'dabbrev-friend-buffer-function) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
62 ;; (lambda (buffer) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
63 ;; (save-excursion |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
64 ;; (set-buffer buffer) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
65 ;; (memq major-mode '(news-reply-mode gnus-article-mode))))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
66 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
67 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
68 ;; Known bugs and limitations. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
69 ;; - Possible to do several levels of `dabbrev-completion' in the |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
70 ;; minibuffer. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
71 ;; - dabbrev-completion doesn't handle resetting the globals variables |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
72 ;; right. It resets them after finding the abbrev. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
73 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
74 ;; Future enhancements |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
75 ;; - Check the tags-files? Like tags-complete? |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
76 ;; - Add the possibility of searching both forward and backward to |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
77 ;; the nearest expansion. |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
78 ;; - Check the kill-ring when everything else fails. (Maybe something |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
79 ;; for hippie-expand?). [Bng] <boris@cs.rochester.edu> |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
80 |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
81 ;;; These people gave suggestions: |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
82 ;; [hymie] Hyman Rosen <marks!hymie@jyacc.jyacc.com> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
83 ;; [burgett] Steve Burgett <burgett@bizet.eecs.berkeley.edu> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
84 ;; [jules] Julian Gosnell <jules@x.co.uk> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
85 ;; [kifer] Michael Kifer <kifer@sbcs.sunysb.edu> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
86 ;; [ake] Ake Stenhoff <extaksf@aom.ericsson.se> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
87 ;; [alon] Alon Albert <al%imercury@uunet.uu.net> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
88 ;; [tromey] Tom Tromey <tromey@busco.lanl.gov> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
89 ;; [Rolf] Rolf Schreiber <rolf@mathematik.uni-stuttgart.de> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
90 ;; [Petri] Petri Raitio <per@tekla.fi> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
91 ;; [ejb] Jay Berkenbilt <ejb@ERA.COM> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
92 ;; [hawley] Bob Hawley <rth1@quartet.mt.att.com> |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
93 ;; ... and to all the people who have participated in the beta tests. |
267 | 94 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
793
diff
changeset
|
95 ;;; Code: |
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
793
diff
changeset
|
96 |
14169 | 97 ;;---------------------------------------------------------------- |
98 ;; Customization variables | |
99 ;;---------------------------------------------------------------- | |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
100 (defvar dabbrev-backward-only nil |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
101 "*If non-nil, `dabbrev-expand' only looks backwards.") |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
102 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
103 (defvar dabbrev-limit nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
104 "*Limits region searched by `dabbrev-expand' to this many chars away.") |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
105 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
106 (defvar dabbrev-abbrev-skip-leading-regexp nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
107 "*Regexp for skipping leading characters of an abbreviation. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
108 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
109 Example: Set this to \"\\\\$\" for programming languages |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
110 in which variable names may appear with or without a leading `$'. |
14271
180245e93214
(dabbrev-abbrev-skip-leading-regexp): Doc fix.
Erik Naggum <erik@naggum.no>
parents:
14169
diff
changeset
|
111 \(For example, in Makefiles.) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
112 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
113 Set this to nil if no characters should be skipped.") |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
114 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
115 ;; I recommend that you set this to nil. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
116 (defvar dabbrev-case-fold-search 'case-fold-search |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
117 "*Non-nil if dabbrev searches should ignore case. |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
118 A value of nil means case is significant. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
119 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
120 The value of this variable is an expression; it is evaluated |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
121 and the resulting value determines the decision. |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
122 For example: setting this to `case-fold-search' means evaluate that |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
123 variable to see whether its value is nil.") |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
124 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
125 (defvar dabbrev-upcase-means-case-search nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
126 "*The significance of an uppercase character in an abbreviation. |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
127 nil means case fold search, non-nil means case sensitive search. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
128 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
129 This variable has an effect only when the value of |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
130 `dabbrev-case-fold-search' evaluates to t.") |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
131 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
132 ;; I recommend that you set this to nil. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
133 (defvar dabbrev-case-replace 'case-replace |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
134 "*Non-nil means dabbrev should preserve case when expanding the abbreviation. |
13501
3691c5bda8d2
(dabbrev-case-replace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
13257
diff
changeset
|
135 More precisely, it preserves the case pattern of the abbreviation as you |
3691c5bda8d2
(dabbrev-case-replace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
13257
diff
changeset
|
136 typed it--as opposed to the case pattern of the expansion that is copied. |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
137 The value of this variable is an expression; it is evaluated |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
138 and the resulting value determines the decision. |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
139 For example, setting this to `case-replace' means evaluate that |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
140 variable to see if its value is t or nil. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
141 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
142 This variable has an effect only when the value of |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
143 `dabbrev-case-fold-search' evaluates to t.") |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
144 |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
145 (defvar dabbrev-abbrev-char-regexp nil |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
146 "*Regexp to recognize a character in an abbreviation or expansion. |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
147 This regexp will be surrounded with \\\\( ... \\\\) when actually used. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
148 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
149 Set this variable to \"\\\\sw\" if you want ordinary words or |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
150 \"\\\\sw\\\\|\\\\s_\" if you want symbols (including characters whose |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
151 syntax is \"symbol\" as well as those whose syntax is \"word\". |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
152 |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
153 The value nil has a special meaning: the abbreviation is from point to |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
154 previous word-start, but the search is for symbols. |
267 | 155 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
156 For instance, if you are programming in Lisp, `yes-or-no-p' is a symbol, |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
157 while `yes', `or', `no' and `p' are considered words. If this |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
158 variable is nil, then expanding `yes-or-no-' looks for a symbol |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
159 starting with or containing `no-'. If you set this variable to |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
160 \"\\\\sw\\\\|\\\\s_\", that expansion looks for a symbol starting with |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
161 `yes-or-no-'. Finally, if you set this variable to \"\\\\sw\", then |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
162 expanding `yes-or-no-' signals an error because `-' is not part of a word; |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
163 but expanding `yes-or-no' looks for a word starting with `no'. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
164 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
165 The recommended value is \"\\\\sw\\\\|\\\\s_\".") |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
166 |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
167 (defvar dabbrev-check-all-buffers t |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
168 "*Non-nil means dabbrev package should search *all* buffers. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
169 |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
170 Dabbrev always searches the current buffer first. Then, if |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
171 `dabbrev-check-other-buffers' says so, it searches the buffers |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
172 designated by `dabbrev-select-buffers-function'. |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
173 |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
174 Then, if `dabbrev-check-all-buffers' is non-nil, dabbrev searches |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
175 all the other buffers.") |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
176 |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
177 (defvar dabbrev-check-other-buffers t |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
178 "*Should \\[dabbrev-expand] look in other buffers?\ |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
179 |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
180 nil: Don't look in other buffers. |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
181 t: Also look for expansions in the buffers pointed out by |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
182 `dabbrev-select-buffers-function'. |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
183 Anything else: When we can't find any more expansions in |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
184 the current buffer, then ask the user whether to look in other |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
185 buffers too. |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
186 |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
187 The default value is t.") |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
188 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
189 ;; I guess setting this to a function that selects all C- or C++- |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
190 ;; mode buffers would be a good choice for a debugging buffer, |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
191 ;; when debugging C- or C++-code. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
192 (defvar dabbrev-select-buffers-function 'dabbrev--select-buffers |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
193 "A function that selects buffers that should be searched by dabbrev. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
194 The function should take no arguments and return a list of buffers to |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
195 search for expansions. Have a look at `dabbrev--select-buffers' for |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
196 an example. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
197 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
198 A mode setting this variable should make it buffer local.") |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
199 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
200 (defvar dabbrev-friend-buffer-function 'dabbrev--same-major-mode-p |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
201 "*A function to decide whether dabbrev should search OTHER-BUFFER. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
202 The function should take one argument, OTHER-BUFFER, and return |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
203 non-nil if that buffer should be searched. Have a look at |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
204 `dabbrev--same-major-mode-p' for an example. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
205 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
206 The value of `dabbrev-friend-buffer-function' has an effect only if |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
207 the value of `dabbrev-select-buffers-function' uses it. The function |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
208 `dabbrev--select-buffers' is one function you can use here. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
209 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
210 A mode setting this variable should make it buffer local.") |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
211 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
212 (defvar dabbrev-search-these-buffers-only nil |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
213 "If non-nil, a list of buffers which dabbrev should search. |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
214 If this variable is non-nil, dabbrev will only look in these buffers. |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
215 It will not even look in the current buffer if it is not a member of |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
216 this list.") |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
217 |
14169 | 218 ;;---------------------------------------------------------------- |
219 ;; Internal variables | |
220 ;;---------------------------------------------------------------- | |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
221 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
222 ;; Last obarray of completions in `dabbrev-completion' |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
223 (defvar dabbrev--last-obarray nil) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
224 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
225 ;; Table of expansions seen so far |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
226 (defvar dabbrev--last-table nil) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
227 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
228 ;; Last string we tried to expand. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
229 (defvar dabbrev--last-abbreviation nil) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
230 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
231 ;; Location last abbreviation began |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
232 (defvar dabbrev--last-abbrev-location nil) |
267 | 233 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
234 ;; Direction of last dabbrevs search |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
235 (defvar dabbrev--last-direction 0) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
236 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
237 ;; Last expansion of an abbreviation. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
238 (defvar dabbrev--last-expansion nil) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
239 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
240 ;; Location the last expansion was found. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
241 (defvar dabbrev--last-expansion-location nil) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
242 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
243 ;; The list of remaining buffers with the same mode as current buffer. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
244 (defvar dabbrev--friend-buffer-list nil) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
245 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
246 ;; The buffer we looked in last. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
247 (defvar dabbrev--last-buffer nil) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
248 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
249 ;; The buffer we found the expansion last time. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
250 (defvar dabbrev--last-buffer-found nil) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
251 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
252 ;; The buffer we last did a completion in. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
253 (defvar dabbrev--last-completion-buffer nil) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
254 |
15834
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
255 ;; Non-nil means we should upcase |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
256 ;; when copying successive words. |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
257 (defvar dabbrev--last-case-pattern nil) |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
258 |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
259 ;; Same as dabbrev-check-other-buffers, but is set for every expand. |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
260 (defvar dabbrev--check-other-buffers dabbrev-check-other-buffers) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
261 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
262 ;; The regexp for recognizing a character in an abbreviation. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
263 (defvar dabbrev--abbrev-char-regexp nil) |
267 | 264 |
14169 | 265 ;;---------------------------------------------------------------- |
266 ;; Macros | |
267 ;;---------------------------------------------------------------- | |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
268 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
269 ;;; Get the buffer that mini-buffer was activated from |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
270 (defsubst dabbrev--minibuffer-origin () |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
271 (car (cdr (buffer-list)))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
272 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
273 ;; Make a list of some of the elements of LIST. |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
274 ;; Check each element of LIST, storing it temporarily in the |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
275 ;; variable ELEMENT, and include it in the result |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
276 ;; if CONDITION evaluates non-nil. |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
277 (defmacro dabbrev-filter-elements (element list condition) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
278 (` (let (dabbrev-result dabbrev-tail (, element)) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
279 (setq dabbrev-tail (, list)) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
280 (while dabbrev-tail |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
281 (setq (, element) (car dabbrev-tail)) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
282 (if (, condition) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
283 (setq dabbrev-result (cons (, element) dabbrev-result))) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
284 (setq dabbrev-tail (cdr dabbrev-tail))) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
285 (nreverse dabbrev-result)))) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
286 |
14169 | 287 ;;---------------------------------------------------------------- |
288 ;; Exported functions | |
289 ;;---------------------------------------------------------------- | |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
290 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
291 ;;;###autoload |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
292 (define-key esc-map "/" 'dabbrev-expand) |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
293 ;;;??? Do we want this? |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
294 ;;;###autoload |
10251
bf1c7dcc69db
(esc-map): Delete excess closeparen.
Richard M. Stallman <rms@gnu.org>
parents:
10241
diff
changeset
|
295 (define-key esc-map [?\C-/] 'dabbrev-completion) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
296 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
297 ;;;###autoload |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
298 (defun dabbrev-completion (&optional arg) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
299 "Completion on current word. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
300 Like \\[dabbrev-expand] but finds all expansions in the current buffer |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
301 and presents suggestions for completion. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
302 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
303 With a prefix argument, it searches all buffers accepted by the |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
304 function pointed out by `dabbrev-friend-buffer-function' to find the |
10232
ace1fffa8d96
(dabbrev-completion): Now searches all buffers when given prefix arg 16.
Richard M. Stallman <rms@gnu.org>
parents:
10231
diff
changeset
|
305 completions. |
ace1fffa8d96
(dabbrev-completion): Now searches all buffers when given prefix arg 16.
Richard M. Stallman <rms@gnu.org>
parents:
10231
diff
changeset
|
306 |
ace1fffa8d96
(dabbrev-completion): Now searches all buffers when given prefix arg 16.
Richard M. Stallman <rms@gnu.org>
parents:
10231
diff
changeset
|
307 If the prefix argument is 16 (which comes from C-u C-u), |
ace1fffa8d96
(dabbrev-completion): Now searches all buffers when given prefix arg 16.
Richard M. Stallman <rms@gnu.org>
parents:
10231
diff
changeset
|
308 then it searches *all* buffers. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
309 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
310 With no prefix argument, it reuses an old completion list |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
311 if there is a suitable one already." |
267 | 312 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
313 (interactive "*P") |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
314 (dabbrev--reset-global-variables) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
315 (let* ((dabbrev-check-other-buffers (and arg t)) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
316 (dabbrev-check-all-buffers |
10232
ace1fffa8d96
(dabbrev-completion): Now searches all buffers when given prefix arg 16.
Richard M. Stallman <rms@gnu.org>
parents:
10231
diff
changeset
|
317 (and arg (= (prefix-numeric-value arg) 16))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
318 (abbrev (dabbrev--abbrev-at-point)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
319 (ignore-case-p (and (eval dabbrev-case-fold-search) |
15834
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
320 (or (not dabbrev-upcase-means-case-search) |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
321 (string= abbrev (downcase abbrev))))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
322 (my-obarray dabbrev--last-obarray) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
323 init) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
324 (save-excursion |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
325 (if (and (null arg) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
326 my-obarray |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
327 (or (eq dabbrev--last-completion-buffer (current-buffer)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
328 (and (window-minibuffer-p (selected-window)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
329 (eq dabbrev--last-completion-buffer |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
330 (dabbrev--minibuffer-origin)))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
331 dabbrev--last-abbreviation |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
332 (>= (length abbrev) (length dabbrev--last-abbreviation)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
333 (string= dabbrev--last-abbreviation |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
334 (substring abbrev 0 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
335 (length dabbrev--last-abbreviation))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
336 (setq init (try-completion abbrev my-obarray))) |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
337 ;; We can reuse the existing completion list. |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
338 nil |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
339 ;;-------------------------------- |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
340 ;; New abbreviation to expand. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
341 ;;-------------------------------- |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
342 (setq dabbrev--last-abbreviation abbrev) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
343 ;; Find all expansion |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
344 (let ((completion-list |
15751
022815791330
(dabbrev--search): Don't downcase the result here.
Richard M. Stallman <rms@gnu.org>
parents:
15652
diff
changeset
|
345 (dabbrev--find-all-expansions abbrev ignore-case-p)) |
022815791330
(dabbrev--search): Don't downcase the result here.
Richard M. Stallman <rms@gnu.org>
parents:
15652
diff
changeset
|
346 (completion-ignore-case ignore-case-p)) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
347 ;; Make an obarray with all expansions |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
348 (setq my-obarray (make-vector (length completion-list) 0)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
349 (or (> (length my-obarray) 0) |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
350 (error "No dynamic expansion for \"%s\" found%s" |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
351 abbrev |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
352 (if dabbrev--check-other-buffers "" " in this-buffer"))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
353 (cond |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
354 ((or (not ignore-case-p) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
355 (not dabbrev-case-replace)) |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
356 (mapcar (function (lambda (string) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
357 (intern string my-obarray))) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
358 completion-list)) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
359 ((string= abbrev (upcase abbrev)) |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
360 (mapcar (function (lambda (string) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
361 (intern (upcase string) my-obarray))) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
362 completion-list)) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
363 ((string= (substring abbrev 0 1) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
364 (upcase (substring abbrev 0 1))) |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
365 (mapcar (function (lambda (string) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
366 (intern (capitalize string) my-obarray))) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
367 completion-list)) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
368 (t |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
369 (mapcar (function (lambda (string) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
370 (intern (downcase string) my-obarray))) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
371 completion-list))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
372 (setq dabbrev--last-obarray my-obarray) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
373 (setq dabbrev--last-completion-buffer (current-buffer)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
374 ;; Find the longest common string. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
375 (setq init (try-completion abbrev my-obarray))))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
376 ;;-------------------------------- |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
377 ;; Let the user choose between the expansions |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
378 ;;-------------------------------- |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
379 (or (stringp init) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
380 (setq init abbrev)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
381 (cond |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
382 ;; * Replace string fragment with matched common substring completion. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
383 ((and (not (string-equal init "")) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
384 (not (string-equal (downcase init) (downcase abbrev)))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
385 (if (> (length (all-completions init my-obarray)) 1) |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
386 (message "Repeat `%s' to see all completions" |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
387 (key-description (this-command-keys))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
388 (message "The only possible completion")) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
389 (dabbrev--substitute-expansion nil abbrev init)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
390 (t |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
391 ;; * String is a common substring completion already. Make list. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
392 (message "Making completion list...") |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
393 (with-output-to-temp-buffer " *Completions*" |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
394 (display-completion-list (all-completions init my-obarray))) |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
395 (message "Making completion list...done"))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
396 (and (window-minibuffer-p (selected-window)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
397 (message nil)))) |
267 | 398 |
399 ;;;###autoload | |
400 (defun dabbrev-expand (arg) | |
401 "Expand previous word \"dynamically\". | |
402 | |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
403 Expands to the most recent, preceding word for which this is a prefix. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
404 If no suitable preceding word is found, words following point are |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
405 considered. If still no suitable word is found, then look in the |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
406 buffers accepted by the function pointed out by variable |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
407 `dabbrev-friend-buffer-function'. |
267 | 408 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
409 A positive prefix argument, N, says to take the Nth backward *distinct* |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
410 possibility. A negative argument says search forward. |
267 | 411 |
412 If the cursor has not moved from the end of the previous expansion and | |
413 no argument is given, replace the previously-made expansion | |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
414 with the next possible expansion not yet tried. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
415 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
416 The variable `dabbrev-backward-only' may be used to limit the |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
417 direction of search to backward if set non-nil. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
418 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
419 See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion]." |
267 | 420 (interactive "*P") |
15834
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
421 (let (abbrev record-case-pattern |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
422 expansion old direction (orig-point (point))) |
267 | 423 ;; abbrev -- the abbrev to expand |
424 ;; expansion -- the expansion found (eventually) or nil until then | |
425 ;; old -- the text currently in the buffer | |
426 ;; (the abbrev, or the previously-made expansion) | |
427 (save-excursion | |
428 (if (and (null arg) | |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
429 (markerp dabbrev--last-abbrev-location) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
430 (marker-position dabbrev--last-abbrev-location) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
431 (or (eq last-command this-command) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
432 (and (window-minibuffer-p (selected-window)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
433 (= dabbrev--last-abbrev-location |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
434 (point))))) |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
435 ;; Find a different expansion for the same abbrev as last time. |
267 | 436 (progn |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
437 (setq abbrev dabbrev--last-abbreviation) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
438 (setq old dabbrev--last-expansion) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
439 (setq direction dabbrev--last-direction)) |
11976
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
440 ;; If the user inserts a space after expanding |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
441 ;; and then asks to expand again, always fetch the next word. |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
442 (if (and (eq (preceding-char) ?\ ) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
443 (markerp dabbrev--last-abbrev-location) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
444 (marker-position dabbrev--last-abbrev-location) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
445 (= (point) (1+ dabbrev--last-abbrev-location))) |
15834
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
446 (progn |
11976
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
447 ;; The "abbrev" to expand is just the space. |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
448 (setq abbrev " ") |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
449 (save-excursion |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
450 (if dabbrev--last-buffer |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
451 (set-buffer dabbrev--last-buffer)) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
452 ;; Find the end of the last "expansion" word. |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
453 (if (or (eq dabbrev--last-direction 1) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
454 (and (eq dabbrev--last-direction 0) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
455 (< dabbrev--last-expansion-location (point)))) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
456 (setq dabbrev--last-expansion-location |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
457 (+ dabbrev--last-expansion-location |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
458 (length dabbrev--last-expansion)))) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
459 (goto-char dabbrev--last-expansion-location) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
460 ;; Take the following word, with intermediate separators, |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
461 ;; as our expansion this time. |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
462 (re-search-forward |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
463 (concat "\\(\\(" dabbrev--abbrev-char-regexp "\\)+\\)")) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
464 (setq expansion |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
465 (buffer-substring dabbrev--last-expansion-location |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
466 (point))) |
15834
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
467 (if dabbrev--last-case-pattern |
15812
63076f19cbc5
(dabbrev-expand): When snarfing consecutive words,
Richard M. Stallman <rms@gnu.org>
parents:
15789
diff
changeset
|
468 (setq expansion (upcase expansion))) |
11976
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
469 |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
470 ;; Record the end of this expansion, in case we repeat this. |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
471 (setq dabbrev--last-expansion-location (point))) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
472 ;; Indicate that dabbrev--last-expansion-location is |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
473 ;; at the end of the expansion. |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
474 (setq dabbrev--last-direction -1)) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
475 |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
476 ;; We have a different abbrev to expand. |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
477 (dabbrev--reset-global-variables) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
478 (setq direction (if (null arg) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
479 (if dabbrev-backward-only 1 0) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
480 (prefix-numeric-value arg))) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
481 (setq abbrev (dabbrev--abbrev-at-point)) |
15834
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
482 (setq record-case-pattern t) |
11976
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
483 (setq old nil))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
484 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
485 ;;-------------------------------- |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
486 ;; Find the expansion |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
487 ;;-------------------------------- |
11976
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
488 (or expansion |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
489 (setq expansion |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
490 (dabbrev--find-expansion abbrev direction |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
491 (and (eval dabbrev-case-fold-search) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
492 (or (not dabbrev-upcase-means-case-search) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
493 (string= abbrev (downcase abbrev)))))))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
494 (cond |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
495 ((not expansion) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
496 (dabbrev--reset-global-variables) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
497 (if old |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
498 (save-excursion |
12724
c3cb2b06e05f
(dabbrev-expand): Save previous point for undo.
Richard M. Stallman <rms@gnu.org>
parents:
12555
diff
changeset
|
499 (setq buffer-undo-list (cons orig-point buffer-undo-list)) |
13256
d9c469af1ee0
(dabbrev-expand): When no more expansions,
Richard M. Stallman <rms@gnu.org>
parents:
12724
diff
changeset
|
500 ;; Put back the original abbrev with its original case pattern. |
d9c469af1ee0
(dabbrev-expand): When no more expansions,
Richard M. Stallman <rms@gnu.org>
parents:
12724
diff
changeset
|
501 (search-backward old) |
d9c469af1ee0
(dabbrev-expand): When no more expansions,
Richard M. Stallman <rms@gnu.org>
parents:
12724
diff
changeset
|
502 (insert abbrev) |
d9c469af1ee0
(dabbrev-expand): When no more expansions,
Richard M. Stallman <rms@gnu.org>
parents:
12724
diff
changeset
|
503 (delete-region (point) (+ (point) (length old))))) |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
504 (error "No%s dynamic expansion for `%s' found" |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
505 (if old " further" "") abbrev)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
506 (t |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
507 (if (not (eq dabbrev--last-buffer dabbrev--last-buffer-found)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
508 (progn |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
509 (message "Expansion found in '%s'" |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
510 (buffer-name dabbrev--last-buffer)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
511 (setq dabbrev--last-buffer-found dabbrev--last-buffer)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
512 (message nil)) |
11976
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
513 (if (and (or (eq (current-buffer) dabbrev--last-buffer) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
514 (null dabbrev--last-buffer)) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
515 (numberp dabbrev--last-expansion-location) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
516 (and (> dabbrev--last-expansion-location (point)))) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
517 (setq dabbrev--last-expansion-location |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
518 (copy-marker dabbrev--last-expansion-location))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
519 ;; Success: stick it in and return. |
12724
c3cb2b06e05f
(dabbrev-expand): Save previous point for undo.
Richard M. Stallman <rms@gnu.org>
parents:
12555
diff
changeset
|
520 (setq buffer-undo-list (cons orig-point buffer-undo-list)) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
521 (dabbrev--substitute-expansion old abbrev expansion) |
15834
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
522 |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
523 ;; If we are not copying successive words now, |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
524 ;; set dabbrev--last-case-pattern. |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
525 (and record-case-pattern |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
526 (setq dabbrev--last-case-pattern |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
527 (and (eval dabbrev-case-fold-search) |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
528 (not dabbrev-upcase-means-case-search) |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
529 (equal abbrev (upcase abbrev))))) |
71ede15e1ca3
(dabbrev--last-case-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15812
diff
changeset
|
530 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
531 ;; Save state for re-expand. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
532 (setq dabbrev--last-expansion expansion) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
533 (setq dabbrev--last-abbreviation abbrev) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
534 (setq dabbrev--last-abbrev-location (point-marker)))))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
535 |
14169 | 536 ;;---------------------------------------------------------------- |
537 ;; Local functions | |
538 ;;---------------------------------------------------------------- | |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
539 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
540 ;;; Checks if OTHER-BUFFER has the same major mode as current buffer. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
541 (defun dabbrev--same-major-mode-p (other-buffer) |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
542 (eq major-mode |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
543 (save-excursion |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
544 (set-buffer other-buffer) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
545 major-mode))) |
267 | 546 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
547 ;;; Back over all abbrev type characters and then moves forward over |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
548 ;;; all skip characters. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
549 (defun dabbrev--goto-start-of-abbrev () |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
550 ;; Move backwards over abbrev chars |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
551 (save-match-data |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
552 (if (not (bobp)) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
553 (progn |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
554 (forward-char -1) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
555 (while (and (looking-at dabbrev--abbrev-char-regexp) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
556 (not (bobp))) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
557 (forward-char -1)) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
558 (or (looking-at dabbrev--abbrev-char-regexp) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
559 (forward-char 1)))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
560 (and dabbrev-abbrev-skip-leading-regexp |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
561 (while (looking-at dabbrev-abbrev-skip-leading-regexp) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
562 (forward-char 1))))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
563 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
564 ;;; Extract the symbol at point to serve as abbreviation. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
565 (defun dabbrev--abbrev-at-point () |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
566 ;; Check for error |
11976
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
567 (if (bobp) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
568 (error "No possible abbreviation preceding point")) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
569 ;; Return abbrev at point |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
570 (save-excursion |
11976
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
571 ;; Record the end of the abbreviation. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
572 (setq dabbrev--last-abbrev-location (point)) |
11976
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
573 ;; If we aren't right after an abbreviation, |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
574 ;; move point back to just after one. |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
575 ;; This is so the user can get successive words |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
576 ;; by typing the punctuation followed by M-/. |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
577 (save-match-data |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
578 (if (save-excursion |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
579 (forward-char -1) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
580 (not (looking-at (concat "\\(" |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
581 (or dabbrev-abbrev-char-regexp |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
582 "\\sw\\|\\s_") |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
583 "\\)+")))) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
584 (if (re-search-backward (or dabbrev-abbrev-char-regexp |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
585 "\\sw\\|\\s_") |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
586 nil t) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
587 (forward-char 1) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
588 (error "No possible abbreviation preceding point")))) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
589 ;; Now find the beginning of that one. |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
590 (dabbrev--goto-start-of-abbrev) |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
591 (buffer-substring dabbrev--last-abbrev-location |
e862c6697f39
(dabbrev--abbrev-at-point): If point is after
Karl Heuer <kwzh@gnu.org>
parents:
11820
diff
changeset
|
592 (point)))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
593 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
594 ;;; Initializes all global variables |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
595 (defun dabbrev--reset-global-variables () |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
596 ;; dabbrev--last-obarray and dabbrev--last-completion-buffer |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
597 ;; must not be reset here. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
598 (setq dabbrev--last-table nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
599 dabbrev--last-abbreviation nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
600 dabbrev--last-abbrev-location nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
601 dabbrev--last-direction nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
602 dabbrev--last-expansion nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
603 dabbrev--last-expansion-location nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
604 dabbrev--friend-buffer-list nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
605 dabbrev--last-buffer nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
606 dabbrev--last-buffer-found nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
607 dabbrev--abbrev-char-regexp (or dabbrev-abbrev-char-regexp |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
608 "\\sw\\|\\s_") |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
609 dabbrev--check-other-buffers dabbrev-check-other-buffers)) |
267 | 610 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
611 ;;; Find all buffers that are considered "friends" according to the |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
612 ;;; function pointed out by dabbrev-friend-buffer-function. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
613 (defun dabbrev--select-buffers () |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
614 (save-excursion |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
615 (and (window-minibuffer-p (selected-window)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
616 (set-buffer (dabbrev--minibuffer-origin))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
617 (let ((orig-buffer (current-buffer))) |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
618 (dabbrev-filter-elements |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
619 buffer (buffer-list) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
620 (and (not (eq orig-buffer buffer)) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
621 (boundp 'dabbrev-friend-buffer-function) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
622 (funcall dabbrev-friend-buffer-function buffer)))))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
623 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
624 ;;; Search for ABBREV, N times, normally looking forward, |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
625 ;;; but looking in reverse instead if REVERSE is non-nil. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
626 (defun dabbrev--try-find (abbrev reverse n ignore-case) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
627 (save-excursion |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
628 (save-restriction |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
629 (widen) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
630 (let ((expansion nil)) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
631 (and dabbrev--last-expansion-location |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
632 (goto-char dabbrev--last-expansion-location)) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
633 (let ((case-fold-search ignore-case) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
634 (count n)) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
635 (while (and (> count 0) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
636 (setq expansion (dabbrev--search abbrev |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
637 reverse |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
638 ignore-case))) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
639 (setq count (1- count)))) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
640 (and expansion |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
641 (setq dabbrev--last-expansion-location (point))) |
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
642 expansion)))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
643 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
644 ;;; Find all expansions of ABBREV |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
645 (defun dabbrev--find-all-expansions (abbrev ignore-case) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
646 (let ((all-expansions nil) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
647 expansion) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
648 (save-excursion |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
649 (goto-char (point-min)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
650 (while (setq expansion (dabbrev--find-expansion abbrev -1 ignore-case)) |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
651 (setq all-expansions (cons expansion all-expansions)))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
652 all-expansions)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
653 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
654 (defun dabbrev--scanning-message () |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
655 (message "Scanning `%s'" (buffer-name (current-buffer)))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
656 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
657 ;;; Find one occasion of ABBREV. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
658 ;;; DIRECTION > 0 means look that many times backwards. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
659 ;;; DIRECTION < 0 means look that many times forward. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
660 ;;; DIRECTION = 0 means try both backward and forward. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
661 ;;; IGNORE-CASE non-nil means ignore case when searching. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
662 (defun dabbrev--find-expansion (abbrev direction ignore-case) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
663 (let (expansion) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
664 (save-excursion |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
665 (cond |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
666 (dabbrev--last-buffer |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
667 (set-buffer dabbrev--last-buffer) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
668 (dabbrev--scanning-message)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
669 ((and (not dabbrev-search-these-buffers-only) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
670 (window-minibuffer-p (selected-window))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
671 (set-buffer (dabbrev--minibuffer-origin)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
672 ;; In the minibuffer-origin buffer we will only search from |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
673 ;; the top and down. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
674 (goto-char (point-min)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
675 (setq direction -1) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
676 (dabbrev--scanning-message))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
677 (cond |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
678 ;; ------------------------------------------ |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
679 ;; Look backwards |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
680 ;; ------------------------------------------ |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
681 ((and (not dabbrev-search-these-buffers-only) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
682 (>= direction 0) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
683 (setq dabbrev--last-direction (min 1 direction)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
684 (setq expansion (dabbrev--try-find abbrev t |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
685 (max 1 direction) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
686 ignore-case))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
687 expansion) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
688 ;; ------------------------------------------ |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
689 ;; Look forward |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
690 ;; ------------------------------------------ |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
691 ((and (or (not dabbrev-search-these-buffers-only) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
692 dabbrev--last-buffer) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
693 (<= direction 0) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
694 (setq dabbrev--last-direction -1) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
695 (setq expansion (dabbrev--try-find abbrev nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
696 (max 1 (- direction)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
697 ignore-case))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
698 expansion) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
699 ;; ------------------------------------------ |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
700 ;; Look in other buffers. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
701 ;; Start at (point-min) and look forward. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
702 ;; ------------------------------------------ |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
703 (t |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
704 (setq dabbrev--last-direction -1) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
705 ;; Make sure that we should check other buffers |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
706 (or dabbrev--friend-buffer-list |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
707 dabbrev--last-buffer |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
708 (setq dabbrev--friend-buffer-list |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
709 (mapcar (function get-buffer) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
710 dabbrev-search-these-buffers-only)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
711 (not dabbrev--check-other-buffers) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
712 (not (or (eq dabbrev--check-other-buffers t) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
713 (progn |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
714 (setq dabbrev--check-other-buffers |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
715 (y-or-n-p "Scan other buffers also? "))))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
716 (let* (friend-buffer-list non-friend-buffer-list) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
717 (setq dabbrev--friend-buffer-list |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
718 (funcall dabbrev-select-buffers-function)) |
11820
362251066737
(dabbrev-completion): Use mapcar, not mapc.
Richard M. Stallman <rms@gnu.org>
parents:
10251
diff
changeset
|
719 (if dabbrev-check-all-buffers |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
720 (setq non-friend-buffer-list |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
721 (nreverse |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
722 (dabbrev-filter-elements |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
723 buffer (buffer-list) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
724 (not (memq buffer dabbrev--friend-buffer-list)))) |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
725 dabbrev--friend-buffer-list |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
726 (append dabbrev--friend-buffer-list |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
727 non-friend-buffer-list))))) |
13257
679fc0917c11
(dabbrev--find-expansion): Move buffers that are visible on the screen
Richard M. Stallman <rms@gnu.org>
parents:
13256
diff
changeset
|
728 ;; Move buffers that are visible on the screen |
679fc0917c11
(dabbrev--find-expansion): Move buffers that are visible on the screen
Richard M. Stallman <rms@gnu.org>
parents:
13256
diff
changeset
|
729 ;; to the front of the list. |
679fc0917c11
(dabbrev--find-expansion): Move buffers that are visible on the screen
Richard M. Stallman <rms@gnu.org>
parents:
13256
diff
changeset
|
730 (if dabbrev--friend-buffer-list |
679fc0917c11
(dabbrev--find-expansion): Move buffers that are visible on the screen
Richard M. Stallman <rms@gnu.org>
parents:
13256
diff
changeset
|
731 (let ((w (next-window (selected-window)))) |
679fc0917c11
(dabbrev--find-expansion): Move buffers that are visible on the screen
Richard M. Stallman <rms@gnu.org>
parents:
13256
diff
changeset
|
732 (while (not (eq w (selected-window))) |
679fc0917c11
(dabbrev--find-expansion): Move buffers that are visible on the screen
Richard M. Stallman <rms@gnu.org>
parents:
13256
diff
changeset
|
733 (setq dabbrev--friend-buffer-list |
679fc0917c11
(dabbrev--find-expansion): Move buffers that are visible on the screen
Richard M. Stallman <rms@gnu.org>
parents:
13256
diff
changeset
|
734 (cons (window-buffer w) |
679fc0917c11
(dabbrev--find-expansion): Move buffers that are visible on the screen
Richard M. Stallman <rms@gnu.org>
parents:
13256
diff
changeset
|
735 (delq (window-buffer w) dabbrev--friend-buffer-list))) |
679fc0917c11
(dabbrev--find-expansion): Move buffers that are visible on the screen
Richard M. Stallman <rms@gnu.org>
parents:
13256
diff
changeset
|
736 (setq w (next-window w))))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
737 ;; Walk through the buffers |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
738 (while (and (not expansion) dabbrev--friend-buffer-list) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
739 (setq dabbrev--last-buffer |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
740 (car dabbrev--friend-buffer-list)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
741 (setq dabbrev--friend-buffer-list |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
742 (cdr dabbrev--friend-buffer-list)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
743 (set-buffer dabbrev--last-buffer) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
744 (dabbrev--scanning-message) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
745 (setq dabbrev--last-expansion-location (point-min)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
746 (setq expansion (dabbrev--try-find abbrev nil 1 ignore-case))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
747 expansion))))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
748 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
749 (defun dabbrev--safe-replace-match (string &optional fixedcase literal) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
750 (if (eq major-mode 'picture-mode) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
751 (picture-replace-match string fixedcase literal) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
752 (replace-match string fixedcase literal))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
753 |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
754 ;;;---------------------------------------------------------------- |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
755 ;;; Substitute the current string in buffer with the expansion |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
756 ;;; OLD is nil or the last expansion substring. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
757 ;;; ABBREV is the abbreviation we are working with. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
758 ;;; EXPANSION is the expansion substring. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
759 (defun dabbrev--substitute-expansion (old abbrev expansion) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
760 ;;(undo-boundary) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
761 (let ((use-case-replace (and (eval dabbrev-case-fold-search) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
762 (or (not dabbrev-upcase-means-case-search) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
763 (string= abbrev (downcase abbrev))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
764 (eval dabbrev-case-replace)))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
765 (and nil use-case-replace |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
766 (setq old (concat abbrev (or old ""))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
767 (setq expansion (concat abbrev expansion))) |
15751
022815791330
(dabbrev--search): Don't downcase the result here.
Richard M. Stallman <rms@gnu.org>
parents:
15652
diff
changeset
|
768 ;; If the given abbrev is mixed case and its case pattern |
022815791330
(dabbrev--search): Don't downcase the result here.
Richard M. Stallman <rms@gnu.org>
parents:
15652
diff
changeset
|
769 ;; matches the start of the expansion, |
022815791330
(dabbrev--search): Don't downcase the result here.
Richard M. Stallman <rms@gnu.org>
parents:
15652
diff
changeset
|
770 ;; copy the expansion's case |
022815791330
(dabbrev--search): Don't downcase the result here.
Richard M. Stallman <rms@gnu.org>
parents:
15652
diff
changeset
|
771 ;; instead of downcasing all the rest. |
15789
992fcf417a49
(dabbrev--substitute-expansion): Use just ABBREV, not OLD, in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
15752
diff
changeset
|
772 (if (and (string= abbrev |
992fcf417a49
(dabbrev--substitute-expansion): Use just ABBREV, not OLD, in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
15752
diff
changeset
|
773 (substring expansion 0 (length abbrev))) |
992fcf417a49
(dabbrev--substitute-expansion): Use just ABBREV, not OLD, in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
15752
diff
changeset
|
774 (not (string= abbrev (downcase abbrev))) |
992fcf417a49
(dabbrev--substitute-expansion): Use just ABBREV, not OLD, in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
15752
diff
changeset
|
775 (not (string= abbrev (upcase abbrev)))) |
15812
63076f19cbc5
(dabbrev-expand): When snarfing consecutive words,
Richard M. Stallman <rms@gnu.org>
parents:
15789
diff
changeset
|
776 (setq use-case-replace nil)) |
63076f19cbc5
(dabbrev-expand): When snarfing consecutive words,
Richard M. Stallman <rms@gnu.org>
parents:
15789
diff
changeset
|
777 (if (equal abbrev " ") |
63076f19cbc5
(dabbrev-expand): When snarfing consecutive words,
Richard M. Stallman <rms@gnu.org>
parents:
15789
diff
changeset
|
778 (setq use-case-replace nil)) |
63076f19cbc5
(dabbrev-expand): When snarfing consecutive words,
Richard M. Stallman <rms@gnu.org>
parents:
15789
diff
changeset
|
779 (if use-case-replace |
63076f19cbc5
(dabbrev-expand): When snarfing consecutive words,
Richard M. Stallman <rms@gnu.org>
parents:
15789
diff
changeset
|
780 (setq expansion (downcase expansion))) |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
781 (if old |
267 | 782 (save-excursion |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
783 (search-backward old)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
784 ;;(store-match-data (list (point-marker) (point-marker))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
785 (search-backward abbrev)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
786 ;; Make case of replacement conform to case of abbreviation |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
787 ;; provided (1) that kind of thing is enabled in this buffer |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
788 ;; and (2) the replacement itself is all lower case. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
789 (dabbrev--safe-replace-match expansion |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
790 (not use-case-replace) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
791 t))) |
267 | 792 |
793 | |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
794 ;;;---------------------------------------------------------------- |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
795 ;;; Search function used by dabbrevs library. |
267 | 796 |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
797 ;;; ABBREV is string to find as prefix of word. Second arg, REVERSE, |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
798 ;;; is t for reverse search, nil for forward. Variable dabbrev-limit |
14040 | 799 ;;; controls the maximum search region size. Third argument IGNORE-CASE |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
800 ;;; non-nil means treat case as insignificant while looking for a match |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
801 ;;; and when comparing with previous matches. Also if that's non-nil |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
802 ;;; and the match is found at the beginning of a sentence and is in |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
803 ;;; lower case except for the initial then it is converted to all lower |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
804 ;;; case for return. |
267 | 805 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
806 ;;; Table of expansions already seen is examined in buffer |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
807 ;;; `dabbrev--last-table' so that only distinct possibilities are found |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
808 ;;; by dabbrev-re-expand. |
267 | 809 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
810 ;;; Value is the expansion, or nil if not found. |
267 | 811 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
812 (defun dabbrev--search (abbrev reverse ignore-case) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
813 (save-match-data |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
814 (let ((pattern1 (concat (regexp-quote abbrev) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
815 "\\(" dabbrev--abbrev-char-regexp "\\)")) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
816 (pattern2 (concat (regexp-quote abbrev) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
817 "\\(\\(" dabbrev--abbrev-char-regexp "\\)+\\)")) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
818 (found-string nil)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
819 ;; Limited search. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
820 (save-restriction |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
821 (and dabbrev-limit |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
822 (narrow-to-region dabbrev--last-expansion-location |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
823 (+ (point) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
824 (if reverse (- dabbrev-limit) dabbrev-limit)))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
825 ;;-------------------------------- |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
826 ;; Look for a distinct expansion, using dabbrev--last-table. |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
827 ;;-------------------------------- |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
828 (while (and (not found-string) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
829 (if reverse |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
830 (re-search-backward pattern1 nil t) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
831 (re-search-forward pattern1 nil t))) |
12555
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
832 (goto-char (match-beginning 0)) |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
833 ;; In case we matched in the middle of a word, |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
834 ;; back up to start of word and verify we still match. |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
835 (dabbrev--goto-start-of-abbrev) |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
836 |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
837 (if (not (looking-at pattern1)) |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
838 nil |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
839 ;; We have a truly valid match. Find the end. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
840 (re-search-forward pattern2) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
841 (setq found-string |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
842 (buffer-substring (match-beginning 1) (match-end 1))) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
843 (and ignore-case (setq found-string (downcase found-string))) |
12555
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
844 ;; Ignore this match if it's already in the table. |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
845 (if (dabbrev-filter-elements |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
846 table-string dabbrev--last-table |
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
847 (string= found-string table-string)) |
12555
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
848 (setq found-string nil))) |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
849 ;; Prepare to continue searching. |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
850 (if reverse |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
851 (goto-char (match-beginning 0)) |
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
852 (goto-char (match-end 0)))) |
12555
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
853 ;; If we found something, use it. |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
854 (if found-string |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
855 ;; Put it into `dabbrev--last-table' |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
856 ;; and return it (either downcased, or as is). |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
857 (let ((result |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
858 (buffer-substring (match-beginning 0) (match-end 0)))) |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
859 (setq dabbrev--last-table |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
860 (cons found-string dabbrev--last-table)) |
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
861 (if (and ignore-case (eval dabbrev-case-replace)) |
15751
022815791330
(dabbrev--search): Don't downcase the result here.
Richard M. Stallman <rms@gnu.org>
parents:
15652
diff
changeset
|
862 result |
12555
a2a2aa391773
(dabbrev--search): Don't let spurious match in middle
Karl Heuer <kwzh@gnu.org>
parents:
11976
diff
changeset
|
863 result))))))) |
267 | 864 |
10230
7396503653cf
Complete rewrite by Lars.Lindberg@sypro.cap.se.
Richard M. Stallman <rms@gnu.org>
parents:
5307
diff
changeset
|
865 (provide 'dabbrev) |
10231
e88ff4b30786
Don't require cl, picture, or reporter.
Richard M. Stallman <rms@gnu.org>
parents:
10230
diff
changeset
|
866 |
14169 | 867 ;;; dabbrev.el ends here |