annotate lisp/find-file.el @ 66046:f56e7dee3fe4

(fancy-splash-default-action): Discard mouse click in the spash screen window, as it has no sensible meaning in the next window to be selected. Fixes error reported by Jan D.
author Kim F. Storm <storm@cua.dk>
date Wed, 12 Oct 2005 11:22:57 +0000
parents 023827894687
children 3bd95f4f2941 2d92f5c9d6ae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; find-file.el --- find a file corresponding to this one given a pattern
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
18127
6316f98dda40 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 18119
diff changeset
3 ;; Author: Henry Guillaume <henri@tibco.com, henry@c032.aone.net.au>
21057
9b9c929675eb Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 18127
diff changeset
4 ;; Maintainer: FSF
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Keywords: c, matching, tools
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
7 ;; Copyright (C) 1994, 1995, 2002, 2003, 2004,
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
8 ;; 2005 Free Software Foundation, Inc.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13896
diff changeset
10 ;; This file is part of GNU Emacs.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13896
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13896
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13896
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13896
diff changeset
15 ;; any later version.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13896
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13896
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13896
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13896
diff changeset
20 ;; GNU General Public License for more details.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13896
diff changeset
22 ;; You should have received a copy of the GNU General Public License
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13896
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63921
diff changeset
24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63921
diff changeset
25 ;; Boston, MA 02110-1301, USA.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; PURPOSE:
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
30 ;; This package features a function called ff-find-other-file, which performs
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
31 ;; the following function:
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; When in a .c file, find the first corresponding .h file in a set
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; of directories and display it, and vice-versa from the .h file.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;; Many people maintain their include file in a directory separate to their
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; src directory, and very often you may be editing a file and have a need to
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;; visit the "other file". This package searches through a set of directories
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ;; to find that file.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; THE "OTHER FILE", or "corresponding file", generally has the same basename,
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
42 ;; and just has a different extension as described by the ff-other-file-alist
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 ;; variable:
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;; '(("\\.cc$" (".hh" ".h"))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;; ("\\.hh$" (".cc" ".C" ".CC" ".cxx" ".cpp")))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 ;; If the current file has a .cc extension, ff-find-other-file will attempt
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 ;; to look for a .hh file, and then a .h file in some directory as described
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 ;; below. The mechanism here is to replace the matched part of the original
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;; filename with each of the corresponding extensions in turn.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 ;; Alternatively, there are situations where the filename of the other file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 ;; cannot be determined easily with regexps. For example, a .c file may
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 ;; have two corresponding .h files, for its public and private parts, or
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 ;; the filename for the .c file contains part of the pathname of the .h
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 ;; file, as between src/fooZap.cc and include/FOO/zap.hh. In that case, the
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 ;; format above can be changed to include a function to be called when the
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 ;; current file matches the regexp:
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 ;;
57719
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
61 ;; '(("\\.cc$" cc--function)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 ;; ("\\.hh$" hh-function))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;;
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
64 ;; These functions must return a list consisting of the possible names of the
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
65 ;; corresponding file, with or without path. There is no real need for more
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ;; than one function, and one could imagine the following value for cc-other-
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 ;; file-alist:
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 ;; (setq cc-other-file-alist
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;; '(("\\.cc$" ff-cc-hh-converter)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 ;; ("\\.hh$" ff-cc-hh-converter)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;; ("\\.c$" (".h"))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 ;; ("\\.h$" (".c" ".cc" ".C" ".CC" ".cxx" ".cpp"))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
74 ;;
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 ;; ff-cc-hh-converter is included at the end of this file as a reference.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
76 ;;
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 ;; SEARCHING is carried out in a set of directories specified by the
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 ;; ff-search-directories variable:
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 ;; ("." "../../src" "../include/*" "/usr/local/*/src/*" "$PROJECT/src")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 ;; This means that the corresponding file will be searched for first in
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 ;; the current directory, then in ../../src, then in one of the directories
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;; under ../include, and so on. The star is _not_ a general wildcard
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;; character: it just indicates that the subdirectories of this directory
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 ;; must each be searched in turn. Environment variables will be expanded in
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;; the ff-search-directories variable.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 ;; If the point is on a #include line, the file to be #included is searched
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ;; for in the same manner. This can be disabled with the ff-ignore-include
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 ;; variable, or by calling ff-get-other-file instead of ff-find-other-file.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 ;; If the file was not found, ff-find-other-file will prompt you for where
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 ;; to create the new "corresponding file" (defaults to the current directory),
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
95 ;; unless the variable ff-always-try-to-create is set to nil.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 ;;
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
97 ;; GIVEN AN ARGUMENT (with the ^U prefix), ff-find-other-file will get the
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
98 ;; other file in another (the other?) window (see find-file-other-window and
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
99 ;; switch-to-buffer-other-window). This can be set on a more permanent basis
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
100 ;; by setting ff-always-in-other-window to t in which case the ^U prefix will
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 ;; do the opposite of what was described above.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 ;; THERE ARE FIVE AVAILABLE HOOKS, called in this order if non-nil:
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 ;;
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
105 ;; - ff-pre-find-hook - called before the search for the other file starts
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
106 ;; - ff-not-found-hook - called when the other file could not be found
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
107 ;; - ff-pre-load-hook - called just before the other file is 'loaded'
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
108 ;; - ff-file-created-hook - called when the other file is created
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
109 ;; - ff-post-load-hook - called just after the other file is 'loaded'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 ;;
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
111 ;; The *load-hook allow you to place point where you want it in the other
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
112 ;; file.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 ;; CREDITS:
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 ;; Many thanks go to TUSC Computer Systems Pty Ltd for providing an environ-
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 ;; ment that made the development of this package possible.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 ;; Many thanks also go to all those who provided valuable feedback throughout
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 ;; the development of this package:
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 ;; Rolf Ebert in particular, Fritz Knabe, Heddy Boubaker, Sebastian Kremer,
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
121 ;; Vasco Lopes Paulo, Mark A. Plaksin, Robert Lang, Trevor West, Kevin
16510
e619a826afdb Enabled commentary for Finder.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
122 ;; Pereira, Benedict Lofstedt & Justin Vallon.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123
16510
e619a826afdb Enabled commentary for Finder.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
124 ;;; Code:
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 ;; User definable variables:
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
128 (defgroup ff nil
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
129 "Find a file corresponding to this one given a pattern."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
130 :prefix "ff-"
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
131 :link '(emacs-commentary-link "find-file")
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
132 :group 'find-file)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
134 (defcustom ff-pre-find-hook nil
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
135 "*List of functions to be called before the search for the file starts."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
136 :type 'hook
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
137 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
139 (defcustom ff-pre-load-hook nil
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
140 "*List of functions to be called before the other file is loaded."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
141 :type 'hook
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
142 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
144 (defcustom ff-post-load-hook nil
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
145 "*List of functions to be called after the other file is loaded."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
146 :type 'hook
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
147 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
149 (defcustom ff-not-found-hook nil
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
150 "*List of functions to be called if the other file could not be found."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
151 :type 'hook
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
152 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
154 (defcustom ff-file-created-hook nil
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
155 "*List of functions to be called if the other file needs to be created."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
156 :type 'hook
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
157 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
159 (defcustom ff-case-fold-search nil
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
160 "*Non-nil means ignore cases in matches (see `case-fold-search').
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
161 If you have extensions in different cases, you will want this to be nil."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
162 :type 'boolean
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
163 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
165 (defcustom ff-always-in-other-window nil
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
166 "*If non-nil, find the corresponding file in another window by default.
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
167 To override this, give an argument to `ff-find-other-file'."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
168 :type 'boolean
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
169 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
171 (defcustom ff-ignore-include nil
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
172 "*If non-nil, ignore `#include' lines."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
173 :type 'boolean
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
174 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
176 (defcustom ff-always-try-to-create t
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
177 "*If non-nil, always attempt to create the other file if it was not found."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
178 :type 'boolean
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
179 :group 'ff)
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
180
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
181 (defcustom ff-quiet-mode nil
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
182 "*If non-nil, trace which directories are being searched."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
183 :type 'boolean
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
184 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185
52650
ccb0467830b0 (ff-special-constructs): Add autoload cookie.
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
186 ;;;###autoload
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
187 (defvar ff-special-constructs
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 '(
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 ;; C/C++ include, for NeXTSTEP too
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 ("^\#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]" .
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 (lambda ()
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 (setq fname (buffer-substring (match-beginning 2) (match-end 2)))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 )
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
194 "*A list of regular expressions for `ff-find-file'.
63505
185136bab53f (ff-search-directories, ff-special-constructs, ff-find-other-file): Fix spelling
Juanma Barranquero <lekktu@gmail.com>
parents: 57719
diff changeset
195 Specifies how to recognize special constructs such as include files
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
196 etc. and an associated method for extracting the filename from that
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
197 construct.")
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198
47860
621b10466c9a (ff-related-file-alist): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 47354
diff changeset
199 (defvaralias 'ff-related-file-alist 'ff-other-file-alist)
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
200 (defcustom ff-other-file-alist 'cc-other-file-alist
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 "*Alist of extensions to find given the current file's extension.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 This list should contain the most used extensions before the others,
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 since the search algorithm searches sequentially through each
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
205 directory specified in `ff-search-directories'. If a file is not found,
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
206 a new one is created with the first matching extension (`.cc' yields `.hh').
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
207 This alist should be set by the major mode."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
208 :type '(choice (repeat (list regexp (choice (repeat string) function)))
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
209 symbol)
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
210 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
212 (defcustom ff-search-directories 'cc-search-directories
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 "*List of directories to search for a specific file.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
215 Set by default to `cc-search-directories', expanded at run-time.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 This list is searched through with each extension specified in
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
218 `ff-other-file-alist' that matches this file's extension. So the
63505
185136bab53f (ff-search-directories, ff-special-constructs, ff-find-other-file): Fix spelling
Juanma Barranquero <lekktu@gmail.com>
parents: 57719
diff changeset
219 longer the list, the longer it'll take to realize that a file
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 may not exist.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
222 A typical format is
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223
16510
e619a826afdb Enabled commentary for Finder.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
224 '(\".\" \"/usr/include\" \"$PROJECT/*/include\")
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
226 Environment variables can be inserted between slashes (`/').
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 They will be replaced by their definition. If a variable does
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
228 not exist, it is replaced (silently) with an empty string.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
230 The stars are *not* wildcards: they are searched for together with
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
231 the preceding slash. The star represents all the subdirectories except
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
232 `..', and each of these subdirectories will be searched in turn."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
233 :type '(choice (repeat directory) symbol)
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
234 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
236 (defcustom cc-search-directories
16510
e619a826afdb Enabled commentary for Finder.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
237 '("." "/usr/include" "/usr/local/include/*")
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
238 "*See the description of the `ff-search-directories' variable."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
239 :type '(repeat directory)
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
240 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
242 (defcustom cc-other-file-alist
57719
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
243 '(("\\.cc\\'" (".hh" ".h"))
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
244 ("\\.hh\\'" (".cc" ".C"))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245
57719
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
246 ("\\.c\\'" (".h"))
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
247 ("\\.h\\'" (".c" ".cc" ".C" ".CC" ".cxx" ".cpp"))
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
248
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
249 ("\\.C\\'" (".H" ".hh" ".h"))
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
250 ("\\.H\\'" (".C" ".CC"))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
57719
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
252 ("\\.CC\\'" (".HH" ".H" ".hh" ".h"))
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
253 ("\\.HH\\'" (".CC"))
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
254
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
255 ("\\.c\\+\\+\\'" (".h++" ".hh" ".h"))
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
256 ("\\.h\\+\\+\\'" (".c++"))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257
57719
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
258 ("\\.cpp\\'" (".hpp" ".hh" ".h"))
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
259 ("\\.hpp\\'" (".cpp"))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260
57719
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
261 ("\\.cxx\\'" (".hxx" ".hh" ".h"))
018ef6100fc5 (cc-other-file-alist): Bring it in line with cc-mode's auto-mode-alist entries and use \' instead of $.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52650
diff changeset
262 ("\\.hxx\\'" (".cxx")))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 "*Alist of extensions to find given the current file's extension.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 This list should contain the most used extensions before the others,
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 since the search algorithm searches sequentially through each directory
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
267 specified in `ff-search-directories'. If a file is not found, a new one
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
268 is created with the first matching extension (`.cc' yields `.hh')."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
269 :type '(repeat (list regexp (choice (repeat string) function)))
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
270 :group 'ff)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
272 (defcustom modula2-other-file-alist
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 '(
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 ("\\.mi$" (".md")) ;; Modula-2 module definition
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 ("\\.md$" (".mi")) ;; and implementation.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 )
21087
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
277 "*See the description for the `ff-search-directories' variable."
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
278 :type '(repeat (list regexp (choice (repeat string) function)))
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
279 :group 'ff)
c297faa167f5 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 21057
diff changeset
280
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 ;; No user definable variables beyond this point!
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 ;; ==============================================
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
286 (make-variable-buffer-local 'ff-pre-find-hook)
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
287 (make-variable-buffer-local 'ff-pre-load-hook)
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
288 (make-variable-buffer-local 'ff-post-load-hook)
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
289 (make-variable-buffer-local 'ff-not-found-hook)
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
290 (make-variable-buffer-local 'ff-file-created-hook)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 (make-variable-buffer-local 'ff-case-fold-search)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 (make-variable-buffer-local 'ff-always-in-other-window)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 (make-variable-buffer-local 'ff-ignore-include)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 (make-variable-buffer-local 'ff-quiet-mode)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 (make-variable-buffer-local 'ff-other-file-alist)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (make-variable-buffer-local 'ff-search-directories)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 ;; User entry points
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 ;;;###autoload
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 (defun ff-get-other-file (&optional in-other-window)
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
303 "Find the header or source file corresponding to this file.
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
304 See also the documentation for `ff-find-other-file'.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
306 If optional IN-OTHER-WINDOW is non-nil, find the file in another window."
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 (interactive "P")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 (let ((ignore ff-ignore-include))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 (setq ff-ignore-include t)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 (ff-find-the-other-file in-other-window)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 (setq ff-ignore-include ignore)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312
48009
8b3977d58df6 (ff-find-related-file): Fix autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 47860
diff changeset
313 ;;;###autoload
47860
621b10466c9a (ff-related-file-alist): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 47354
diff changeset
314 (defalias 'ff-find-related-file 'ff-find-other-file)
621b10466c9a (ff-related-file-alist): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 47354
diff changeset
315
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 ;;;###autoload
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 (defun ff-find-other-file (&optional in-other-window ignore-include)
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
318 "Find the header or source file corresponding to this file.
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
319 Being on a `#include' line pulls in that file.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
321 If optional IN-OTHER-WINDOW is non-nil, find the file in the other window.
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
322 If optional IGNORE-INCLUDE is non-nil, ignore being on `#include' lines.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 Variables of interest include:
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
326 - `ff-case-fold-search'
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
327 Non-nil means ignore cases in matches (see `case-fold-search').
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 If you have extensions in different cases, you will want this to be nil.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
330 - `ff-always-in-other-window'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 If non-nil, always open the other file in another window, unless an
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
332 argument is given to `ff-find-other-file'.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
334 - `ff-ignore-include'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 If non-nil, ignores #include lines.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
337 - `ff-always-try-to-create'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 If non-nil, always attempt to create the other file if it was not found.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
340 - `ff-quiet-mode'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 If non-nil, traces which directories are being searched.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
343 - `ff-special-constructs'
63505
185136bab53f (ff-search-directories, ff-special-constructs, ff-find-other-file): Fix spelling
Juanma Barranquero <lekktu@gmail.com>
parents: 57719
diff changeset
344 A list of regular expressions specifying how to recognize special
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
345 constructs such as include files etc, and an associated method for
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 extracting the filename from that construct.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
348 - `ff-other-file-alist'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 Alist of extensions to find given the current file's extension.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
351 - `ff-search-directories'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 List of directories searched through with each extension specified in
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
353 `ff-other-file-alist' that matches this file's extension.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
355 - `ff-pre-find-hook'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 List of functions to be called before the search for the file starts.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
358 - `ff-pre-load-hook'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 List of functions to be called before the other file is loaded.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
361 - `ff-post-load-hook'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 List of functions to be called after the other file is loaded.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
364 - `ff-not-found-hook'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 List of functions to be called if the other file could not be found.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
367 - `ff-file-created-hook'
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 List of functions to be called if the other file has been created."
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 (interactive "P")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 (let ((ignore ff-ignore-include))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 (setq ff-ignore-include ignore-include)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 (ff-find-the-other-file in-other-window)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 (setq ff-ignore-include ignore)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 ;; Support functions
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 (defun ff-find-the-other-file (&optional in-other-window)
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
379 "Find the header or source file corresponding to the current file.
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
380 Being on a `#include' line pulls in that file, but see the help on
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
381 the `ff-ignore-include' variable.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
383 If optional IN-OTHER-WINDOW is non-nil, find the file in another window."
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 (let (match ;; matching regexp for this file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 suffixes ;; set of replacing regexps for the matching regexp
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 action ;; function to generate the names of the other files
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 fname ;; basename of this file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 pos ;; where we start matching filenames
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 stub ;; name of the file without extension
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 alist ;; working copy of the list of file extensions
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 pathname ;; the pathname of the file or the #include line
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 default-name ;; file we should create if none found
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
394 format ;; what we have to match
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
395 found ;; name of the file or buffer found - nil if none
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 dirs ;; local value of ff-search-directories
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 no-match) ;; whether we know about this kind of file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
399 (run-hooks 'ff-pre-find-hook 'ff-pre-find-hooks)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 (message "Working...")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 (setq dirs
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (if (symbolp ff-search-directories)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (ff-list-replace-env-vars (symbol-value ff-search-directories))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (ff-list-replace-env-vars ff-search-directories)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 (save-excursion
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 (beginning-of-line 1)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 (setq fname (ff-treat-as-special)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 (cond
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 ((and (not ff-ignore-include) fname)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 (setq default-name fname)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 (setq found (ff-get-file dirs fname nil in-other-window)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 ;; let's just get the corresponding file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 (t
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 (setq alist (if (symbolp ff-other-file-alist)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 (symbol-value ff-other-file-alist)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 ff-other-file-alist)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 pathname (if (buffer-file-name)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 (buffer-file-name)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 "/none.none"))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425
38273
910cd30b1586 (ff-find-the-other-file): Use file-name-nondirectory
Eli Zaretskii <eliz@gnu.org>
parents: 30816
diff changeset
426 (setq fname (file-name-nondirectory pathname)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 no-match nil
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 match (car alist))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 ;; find the table entry corresponding to this file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 (setq pos (ff-string-match (car match) fname))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 (while (and match (if (and pos (>= pos 0)) nil (not pos)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 (setq alist (cdr alist))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 (setq match (car alist))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 (setq pos (ff-string-match (car match) fname)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 ;; no point going on if we haven't found anything
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 (if (not match)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 (setq no-match t)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 ;; otherwise, suffixes contains what we need
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 (setq suffixes (car (cdr match))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 action (car (cdr match))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 found nil)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
446 ;; if we have a function to generate new names,
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 ;; invoke it with the name of the current file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 (if (and (atom action) (fboundp action))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 (progn
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 (setq suffixes (funcall action (buffer-file-name))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 match (cons (car match) (list suffixes))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 stub nil
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 default-name (car suffixes)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 ;; otherwise build our filename stub
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
456 (cond
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 ;; get around the problem that 0 and nil both mean false!
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 ((= pos 0)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 (setq format "")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 (setq stub "")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 )
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 (t
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 (setq format (concat "\\(.+\\)" (car match)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 (string-match format fname)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 (setq stub (substring fname (match-beginning 1) (match-end 1)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 ))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 ;; if we find nothing, we should try to get a file like this one
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 (setq default-name
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 (concat stub (car (car (cdr match))))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 ;; do the real work - find the file
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
475 (setq found
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 (ff-get-file dirs
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 stub
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
478 suffixes
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 in-other-window)))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 (cond
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 (no-match ;; could not even determine the other file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 (message ""))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
485 (t
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 (cond
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 ((not found) ;; could not find the other file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
490 (run-hooks 'ff-not-found-hook 'ff-not-found-hooks)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
492 (cond
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 (ff-always-try-to-create ;; try to create the file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 (let (name pathname)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 (setq name
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 (expand-file-name
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 (read-file-name
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 (format "Find or create %s in: " default-name)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 default-directory default-name nil)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
501
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 (setq pathname
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 (if (file-directory-p name)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 (concat (file-name-as-directory name) default-name)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 (setq found name)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
506
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 (ff-find-file pathname in-other-window t)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 (t ;; don't create the file, just whinge
17548
dab7558986cd Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16510
diff changeset
510 (message "No file found for %s" fname))))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 (t ;; matching file found
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 nil))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 found)) ;; return buffer-name or filename
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516
42097
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
517 (defun ff-other-file-name ()
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
518 "Return name of the header or source file corresponding to the current file.
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
519 Being on a `#include' line pulls in that file, but see the help on
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
520 the `ff-ignore-include' variable."
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
521
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
522 (let (match ;; matching regexp for this file
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
523 suffixes ;; set of replacing regexps for the matching regexp
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
524 action ;; function to generate the names of the other files
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
525 fname ;; basename of this file
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
526 pos ;; where we start matching filenames
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
527 stub ;; name of the file without extension
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
528 alist ;; working copy of the list of file extensions
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
529 pathname ;; the pathname of the file or the #include line
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
530 default-name ;; file we should create if none found
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
531 format ;; what we have to match
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
532 found ;; name of the file or buffer found - nil if none
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
533 dirs ;; local value of ff-search-directories
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
534 no-match) ;; whether we know about this kind of file
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
535
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
536 (message "Working...")
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
537
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
538 (setq dirs
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
539 (if (symbolp ff-search-directories)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
540 (ff-list-replace-env-vars (symbol-value ff-search-directories))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
541 (ff-list-replace-env-vars ff-search-directories)))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
542
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
543 (save-excursion
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
544 (beginning-of-line 1)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
545 (setq fname (ff-treat-as-special)))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
546
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
547 (cond
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
548 ((and (not ff-ignore-include) fname)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
549 (setq default-name fname)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
550 (setq found (ff-get-file-name dirs fname nil)))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
551
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
552 ;; let's just get the corresponding file
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
553 (t
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
554 (setq alist (if (symbolp ff-other-file-alist)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
555 (symbol-value ff-other-file-alist)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
556 ff-other-file-alist)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
557 pathname (if (buffer-file-name)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
558 (buffer-file-name)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
559 "/none.none"))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
560
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
561 (setq fname (file-name-nondirectory pathname)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
562 no-match nil
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
563 match (car alist))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
564
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
565 ;; find the table entry corresponding to this file
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
566 (setq pos (ff-string-match (car match) fname))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
567 (while (and match (if (and pos (>= pos 0)) nil (not pos)))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
568 (setq alist (cdr alist))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
569 (setq match (car alist))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
570 (setq pos (ff-string-match (car match) fname)))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
571
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
572 ;; no point going on if we haven't found anything
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
573 (if (not match)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
574 (setq no-match t)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
575
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
576 ;; otherwise, suffixes contains what we need
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
577 (setq suffixes (car (cdr match))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
578 action (car (cdr match))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
579 found nil)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
580
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
581 ;; if we have a function to generate new names,
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
582 ;; invoke it with the name of the current file
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
583 (if (and (atom action) (fboundp action))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
584 (progn
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
585 (setq suffixes (funcall action (buffer-file-name))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
586 match (cons (car match) (list suffixes))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
587 stub nil
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
588 default-name (car suffixes)))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
589
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
590 ;; otherwise build our filename stub
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
591 (cond
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
592
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
593 ;; get around the problem that 0 and nil both mean false!
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
594 ((= pos 0)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
595 (setq format "")
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
596 (setq stub "")
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
597 )
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
598
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
599 (t
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
600 (setq format (concat "\\(.+\\)" (car match)))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
601 (string-match format fname)
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
602 (setq stub (substring fname (match-beginning 1) (match-end 1)))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
603 ))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
604
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
605 ;; if we find nothing, we should try to get a file like this one
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
606 (setq default-name
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
607 (concat stub (car (car (cdr match))))))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
608
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
609 ;; do the real work - find the file
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
610 (setq found
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
611 (ff-get-file-name dirs stub suffixes)))))
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
612 found)) ;; return buffer-name or filename
e12d545c9a48 (ff-other-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38273
diff changeset
613
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
614 (defun ff-get-file (search-dirs filename &optional suffix-list other-window)
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
615 "Find a file in the SEARCH-DIRS with the given FILENAME (or filename stub).
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
616 If (optional) SUFFIX-LIST is nil, search for fname, otherwise search
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
617 for fname with each of the given suffixes. Get the file or the buffer
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
618 corresponding to the name of the first file found, or nil."
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
619 (let ((filename (ff-get-file-name search-dirs filename suffix-list)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
620
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
621 (cond
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 ((not filename)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 nil)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624
13896
d23e1ac7b432 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12949
diff changeset
625 ((bufferp (get-file-buffer filename))
d23e1ac7b432 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12949
diff changeset
626 (ff-switch-to-buffer (get-file-buffer filename) other-window)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 filename)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
628
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 ((file-exists-p filename)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 (ff-find-file filename other-window nil)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 filename)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 (t
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 nil))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (defun ff-get-file-name (search-dirs fname-stub &optional suffix-list)
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
637 "Find a file in SEARCH-DIRS with the given name (or stub) FNAME-STUB.
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
638 If (optional) SUFFIX-LIST is nil, search for FNAME-STUB, otherwise
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
639 search for FNAME-STUB with each of the given suffixes. Return the
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
640 name of the first file found."
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 (let* (dirs ;; working copy of dirs to search
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 dir ;; the current dir considered
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 file ;; filename being looked for
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 rest ;; pathname after first /*
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 this-suffix ;; the suffix we are currently considering
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 suffixes ;; working copy of suffix-list
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 filename ;; built filename
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 blist ;; list of live buffers
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 buf ;; current buffer in blist
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 found) ;; whether we have found anything
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 (setq suffixes suffix-list)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 ;; suffixes is nil => fname-stub is the file we are looking for
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 ;; otherwise fname-stub is a stub, and we append a suffix
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 (if suffixes
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 (setq this-suffix (car suffixes))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 (setq this-suffix "")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 (setq suffixes (list "")))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
660
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 ;; find whether the file is in a buffer first
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 (while (and suffixes (not found))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 (setq filename (concat fname-stub this-suffix))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 (if (not ff-quiet-mode)
17548
dab7558986cd Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16510
diff changeset
666 (message "Finding buffer %s..." filename))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667
17548
dab7558986cd Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16510
diff changeset
668 (if (bufferp (get-file-buffer filename))
dab7558986cd Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16510
diff changeset
669 (setq found (buffer-file-name (get-file-buffer filename))))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 (setq blist (buffer-list))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 (setq buf (buffer-name (car blist)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 (while (and blist (not found))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 (if (string-match (concat filename "<[0-9]+>") buf)
16510
e619a826afdb Enabled commentary for Finder.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
676 (setq found (buffer-file-name (car blist))))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 (setq blist (cdr blist))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 (setq buf (buffer-name (car blist))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 (setq suffixes (cdr suffixes))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 (setq this-suffix (car suffixes)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 ;; now look for the real file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 (setq dirs search-dirs)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 (setq dir (car dirs))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 (while (and (not found) dirs)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 (setq suffixes suffix-list)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 ;; if dir does not contain '/*', look for the file
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 (if (and dir (not (string-match "\\([^*]*\\)/\\\*\\(/.*\\)*" dir)))
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
693 (progn
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
694
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 ;; suffixes is nil => fname-stub is the file we are looking for
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 ;; otherwise fname-stub is a stub, and we append a suffix
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 (if suffixes
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 (setq this-suffix (car suffixes))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 (setq this-suffix "")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 (setq suffixes (list "")))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
701
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 (while (and suffixes (not found))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 (setq filename (concat fname-stub this-suffix))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 (setq file (concat dir "/" filename))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
706
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 (if (not ff-quiet-mode)
17548
dab7558986cd Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16510
diff changeset
708 (message "Finding %s..." file))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 (if (file-exists-p file)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 (setq found file))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
712
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 (setq suffixes (cdr suffixes))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 (setq this-suffix (car suffixes))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 ;; otherwise dir matches the '/*', so search each dir separately
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 (progn
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 (if (match-beginning 2)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 (setq rest (substring dir (match-beginning 2) (match-end 2)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 (setq rest "")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 )
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 (setq dir (substring dir (match-beginning 1) (match-end 1)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 (let ((dirlist (ff-all-dirs-under dir '("..")))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 this-dir compl-dirs)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 (setq this-dir (car dirlist))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 (while dirlist
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 (setq compl-dirs
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 (append
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 compl-dirs
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 (list (concat this-dir rest))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 ))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 (setq dirlist (cdr dirlist))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 (setq this-dir (car dirlist)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 (if compl-dirs
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 (setq found (ff-get-file-name compl-dirs
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 fname-stub
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 suffix-list))))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 (setq dirs (cdr dirs))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 (setq dir (car dirs)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 (if found
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 (message "%s found" found))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 found))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 (defun ff-string-match (regexp string &optional start)
13896
d23e1ac7b432 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12949
diff changeset
750 "Like `string-match', but set `case-fold-search' temporarily.
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
751 The value used comes from `ff-case-fold-search'."
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
752 (let ((case-fold-search ff-case-fold-search))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 (if regexp
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
754 (string-match regexp string start))))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 (defun ff-list-replace-env-vars (search-list)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 "Replace environment variables (of the form $VARIABLE) in SEARCH-LIST."
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 (let (list
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 (var (car search-list)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 (while search-list
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 (if (string-match "\\(.*\\)\\$[({]*\\([a-zA-Z0-9_]+\\)[)}]*\\(.*\\)" var)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 (setq var
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 (concat
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 (substring var (match-beginning 1) (match-end 1))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 (getenv (substring var (match-beginning 2) (match-end 2)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 (substring var (match-beginning 3) (match-end 3)))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 (setq search-list (cdr search-list))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 (setq list (cons var list))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 (setq var (car search-list)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 (setq search-list (reverse list))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 (defun ff-treat-as-special ()
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
773 "Return the file to look for if the construct was special, else nil.
13896
d23e1ac7b432 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12949
diff changeset
774 The construct is defined in the variable `ff-special-constructs'."
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 (let* (fname
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 (list ff-special-constructs)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 (elem (car list))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 (regexp (car elem))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 (match (cdr elem)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 (while (and list (not fname))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 (if (and (looking-at regexp) match)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 (setq fname (funcall match)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 (setq list (cdr list))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 (setq elem (car list))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 (setq regexp (car elem))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 (setq match (cdr elem)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 fname))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 (defun ff-basename (string)
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
790 "Return the basename of pathname STRING."
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 (setq string (concat "/" string))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 (string-match ".*/\\([^/]+\\)$" string)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 (setq string (substring string (match-beginning 1) (match-end 1))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 (defun ff-all-dirs-under (here &optional exclude)
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
796 "Get all the directory files under directory HERE.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 Exclude all files in the optional EXCLUDE list."
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 (if (file-directory-p here)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 (condition-case nil
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 (progn
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 (let ((files (directory-files here t))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 (dirlist (list))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 file)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 (while files
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 (setq file (car files))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 (if (and
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 (file-directory-p file)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 (not (member (ff-basename file) exclude)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 (setq dirlist (cons file dirlist)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 (setq files (cdr files)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 (setq dirlist (reverse dirlist))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 (error nil))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813 nil))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 (defun ff-switch-file (f1 f2 file &optional in-other-window new-file)
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
816 "Call F1 or F2 on FILE, according to IN-OTHER-WINDOW.
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
817 In addition, this runs various hooks.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
819 Either F1 or F2 receives FILE as the sole argument.
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
820 The decision of which one to call is based on IN-OTHER-WINDOW
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
821 and on the global variable `ff-always-in-other-window'.
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
823 F1 and F2 are typically `find-file' / `find-file-other-window'
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
824 or `switch-to-buffer' / `switch-to-buffer-other-window' function pairs.
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
825
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
826 If optional NEW-FILE is t, then a special hook (`ff-file-created-hook') is
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
827 called before `ff-post-load-hook'."
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
828 (run-hooks 'ff-pre-load-hook 'ff-pre-load-hooks)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 (if (or
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 (and in-other-window (not ff-always-in-other-window))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 (and (not in-other-window) ff-always-in-other-window))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 (funcall f2 file)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 (funcall f1 file))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 (if new-file
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
835 (run-hooks 'ff-file-created-hook 'ff-file-created-hooks))
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
836 (run-hooks 'ff-post-load-hook 'ff-post-load-hooks))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 (defun ff-find-file (file &optional in-other-window new-file)
13896
d23e1ac7b432 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12949
diff changeset
839 "Like `find-file', but may show the file in another window."
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
840 (ff-switch-file 'find-file
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
841 'find-file-other-window
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842 file in-other-window new-file))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843
13896
d23e1ac7b432 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12949
diff changeset
844 (defun ff-switch-to-buffer (buffer-or-name &optional in-other-window)
d23e1ac7b432 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12949
diff changeset
845 "Like `switch-to-buffer', but may show the buffer in another window."
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
847 (ff-switch-file 'switch-to-buffer
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
848 'switch-to-buffer-other-window
13896
d23e1ac7b432 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12949
diff changeset
849 buffer-or-name in-other-window nil))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850
22192
bf83c23f3300 (ff-emacs-19, ff-xemacs): Functions deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21087
diff changeset
851 ;;;###autoload
bf83c23f3300 (ff-emacs-19, ff-xemacs): Functions deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21087
diff changeset
852 (defun ff-mouse-find-other-file (event)
bf83c23f3300 (ff-emacs-19, ff-xemacs): Functions deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21087
diff changeset
853 "Visit the file you click on."
bf83c23f3300 (ff-emacs-19, ff-xemacs): Functions deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21087
diff changeset
854 (interactive "e")
bf83c23f3300 (ff-emacs-19, ff-xemacs): Functions deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21087
diff changeset
855 (save-excursion
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
856 (mouse-set-point event)
22192
bf83c23f3300 (ff-emacs-19, ff-xemacs): Functions deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21087
diff changeset
857 (ff-find-other-file nil)))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858
22192
bf83c23f3300 (ff-emacs-19, ff-xemacs): Functions deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21087
diff changeset
859 ;;;###autoload
bf83c23f3300 (ff-emacs-19, ff-xemacs): Functions deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21087
diff changeset
860 (defun ff-mouse-find-other-file-other-window (event)
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
861 "Visit the file you click on in another window."
22192
bf83c23f3300 (ff-emacs-19, ff-xemacs): Functions deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21087
diff changeset
862 (interactive "e")
bf83c23f3300 (ff-emacs-19, ff-xemacs): Functions deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21087
diff changeset
863 (save-excursion
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
864 (mouse-set-point event)
22192
bf83c23f3300 (ff-emacs-19, ff-xemacs): Functions deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21087
diff changeset
865 (ff-find-other-file t)))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 ;; This section offers an example of user defined function to select files
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
870 (defun ff-upcase-p (string &optional start end)
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
871 "Return t if STRING is all uppercase.
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
872 Given START and/or END, checks between these characters."
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 (let (match str)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874 (if (not start)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 (setq start 0))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 (if (not end)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 (setq end (length string)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 (if (= start end)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 (setq end (1+ end)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 (setq str (substring string start end))
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
881 (if (and
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 (ff-string-match "[A-Z]+" str)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 (setq match (match-data))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 (= (car match) 0)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 (= (car (cdr match)) (length str)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 t
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 nil)))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 (defun ff-cc-hh-converter (arg)
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
890 "Discriminate file extensions.
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
891 Build up a new file list based possibly on part of the directory name
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
892 and the name of the file passed in."
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 (ff-string-match "\\(.*\\)/\\([^/]+\\)/\\([^.]+\\).\\([^/]+\\)$" arg)
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
894 (let ((path (if (match-beginning 1)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 (substring arg (match-beginning 1) (match-end 1)) nil))
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
896 (dire (if (match-beginning 2)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 (substring arg (match-beginning 2) (match-end 2)) nil))
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
898 (file (if (match-beginning 3)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 (substring arg (match-beginning 3) (match-end 3)) nil))
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
900 (extn (if (match-beginning 4)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 (substring arg (match-beginning 4) (match-end 4)) nil))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 return-list)
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 (cond
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 ;; fooZapJunk.cc => ZapJunk.{hh,h} or fooZapJunk.{hh,h}
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
905 ((and (string= extn "cc")
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906 (ff-string-match "^\\([a-z]+\\)\\([A-Z].+\\)$" file))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 (let ((stub (substring file (match-beginning 2) (match-end 2))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 (setq dire (upcase (substring file (match-beginning 1) (match-end 1))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 (setq return-list (list (concat stub ".hh")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 (concat stub ".h")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 (concat file ".hh")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 (concat file ".h")))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 ))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 ;; FOO/ZapJunk.hh => fooZapJunk.{cc,C} or ZapJunk.{cc,C}
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
915 ((and (string= extn "hh") (ff-upcase-p dire) file)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 (let ((stub (concat (downcase dire) file)))
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
917 (setq return-list (list (concat stub ".cc")
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (concat stub ".C")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 (concat file ".cc")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 (concat file ".C")))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 ))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 ;; zap.cc => zap.hh or zap.h
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 ((string= extn "cc")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 (let ((stub file))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 (setq return-list (list (concat stub ".hh")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 (concat stub ".h")))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 ))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 ;; zap.hh => zap.cc or zap.C
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 ((string= extn "hh")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 (let ((stub file))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 (setq return-list (list (concat stub ".cc")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932 (concat stub ".C")))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933 ))
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
934 (t
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 nil))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48009
diff changeset
936
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 return-list))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 ;; This section offers an example of user defined function to place point.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 ;; The regexps are Ada specific.
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943 (defvar ff-function-name nil "Name of the function we are in.")
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
945 ;; bind with (setq ff-pre-load-hook 'ff-which-function-are-we-in)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 ;;
64796
023827894687 (ada-procedure-start-regexp, ada-package-start-regexp): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
947 (defvar ada-procedure-start-regexp)
023827894687 (ada-procedure-start-regexp, ada-package-start-regexp): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
948 (defvar ada-package-start-regexp)
023827894687 (ada-procedure-start-regexp, ada-package-start-regexp): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
949
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 (defun ff-which-function-are-we-in ()
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
951 "Return the name of the function whose definition/declaration point is in.
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
952 Also remember that name in `ff-function-name'."
63921
8c8961dafdc6 (ff-which-function-are-we-in): Clean up.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63505
diff changeset
953 (setq ff-function-name
8c8961dafdc6 (ff-which-function-are-we-in): Clean up.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63505
diff changeset
954 (save-excursion
8c8961dafdc6 (ff-which-function-are-we-in): Clean up.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63505
diff changeset
955 (if (or (re-search-backward ada-procedure-start-regexp nil t)
8c8961dafdc6 (ff-which-function-are-we-in): Clean up.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63505
diff changeset
956 (re-search-backward ada-package-start-regexp nil t))
8c8961dafdc6 (ff-which-function-are-we-in): Clean up.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63505
diff changeset
957 (match-string 0)))))
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958
47354
27533450eb3b (ff-pre-find-hook, ff-pre-load-hook, ff-post-load-hook)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44880
diff changeset
959 ;; bind with (setq ff-post-load-hook 'ff-set-point-accordingly)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 ;;
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 (defun ff-set-point-accordingly ()
11272
79fcaf4e0e75 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
962 "Find the function specified in `ff-function-name'.
12567
7318536fb256 (ff-set-point-accordingly): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 11272
diff changeset
963 That name was previously determined by `ff-which-function-are-we-in'."
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 (if ff-function-name
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 (progn
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 (goto-char (point-min))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 (search-forward ff-function-name nil t))))
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
969 (provide 'find-file)
10491
dfc0d2c81c56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970
63921
8c8961dafdc6 (ff-which-function-are-we-in): Clean up.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63505
diff changeset
971 ;; arch-tag: 5a2fc49e-3b0a-4708-9acf-fb14e471a97a
30816
e06965792db4 Doc fixes. Move provide to end.
Dave Love <fx@gnu.org>
parents: 22192
diff changeset
972 ;;; find-file.el ends here