Mercurial > emacs
annotate lisp/ffap.el @ 110410:f2e111723c3a
Merge changes made in Gnus trunk.
Reimplement nnimap, and do tweaks to the rest of the code to support that.
* gnus-int.el (gnus-finish-retrieve-group-infos)
(gnus-retrieve-group-data-early): New functions.
* gnus-range.el (gnus-range-nconcat): New function.
* gnus-start.el (gnus-get-unread-articles): Support early retrieval of
data.
(gnus-read-active-for-groups): Support finishing the early retrieval of
data.
* gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
if the move is internal, so that nnimap can do fast internal moves.
* gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
nnimap usage.
* nnimap.el: Rewritten.
* nnmail.el (nnmail-inhibit-default-split-group): New internal variable
to allow the mail splitting to not return a default group. This is
useful for nnimap, which will leave unmatched mail in the inbox.
* utf7.el (utf7-encode): Autoload.
Implement shell connection.
* nnimap.el (nnimap-open-shell-stream): New function.
(nnimap-open-connection): Use it.
Get the number of lines by using BODYSTRUCTURE.
(nnimap-transform-headers): Get the number of lines in each message.
(nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
number of lines.
Not all servers return UIDNEXT. Work past this problem.
Remove junk from end of file.
Fix typo in "bogus" section.
Make capabilties be case-insensitive.
Require cl when compiling.
Don't bug out if the LIST command doesn't have any parameters.
2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change)
* nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
doesn't have any parameters.
(mm-text-html-renderer): Document gnus-article-html.
2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix)
* mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
* dgnushack.el: Define netrc-credentials.
If the user doesn't have a /etc/services, supply some sensible port defaults.
Have `unseen-or-unread' select an unread unseen article first.
(nntp-open-server): Return whether the open was successful or not.
Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ).
Save result so that it doesn't say "failed" all the time.
Add ~/.authinfo to the default, since that's probably most useful for users.
Don't use the "finish" method when we're reading from the agent.
Add some more nnimap-relevant agent stuff to nnagent.el.
* nnimap.el (nnimap-with-process-buffer): Removed.
Revert one line that was changed by mistake in the last checkin.
(nnimap-open-connection): Don't error out when we can't make a connection
nnimap-related changes to avoid bugging out if we can't contact a server.
* gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
from methods that are denied.
* nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
in.
(nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
nothing.
* gnus-sum.el (gnus-select-newsgroup): Indent.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Sat, 18 Sep 2010 10:02:19 +0000 |
parents | 76b761c74dae |
children | 376148b31b5e |
rev | line source |
---|---|
54183
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1 ;;; ffap.el --- find file (or url) at point |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
2 |
104886
386dbc11f8f7
(ffap-file-at-point): Handle absolute (non-remote) files with line
Glenn Morris <rgm@gnu.org>
parents:
103730
diff
changeset
|
3 ;; Copyright (C) 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, |
106815 | 4 ;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
54183
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
5 |
14169 | 6 ;; Author: Michelangelo Grigni <mic@mathcs.emory.edu> |
73776 | 7 ;; Maintainer: FSF |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
8 ;; Created: 29 Mar 1993 |
22250
a77d473867b8
*** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents:
22214
diff
changeset
|
9 ;; Keywords: files, hypermedia, matching, mouse, convenience |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
10 ;; X-URL: ftp://ftp.mathcs.emory.edu/pub/mic/emacs/ |
13531 | 11 |
12 ;; This file is part of GNU Emacs. | |
13 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94217
diff
changeset
|
14 ;; GNU Emacs is free software: you can redistribute it and/or modify |
13531 | 15 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94217
diff
changeset
|
16 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94217
diff
changeset
|
17 ;; (at your option) any later version. |
13531 | 18 |
19 ;; GNU Emacs is distributed in the hope that it will be useful, | |
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
22 ;; GNU General Public License for more details. | |
23 | |
24 ;; You should have received a copy of the GNU General Public License | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94217
diff
changeset
|
25 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
13531 | 26 |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
27 |
13531 | 28 ;;; Commentary: |
29 ;; | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
30 ;; Command find-file-at-point replaces find-file. With a prefix, it |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
31 ;; behaves exactly like find-file. Without a prefix, it first tries |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
32 ;; to guess a default file or URL from the text around the point |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
33 ;; (`ffap-require-prefix' swaps these behaviors). This is useful for |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
34 ;; following references in situations such as mail or news buffers, |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
35 ;; README's, MANIFEST's, and so on. Submit bugs or suggestions with |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
36 ;; M-x ffap-bug. |
13531 | 37 ;; |
34867
e701bc3564db
(ffap-bindings): Make interactive and add an autoload cookie.
Eli Zaretskii <eliz@gnu.org>
parents:
30687
diff
changeset
|
38 ;; For the default installation, add this line to your .emacs file: |
13531 | 39 ;; |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
40 ;; (ffap-bindings) ; do default key bindings |
13531 | 41 ;; |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
42 ;; ffap-bindings makes the following global key bindings: |
13531 | 43 ;; |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
44 ;; C-x C-f find-file-at-point (abbreviated as ffap) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
45 ;; C-x C-r ffap-read-only |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
46 ;; C-x C-v ffap-alternate-file |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
47 ;; |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
48 ;; C-x d dired-at-point |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
49 ;; C-x C-d ffap-list-directory |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
50 ;; |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
51 ;; C-x 4 f ffap-other-window |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
52 ;; C-x 4 r ffap-read-only-other-window |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
53 ;; C-x 4 d ffap-dired-other-window |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
54 ;; |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
55 ;; C-x 5 f ffap-other-frame |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
56 ;; C-x 5 r ffap-read-only-other-frame |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
57 ;; C-x 5 d ffap-dired-other-frame |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
58 ;; |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
59 ;; S-mouse-3 ffap-at-mouse |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
60 ;; C-S-mouse-3 ffap-menu |
13531 | 61 ;; |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
62 ;; ffap-bindings also adds hooks to make the following local bindings |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
63 ;; in vm, gnus, and rmail: |
13531 | 64 ;; |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
65 ;; M-l ffap-next, or ffap-gnus-next in gnus (l == "link") |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
66 ;; M-m ffap-menu, or ffap-gnus-menu in gnus (m == "menu") |
13531 | 67 ;; |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
68 ;; If you do not like these bindings, modify the variable |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
69 ;; `ffap-bindings', or write your own. |
13531 | 70 ;; |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
71 ;; If you use ange-ftp, browse-url, complete, efs, or w3, it is best |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
72 ;; to load or autoload them before ffap. If you use ff-paths, load it |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
73 ;; afterwards. Try apropos {C-h a ffap RET} to get a list of the many |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
74 ;; option variables. In particular, if ffap is slow, try these: |
13531 | 75 ;; |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
76 ;; (setq ffap-alist nil) ; faster, dumber prompting |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
77 ;; (setq ffap-machine-p-known 'accept) ; no pinging |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
78 ;; (setq ffap-url-regexp nil) ; disable URL features in ffap |
52672
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
79 ;; (setq ffap-shell-prompt-regexp nil) ; disable shell prompt stripping |
13531 | 80 ;; |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
81 ;; ffap uses `browse-url' (if found, else `w3-fetch') to fetch URL's. |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
82 ;; For a hairier `ffap-url-fetcher', try ffap-url.el (same ftp site). |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
83 ;; Also, you can add `ffap-menu-rescan' to various hooks to fontify |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
48409
diff
changeset
|
84 ;; the file and URL references within a buffer. |
13531 | 85 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
86 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
87 ;;; Change Log: |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
88 ;; |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
89 ;; The History and Contributors moved to ffap.LOG (same ftp site), |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
90 ;; which also has some old examples and commentary from ffap 1.5. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
91 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
92 |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
93 ;;; Todo list: |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
94 ;; * use kpsewhich |
49808 | 95 ;; * let "/dir/file#key" jump to key (tag or regexp) in /dir/file |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
96 ;; * find file of symbol if TAGS is loaded (like above) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
97 ;; * break long menus into multiple panes (like imenu?) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
98 ;; * notice node in "(dired)Virtual Dired" (quotes, parentheses, whitespace) |
49808 | 99 ;; * notice "machine.dom blah blah blah dir/file" (how?) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
100 ;; * as w3 becomes standard, rewrite to rely more on its functions |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
101 ;; * regexp options for ffap-string-at-point, like font-lock (MCOOK) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
102 ;; * v19: could replace `ffap-locate-file' with a quieter `locate-library' |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
103 ;; * handle "$(VAR)" in Makefiles |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
104 ;; * use the font-lock machinery |
13531 | 105 |
106 | |
107 ;;; Code: | |
108 | |
103729
f78c4d81bda4
(ffap-version): Make it an obsolete alias for emacs-version.
Glenn Morris <rgm@gnu.org>
parents:
100908
diff
changeset
|
109 (define-obsolete-variable-alias 'ffap-version 'emacs-version "23.2") |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
110 |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
111 (defgroup ffap nil |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
112 "Find file or URL at point." |
103730
7193abeb1062
(ffap): Remove defunct URL from custom group.
Glenn Morris <rgm@gnu.org>
parents:
103729
diff
changeset
|
113 ;; Dead 2009/07/05. |
7193abeb1062
(ffap): Remove defunct URL from custom group.
Glenn Morris <rgm@gnu.org>
parents:
103729
diff
changeset
|
114 ;; :link '(url-link :tag "URL" "ftp://ftp.mathcs.emory.edu/pub/mic/emacs/") |
22250
a77d473867b8
*** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents:
22214
diff
changeset
|
115 :group 'matching |
a77d473867b8
*** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents:
22214
diff
changeset
|
116 :group 'convenience) |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
117 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
118 ;; The code is organized in pages, separated by formfeed characters. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
119 ;; See the next two pages for standard customization ideas. |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
120 |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
121 |
13531 | 122 ;;; User Variables: |
123 | |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
124 (defun ffap-symbol-value (sym &optional default) |
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
125 "Return value of symbol SYM, if bound, or DEFAULT otherwise." |
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
126 (if (boundp sym) (symbol-value sym) default)) |
13531 | 127 |
52672
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
128 (defcustom ffap-shell-prompt-regexp |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
129 ;; This used to test for some shell prompts that don't have a space |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
130 ;; after them. The common root shell prompt (#) is not listed since it |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
131 ;; also doubles up as a valid URL character. |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
132 "[$%><]*" |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
133 "Paths matching this regexp are stripped off the shell prompt. |
52672
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
134 If nil, ffap doesn't do shell prompt stripping." |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
135 :type '(choice (const :tag "Disable" nil) |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
136 (const :tag "Standard" "[$%><]*") |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
137 regexp) |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
138 :group 'ffap) |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
139 |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
140 (defcustom ffap-ftp-regexp |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
141 ;; This used to test for ange-ftp or efs being present, but it should be |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
142 ;; harmless (and simpler) to give it this value unconditionally. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
143 "\\`/[^/:]+:" |
100171 | 144 "File names matching this regexp are treated as remote ffap. |
49808 | 145 If nil, ffap neither recognizes nor generates such names." |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
146 :type '(choice (const :tag "Disable" nil) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
147 (const :tag "Standard" "\\`/[^/:]+:") |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
148 regexp) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
149 :group 'ffap) |
13531 | 150 |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
151 (defcustom ffap-url-unwrap-local t |
100171 | 152 "If non-nil, convert `file:' URL to local file name before prompting." |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
153 :type 'boolean |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
154 :group 'ffap) |
13531 | 155 |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
156 (defcustom ffap-url-unwrap-remote t |
100171 | 157 "If non-nil, convert `ftp:' URL to remote file name before prompting. |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
158 This is ignored if `ffap-ftp-regexp' is nil." |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
159 :type 'boolean |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
160 :group 'ffap) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
161 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
162 (defcustom ffap-ftp-default-user "anonymous" |
100171 | 163 "User name in ftp file names generated by `ffap-host-to-path'. |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
164 Note this name may be omitted if it equals the default |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
165 \(either `efs-default-user' or `ange-ftp-default-user'\)." |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
166 :type 'string |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
167 :group 'ffap) |
13531 | 168 |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
169 (defcustom ffap-rfs-regexp |
13531 | 170 ;; Remote file access built into file system? HP rfa or Andrew afs: |
171 "\\`/\\(afs\\|net\\)/." | |
172 ;; afs only: (and (file-exists-p "/afs") "\\`/afs/.") | |
100171 | 173 "Matching file names are treated as remote. Use nil to disable." |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
174 :type 'regexp |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
175 :group 'ffap) |
13531 | 176 |
177 (defvar ffap-url-regexp | |
178 ;; Could just use `url-nonrelative-link' of w3, if loaded. | |
179 ;; This regexp is not exhaustive, it just matches common cases. | |
180 (concat | |
181 "\\`\\(" | |
182 "news\\(post\\)?:\\|mailto:\\|file:" ; no host ok | |
183 "\\|" | |
29115
4d1a63ff990f
(ffap-url-regexp): Add `https'.
Gerd Moellmann <gerd@gnu.org>
parents:
26725
diff
changeset
|
184 "\\(ftp\\|https?\\|telnet\\|gopher\\|www\\|wais\\)://" ; needs host |
13531 | 185 "\\)." ; require one more character |
186 ) | |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
187 "Regexp matching URLs. Use nil to disable URL features in ffap.") |
13531 | 188 |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
189 (defcustom ffap-foo-at-bar-prefix "mailto" |
100171 | 190 "Presumed URL prefix type of strings like \"<foo.9z@bar>\". |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
191 Sensible values are nil, \"news\", or \"mailto\"." |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
192 :type '(choice (const "mailto") |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
193 (const "news") |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
194 (const :tag "Disable" nil) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
195 ;; string -- possible, but not really useful |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
196 ) |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
197 :group 'ffap) |
13531 | 198 |
199 | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
200 ;;; Peanut Gallery (More User Variables): |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
201 ;; |
13531 | 202 ;; Users of ffap occasionally suggest new features. If I consider |
203 ;; those features interesting but not clear winners (a matter of | |
204 ;; personal taste) I try to leave options to enable them. Read | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
205 ;; through this section for features that you like, put an appropriate |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
206 ;; enabler in your .emacs file. |
13531 | 207 |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
208 (defcustom ffap-dired-wildcards "[*?][^/]*\\'" |
100171 | 209 "A regexp matching filename wildcard characters, or nil. |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
210 |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
211 If `find-file-at-point' gets a filename matching this pattern, |
61365
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
212 and `ffap-pass-wildcards-to-dired' is nil, it passes it on to |
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
213 `find-file' with non-nil WILDCARDS argument, which expands |
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
214 wildcards and visits multiple files. To visit a file whose name |
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
215 contains wildcard characters you can suppress wildcard expansion |
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
216 by setting `find-file-wildcards'. If `find-file-at-point' gets a |
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
217 filename matching this pattern and `ffap-pass-wildcards-to-dired' |
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
218 is non-nil, it passes it on to `dired'. |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
219 |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
220 If `dired-at-point' gets a filename matching this pattern, |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
221 it passes it on to `dired'." |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
222 :type '(choice (const :tag "Disable" nil) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
223 (const :tag "Enable" "[*?][^/]*\\'") |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
224 ;; regexp -- probably not useful |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
225 ) |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
226 :group 'ffap) |
13531 | 227 |
61365
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
228 (defcustom ffap-pass-wildcards-to-dired nil |
100171 | 229 "If non-nil, pass filenames matching `ffap-dired-wildcards' to dired." |
61365
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
230 :type 'boolean |
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
231 :group 'ffap) |
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
232 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
233 (defcustom ffap-newfile-prompt nil |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
234 ;; Suggestion from RHOGEE, 11 Jul 1994. Disabled, I think this is |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
235 ;; better handled by `find-file-not-found-hooks'. |
100171 | 236 "Whether `find-file-at-point' prompts about a nonexistent file." |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
237 :type 'boolean |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
238 :group 'ffap) |
13531 | 239 |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
240 (defcustom ffap-require-prefix nil |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
241 ;; Suggestion from RHOGEE, 20 Oct 1994. |
100171 | 242 "If set, reverses the prefix argument to `find-file-at-point'. |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
243 This is nil so neophytes notice ffap. Experts may prefer to disable |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
244 ffap most of the time." |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
245 :type 'boolean |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
246 :group 'ffap) |
13531 | 247 |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
248 (defcustom ffap-file-finder 'find-file |
100171 | 249 "The command called by `find-file-at-point' to find a file." |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
250 :type 'function |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
251 :group 'ffap) |
13531 | 252 (put 'ffap-file-finder 'risky-local-variable t) |
253 | |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
254 (defcustom ffap-directory-finder 'dired |
100171 | 255 "The command called by `dired-at-point' to find a directory." |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
256 :type 'function |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
257 :group 'ffap) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
258 (put 'ffap-directory-finder 'risky-local-variable t) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
259 |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
260 (defcustom ffap-url-fetcher |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
261 (if (fboundp 'browse-url) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
262 'browse-url ; rely on browse-url-browser-function |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
263 'w3-fetch) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
264 ;; Remote control references: |
13531 | 265 ;; http://www.ncsa.uiuc.edu/SDG/Software/XMosaic/remote-control.html |
266 ;; http://home.netscape.com/newsref/std/x-remote.html | |
100171 | 267 "A function of one argument, called by ffap to fetch an URL. |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
268 Reasonable choices are `w3-fetch' or a `browse-url-*' function. |
23352 | 269 For a fancy alternative, get `ffap-url.el'." |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
270 :type '(choice (const w3-fetch) |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
271 (const browse-url) ; in recent versions of browse-url |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
272 (const browse-url-netscape) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
273 (const browse-url-mosaic) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
274 function) |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
275 :group 'ffap) |
13531 | 276 (put 'ffap-url-fetcher 'risky-local-variable t) |
277 | |
278 | |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
279 ;;; Compatibility: |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
280 ;; |
68828 | 281 ;; This version of ffap supports only the Emacs it is distributed in. |
282 ;; See the ftp site for a more general version. The following | |
283 ;; functions are necessary "leftovers" from the more general version. | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
284 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
285 (defun ffap-mouse-event () ; current mouse event, or nil |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
286 (and (listp last-nonmenu-event) last-nonmenu-event)) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
287 (defun ffap-event-buffer (event) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
288 (window-buffer (car (event-start event)))) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
289 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
290 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
291 ;;; Find Next Thing in buffer (`ffap-next'): |
13531 | 292 ;; |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
293 ;; Original ffap-next-url (URL's only) from RPECK 30 Mar 1995. Since |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
294 ;; then, broke it up into ffap-next-guess (noninteractive) and |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
295 ;; ffap-next (a command). It now work on files as well as url's. |
13531 | 296 |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
297 (defcustom ffap-next-regexp |
13531 | 298 ;; If you want ffap-next to find URL's only, try this: |
299 ;; (and ffap-url-regexp (string-match "\\\\`" ffap-url-regexp) | |
300 ;; (concat "\\<" (substring ffap-url-regexp 2)))) | |
301 ;; | |
302 ;; It pays to put a big fancy regexp here, since ffap-guesser is | |
303 ;; much more time-consuming than regexp searching: | |
75189
c456d15d23fd
(ffap-next-regexp, ffap-machine-p, ffap-newsgroup-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
74439
diff
changeset
|
304 "[/:.~[:alpha:]]/\\|@[[:alpha:]][-[:alnum:]]*\\." |
100171 | 305 "Regular expression governing movements of `ffap-next'." |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
306 :type 'regexp |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
307 :group 'ffap) |
13531 | 308 |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
309 (defvar ffap-next-guess nil |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
310 "Last value returned by `ffap-next-guess'.") |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
311 |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
312 (defvar ffap-string-at-point-region '(1 1) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
313 "List (BEG END), last region returned by `ffap-string-at-point'.") |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
314 |
13531 | 315 (defun ffap-next-guess (&optional back lim) |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
316 "Move point to next file or URL, and return it as a string. |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
317 If nothing is found, leave point at limit and return nil. |
13531 | 318 Optional BACK argument makes search backwards. |
319 Optional LIM argument limits the search. | |
320 Only considers strings that match `ffap-next-regexp'." | |
321 (or lim (setq lim (if back (point-min) (point-max)))) | |
322 (let (guess) | |
323 (while (not (or guess (eq (point) lim))) | |
324 (funcall (if back 're-search-backward 're-search-forward) | |
325 ffap-next-regexp lim 'move) | |
326 (setq guess (ffap-guesser))) | |
327 ;; Go to end, so we do not get same guess twice: | |
328 (goto-char (nth (if back 0 1) ffap-string-at-point-region)) | |
329 (setq ffap-next-guess guess))) | |
330 | |
331 ;;;###autoload | |
332 (defun ffap-next (&optional back wrap) | |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
333 "Search buffer for next file or URL, and run ffap. |
13531 | 334 Optional argument BACK says to search backwards. |
335 Optional argument WRAP says to try wrapping around if necessary. | |
336 Interactively: use a single prefix to search backwards, | |
337 double prefix to wrap forward, triple to wrap backwards. | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
338 Actual search is done by `ffap-next-guess'." |
13531 | 339 (interactive |
340 (cdr (assq (prefix-numeric-value current-prefix-arg) | |
341 '((1) (4 t) (16 nil t) (64 t t))))) | |
342 (let ((pt (point)) | |
343 (guess (ffap-next-guess back))) | |
344 ;; Try wraparound if necessary: | |
345 (and (not guess) wrap | |
346 (goto-char (if back (point-max) (point-min))) | |
347 (setq guess (ffap-next-guess back pt))) | |
348 (if guess | |
349 (progn | |
350 (sit-for 0) ; display point movement | |
351 (find-file-at-point (ffap-prompter guess))) | |
352 (goto-char pt) ; restore point | |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
353 (message "No %sfiles or URL's found" |
13531 | 354 (if wrap "" "more "))))) |
355 | |
356 (defun ffap-next-url (&optional back wrap) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
357 "Like `ffap-next', but search with `ffap-url-regexp'." |
13531 | 358 (interactive) |
359 (let ((ffap-next-regexp ffap-url-regexp)) | |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
104886
diff
changeset
|
360 (if (called-interactively-p 'interactive) |
13531 | 361 (call-interactively 'ffap-next) |
362 (ffap-next back wrap)))) | |
363 | |
364 | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
365 ;;; Machines (`ffap-machine-p'): |
13531 | 366 |
367 ;; I cannot decide a "best" strategy here, so these are variables. In | |
368 ;; particular, if `Pinging...' is broken or takes too long on your | |
369 ;; machine, try setting these all to accept or reject. | |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
370 (defcustom ffap-machine-p-local 'reject ; this happens often |
100171 | 371 "What `ffap-machine-p' does with hostnames that have no domain. |
23443
362c52acd51f
(ffap-machine-p-local): Fix editing error.
Richard M. Stallman <rms@gnu.org>
parents:
23352
diff
changeset
|
372 Value should be a symbol, one of `ping', `accept', and `reject'." |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
373 :type '(choice (const ping) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
374 (const accept) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
375 (const reject)) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
376 :group 'ffap) |
23352 | 377 (defcustom ffap-machine-p-known 'ping ; `accept' for higher speed |
100171 | 378 "What `ffap-machine-p' does with hostnames that have a known domain. |
23352 | 379 Value should be a symbol, one of `ping', `accept', and `reject'. |
380 See `mail-extr.el' for the known domains." | |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
381 :type '(choice (const ping) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
382 (const accept) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
383 (const reject)) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
384 :group 'ffap) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
385 (defcustom ffap-machine-p-unknown 'reject |
100171 | 386 "What `ffap-machine-p' does with hostnames that have an unknown domain. |
23352 | 387 Value should be a symbol, one of `ping', `accept', and `reject'. |
388 See `mail-extr.el' for the known domains." | |
17635
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
389 :type '(choice (const ping) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
390 (const accept) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
391 (const reject)) |
e687d30cbf1a
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16286
diff
changeset
|
392 :group 'ffap) |
13531 | 393 |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
394 (defun ffap-what-domain (domain) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
395 ;; Like what-domain in mail-extr.el, returns string or nil. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
396 (require 'mail-extr) |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
397 (let ((ob (or (ffap-symbol-value 'mail-extr-all-top-level-domains) |
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
398 (ffap-symbol-value 'all-top-level-domains)))) ; XEmacs |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
399 (and ob (get (intern-soft (downcase domain) ob) 'domain-name)))) |
13531 | 400 |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
401 (defun ffap-machine-p (host &optional service quiet strategy) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
402 "Decide whether HOST is the name of a real, reachable machine. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
403 Depending on the domain (none, known, or unknown), follow the strategy |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
404 named by the variable `ffap-machine-p-local', `ffap-machine-p-known', |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
405 or `ffap-machine-p-unknown'. Pinging uses `open-network-stream'. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
406 Optional SERVICE specifies the port used \(default \"discard\"\). |
13531 | 407 Optional QUIET flag suppresses the \"Pinging...\" message. |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
408 Optional STRATEGY overrides the three variables above. |
13531 | 409 Returned values: |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
410 t means that HOST answered. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
411 'accept means the relevant variable told us to accept. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
412 \"mesg\" means HOST exists, but does not respond for some reason." |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
413 ;; Try some (Emory local): |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
414 ;; (ffap-machine-p "ftp" nil nil 'ping) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
415 ;; (ffap-machine-p "nonesuch" nil nil 'ping) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
416 ;; (ffap-machine-p "ftp.mathcs.emory.edu" nil nil 'ping) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
417 ;; (ffap-machine-p "mathcs" 5678 nil 'ping) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
418 ;; (ffap-machine-p "foo.bonk" nil nil 'ping) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
419 ;; (ffap-machine-p "foo.bonk.com" nil nil 'ping) |
80037
4318dfaeb2cb
*** empty log message ***
Juanma Barranquero <lekktu@gmail.com>
parents:
79794
diff
changeset
|
420 (if (or (string-match "[^-[:alnum:].]" host) ; Invalid chars (?) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
421 (not (string-match "[^0-9]" host))) ; 1: a number? 2: quick reject |
13531 | 422 nil |
423 (let* ((domain | |
424 (and (string-match "\\.[^.]*$" host) | |
425 (downcase (substring host (1+ (match-beginning 0)))))) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
426 (what-domain (if domain (ffap-what-domain domain) "Local"))) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
427 (or strategy |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
428 (setq strategy |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
429 (cond ((not domain) ffap-machine-p-local) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
430 ((not what-domain) ffap-machine-p-unknown) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
431 (t ffap-machine-p-known)))) |
13531 | 432 (cond |
433 ((eq strategy 'accept) 'accept) | |
434 ((eq strategy 'reject) nil) | |
38070
e52b4f89d86f
(ffap-machine-p): Always return nil if
Eli Zaretskii <eliz@gnu.org>
parents:
35096
diff
changeset
|
435 ((not (fboundp 'open-network-stream)) nil) |
13531 | 436 ;; assume (eq strategy 'ping) |
437 (t | |
438 (or quiet | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
439 (if (stringp what-domain) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
440 (message "Pinging %s (%s)..." host what-domain) |
13531 | 441 (message "Pinging %s ..." host))) |
442 (condition-case error | |
443 (progn | |
444 (delete-process | |
445 (open-network-stream | |
446 "ffap-machine-p" nil host (or service "discard"))) | |
447 t) | |
448 (error | |
449 (let ((mesg (car (cdr error)))) | |
450 (cond | |
451 ;; v18: | |
452 ((string-match "^Unknown host" mesg) nil) | |
453 ((string-match "not responding$" mesg) mesg) | |
454 ;; v19: | |
455 ;; (file-error "connection failed" "permission denied" | |
456 ;; "nonesuch" "ffap-machine-p") | |
457 ;; (file-error "connection failed" "host is unreachable" | |
458 ;; "gopher.house.gov" "ffap-machine-p") | |
459 ;; (file-error "connection failed" "address already in use" | |
460 ;; "ftp.uu.net" "ffap-machine-p") | |
461 ((equal mesg "connection failed") | |
462 (if (equal (nth 2 error) "permission denied") | |
463 nil ; host does not exist | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
464 ;; Other errors mean the host exists: |
13531 | 465 (nth 2 error))) |
466 ;; Could be "Unknown service": | |
467 (t (signal (car error) (cdr error)))))))))))) | |
468 | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
469 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
470 ;;; Possibly Remote Resources: |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
471 |
49808 | 472 (defun ffap-replace-file-component (fullname name) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
473 "In remote FULLNAME, replace path with NAME. May return nil." |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
474 ;; Use ange-ftp or efs if loaded, but do not load them otherwise. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
475 (let (found) |
84866
45ab0bfaaa12
(ffap-replace-file-component): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82140
diff
changeset
|
476 (mapc |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
477 (function (lambda (sym) (and (fboundp sym) (setq found sym)))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
478 '( |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
479 efs-replace-path-component |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
480 ange-ftp-replace-path-component |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
481 ange-ftp-replace-name-component |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
482 )) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
483 (and found |
49808 | 484 (fset 'ffap-replace-file-component found) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
485 (funcall found fullname name)))) |
49808 | 486 ;; (ffap-replace-file-component "/who@foo.com:/whatever" "/new") |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
487 |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
488 (defun ffap-file-suffix (file) |
23352 | 489 "Return trailing `.foo' suffix of FILE, or nil if none." |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
490 (let ((pos (string-match "\\.[^./]*\\'" file))) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
491 (and pos (substring file pos nil)))) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
492 |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
493 (defvar ffap-compression-suffixes '(".gz" ".Z") ; .z is mostly dead |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
494 "List of suffixes tried by `ffap-file-exists-string'.") |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
495 |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
496 (defun ffap-file-exists-string (file &optional nomodify) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
497 ;; Early jka-compr versions modified file-exists-p to return the |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
498 ;; filename, maybe modified by adding a suffix like ".gz". That |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
499 ;; broke the interface of file-exists-p, so it was later dropped. |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
500 ;; Here we document and simulate the old behavior. |
23352 | 501 "Return FILE (maybe modified) if the file exists, else nil. |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
502 When using jka-compr (a.k.a. `auto-compression-mode'), the returned |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
503 name may have a suffix added from `ffap-compression-suffixes'. |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
504 The optional NOMODIFY argument suppresses the extra search." |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
505 (cond |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
506 ((not file) nil) ; quietly reject nil |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
507 ((file-exists-p file) file) ; try unmodified first |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
508 ;; three reasons to suppress search: |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
509 (nomodify nil) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
510 ((not (rassq 'jka-compr-handler file-name-handler-alist)) nil) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
511 ((member (ffap-file-suffix file) ffap-compression-suffixes) nil) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
512 (t ; ok, do the search |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
513 (let ((list ffap-compression-suffixes) try ret) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
514 (while list |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
515 (if (file-exists-p (setq try (concat file (car list)))) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
516 (setq ret try list nil) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
517 (setq list (cdr list)))) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
518 ret)))) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
519 |
13531 | 520 (defun ffap-file-remote-p (filename) |
23352 | 521 "If FILENAME looks remote, return it (maybe slightly improved)." |
13531 | 522 ;; (ffap-file-remote-p "/user@foo.bar.com:/pub") |
49808 | 523 ;; (ffap-file-remote-p "/cssun.mathcs.emory.edu://dir") |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
524 ;; (ffap-file-remote-p "/ffap.el:80") |
13531 | 525 (or (and ffap-ftp-regexp |
526 (string-match ffap-ftp-regexp filename) | |
49808 | 527 ;; Convert "/host.com://dir" to "/host:/dir", to handle a dieing |
528 ;; practice of advertising ftp files as "host.dom://filename". | |
13531 | 529 (if (string-match "//" filename) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
530 ;; (replace-match "/" nil nil filename) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
531 (concat (substring filename 0 (1+ (match-beginning 0))) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
532 (substring filename (match-end 0))) |
13531 | 533 filename)) |
534 (and ffap-rfs-regexp | |
535 (string-match ffap-rfs-regexp filename) | |
536 filename))) | |
537 | |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
538 (defun ffap-machine-at-point () |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
539 "Return machine name at point if it exists, or nil." |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
540 (let ((mach (ffap-string-at-point 'machine))) |
13531 | 541 (and (ffap-machine-p mach) mach))) |
542 | |
49808 | 543 (defsubst ffap-host-to-filename (host) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
544 "Convert HOST to something like \"/USER@HOST:\" or \"/HOST:\". |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
545 Looks at `ffap-ftp-default-user', returns \"\" for \"localhost\"." |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
546 (if (equal host "localhost") |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
547 "" |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
548 (let ((user ffap-ftp-default-user)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
549 ;; Avoid including the user if it is same as default: |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
550 (if (or (equal user (ffap-symbol-value 'ange-ftp-default-user)) |
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
551 (equal user (ffap-symbol-value 'efs-default-user))) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
552 (setq user nil)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
553 (concat "/" user (and user "@") host ":")))) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
554 |
13531 | 555 (defun ffap-fixup-machine (mach) |
49808 | 556 ;; Convert a hostname into an url, an ftp file name, or nil. |
13531 | 557 (cond |
558 ((not (and ffap-url-regexp (stringp mach))) nil) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
559 ;; gopher.well.com |
13531 | 560 ((string-match "\\`gopher[-.]" mach) ; or "info"? |
561 (concat "gopher://" mach "/")) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
562 ;; www.ncsa.uiuc.edu |
13531 | 563 ((and (string-match "\\`w\\(ww\\|eb\\)[-.]" mach)) |
564 (concat "http://" mach "/")) | |
565 ;; More cases? Maybe "telnet:" for archie? | |
49808 | 566 (ffap-ftp-regexp (ffap-host-to-filename mach)) |
13531 | 567 )) |
568 | |
75189
c456d15d23fd
(ffap-next-regexp, ffap-machine-p, ffap-newsgroup-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
74439
diff
changeset
|
569 (defvar ffap-newsgroup-regexp "^[[:lower:]]+\\.[-+[:lower:]_0-9.]+$" |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
570 "Strings not matching this fail `ffap-newsgroup-p'.") |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
571 (defvar ffap-newsgroup-heads ; entirely inadequate |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
572 '("alt" "comp" "gnu" "misc" "news" "sci" "soc" "talk") |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
573 "Used by `ffap-newsgroup-p' if gnus is not running.") |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
574 |
13531 | 575 (defun ffap-newsgroup-p (string) |
576 "Return STRING if it looks like a newsgroup name, else nil." | |
577 (and | |
578 (string-match ffap-newsgroup-regexp string) | |
579 (let ((htbs '(gnus-active-hashtb gnus-newsrc-hashtb gnus-killed-hashtb)) | |
580 (heads ffap-newsgroup-heads) | |
581 htb ret) | |
582 (while htbs | |
583 (setq htb (car htbs) htbs (cdr htbs)) | |
584 (condition-case nil | |
585 (progn | |
586 ;; errs: htb symbol may be unbound, or not a hash-table. | |
587 ;; gnus-gethash is just a macro for intern-soft. | |
43174
8a1b4dc4ca4c
(ffap-newsgroup-p): Test for non-nil symbol-value of htb.
Richard M. Stallman <rms@gnu.org>
parents:
38070
diff
changeset
|
588 (and (symbol-value htb) |
8a1b4dc4ca4c
(ffap-newsgroup-p): Test for non-nil symbol-value of htb.
Richard M. Stallman <rms@gnu.org>
parents:
38070
diff
changeset
|
589 (intern-soft string (symbol-value htb)) |
13531 | 590 (setq ret string htbs nil)) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
591 ;; If we made it this far, gnus is running, so ignore "heads": |
13531 | 592 (setq heads nil)) |
593 (error nil))) | |
594 (or ret (not heads) | |
75189
c456d15d23fd
(ffap-next-regexp, ffap-machine-p, ffap-newsgroup-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
74439
diff
changeset
|
595 (let ((head (string-match "\\`\\([[:lower:]]+\\)\\." string))) |
13531 | 596 (and head (setq head (substring string 0 (match-end 1))) |
597 (member head heads) | |
598 (setq ret string)))) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
599 ;; Is there ever a need to modify string as a newsgroup name? |
13531 | 600 ret))) |
601 | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
602 (defsubst ffap-url-p (string) |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
603 "If STRING looks like an URL, return it (maybe improved), else nil." |
13531 | 604 (let ((case-fold-search t)) |
605 (and ffap-url-regexp (string-match ffap-url-regexp string) | |
606 ;; I lied, no improvement: | |
607 string))) | |
608 | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
609 ;; Broke these out of ffap-fixup-url, for use of ffap-url package. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
610 (defsubst ffap-url-unwrap-local (url) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
611 "Return URL as a local file, or nil. Ignores `ffap-url-regexp'." |
13531 | 612 (and (string-match "\\`\\(file\\|ftp\\):/?\\([^/]\\|\\'\\)" url) |
613 (substring url (1+ (match-end 1))))) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
614 (defsubst ffap-url-unwrap-remote (url) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
615 "Return URL as a remote file, or nil. Ignores `ffap-url-regexp'." |
13531 | 616 (and (string-match "\\`\\(ftp\\|file\\)://\\([^:/]+\\):?\\(/.*\\)" url) |
617 (concat | |
49808 | 618 (ffap-host-to-filename (substring url (match-beginning 2) (match-end 2))) |
13531 | 619 (substring url (match-beginning 3) (match-end 3))))) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
620 ;; Test: (ffap-url-unwrap-remote "ftp://foo.com/bar.boz") |
13531 | 621 |
622 (defun ffap-fixup-url (url) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
623 "Clean up URL and return it, maybe as a file name." |
13531 | 624 (cond |
625 ((not (stringp url)) nil) | |
626 ((and ffap-url-unwrap-local (ffap-url-unwrap-local url))) | |
627 ((and ffap-url-unwrap-remote ffap-ftp-regexp | |
628 (ffap-url-unwrap-remote url))) | |
98339
c646ac5cd7c0
(ffap-fixup-url): Don't call url-normalize-url. (Bug#898)
Glenn Morris <rgm@gnu.org>
parents:
95784
diff
changeset
|
629 ;; All this seems to do is remove any trailing "#anchor" part (Bug#898). |
c646ac5cd7c0
(ffap-fixup-url): Don't call url-normalize-url. (Bug#898)
Glenn Morris <rgm@gnu.org>
parents:
95784
diff
changeset
|
630 ;;; ((fboundp 'url-normalize-url) ; may autoload url (part of w3) |
c646ac5cd7c0
(ffap-fixup-url): Don't call url-normalize-url. (Bug#898)
Glenn Morris <rgm@gnu.org>
parents:
95784
diff
changeset
|
631 ;;; (url-normalize-url url)) |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
632 (url))) |
13531 | 633 |
634 | |
49808 | 635 ;;; File Name Handling: |
13531 | 636 ;; |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
637 ;; The upcoming ffap-alist actions need various utilities to prepare |
49808 | 638 ;; and search directories. Too many features here. |
13531 | 639 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
640 ;; (defun ffap-last (l) (while (cdr l) (setq l (cdr l))) l) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
641 ;; (defun ffap-splice (func inlist) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
642 ;; "Equivalent to (apply 'nconc (mapcar FUNC INLIST)), but less consing." |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
643 ;; (let* ((head (cons 17 nil)) (last head)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
644 ;; (while inlist |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
645 ;; (setcdr last (funcall func (car inlist))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
646 ;; (setq last (ffap-last last) inlist (cdr inlist))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
647 ;; (cdr head))) |
13531 | 648 |
649 (defun ffap-list-env (env &optional empty) | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
650 "Return a list of strings parsed from environment variable ENV. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
651 Optional EMPTY is the default list if \(getenv ENV\) is undefined, and |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
652 also is substituted for the first empty-string component, if there is one. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
653 Uses `path-separator' to separate the path into substrings." |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
654 ;; We cannot use parse-colon-path (files.el), since it kills |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
655 ;; "//" entries using file-name-as-directory. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
656 ;; Similar: dired-split, TeX-split-string, and RHOGEE's psg-list-env |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
657 ;; in ff-paths and bib-cite. The EMPTY arg may help mimic kpathsea. |
13531 | 658 (if (or empty (getenv env)) ; should return something |
659 (let ((start 0) match dir ret) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
660 (setq env (concat (getenv env) path-separator)) |
13905
7df0a9cb269a
(ffap-list-env): Use `path-separator' rather than ":".
Richard M. Stallman <rms@gnu.org>
parents:
13531
diff
changeset
|
661 (while (setq match (string-match path-separator env start)) |
13531 | 662 (setq dir (substring env start match) start (1+ match)) |
663 ;;(and (file-directory-p dir) (not (member dir ret)) ...) | |
664 (setq ret (cons dir ret))) | |
665 (setq ret (nreverse ret)) | |
666 (and empty (setq match (member "" ret)) | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
667 (progn ; allow string or list here |
13531 | 668 (setcdr match (append (cdr-safe empty) (cdr match))) |
669 (setcar match (or (car-safe empty) empty)))) | |
670 ret))) | |
671 | |
672 (defun ffap-reduce-path (path) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
673 "Remove duplicates and non-directories from PATH list." |
13531 | 674 (let (ret tem) |
675 (while path | |
676 (setq tem path path (cdr path)) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
677 (if (equal (car tem) ".") (setcar tem "")) |
13531 | 678 (or (member (car tem) ret) |
679 (not (file-directory-p (car tem))) | |
680 (progn (setcdr tem ret) (setq ret tem)))) | |
681 (nreverse ret))) | |
682 | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
683 (defun ffap-all-subdirs (dir &optional depth) |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
684 "Return list of all subdirectories under DIR, starting with itself. |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
685 Directories beginning with \".\" are ignored, and directory symlinks |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
686 are listed but never searched (to avoid loops). |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
687 Optional DEPTH limits search depth." |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
688 (and (file-exists-p dir) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
689 (ffap-all-subdirs-loop (expand-file-name dir) (or depth -1)))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
690 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
691 (defun ffap-all-subdirs-loop (dir depth) ; internal |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
692 (setq depth (1- depth)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
693 (cons dir |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
694 (and (not (eq depth -1)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
695 (apply 'nconc |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
696 (mapcar |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
697 (function |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
698 (lambda (d) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
699 (cond |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
700 ((not (file-directory-p d)) nil) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
701 ((file-symlink-p d) (list d)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
702 (t (ffap-all-subdirs-loop d depth))))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
703 (directory-files dir t "\\`[^.]") |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
704 ))))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
705 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
706 (defvar ffap-kpathsea-depth 1 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
707 "Bound on depth of subdirectory search in `ffap-kpathsea-expand-path'. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
708 Set to 0 to avoid all searching, or nil for no limit.") |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
709 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
710 (defun ffap-kpathsea-expand-path (path) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
711 "Replace each \"//\"-suffixed dir in PATH by a list of its subdirs. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
712 The subdirs begin with the original directory, and the depth of the |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
713 search is bounded by `ffap-kpathsea-depth'. This is intended to mimic |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
714 kpathsea, a library used by some versions of TeX." |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
715 (apply 'nconc |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
716 (mapcar |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
717 (function |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
718 (lambda (dir) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
719 (if (string-match "[^/]//\\'" dir) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
720 (ffap-all-subdirs (substring dir 0 -2) ffap-kpathsea-depth) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
721 (list dir)))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
722 path))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
723 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
724 (defun ffap-locate-file (file nosuffix path) |
68828 | 725 ;; The current version of locate-library could almost replace this, |
54183
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
726 ;; except it does not let us override the suffix list. The |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
727 ;; compression-suffixes search moved to ffap-file-exists-string. |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
728 "A generic path-searching function. |
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
729 Returns the name of file in PATH, or nil. |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
730 Optional NOSUFFIX, if nil or t, is like the fourth argument |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
731 for `load': whether to try the suffixes (\".elc\" \".el\" \"\"). |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
732 If a nonempty list, it is a list of suffixes to try instead. |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
733 PATH is a list of directories. |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
734 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
735 This uses `ffap-file-exists-string', which may try adding suffixes from |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
736 `ffap-compression-suffixes'." |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
737 (if (file-name-absolute-p file) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
738 (setq path (list (file-name-directory file)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
739 file (file-name-nondirectory file))) |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
740 (let ((dir-ok (equal "" (file-name-nondirectory file))) |
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
741 (suffixes-to-try |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
742 (cond |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
743 ((consp nosuffix) nosuffix) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
744 (nosuffix '("")) |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
745 (t '(".elc" ".el" "")))) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
746 suffixes try found) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
747 (while path |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
748 (setq suffixes suffixes-to-try) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
749 (while suffixes |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
750 (setq try (ffap-file-exists-string |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
751 (expand-file-name |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
752 (concat file (car suffixes)) (car path)))) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
753 (if (and try (or dir-ok (not (file-directory-p try)))) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
754 (setq found try suffixes nil path nil) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
755 (setq suffixes (cdr suffixes)))) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
756 (setq path (cdr path))) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
757 found)) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
758 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
759 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
760 ;;; Action List (`ffap-alist'): |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
761 ;; |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
762 ;; These search actions depend on the major-mode or regexps matching |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
763 ;; the current name. The little functions and their variables are |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
764 ;; deferred to the next section, at some loss of "code locality". A |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
765 ;; good example of featuritis. Trim this list for speed. |
13531 | 766 |
767 (defvar ffap-alist | |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
768 '( |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
769 ("" . ffap-completable) ; completion, slow on some systems |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
770 ("\\.info\\'" . ffap-info) ; gzip.info |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
771 ("\\`info/" . ffap-info-2) ; info/emacs |
75189
c456d15d23fd
(ffap-next-regexp, ffap-machine-p, ffap-newsgroup-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
74439
diff
changeset
|
772 ("\\`[-[:lower:]]+\\'" . ffap-info-3) ; (emacs)Top [only in the parentheses] |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
773 ("\\.elc?\\'" . ffap-el) ; simple.el, simple.elc |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
774 (emacs-lisp-mode . ffap-el-mode) ; rmail, gnus, simple, custom |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
775 ;; (lisp-interaction-mode . ffap-el-mode) ; maybe |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
776 (finder-mode . ffap-el-mode) ; type {C-h p} and try it |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
777 (help-mode . ffap-el-mode) ; maybe useful |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
778 (c++-mode . ffap-c-mode) ; search ffap-c-path |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
779 (cc-mode . ffap-c-mode) ; same |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
780 ("\\.\\([chCH]\\|cc\\|hh\\)\\'" . ffap-c-mode) ; stdio.h |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
781 (fortran-mode . ffap-fortran-mode) ; FORTRAN requested by MDB |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
782 ("\\.[fF]\\'" . ffap-fortran-mode) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
783 (tex-mode . ffap-tex-mode) ; search ffap-tex-path |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
784 (latex-mode . ffap-latex-mode) ; similar |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
785 ("\\.\\(tex\\|sty\\|doc\\|cls\\)\\'" . ffap-tex) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
786 ("\\.bib\\'" . ffap-bib) ; search ffap-bib-path |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
787 ("\\`\\." . ffap-home) ; .emacs, .bashrc, .profile |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
788 ("\\`~/" . ffap-lcd) ; |~/misc/ffap.el.Z| |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
789 ;; This used to have a blank, but ffap-string-at-point doesn't |
87822
f78c41a364cf
(ffap-alist): Remove space from RFC regexp.
Glenn Morris <rgm@gnu.org>
parents:
87655
diff
changeset
|
790 ;; handle blanks. |
f78c41a364cf
(ffap-alist): Remove space from RFC regexp.
Glenn Morris <rgm@gnu.org>
parents:
87655
diff
changeset
|
791 ;; http://lists.gnu.org/archive/html/emacs-devel/2008-01/msg01058.html |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
792 ("\\`[Rr][Ff][Cc][-#]?\\([0-9]+\\)" ; no $ |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
793 . ffap-rfc) ; "100% RFC2100 compliant" |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
794 (dired-mode . ffap-dired) ; maybe in a subdirectory |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
795 ) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
796 "Alist of \(KEY . FUNCTION\) pairs parsed by `ffap-file-at-point'. |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
797 If string NAME at point (maybe \"\") is not a file or URL, these pairs |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
798 specify actions to try creating such a string. A pair matches if either |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
799 KEY is a symbol, and it equals `major-mode', or |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
800 KEY is a string, it should match NAME as a regexp. |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
801 On a match, \(FUNCTION NAME\) is called and should return a file, an |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
802 URL, or nil. If nil, search the alist for further matches.") |
13531 | 803 |
804 (put 'ffap-alist 'risky-local-variable t) | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
805 |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
806 ;; Example `ffap-alist' modifications: |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
807 ;; |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
808 ;; (setq ffap-alist ; remove a feature in `ffap-alist' |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
809 ;; (delete (assoc 'c-mode ffap-alist) ffap-alist)) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
810 ;; |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
811 ;; (setq ffap-alist ; add something to `ffap-alist' |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
812 ;; (cons |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
813 ;; (cons "^YSN[0-9]+$" |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
814 ;; (defun ffap-ysn (name) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
815 ;; (concat |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
816 ;; "http://www.physics.uiuc.edu/" |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
817 ;; "ysn/httpd/htdocs/ysnarchive/issuefiles/" |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
818 ;; (substring name 3) ".html"))) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
819 ;; ffap-alist)) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
820 |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
821 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
822 ;;; Action Definitions: |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
823 ;; |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
824 ;; Define various default members of `ffap-alist'. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
825 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
826 (defun ffap-completable (name) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
827 (let* ((dir (or (file-name-directory name) default-directory)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
828 (cmp (file-name-completion (file-name-nondirectory name) dir))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
829 (and cmp (concat dir cmp)))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
830 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
831 (defun ffap-home (name) (ffap-locate-file name t '("~"))) |
13531 | 832 |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
833 (defun ffap-info (name) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
834 (ffap-locate-file |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
835 name '("" ".info") |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
836 (or (ffap-symbol-value 'Info-directory-list) |
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
837 (ffap-symbol-value 'Info-default-directory-list) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
838 ))) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
839 |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
840 (defun ffap-info-2 (name) (ffap-info (substring name 5))) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
841 |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
842 (defun ffap-info-3 (name) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
843 ;; This ignores the node! "(emacs)Top" same as "(emacs)Intro" |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
844 (and (equal (ffap-string-around) "()") (ffap-info name))) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
845 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
846 (defun ffap-el (name) (ffap-locate-file name t load-path)) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
847 |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
848 (defun ffap-el-mode (name) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
849 ;; If name == "foo.el" we will skip it, since ffap-el already |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
850 ;; searched for it once. (This assumes the default ffap-alist.) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
851 (and (not (string-match "\\.el\\'" name)) |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
852 (ffap-locate-file name '(".el") load-path))) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
853 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
854 (defvar ffap-c-path |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
855 ;; Need smarter defaults here! Suggestions welcome. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
856 '("/usr/include" "/usr/local/include")) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
857 (defun ffap-c-mode (name) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
858 (ffap-locate-file name t ffap-c-path)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
859 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
860 (defvar ffap-fortran-path '("../include" "/usr/include")) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
861 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
862 (defun ffap-fortran-mode (name) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
863 (ffap-locate-file name t ffap-fortran-path)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
864 |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
865 (defvar ffap-tex-path |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
866 t ; delayed initialization |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
867 "Path where `ffap-tex-mode' looks for TeX files. |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
868 If t, `ffap-tex-init' will initialize this when needed.") |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
869 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
870 (defun ffap-tex-init () |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
871 ;; Compute ffap-tex-path if it is now t. |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
872 (and (eq t ffap-tex-path) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
873 ;; this may be slow, so say something |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
874 (message "Initializing ffap-tex-path ...") |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
875 (setq ffap-tex-path |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
876 (ffap-reduce-path |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
877 (cons |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
878 "." |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
879 (ffap-kpathsea-expand-path |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
880 (append |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
881 (ffap-list-env "TEXINPUTS") |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
882 ;; (ffap-list-env "BIBINPUTS") |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
883 (ffap-symbol-value |
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
884 'TeX-macro-global ; AUCTeX |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
885 '("/usr/local/lib/tex/macros" |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
886 "/usr/local/lib/tex/inputs"))))))))) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
887 |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
888 (defun ffap-tex-mode (name) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
889 (ffap-tex-init) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
890 (ffap-locate-file name '(".tex" "") ffap-tex-path)) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
891 |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
892 (defun ffap-latex-mode (name) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
893 (ffap-tex-init) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
894 ;; only rare need for "" |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
895 (ffap-locate-file name '(".cls" ".sty" ".tex" "") ffap-tex-path)) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
896 |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
897 (defun ffap-tex (name) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
898 (ffap-tex-init) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
899 (ffap-locate-file name t ffap-tex-path)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
900 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
901 (defvar ffap-bib-path |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
902 (ffap-list-env "BIBINPUTS" |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
903 (ffap-reduce-path |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
904 '( |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
905 ;; a few wild guesses, need better |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
906 "/usr/local/lib/tex/macros/bib" ; Solaris? |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
907 "/usr/lib/texmf/bibtex/bib" ; Linux? |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
908 )))) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
909 |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
910 (defun ffap-bib (name) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
911 (ffap-locate-file name t ffap-bib-path)) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
912 |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
913 (defun ffap-dired (name) |
94217
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
914 (let ((pt (point)) try) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
915 (save-excursion |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
916 (and (progn |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
917 (beginning-of-line) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
918 (looking-at " *[-d]r[-w][-x][-r][-w][-x][-r][-w][-x] ")) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
919 (re-search-backward "^ *$" nil t) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
920 (re-search-forward "^ *\\([^ \t\n:]*\\):\n *total " pt t) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
921 (file-exists-p |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
922 (setq try |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
923 (expand-file-name |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
924 name |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
925 (buffer-substring |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
926 (match-beginning 1) (match-end 1))))) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
927 try)))) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
928 |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
929 ;; Maybe a "Lisp Code Directory" reference: |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
930 (defun ffap-lcd (name) |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
931 ;; FIXME: Is this still in use? |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
932 (and |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
933 (or |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
934 ;; lisp-dir-apropos output buffer: |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
935 (string-match "Lisp Code Dir" (buffer-name)) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
936 ;; Inside an LCD entry like |~/misc/ffap.el.Z|, |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
937 ;; or maybe the holy LCD-Datafile itself: |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
938 (member (ffap-string-around) '("||" "|\n"))) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
939 (concat |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
940 ;; lispdir.el may not be loaded yet: |
49808 | 941 (ffap-host-to-filename |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
942 (ffap-symbol-value 'elisp-archive-host |
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
943 "archive.cis.ohio-state.edu")) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
944 (file-name-as-directory |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
945 (ffap-symbol-value 'elisp-archive-directory |
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
946 "/pub/gnu/emacs/elisp-archive/")) |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
947 (substring name 2)))) |
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
948 |
106448
992f0db2b7c1
* ffap.el (ffap-rfc-path): Make this a defcustom since
Kevin Ryde <user42@zip.com.au>
parents:
106239
diff
changeset
|
949 (defcustom ffap-rfc-path |
992f0db2b7c1
* ffap.el (ffap-rfc-path): Make this a defcustom since
Kevin Ryde <user42@zip.com.au>
parents:
106239
diff
changeset
|
950 (concat (ffap-host-to-filename "ftp.rfc-editor.org") "/in-notes/rfc%s.txt") |
992f0db2b7c1
* ffap.el (ffap-rfc-path): Make this a defcustom since
Kevin Ryde <user42@zip.com.au>
parents:
106239
diff
changeset
|
951 "A `format' string making a filename for RFC documents. |
992f0db2b7c1
* ffap.el (ffap-rfc-path): Make this a defcustom since
Kevin Ryde <user42@zip.com.au>
parents:
106239
diff
changeset
|
952 This can be an ange-ftp or tramp remote filename to download, or |
992f0db2b7c1
* ffap.el (ffap-rfc-path): Make this a defcustom since
Kevin Ryde <user42@zip.com.au>
parents:
106239
diff
changeset
|
953 a local filename if you have full set of RFCs locally. See also |
992f0db2b7c1
* ffap.el (ffap-rfc-path): Make this a defcustom since
Kevin Ryde <user42@zip.com.au>
parents:
106239
diff
changeset
|
954 `ffap-rfc-directories'." |
992f0db2b7c1
* ffap.el (ffap-rfc-path): Make this a defcustom since
Kevin Ryde <user42@zip.com.au>
parents:
106239
diff
changeset
|
955 :type 'string |
992f0db2b7c1
* ffap.el (ffap-rfc-path): Make this a defcustom since
Kevin Ryde <user42@zip.com.au>
parents:
106239
diff
changeset
|
956 :version "23.1" |
992f0db2b7c1
* ffap.el (ffap-rfc-path): Make this a defcustom since
Kevin Ryde <user42@zip.com.au>
parents:
106239
diff
changeset
|
957 :group 'ffap) |
992f0db2b7c1
* ffap.el (ffap-rfc-path): Make this a defcustom since
Kevin Ryde <user42@zip.com.au>
parents:
106239
diff
changeset
|
958 |
91755
fac76be7aaf4
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
87822
diff
changeset
|
959 (defcustom ffap-rfc-directories nil |
fac76be7aaf4
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
87822
diff
changeset
|
960 "A list of directories to look for RFC files. |
fac76be7aaf4
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
87822
diff
changeset
|
961 If a given RFC isn't in these then `ffap-rfc-path' is offered." |
fac76be7aaf4
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
87822
diff
changeset
|
962 :type '(repeat directory) |
91756
962527987174
(ffap-rfc-directories): Add :version.
Glenn Morris <rgm@gnu.org>
parents:
91755
diff
changeset
|
963 :version "23.1" |
91755
fac76be7aaf4
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
87822
diff
changeset
|
964 :group 'ffap) |
fac76be7aaf4
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
87822
diff
changeset
|
965 |
17676
fcbe987b332a
(ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
17635
diff
changeset
|
966 (defun ffap-rfc (name) |
91755
fac76be7aaf4
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
87822
diff
changeset
|
967 (let ((num (match-string 1 name))) |
fac76be7aaf4
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
87822
diff
changeset
|
968 (or (ffap-locate-file (format "rfc%s.txt" num) t ffap-rfc-directories) |
fac76be7aaf4
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
87822
diff
changeset
|
969 (format ffap-rfc-path num)))) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
970 |
13531 | 971 |
972 ;;; At-Point Functions: | |
973 | |
974 (defvar ffap-string-at-point-mode-alist | |
975 '( | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
976 ;; The default, used when the `major-mode' is not found. |
13531 | 977 ;; Slightly controversial decisions: |
978 ;; * strip trailing "@" and ":" | |
979 ;; * no commas (good for latex) | |
95784
ebad352d55ce
(ffap-string-at-point-mode-alist): Use alpha rather than lower.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
95592
diff
changeset
|
980 (file "--:\\\\$+<>@-Z_[:alpha:]~*?" "<@" "@>;.,!:") |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
981 ;; An url, or maybe a email/news message-id: |
95784
ebad352d55ce
(ffap-string-at-point-mode-alist): Use alpha rather than lower.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
95592
diff
changeset
|
982 (url "--:=&?$+@-Z_[:alpha:]~#,%;*" "^[:alnum:]" ":;.,!?") |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
983 ;; Find a string that does *not* contain a colon: |
95784
ebad352d55ce
(ffap-string-at-point-mode-alist): Use alpha rather than lower.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
95592
diff
changeset
|
984 (nocolon "--9$+<>@-Z_[:alpha:]~" "<@" "@>;.,!?") |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
985 ;; A machine: |
75189
c456d15d23fd
(ffap-next-regexp, ffap-machine-p, ffap-newsgroup-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
74439
diff
changeset
|
986 (machine "-[:alnum:]." "" ".") |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
987 ;; Mathematica paths: allow backquotes |
75189
c456d15d23fd
(ffap-next-regexp, ffap-machine-p, ffap-newsgroup-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
74439
diff
changeset
|
988 (math-mode ",-:$+<>@-Z_[:lower:]~`" "<" "@>;.,!?`:") |
13531 | 989 ) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
990 "Alist of \(MODE CHARS BEG END\), where MODE is a symbol, |
23352 | 991 possibly a major-mode name, or one of the symbol |
992 `file', `url', `machine', and `nocolon'. | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
993 `ffap-string-at-point' uses the data fields as follows: |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
994 1. find a maximal string of CHARS around point, |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
995 2. strip BEG chars before point from the beginning, |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
996 3. Strip END chars after point from the end.") |
13531 | 997 |
998 (defvar ffap-string-at-point nil | |
999 ;; Added at suggestion of RHOGEE (for ff-paths), 7/24/95. | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1000 "Last string returned by `ffap-string-at-point'.") |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1001 |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1002 (defun ffap-string-at-point (&optional mode) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1003 "Return a string of characters from around point. |
23352 | 1004 MODE (defaults to value of `major-mode') is a symbol used to look up string |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1005 syntax parameters in `ffap-string-at-point-mode-alist'. |
23352 | 1006 If MODE is not found, we use `file' instead of MODE. |
54183
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1007 If the region is active, return a string from the region. |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1008 Sets `ffap-string-at-point' and `ffap-string-at-point-region'." |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1009 (let* ((args |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1010 (cdr |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1011 (or (assq (or mode major-mode) ffap-string-at-point-mode-alist) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1012 (assq 'file ffap-string-at-point-mode-alist)))) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1013 (pt (point)) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1014 (str |
54183
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1015 (if (and transient-mark-mode mark-active) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1016 (buffer-substring |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1017 (setcar ffap-string-at-point-region (region-beginning)) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1018 (setcar (cdr ffap-string-at-point-region) (region-end))) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1019 (buffer-substring |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1020 (save-excursion |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1021 (skip-chars-backward (car args)) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1022 (skip-chars-forward (nth 1 args) pt) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1023 (setcar ffap-string-at-point-region (point))) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1024 (save-excursion |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1025 (skip-chars-forward (car args)) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1026 (skip-chars-backward (nth 2 args) pt) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1027 (setcar (cdr ffap-string-at-point-region) (point))))))) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1028 (set-text-properties 0 (length str) nil str) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1029 (setq ffap-string-at-point str))) |
13531 | 1030 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1031 (defun ffap-string-around () |
13531 | 1032 ;; Sometimes useful to decide how to treat a string. |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1033 "Return string of two chars around last `ffap-string-at-point'. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1034 Assumes the buffer has not changed." |
13531 | 1035 (save-excursion |
1036 (format "%c%c" | |
1037 (progn | |
1038 (goto-char (car ffap-string-at-point-region)) | |
1039 (preceding-char)) ; maybe 0 | |
1040 (progn | |
1041 (goto-char (nth 1 ffap-string-at-point-region)) | |
1042 (following-char)) ; maybe 0 | |
1043 ))) | |
1044 | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1045 (defun ffap-copy-string-as-kill (&optional mode) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1046 ;; Requested by MCOOK. Useful? |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1047 "Call `ffap-string-at-point', and copy result to `kill-ring'." |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1048 (interactive) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1049 (let ((str (ffap-string-at-point mode))) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1050 (if (equal "" str) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1051 (message "No string found around point.") |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1052 (kill-new str) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1053 ;; Older: (apply 'copy-region-as-kill ffap-string-at-point-region) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1054 (message "Copied to kill ring: %s" str)))) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1055 |
86479
0ea24c4dea5d
(ffap-bug, ffap-submit-bug): Redefine as obsolete aliases for
Glenn Morris <rgm@gnu.org>
parents:
84866
diff
changeset
|
1056 ;; External. |
86812
5a96d566fe43
(w3-view-this-url): Declare as a function.
Glenn Morris <rgm@gnu.org>
parents:
86479
diff
changeset
|
1057 (declare-function w3-view-this-url "ext:w3" (&optional no-show)) |
86479
0ea24c4dea5d
(ffap-bug, ffap-submit-bug): Redefine as obsolete aliases for
Glenn Morris <rgm@gnu.org>
parents:
84866
diff
changeset
|
1058 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1059 (defun ffap-url-at-point () |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
1060 "Return URL from around point if it exists, or nil." |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1061 ;; Could use w3's url-get-url-at-point instead. Both handle "URL:", |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1062 ;; ignore non-relative links, trim punctuation. The other will |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1063 ;; actually look back if point is in whitespace, but I would rather |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1064 ;; ffap be less aggressive in such situations. |
13531 | 1065 (and |
1066 ffap-url-regexp | |
1067 (or | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1068 ;; In a w3 buffer button? |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1069 (and (eq major-mode 'w3-mode) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1070 ;; interface recommended by wmperry: |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1071 (w3-view-this-url t)) |
13531 | 1072 ;; Is there a reason not to strip trailing colon? |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1073 (let ((name (ffap-string-at-point 'url))) |
13531 | 1074 (cond |
1075 ((string-match "^url:" name) (setq name (substring name 4))) | |
75189
c456d15d23fd
(ffap-next-regexp, ffap-machine-p, ffap-newsgroup-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
74439
diff
changeset
|
1076 ((and (string-match "\\`[^:</>@]+@[^:</>@]+[[:alnum:]]\\'" name) |
13531 | 1077 ;; "foo@bar": could be "mailto" or "news" (a Message-ID). |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1078 ;; Without "<>" it must be "mailto". Otherwise could be |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1079 ;; either, so consult `ffap-foo-at-bar-prefix'. |
13531 | 1080 (let ((prefix (if (and (equal (ffap-string-around) "<>") |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1081 ;; Expect some odd characters: |
13531 | 1082 (string-match "[$.0-9].*[$.0-9].*@" name)) |
1083 ;; Could be news: | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1084 ffap-foo-at-bar-prefix |
13531 | 1085 "mailto"))) |
1086 (and prefix (setq name (concat prefix ":" name)))))) | |
1087 ((ffap-newsgroup-p name) (setq name (concat "news:" name))) | |
75189
c456d15d23fd
(ffap-next-regexp, ffap-machine-p, ffap-newsgroup-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
74439
diff
changeset
|
1088 ((and (string-match "\\`[[:alnum:]]+\\'" name) ; <mic> <root> <nobody> |
13531 | 1089 (equal (ffap-string-around) "<>") |
1090 ;; (ffap-user-p name): | |
1091 (not (string-match "~" (expand-file-name (concat "~" name)))) | |
1092 ) | |
1093 (setq name (concat "mailto:" name))) | |
1094 ) | |
1095 (and (ffap-url-p name) name) | |
1096 )))) | |
1097 | |
1098 (defvar ffap-gopher-regexp | |
1099 "^.*\\<\\(Type\\|Name\\|Path\\|Host\\|Port\\) *= *\\(.*\\) *$" | |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
1100 "Regexp matching a line in a gopher bookmark (maybe indented). |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1101 The two subexpressions are the KEY and VALUE.") |
13531 | 1102 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1103 (defun ffap-gopher-at-point () |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
1104 "If point is inside a gopher bookmark block, return its URL." |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1105 ;; `gopher-parse-bookmark' from gopher.el is not so robust |
13531 | 1106 (save-excursion |
1107 (beginning-of-line) | |
1108 (if (looking-at ffap-gopher-regexp) | |
1109 (progn | |
1110 (while (and (looking-at ffap-gopher-regexp) (not (bobp))) | |
1111 (forward-line -1)) | |
1112 (or (looking-at ffap-gopher-regexp) (forward-line 1)) | |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1113 (let ((type "1") path host (port "70")) |
13531 | 1114 (while (looking-at ffap-gopher-regexp) |
1115 (let ((var (intern | |
1116 (downcase | |
1117 (buffer-substring (match-beginning 1) | |
1118 (match-end 1))))) | |
1119 (val (buffer-substring (match-beginning 2) | |
1120 (match-end 2)))) | |
1121 (set var val) | |
1122 (forward-line 1))) | |
1123 (if (and path (string-match "^ftp:.*@" path)) | |
1124 (concat "ftp://" | |
1125 (substring path 4 (1- (match-end 0))) | |
1126 (substring path (match-end 0))) | |
1127 (and (= (length type) 1) | |
1128 host;; (ffap-machine-p host) | |
1129 (concat "gopher://" host | |
1130 (if (equal port "70") "" (concat ":" port)) | |
1131 "/" type path)))))))) | |
1132 | |
1133 (defvar ffap-ftp-sans-slash-regexp | |
1134 (and | |
1135 ffap-ftp-regexp | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1136 ;; Note: by now, we know it is not an url. |
13531 | 1137 ;; Icky regexp avoids: default: 123: foo::bar cs:pub |
1138 ;; It does match on: mic@cs: cs:/pub mathcs.emory.edu: (point at end) | |
1139 "\\`\\([^:@]+@[^:@]+:\\|[^@.:]+\\.[^@:]+:\\|[^:]+:[~/]\\)\\([^:]\\|\\'\\)") | |
49808 | 1140 "Strings matching this are coerced to ftp file names by ffap. |
13531 | 1141 That is, ffap just prepends \"/\". Set to nil to disable.") |
1142 | |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1143 (defun ffap-file-at-point () |
13531 | 1144 "Return filename from around point if it exists, or nil. |
1145 Existence test is skipped for names that look remote. | |
1146 If the filename is not obvious, it also tries `ffap-alist', | |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
1147 which may actually result in an URL rather than a filename." |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1148 ;; Note: this function does not need to look for url's, just |
13531 | 1149 ;; filenames. On the other hand, it is responsible for converting |
49808 | 1150 ;; a pseudo-url "site.com://dir" to an ftp file name |
13531 | 1151 (let* ((case-fold-search t) ; url prefixes are case-insensitive |
1152 (data (match-data)) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1153 (string (ffap-string-at-point)) ; uses mode alist |
13531 | 1154 (name |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1155 (or (condition-case nil |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1156 (and (not (string-match "//" string)) ; foo.com://bar |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1157 (substitute-in-file-name string)) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1158 (error nil)) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1159 string)) |
13531 | 1160 (abs (file-name-absolute-p name)) |
77014
7f75e6af1a34
(ffap-file-at-point): Lower the priority of the
Glenn Morris <rgm@gnu.org>
parents:
75189
diff
changeset
|
1161 (default-directory default-directory) |
7f75e6af1a34
(ffap-file-at-point): Lower the priority of the
Glenn Morris <rgm@gnu.org>
parents:
75189
diff
changeset
|
1162 (oname name)) |
13531 | 1163 (unwind-protect |
1164 (cond | |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1165 ;; Immediate rejects (/ and // and /* are too common in C/C++): |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1166 ((member name '("" "/" "//" "/*" ".")) nil) |
24312
24ffa91626d3
(ffap-file-at-point): Test local file names
Richard M. Stallman <rms@gnu.org>
parents:
23443
diff
changeset
|
1167 ;; Immediately test local filenames. If default-directory is |
24ffa91626d3
(ffap-file-at-point): Test local file names
Richard M. Stallman <rms@gnu.org>
parents:
23443
diff
changeset
|
1168 ;; remote, you probably already have a connection. |
24ffa91626d3
(ffap-file-at-point): Test local file names
Richard M. Stallman <rms@gnu.org>
parents:
23443
diff
changeset
|
1169 ((and (not abs) (ffap-file-exists-string name))) |
24ffa91626d3
(ffap-file-at-point): Test local file names
Richard M. Stallman <rms@gnu.org>
parents:
23443
diff
changeset
|
1170 ;; Try stripping off line numbers; good for compilation/grep output. |
24ffa91626d3
(ffap-file-at-point): Test local file names
Richard M. Stallman <rms@gnu.org>
parents:
23443
diff
changeset
|
1171 ((and (not abs) (string-match ":[0-9]" name) |
24ffa91626d3
(ffap-file-at-point): Test local file names
Richard M. Stallman <rms@gnu.org>
parents:
23443
diff
changeset
|
1172 (ffap-file-exists-string (substring name 0 (match-beginning 0))))) |
52672
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
1173 ;; Try stripping off prominent (non-root - #) shell prompts |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
1174 ;; if the ffap-shell-prompt-regexp is non-nil. |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
1175 ((and ffap-shell-prompt-regexp |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
1176 (not abs) (string-match ffap-shell-prompt-regexp name) |
d4d213cfb340
whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52401
diff
changeset
|
1177 (ffap-file-exists-string (substring name (match-end 0))))) |
13531 | 1178 ;; Accept remote names without actual checking (too slow): |
77014
7f75e6af1a34
(ffap-file-at-point): Lower the priority of the
Glenn Morris <rgm@gnu.org>
parents:
75189
diff
changeset
|
1179 ((and abs (ffap-file-remote-p name))) |
13531 | 1180 ;; Ok, not remote, try the existence test even if it is absolute: |
1181 ((and abs (ffap-file-exists-string name))) | |
104886
386dbc11f8f7
(ffap-file-at-point): Handle absolute (non-remote) files with line
Glenn Morris <rgm@gnu.org>
parents:
103730
diff
changeset
|
1182 ;; Try stripping off line numbers. |
386dbc11f8f7
(ffap-file-at-point): Handle absolute (non-remote) files with line
Glenn Morris <rgm@gnu.org>
parents:
103730
diff
changeset
|
1183 ((and abs (string-match ":[0-9]" name) |
386dbc11f8f7
(ffap-file-at-point): Handle absolute (non-remote) files with line
Glenn Morris <rgm@gnu.org>
parents:
103730
diff
changeset
|
1184 (ffap-file-exists-string (substring name 0 (match-beginning 0))))) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1185 ;; If it contains a colon, get rid of it (and return if exists) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1186 ((and (string-match path-separator name) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1187 (setq name (ffap-string-at-point 'nocolon)) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1188 (ffap-file-exists-string name))) |
13531 | 1189 ;; File does not exist, try the alist: |
1190 ((let ((alist ffap-alist) tem try case-fold-search) | |
1191 (while (and alist (not try)) | |
1192 (setq tem (car alist) alist (cdr alist)) | |
1193 (if (or (eq major-mode (car tem)) | |
1194 (and (stringp (car tem)) | |
1195 (string-match (car tem) name))) | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1196 (and (setq try |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1197 (condition-case nil |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1198 (funcall (cdr tem) name) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1199 (error nil))) |
13531 | 1200 (setq try (or |
1201 (ffap-url-p try) ; not a file! | |
1202 (ffap-file-remote-p try) | |
1203 (ffap-file-exists-string try)))))) | |
1204 try)) | |
77014
7f75e6af1a34
(ffap-file-at-point): Lower the priority of the
Glenn Morris <rgm@gnu.org>
parents:
75189
diff
changeset
|
1205 ;; Try adding a leading "/" (common omission in ftp file names). |
7f75e6af1a34
(ffap-file-at-point): Lower the priority of the
Glenn Morris <rgm@gnu.org>
parents:
75189
diff
changeset
|
1206 ;; Note that this uses oname, which still has any colon part. |
7f75e6af1a34
(ffap-file-at-point): Lower the priority of the
Glenn Morris <rgm@gnu.org>
parents:
75189
diff
changeset
|
1207 ;; This should have a lower priority than the alist stuff, |
7f75e6af1a34
(ffap-file-at-point): Lower the priority of the
Glenn Morris <rgm@gnu.org>
parents:
75189
diff
changeset
|
1208 ;; else it matches things like "ffap.el:1234:56:Warning". |
7f75e6af1a34
(ffap-file-at-point): Lower the priority of the
Glenn Morris <rgm@gnu.org>
parents:
75189
diff
changeset
|
1209 ((and (not abs) |
7f75e6af1a34
(ffap-file-at-point): Lower the priority of the
Glenn Morris <rgm@gnu.org>
parents:
75189
diff
changeset
|
1210 ffap-ftp-sans-slash-regexp |
7f75e6af1a34
(ffap-file-at-point): Lower the priority of the
Glenn Morris <rgm@gnu.org>
parents:
75189
diff
changeset
|
1211 (string-match ffap-ftp-sans-slash-regexp oname) |
7f75e6af1a34
(ffap-file-at-point): Lower the priority of the
Glenn Morris <rgm@gnu.org>
parents:
75189
diff
changeset
|
1212 (ffap-file-remote-p (concat "/" oname)))) |
13531 | 1213 ;; Alist failed? Try to guess an active remote connection |
1214 ;; from buffer variables, and try once more, both as an | |
49808 | 1215 ;; absolute and relative file name on that remote host. |
13531 | 1216 ((let* (ffap-rfs-regexp ; suppress |
1217 (remote-dir | |
1218 (cond | |
1219 ((ffap-file-remote-p default-directory)) | |
1220 ((and (eq major-mode 'internal-ange-ftp-mode) | |
1221 (string-match "^\\*ftp \\(.*\\)@\\(.*\\)\\*$" | |
1222 (buffer-name))) | |
1223 (concat "/" (substring (buffer-name) 5 -1) ":")) | |
1224 ;; This is too often a bad idea: | |
1225 ;;((and (eq major-mode 'w3-mode) | |
1226 ;; (stringp url-current-server)) | |
1227 ;; (host-to-ange-path url-current-server)) | |
1228 ))) | |
1229 (and remote-dir | |
1230 (or | |
1231 (and (string-match "\\`\\(/?~?ftp\\)/" name) | |
1232 (ffap-file-exists-string | |
49808 | 1233 (ffap-replace-file-component |
13531 | 1234 remote-dir (substring name (match-end 1))))) |
1235 (ffap-file-exists-string | |
49808 | 1236 (ffap-replace-file-component remote-dir name)))))) |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1237 ((and ffap-dired-wildcards |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1238 (string-match ffap-dired-wildcards name) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1239 abs |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1240 (ffap-file-exists-string (file-name-directory |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1241 (directory-file-name name))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1242 name)) |
54106
9aa83ff74ef0
(ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53313
diff
changeset
|
1243 ;; Try all parent directories by deleting the trailing directory |
9aa83ff74ef0
(ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53313
diff
changeset
|
1244 ;; name until existing directory is found or name stops changing |
9aa83ff74ef0
(ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53313
diff
changeset
|
1245 ((let ((dir name)) |
9aa83ff74ef0
(ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53313
diff
changeset
|
1246 (while (and dir |
9aa83ff74ef0
(ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53313
diff
changeset
|
1247 (not (ffap-file-exists-string dir)) |
9aa83ff74ef0
(ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53313
diff
changeset
|
1248 (not (equal dir (setq dir (file-name-directory |
9aa83ff74ef0
(ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53313
diff
changeset
|
1249 (directory-file-name dir))))))) |
9aa83ff74ef0
(ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53313
diff
changeset
|
1250 (ffap-file-exists-string dir))) |
13531 | 1251 ) |
21155
5df2a690a85f
(ffap-file-at-point): store-match-data => set-match-data.
Richard M. Stallman <rms@gnu.org>
parents:
18486
diff
changeset
|
1252 (set-match-data data)))) |
13531 | 1253 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1254 ;;; Prompting (`ffap-read-file-or-url'): |
13531 | 1255 ;; |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1256 ;; We want to complete filenames as in read-file-name, but also url's |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1257 ;; which read-file-name-internal would truncate at the "//" string. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1258 ;; The solution here is to replace read-file-name-internal with |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1259 ;; `ffap-read-file-or-url-internal', which checks the minibuffer |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1260 ;; contents before attempting to complete filenames. |
13531 | 1261 |
1262 (defun ffap-read-file-or-url (prompt guess) | |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
1263 "Read file or URL from minibuffer, with PROMPT and initial GUESS." |
13531 | 1264 (or guess (setq guess default-directory)) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1265 (let (dir) |
13531 | 1266 ;; Tricky: guess may have or be a local directory, like "w3/w3.elc" |
1267 ;; or "w3/" or "../el/ffap.el" or "../../../" | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1268 (or (ffap-url-p guess) |
13531 | 1269 (progn |
1270 (or (ffap-file-remote-p guess) | |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1271 (setq guess |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1272 (abbreviate-file-name (expand-file-name guess)) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1273 )) |
13531 | 1274 (setq dir (file-name-directory guess)))) |
69009
3fe40c860c66
(ffap-read-file-or-url): Bind `completion-ignore-case' to value of
John Paul Wallington <jpw@pobox.com>
parents:
68982
diff
changeset
|
1275 (let ((minibuffer-completing-file-name t) |
79697
6c63d304805f
* ffap.el (ffap-read-file-or-url): Let-bind
Michael Albinus <michael.albinus@gmx.de>
parents:
78236
diff
changeset
|
1276 (completion-ignore-case read-file-name-completion-ignore-case) |
87653
3091cbee6fd8
(ffap-read-file-or-url): Don't use let-binding to temporarily
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1277 (fnh-elem (cons ffap-url-regexp 'url-file-handler))) |
3091cbee6fd8
(ffap-read-file-or-url): Don't use let-binding to temporarily
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1278 ;; Explain to `rfn-eshadow' that we can use URLs here. |
3091cbee6fd8
(ffap-read-file-or-url): Don't use let-binding to temporarily
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1279 (push fnh-elem file-name-handler-alist) |
3091cbee6fd8
(ffap-read-file-or-url): Don't use let-binding to temporarily
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1280 (unwind-protect |
3091cbee6fd8
(ffap-read-file-or-url): Don't use let-binding to temporarily
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1281 (setq guess |
94217
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1282 (let ((default-directory (if dir (expand-file-name dir) |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1283 default-directory))) |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1284 (completing-read |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1285 prompt |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1286 'ffap-read-file-or-url-internal |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1287 nil |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1288 nil |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1289 (if dir (cons guess (length dir)) guess) |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1290 (list 'file-name-history) |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1291 (and buffer-file-name |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1292 (abbreviate-file-name buffer-file-name))))) |
87653
3091cbee6fd8
(ffap-read-file-or-url): Don't use let-binding to temporarily
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1293 ;; Remove the special handler manually. We used to just let-bind |
3091cbee6fd8
(ffap-read-file-or-url): Don't use let-binding to temporarily
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1294 ;; file-name-handler-alist to preserve its value, but that caused |
3091cbee6fd8
(ffap-read-file-or-url): Don't use let-binding to temporarily
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1295 ;; other modifications to be lost (e.g. when Tramp gets loaded |
3091cbee6fd8
(ffap-read-file-or-url): Don't use let-binding to temporarily
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1296 ;; during the completing-read call). |
3091cbee6fd8
(ffap-read-file-or-url): Don't use let-binding to temporarily
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1297 (setq file-name-handler-alist (delq fnh-elem file-name-handler-alist)))) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1298 ;; Do file substitution like (interactive "F"), suggested by MCOOK. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1299 (or (ffap-url-p guess) (setq guess (substitute-in-file-name guess))) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1300 ;; Should not do it on url's, where $ is a common (VMS?) character. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1301 ;; Note: upcoming url.el package ought to handle this automatically. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1302 guess)) |
13531 | 1303 |
94217
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1304 (defun ffap-read-url-internal (string pred action) |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
1305 "Complete URLs from history, treating given string as valid." |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1306 (let ((hist (ffap-symbol-value 'url-global-history-hash-table))) |
13531 | 1307 (cond |
1308 ((not action) | |
94217
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1309 (or (try-completion string hist pred) string)) |
13531 | 1310 ((eq action t) |
94217
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1311 (or (all-completions string hist pred) (list string))) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1312 ;; action == lambda, documented where? Tests whether string is a |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1313 ;; valid "match". Let us always say yes. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1314 (t t)))) |
13531 | 1315 |
94217
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1316 (defun ffap-read-file-or-url-internal (string pred action) |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1317 (unless string ;Why would this ever happen? |
30687
34027013888a
(ffap-read-file-or-url-internal): Handle case the
Gerd Moellmann <gerd@gnu.org>
parents:
29203
diff
changeset
|
1318 (setq string default-directory)) |
13531 | 1319 (if (ffap-url-p string) |
94217
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1320 (ffap-read-url-internal string pred action) |
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1321 (read-file-name-internal string pred action))) |
13531 | 1322 |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1323 ;; The rest of this page is just to work with package complete.el. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1324 ;; This code assumes that you load ffap.el after complete.el. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1325 ;; |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1326 ;; We must inform complete about whether our completion function |
52731
82315f163e1e
removed defadvice related code from ffap
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52689
diff
changeset
|
1327 ;; will do filename style completion. |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1328 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1329 (defun ffap-complete-as-file-p () |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1330 ;; Will `minibuffer-completion-table' complete the minibuffer |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1331 ;; contents as a filename? Assumes the minibuffer is current. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1332 ;; Note: t and non-nil mean somewhat different reasons. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1333 (if (eq minibuffer-completion-table 'ffap-read-file-or-url-internal) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1334 (not (ffap-url-p (buffer-string))) ; t |
49694
3738a81ff66f
(ffap-complete-as-file-p): Use minibuffer-completing-file-name.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49588
diff
changeset
|
1335 (and minibuffer-completing-file-name '(t)))) ;list |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1336 |
13531 | 1337 (and |
1338 (featurep 'complete) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1339 (if (boundp 'PC-completion-as-file-name-predicate) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1340 ;; modern version of complete.el, just set the variable: |
52731
82315f163e1e
removed defadvice related code from ffap
Rajesh Vaidheeswarran <rv@gnu.org>
parents:
52689
diff
changeset
|
1341 (setq PC-completion-as-file-name-predicate 'ffap-complete-as-file-p))) |
13531 | 1342 |
1343 | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1344 ;;; Highlighting (`ffap-highlight'): |
13531 | 1345 ;; |
1346 ;; Based on overlay highlighting in Emacs 19.28 isearch.el. | |
1347 | |
29203
004bedde23fc
(ffap-menu-text-plist): Use display-mouse-p, not window-system.
Eli Zaretskii <eliz@gnu.org>
parents:
29117
diff
changeset
|
1348 (defvar ffap-highlight t |
13531 | 1349 "If non-nil, ffap highlights the current buffer substring.") |
1350 | |
68982
72b641ca5ff3
(ffap) <defface>: Add explicit face declaration.
Juri Linkov <juri@jurta.org>
parents:
68828
diff
changeset
|
1351 (defface ffap |
72b641ca5ff3
(ffap) <defface>: Add explicit face declaration.
Juri Linkov <juri@jurta.org>
parents:
68828
diff
changeset
|
1352 '((t :inherit highlight)) |
72b641ca5ff3
(ffap) <defface>: Add explicit face declaration.
Juri Linkov <juri@jurta.org>
parents:
68828
diff
changeset
|
1353 "Face used to highlight the current buffer substring." |
72b641ca5ff3
(ffap) <defface>: Add explicit face declaration.
Juri Linkov <juri@jurta.org>
parents:
68828
diff
changeset
|
1354 :group 'ffap |
72b641ca5ff3
(ffap) <defface>: Add explicit face declaration.
Juri Linkov <juri@jurta.org>
parents:
68828
diff
changeset
|
1355 :version "22.1") |
72b641ca5ff3
(ffap) <defface>: Add explicit face declaration.
Juri Linkov <juri@jurta.org>
parents:
68828
diff
changeset
|
1356 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1357 (defvar ffap-highlight-overlay nil |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1358 "Overlay used by `ffap-highlight'.") |
13531 | 1359 |
1360 (defun ffap-highlight (&optional remove) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1361 "If `ffap-highlight' is set, highlight the guess in this buffer. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1362 That is, the last buffer substring found by `ffap-string-at-point'. |
13531 | 1363 Optional argument REMOVE means to remove any such highlighting. |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1364 Uses the face `ffap' if it is defined, or else `highlight'." |
13531 | 1365 (cond |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1366 (remove |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1367 (and ffap-highlight-overlay |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1368 (delete-overlay ffap-highlight-overlay)) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1369 ) |
13531 | 1370 ((not ffap-highlight) nil) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1371 (ffap-highlight-overlay |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1372 (move-overlay |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1373 ffap-highlight-overlay |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1374 (car ffap-string-at-point-region) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1375 (nth 1 ffap-string-at-point-region) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1376 (current-buffer))) |
13531 | 1377 (t |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1378 (setq ffap-highlight-overlay |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1379 (apply 'make-overlay ffap-string-at-point-region)) |
68982
72b641ca5ff3
(ffap) <defface>: Add explicit face declaration.
Juri Linkov <juri@jurta.org>
parents:
68828
diff
changeset
|
1380 (overlay-put ffap-highlight-overlay 'face 'ffap)))) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1381 |
13531 | 1382 |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1383 ;;; Main Entrance (`find-file-at-point' == `ffap'): |
13531 | 1384 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1385 (defun ffap-guesser () |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1386 "Return file or URL or nil, guessed from text around point." |
13531 | 1387 (or (and ffap-url-regexp |
1388 (ffap-fixup-url (or (ffap-url-at-point) | |
1389 (ffap-gopher-at-point)))) | |
1390 (ffap-file-at-point) ; may yield url! | |
1391 (ffap-fixup-machine (ffap-machine-at-point)))) | |
1392 | |
1393 (defun ffap-prompter (&optional guess) | |
1394 ;; Does guess and prompt step for find-file-at-point. | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1395 ;; Extra complication for the temporary highlighting. |
13531 | 1396 (unwind-protect |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1397 ;; This catch will let ffap-alist entries do their own prompting |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1398 ;; and then maybe skip over this prompt (ff-paths, for example). |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1399 (catch 'ffap-prompter |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1400 (ffap-read-file-or-url |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1401 (if ffap-url-regexp "Find file or URL: " "Find file: ") |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1402 (prog1 |
95592
d05c87c7a8ed
(ffap-prompter): Don't use the region.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1403 (let ((mark-active nil)) |
d05c87c7a8ed
(ffap-prompter): Don't use the region.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1404 ;; Don't use the region here, since it can be something |
d05c87c7a8ed
(ffap-prompter): Don't use the region.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1405 ;; completely unwieldy. If the user wants that, she could |
d05c87c7a8ed
(ffap-prompter): Don't use the region.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1406 ;; use M-w before and then C-y. --Stef |
d05c87c7a8ed
(ffap-prompter): Don't use the region.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1407 (setq guess (or guess (ffap-guesser)))) ; using ffap-alist here |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1408 (and guess (ffap-highlight)) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1409 ))) |
13531 | 1410 (ffap-highlight t))) |
1411 | |
1412 ;;;###autoload | |
1413 (defun find-file-at-point (&optional filename) | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1414 "Find FILENAME, guessing a default from text around point. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1415 If `ffap-url-regexp' is not nil, the FILENAME may also be an URL. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1416 With a prefix, this command behaves exactly like `ffap-file-finder'. |
13531 | 1417 If `ffap-require-prefix' is set, the prefix meaning is reversed. |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1418 See also the variables `ffap-dired-wildcards', `ffap-newfile-prompt', |
66184
4cc03ba58cf8
(find-file-at-point): Doc fix.
Romain Francoise <romain@orebokech.com>
parents:
64797
diff
changeset
|
1419 and the functions `ffap-file-at-point' and `ffap-url-at-point'." |
13531 | 1420 (interactive) |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
104886
diff
changeset
|
1421 (if (and (called-interactively-p 'interactive) |
13531 | 1422 (if ffap-require-prefix (not current-prefix-arg) |
1423 current-prefix-arg)) | |
1424 ;; Do exactly the ffap-file-finder command, even the prompting: | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1425 (let (current-prefix-arg) ; we already interpreted it |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1426 (call-interactively ffap-file-finder)) |
13531 | 1427 (or filename (setq filename (ffap-prompter))) |
1428 (cond | |
1429 ((ffap-url-p filename) | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1430 (let (current-prefix-arg) ; w3 2.3.25 bug, reported by KPC |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1431 (funcall ffap-url-fetcher filename))) |
61365
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
1432 ((and ffap-pass-wildcards-to-dired |
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
1433 ffap-dired-wildcards |
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
1434 (string-match ffap-dired-wildcards filename)) |
e59db0620294
(ffap-pass-wildcards-to-dired): New user option to
Juri Linkov <juri@jurta.org>
parents:
59105
diff
changeset
|
1435 (funcall ffap-directory-finder filename)) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1436 ((and ffap-dired-wildcards |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1437 (string-match ffap-dired-wildcards filename) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1438 find-file-wildcards |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1439 ;; Check if it's find-file that supports wildcards arg |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1440 (memq ffap-file-finder '(find-file find-alternate-file))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1441 (funcall ffap-file-finder (expand-file-name filename) t)) |
13531 | 1442 ((or (not ffap-newfile-prompt) |
1443 (file-exists-p filename) | |
1444 (y-or-n-p "File does not exist, create buffer? ")) | |
1445 (funcall ffap-file-finder | |
1446 ;; expand-file-name fixes "~/~/.emacs" bug sent by CHUCKR. | |
1447 (expand-file-name filename))) | |
1448 ;; User does not want to find a non-existent file: | |
1449 ((signal 'file-error (list "Opening file buffer" | |
1450 "no such file or directory" | |
1451 filename)))))) | |
1452 | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1453 ;; Shortcut: allow {M-x ffap} rather than {M-x find-file-at-point}. |
45169
f29db3d22988
(ffap): Don't hide it behind the autoload-cookie.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
43174
diff
changeset
|
1454 ;;;###autoload |
f29db3d22988
(ffap): Don't hide it behind the autoload-cookie.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
43174
diff
changeset
|
1455 (defalias 'ffap 'find-file-at-point) |
f29db3d22988
(ffap): Don't hide it behind the autoload-cookie.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
43174
diff
changeset
|
1456 |
13531 | 1457 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1458 ;;; Menu support (`ffap-menu'): |
13531 | 1459 |
1460 (defvar ffap-menu-regexp nil | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1461 "*If non-nil, overrides `ffap-next-regexp' during `ffap-menu'. |
13531 | 1462 Make this more restrictive for faster menu building. |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1463 For example, try \":/\" for URL (and some ftp) references.") |
13531 | 1464 |
1465 (defvar ffap-menu-alist nil | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1466 "Buffer local cache of menu presented by `ffap-menu'.") |
13531 | 1467 (make-variable-buffer-local 'ffap-menu-alist) |
1468 | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1469 (defvar ffap-menu-text-plist |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1470 (cond |
29203
004bedde23fc
(ffap-menu-text-plist): Use display-mouse-p, not window-system.
Eli Zaretskii <eliz@gnu.org>
parents:
29117
diff
changeset
|
1471 ((display-mouse-p) '(face bold mouse-face highlight)) ; keymap <mousy-map> |
004bedde23fc
(ffap-menu-text-plist): Use display-mouse-p, not window-system.
Eli Zaretskii <eliz@gnu.org>
parents:
29117
diff
changeset
|
1472 (t nil)) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1473 "Text properties applied to strings found by `ffap-menu-rescan'. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1474 These properties may be used to fontify the menu references.") |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1475 |
13531 | 1476 ;;;###autoload |
1477 (defun ffap-menu (&optional rescan) | |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
1478 "Put up a menu of files and URLs mentioned in this buffer. |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1479 Then set mark, jump to choice, and try to fetch it. The menu is |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1480 cached in `ffap-menu-alist', and rebuilt by `ffap-menu-rescan'. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1481 The optional RESCAN argument \(a prefix, interactively\) forces |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1482 a rebuild. Searches with `ffap-menu-regexp'." |
13531 | 1483 (interactive "P") |
1484 ;; (require 'imenu) -- no longer used, but roughly emulated | |
1485 (if (or (not ffap-menu-alist) rescan | |
1486 ;; or if the first entry is wrong: | |
1487 (and ffap-menu-alist | |
1488 (let ((first (car ffap-menu-alist))) | |
1489 (save-excursion | |
1490 (goto-char (cdr first)) | |
1491 (not (equal (car first) (ffap-guesser))))))) | |
1492 (ffap-menu-rescan)) | |
1493 ;; Tail recursive: | |
1494 (ffap-menu-ask | |
1495 (if ffap-url-regexp "Find file or URL" "Find file") | |
1496 (cons (cons "*Rescan Buffer*" -1) ffap-menu-alist) | |
1497 'ffap-menu-cont)) | |
1498 | |
1499 (defun ffap-menu-cont (choice) ; continuation of ffap-menu | |
1500 (if (< (cdr choice) 0) | |
1501 (ffap-menu t) ; *Rescan* | |
1502 (push-mark) | |
1503 (goto-char (cdr choice)) | |
1504 ;; Momentary highlight: | |
1505 (unwind-protect | |
1506 (progn | |
1507 (and ffap-highlight (ffap-guesser) (ffap-highlight)) | |
1508 (sit-for 0) ; display | |
1509 (find-file-at-point (car choice))) | |
1510 (ffap-highlight t)))) | |
1511 | |
1512 (defun ffap-menu-ask (title alist cont) | |
1513 "Prompt from a menu of choices, and then apply some action. | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1514 Arguments are TITLE, ALIST, and CONT \(a continuation function\). |
13531 | 1515 This uses either a menu or the minibuffer depending on invocation. |
1516 The TITLE string is used as either the prompt or menu title. | |
23352 | 1517 Each ALIST entry looks like (STRING . DATA) and defines one choice. |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1518 Function CONT is applied to the entry chosen by the user." |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1519 ;; Note: this function is used with a different continuation |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1520 ;; by the ffap-url add-on package. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1521 ;; Could try rewriting to use easymenu.el or lmenu.el. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1522 (let (choice) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1523 (cond |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1524 ;; Emacs mouse: |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1525 ((and (fboundp 'x-popup-menu) (ffap-mouse-event)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1526 (setq choice |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1527 (x-popup-menu |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1528 t |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1529 (list "" (cons title |
94217
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1530 (mapcar (lambda (i) (cons (car i) i)) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1531 alist)))))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1532 ;; minibuffer with completion buffer: |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1533 (t |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1534 (let ((minibuffer-setup-hook 'minibuffer-completion-help)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1535 ;; Bug: prompting may assume unique strings, no "". |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1536 (setq choice |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1537 (completing-read |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1538 (format "%s (default %s): " title (car (car alist))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1539 alist nil t |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1540 ;; (cons (car (car alist)) 0) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1541 nil))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1542 (sit-for 0) ; redraw original screen |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1543 ;; Convert string to its entry, or else the default: |
94217
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1544 (setq choice (or (assoc choice alist) (car alist))))) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1545 (if choice |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1546 (funcall cont choice) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1547 (message "No choice made!") ; possible with menus |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1548 nil))) |
13531 | 1549 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1550 (defun ffap-menu-rescan () |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1551 "Search buffer for `ffap-menu-regexp' to build `ffap-menu-alist'. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1552 Applies `ffap-menu-text-plist' text properties at all matches." |
13531 | 1553 (interactive) |
1554 (let ((ffap-next-regexp (or ffap-menu-regexp ffap-next-regexp)) | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1555 (range (- (point-max) (point-min))) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1556 (mod (buffer-modified-p)) ; was buffer modified? |
67010
fcf116e30422
(ffap-menu-rescan): Use inhibit-read-only instead of binding
Eli Zaretskii <eliz@gnu.org>
parents:
66184
diff
changeset
|
1557 ;; inhibit-read-only works on read-only text properties |
fcf116e30422
(ffap-menu-rescan): Use inhibit-read-only instead of binding
Eli Zaretskii <eliz@gnu.org>
parents:
66184
diff
changeset
|
1558 ;; as well as read-only buffers. |
fcf116e30422
(ffap-menu-rescan): Use inhibit-read-only instead of binding
Eli Zaretskii <eliz@gnu.org>
parents:
66184
diff
changeset
|
1559 (inhibit-read-only t) ; to set text-properties |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1560 item |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1561 ;; Avoid repeated searches of the *mode-alist: |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1562 (major-mode (if (assq major-mode ffap-string-at-point-mode-alist) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1563 major-mode |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1564 'file))) |
13531 | 1565 (setq ffap-menu-alist nil) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1566 (unwind-protect |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1567 (save-excursion |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1568 (goto-char (point-min)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1569 (while (setq item (ffap-next-guess)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1570 (setq ffap-menu-alist (cons (cons item (point)) ffap-menu-alist)) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1571 (add-text-properties (car ffap-string-at-point-region) (point) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1572 ffap-menu-text-plist) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1573 (message "Scanning...%2d%% <%s>" |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1574 (/ (* 100 (- (point) (point-min))) range) item))) |
94217
3a71d408918b
(ffap-read-file-or-url): Do not abuse completing-read's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93975
diff
changeset
|
1575 (or mod (restore-buffer-modified-p nil)))) |
13531 | 1576 (message "Scanning...done") |
1577 ;; Remove duplicates. | |
1578 (setq ffap-menu-alist ; sort by item | |
1579 (sort ffap-menu-alist | |
1580 (function | |
1581 (lambda (a b) (string-lessp (car a) (car b)))))) | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1582 (let ((ptr ffap-menu-alist)) ; remove duplicates |
13531 | 1583 (while (cdr ptr) |
1584 (if (equal (car (car ptr)) (car (car (cdr ptr)))) | |
1585 (setcdr ptr (cdr (cdr ptr))) | |
1586 (setq ptr (cdr ptr))))) | |
1587 (setq ffap-menu-alist ; sort by position | |
1588 (sort ffap-menu-alist | |
1589 (function | |
1590 (lambda (a b) (< (cdr a) (cdr b))))))) | |
1591 | |
1592 | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1593 ;;; Mouse Support (`ffap-at-mouse'): |
13531 | 1594 ;; |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1595 ;; See the suggested binding in ffap-bindings (near eof). |
13531 | 1596 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1597 (defvar ffap-at-mouse-fallback nil ; ffap-menu? too time-consuming |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1598 "Command invoked by `ffap-at-mouse' if nothing found at click, or nil. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1599 Ignored when `ffap-at-mouse' is called programmatically.") |
13531 | 1600 (put 'ffap-at-mouse-fallback 'risky-local-variable t) |
1601 | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1602 ;;;###autoload |
13531 | 1603 (defun ffap-at-mouse (e) |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
1604 "Find file or URL guessed from text around mouse click. |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1605 Interactively, calls `ffap-at-mouse-fallback' if no guess is found. |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1606 Return value: |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1607 * if a guess string is found, return it (after finding it) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1608 * if the fallback is called, return whatever it returns |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1609 * otherwise, nil" |
13531 | 1610 (interactive "e") |
1611 (let ((guess | |
1612 ;; Maybe less surprising without the save-excursion? | |
1613 (save-excursion | |
1614 (mouse-set-point e) | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1615 ;; Would prefer to do nothing unless click was *on* text. How |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1616 ;; to tell that the click was beyond the end of current line? |
13531 | 1617 (ffap-guesser)))) |
1618 (cond | |
1619 (guess | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1620 (set-buffer (ffap-event-buffer e)) |
13531 | 1621 (ffap-highlight) |
1622 (unwind-protect | |
1623 (progn | |
1624 (sit-for 0) ; display | |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1625 (message "Finding `%s'" guess) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1626 (find-file-at-point guess) |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1627 guess) ; success: return non-nil |
13531 | 1628 (ffap-highlight t))) |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
104886
diff
changeset
|
1629 ((called-interactively-p 'interactive) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1630 (if ffap-at-mouse-fallback |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1631 (call-interactively ffap-at-mouse-fallback) |
106793
f0cdc68631e2
Fix typos in ffap.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
106503
diff
changeset
|
1632 (message "No file or URL found at mouse click.") |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1633 nil)) ; no fallback, return nil |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1634 ;; failure: return nil |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1635 ))) |
13531 | 1636 |
1637 | |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1638 ;;; ffap-other-*, ffap-read-only-*, ffap-alternate-* commands: |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1639 |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1640 ;; There could be a real `ffap-noselect' function, but we would need |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1641 ;; at least two new user variables, and there is no w3-fetch-noselect. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1642 ;; So instead, we just fake it with a slow save-window-excursion. |
13531 | 1643 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1644 (defun ffap-other-window () |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1645 "Like `ffap', but put buffer in another window. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1646 Only intended for interactive use." |
13531 | 1647 (interactive) |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1648 (let (value) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1649 (switch-to-buffer-other-window |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1650 (save-window-excursion |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1651 (setq value (call-interactively 'ffap)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1652 (unless (or (bufferp value) (bufferp (car-safe value))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1653 (setq value (current-buffer))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1654 (current-buffer))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1655 value)) |
13531 | 1656 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1657 (defun ffap-other-frame () |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1658 "Like `ffap', but put buffer in another frame. |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1659 Only intended for interactive use." |
13531 | 1660 (interactive) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1661 ;; Extra code works around dedicated windows (noted by JENS, 7/96): |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1662 (let* ((win (selected-window)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1663 (wdp (window-dedicated-p win)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1664 value) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1665 (unwind-protect |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1666 (progn |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1667 (set-window-dedicated-p win nil) |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1668 (switch-to-buffer-other-frame |
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1669 (save-window-excursion |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1670 (setq value (call-interactively 'ffap)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1671 (unless (or (bufferp value) (bufferp (car-safe value))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1672 (setq value (current-buffer))) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1673 (current-buffer)))) |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1674 (set-window-dedicated-p win wdp)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1675 value)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1676 |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1677 (defun ffap-read-only () |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1678 "Like `ffap', but mark buffer as read-only. |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1679 Only intended for interactive use." |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1680 (interactive) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1681 (let ((value (call-interactively 'ffap))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1682 (unless (or (bufferp value) (bufferp (car-safe value))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1683 (setq value (current-buffer))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1684 (mapc (lambda (b) (with-current-buffer b (toggle-read-only 1))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1685 (if (listp value) value (list value))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1686 value)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1687 |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1688 (defun ffap-read-only-other-window () |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1689 "Like `ffap', but put buffer in another window and mark as read-only. |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1690 Only intended for interactive use." |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1691 (interactive) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1692 (let ((value (ffap-other-window))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1693 (mapc (lambda (b) (with-current-buffer b (toggle-read-only 1))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1694 (if (listp value) value (list value))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1695 value)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1696 |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1697 (defun ffap-read-only-other-frame () |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1698 "Like `ffap', but put buffer in another frame and mark as read-only. |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1699 Only intended for interactive use." |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1700 (interactive) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1701 (let ((value (ffap-other-frame))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1702 (mapc (lambda (b) (with-current-buffer b (toggle-read-only 1))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1703 (if (listp value) value (list value))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1704 value)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1705 |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1706 (defun ffap-alternate-file () |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1707 "Like `ffap' and `find-alternate-file'. |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1708 Only intended for interactive use." |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1709 (interactive) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1710 (let ((ffap-file-finder 'find-alternate-file)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1711 (call-interactively 'ffap))) |
13531 | 1712 |
105966
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1713 (defun ffap-alternate-file-other-window () |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1714 "Like `ffap' and `find-alternate-file-other-window'. |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1715 Only intended for interactive use." |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1716 (interactive) |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1717 (let ((ffap-file-finder 'find-alternate-file-other-window)) |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1718 (call-interactively 'ffap))) |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1719 |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1720 (defun ffap-literally () |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1721 "Like `ffap' and `find-file-literally'. |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1722 Only intended for interactive use." |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1723 (interactive) |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1724 (let ((ffap-file-finder 'find-file-literally)) |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1725 (call-interactively 'ffap))) |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1726 |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1727 (defalias 'find-file-literally-at-point 'ffap-literally) |
1b85a4b6472f
(ffap-alternate-file-other-window, ffap-literally): New functions.
Juri Linkov <juri@jurta.org>
parents:
105372
diff
changeset
|
1728 |
13531 | 1729 |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1730 ;;; Bug Reporter: |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1731 |
86479
0ea24c4dea5d
(ffap-bug, ffap-submit-bug): Redefine as obsolete aliases for
Glenn Morris <rgm@gnu.org>
parents:
84866
diff
changeset
|
1732 (define-obsolete-function-alias 'ffap-bug 'report-emacs-bug "23.1") |
0ea24c4dea5d
(ffap-bug, ffap-submit-bug): Redefine as obsolete aliases for
Glenn Morris <rgm@gnu.org>
parents:
84866
diff
changeset
|
1733 (define-obsolete-function-alias 'ffap-submit-bug 'report-emacs-bug "23.1") |
13531 | 1734 |
1735 | |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1736 ;;; Hooks for Gnus, VM, Rmail: |
13531 | 1737 ;; |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1738 ;; If you do not like these bindings, write versions with whatever |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1739 ;; bindings you would prefer. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1740 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1741 (defun ffap-ro-mode-hook () |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1742 "Bind `ffap-next' and `ffap-menu' to M-l and M-m, resp." |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1743 (local-set-key "\M-l" 'ffap-next) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1744 (local-set-key "\M-m" 'ffap-menu) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1745 ) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1746 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1747 (defun ffap-gnus-hook () |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1748 "Bind `ffap-gnus-next' and `ffap-gnus-menu' to M-l and M-m, resp." |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1749 (set (make-local-variable 'ffap-foo-at-bar-prefix) "news") ; message-id's |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1750 ;; Note "l", "L", "m", "M" are taken: |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1751 (local-set-key "\M-l" 'ffap-gnus-next) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1752 (local-set-key "\M-m" 'ffap-gnus-menu)) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1753 |
64797
c0d8adac2bfe
(gnus-summary-buffer, gnus-article-buffer): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents:
64762
diff
changeset
|
1754 (defvar gnus-summary-buffer) |
c0d8adac2bfe
(gnus-summary-buffer, gnus-article-buffer): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents:
64762
diff
changeset
|
1755 (defvar gnus-article-buffer) |
c0d8adac2bfe
(gnus-summary-buffer, gnus-article-buffer): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents:
64762
diff
changeset
|
1756 |
86479
0ea24c4dea5d
(ffap-bug, ffap-submit-bug): Redefine as obsolete aliases for
Glenn Morris <rgm@gnu.org>
parents:
84866
diff
changeset
|
1757 ;; This code is called from gnus. |
0ea24c4dea5d
(ffap-bug, ffap-submit-bug): Redefine as obsolete aliases for
Glenn Morris <rgm@gnu.org>
parents:
84866
diff
changeset
|
1758 (declare-function gnus-summary-select-article "gnus-sum" |
0ea24c4dea5d
(ffap-bug, ffap-submit-bug): Redefine as obsolete aliases for
Glenn Morris <rgm@gnu.org>
parents:
84866
diff
changeset
|
1759 (&optional all-headers force pseudo article)) |
0ea24c4dea5d
(ffap-bug, ffap-submit-bug): Redefine as obsolete aliases for
Glenn Morris <rgm@gnu.org>
parents:
84866
diff
changeset
|
1760 |
0ea24c4dea5d
(ffap-bug, ffap-submit-bug): Redefine as obsolete aliases for
Glenn Morris <rgm@gnu.org>
parents:
84866
diff
changeset
|
1761 (declare-function gnus-configure-windows "gnus-win" |
0ea24c4dea5d
(ffap-bug, ffap-submit-bug): Redefine as obsolete aliases for
Glenn Morris <rgm@gnu.org>
parents:
84866
diff
changeset
|
1762 (setting &optional force)) |
0ea24c4dea5d
(ffap-bug, ffap-submit-bug): Redefine as obsolete aliases for
Glenn Morris <rgm@gnu.org>
parents:
84866
diff
changeset
|
1763 |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1764 (defun ffap-gnus-wrapper (form) ; used by both commands below |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1765 (and (eq (current-buffer) (get-buffer gnus-summary-buffer)) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1766 (gnus-summary-select-article)) ; get article of current line |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1767 ;; Preserve selected buffer, but do not do save-window-excursion, |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1768 ;; since we want to see any window created by the form. Temporarily |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1769 ;; select the article buffer, so we can see any point movement. |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1770 (let ((sb (window-buffer (selected-window)))) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1771 (gnus-configure-windows 'article) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1772 (pop-to-buffer gnus-article-buffer) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1773 (widen) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1774 ;; Skip headers for ffap-gnus-next (which will wrap around) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1775 (if (eq (point) (point-min)) (search-forward "\n\n" nil t)) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1776 (unwind-protect |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1777 (eval form) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1778 (pop-to-buffer sb)))) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1779 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1780 (defun ffap-gnus-next () |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1781 "Run `ffap-next' in the gnus article buffer." |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1782 (interactive) (ffap-gnus-wrapper '(ffap-next nil t))) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1783 |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1784 (defun ffap-gnus-menu () |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1785 "Run `ffap-menu' in the gnus article buffer." |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1786 (interactive) (ffap-gnus-wrapper '(ffap-menu))) |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1787 |
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1788 |
21815
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1789 (defcustom dired-at-point-require-prefix nil |
100171 | 1790 "If set, reverses the prefix argument to `dired-at-point'. |
21815
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1791 This is nil so neophytes notice ffap. Experts may prefer to disable |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1792 ffap most of the time." |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1793 :type 'boolean |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1794 :group 'ffap |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1795 :version "20.3") |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1796 |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1797 ;;;###autoload |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1798 (defun dired-at-point (&optional filename) |
107135
76b761c74dae
* ffap.el (dired-at-point): Fix docstring. (Bug#5565)
Juri Linkov <juri@jurta.org>
parents:
106815
diff
changeset
|
1799 "Start Dired, defaulting to file at point. See `ffap'. |
76b761c74dae
* ffap.el (dired-at-point): Fix docstring. (Bug#5565)
Juri Linkov <juri@jurta.org>
parents:
106815
diff
changeset
|
1800 If `dired-at-point-require-prefix' is set, the prefix meaning is reversed." |
21815
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1801 (interactive) |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
104886
diff
changeset
|
1802 (if (and (called-interactively-p 'interactive) |
21815
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1803 (if dired-at-point-require-prefix |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1804 (not current-prefix-arg) |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1805 current-prefix-arg)) |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1806 (let (current-prefix-arg) ; already interpreted |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1807 (call-interactively ffap-directory-finder)) |
21815
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1808 (or filename (setq filename (dired-at-point-prompter))) |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1809 (cond |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1810 ((ffap-url-p filename) |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1811 (funcall ffap-url-fetcher filename)) |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1812 ((and ffap-dired-wildcards |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1813 (string-match ffap-dired-wildcards filename)) |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1814 (funcall ffap-directory-finder filename)) |
21815
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1815 ((file-exists-p filename) |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1816 (if (file-directory-p filename) |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1817 (funcall ffap-directory-finder |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1818 (expand-file-name filename)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1819 (funcall ffap-directory-finder |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1820 (concat (expand-file-name filename) "*")))) |
54183
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1821 ((and (file-writable-p |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1822 (or (file-name-directory (directory-file-name filename)) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1823 filename)) |
50042
5e493709a8ef
(dired-at-point): Check whether the user can create a directory before asking
Juanma Barranquero <lekktu@gmail.com>
parents:
49808
diff
changeset
|
1824 (y-or-n-p "Directory does not exist, create it? ")) |
21815
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1825 (make-directory filename) |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1826 (funcall ffap-directory-finder filename)) |
21815
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1827 ((error "No such file or directory `%s'" filename))))) |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1828 |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1829 (defun dired-at-point-prompter (&optional guess) |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1830 ;; Does guess and prompt step for find-file-at-point. |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1831 ;; Extra complication for the temporary highlighting. |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1832 (unwind-protect |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1833 (ffap-read-file-or-url |
81680
f4adce2647d3
(dired-at-point-prompter): Improve prompt in
Martin Rudalics <rudalics@gmx.at>
parents:
77014
diff
changeset
|
1834 (cond |
f4adce2647d3
(dired-at-point-prompter): Improve prompt in
Martin Rudalics <rudalics@gmx.at>
parents:
77014
diff
changeset
|
1835 ((eq ffap-directory-finder 'list-directory) |
f4adce2647d3
(dired-at-point-prompter): Improve prompt in
Martin Rudalics <rudalics@gmx.at>
parents:
77014
diff
changeset
|
1836 "List directory (brief): ") |
f4adce2647d3
(dired-at-point-prompter): Improve prompt in
Martin Rudalics <rudalics@gmx.at>
parents:
77014
diff
changeset
|
1837 (ffap-url-regexp "Dired file or URL: ") |
f4adce2647d3
(dired-at-point-prompter): Improve prompt in
Martin Rudalics <rudalics@gmx.at>
parents:
77014
diff
changeset
|
1838 (t "Dired file: ")) |
21815
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1839 (prog1 |
54183
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1840 (setq guess (or guess |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1841 (let ((guess (ffap-guesser))) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1842 (if (or (not guess) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1843 (ffap-url-p guess) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1844 (ffap-file-remote-p guess)) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1845 guess |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1846 (setq guess (abbreviate-file-name |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1847 (expand-file-name guess))) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1848 (cond |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1849 ;; Interpret local directory as a directory. |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1850 ((file-directory-p guess) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1851 (file-name-as-directory guess)) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1852 ;; Get directory component from local files. |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1853 ((file-regular-p guess) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1854 (file-name-directory guess)) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1855 (guess)))) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1856 )) |
b91c8ab75b81
(dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents:
54106
diff
changeset
|
1857 (and guess (ffap-highlight)))) |
21815
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1858 (ffap-highlight t))) |
e3c8e2bb08b9
(dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21155
diff
changeset
|
1859 |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1860 ;;; ffap-dired-other-*, ffap-list-directory commands: |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1861 |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1862 (defun ffap-dired-other-window () |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1863 "Like `dired-at-point', but put buffer in another window. |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1864 Only intended for interactive use." |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1865 (interactive) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1866 (let (value) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1867 (switch-to-buffer-other-window |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1868 (save-window-excursion |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1869 (setq value (call-interactively 'dired-at-point)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1870 (current-buffer))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1871 value)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1872 |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1873 (defun ffap-dired-other-frame () |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1874 "Like `dired-at-point', but put buffer in another frame. |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1875 Only intended for interactive use." |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1876 (interactive) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1877 ;; Extra code works around dedicated windows (noted by JENS, 7/96): |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1878 (let* ((win (selected-window)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1879 (wdp (window-dedicated-p win)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1880 value) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1881 (unwind-protect |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1882 (progn |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1883 (set-window-dedicated-p win nil) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1884 (switch-to-buffer-other-frame |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1885 (save-window-excursion |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1886 (setq value (call-interactively 'dired-at-point)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1887 (current-buffer)))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1888 (set-window-dedicated-p win wdp)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1889 value)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1890 |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1891 (defun ffap-list-directory () |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1892 "Like `dired-at-point' and `list-directory'. |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1893 Only intended for interactive use." |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1894 (interactive) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1895 (let ((ffap-directory-finder 'list-directory)) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1896 (call-interactively 'dired-at-point))) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1897 |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1898 |
106239
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1899 ;;; Hooks to put in `file-name-at-point-functions': |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1900 |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1901 ;;;###autoload |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1902 (progn (defun ffap-guess-file-name-at-point () |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1903 "Try to get a file name at point. |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1904 This hook is intended to be put in `file-name-at-point-functions'." |
106239
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1905 (when (fboundp 'ffap-guesser) |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1906 ;; Logic from `ffap-read-file-or-url' and `dired-at-point-prompter'. |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1907 (let ((guess (ffap-guesser))) |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1908 (setq guess |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1909 (if (or (not guess) |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1910 (and (fboundp 'ffap-url-p) |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1911 (ffap-url-p guess)) |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1912 (and (fboundp 'ffap-file-remote-p) |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1913 (ffap-file-remote-p guess))) |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1914 guess |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1915 (abbreviate-file-name (expand-file-name guess)))) |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1916 (when guess |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1917 (if (file-directory-p guess) |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1918 (file-name-as-directory guess) |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1919 guess)))))) |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1920 |
0ac473df1bd1
Provide additional default values (file name at point or at the
Juri Linkov <juri@jurta.org>
parents:
105966
diff
changeset
|
1921 |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1922 ;;; Offer default global bindings (`ffap-bindings'): |
13531 | 1923 |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1924 (defvar ffap-bindings |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1925 '( |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1926 (global-set-key [S-mouse-3] 'ffap-at-mouse) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1927 (global-set-key [C-S-mouse-3] 'ffap-menu) |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1928 |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1929 (global-set-key "\C-x\C-f" 'find-file-at-point) |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1930 (global-set-key "\C-x\C-r" 'ffap-read-only) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1931 (global-set-key "\C-x\C-v" 'ffap-alternate-file) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1932 |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1933 (global-set-key "\C-x4f" 'ffap-other-window) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1934 (global-set-key "\C-x5f" 'ffap-other-frame) |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1935 (global-set-key "\C-x4r" 'ffap-read-only-other-window) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1936 (global-set-key "\C-x5r" 'ffap-read-only-other-frame) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1937 |
22282
95a8d00b0c5c
(ffap-bindings): Fix the dired-at-point binding.
Karl Heuer <kwzh@gnu.org>
parents:
22250
diff
changeset
|
1938 (global-set-key "\C-xd" 'dired-at-point) |
58923
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1939 (global-set-key "\C-x4d" 'ffap-dired-other-window) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1940 (global-set-key "\C-x5d" 'ffap-dired-other-frame) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1941 (global-set-key "\C-x\C-d" 'ffap-list-directory) |
481f80f548e1
(ffap-dired-wildcards): Set default to "[*?][^/]*\\'". Doc fix.
Juri Linkov <juri@jurta.org>
parents:
55999
diff
changeset
|
1942 |
18486
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1943 (add-hook 'gnus-summary-mode-hook 'ffap-gnus-hook) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1944 (add-hook 'gnus-article-mode-hook 'ffap-gnus-hook) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1945 (add-hook 'vm-mode-hook 'ffap-ro-mode-hook) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1946 (add-hook 'rmail-mode-hook 'ffap-ro-mode-hook) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1947 ;; (setq dired-x-hands-off-my-keys t) ; the default |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1948 ) |
83ff1ecdb0e3
XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents:
18291
diff
changeset
|
1949 "List of binding forms evaluated by function `ffap-bindings'. |
35096 | 1950 A reasonable ffap installation needs just this one line: |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1951 (ffap-bindings) |
18291
130a48e6cc13
(ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents:
17676
diff
changeset
|
1952 Of course if you do not like these bindings, just roll your own!") |
13531 | 1953 |
34867
e701bc3564db
(ffap-bindings): Make interactive and add an autoload cookie.
Eli Zaretskii <eliz@gnu.org>
parents:
30687
diff
changeset
|
1954 ;;;###autoload |
106503
6cfa584799d3
Minor cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106448
diff
changeset
|
1955 (defun ffap-bindings () |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1956 "Evaluate the forms in variable `ffap-bindings'." |
34867
e701bc3564db
(ffap-bindings): Make interactive and add an autoload cookie.
Eli Zaretskii <eliz@gnu.org>
parents:
30687
diff
changeset
|
1957 (interactive) |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1958 (eval (cons 'progn ffap-bindings))) |
13531 | 1959 |
14874
cecaaaec6fd6
Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
1960 |
103729
f78c4d81bda4
(ffap-version): Make it an obsolete alias for emacs-version.
Glenn Morris <rgm@gnu.org>
parents:
100908
diff
changeset
|
1961 (provide 'ffap) |
52401 | 1962 |
93975
1e3a407766b9
Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92148
diff
changeset
|
1963 ;; arch-tag: 9dd3e88a-5dec-4607-bd57-60ae9ede8ebc |
13531 | 1964 ;;; ffap.el ends here |