annotate lisp/ffap.el @ 56905:661d52db56de

(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'. (isearch-toggle-case-fold): Set `isearch-success' to `t'. (isearch-message-prefix): Add "pending" for isearch-adjusted. (isearch-other-meta-char): Restore isearch-point unconditionally. (isearch-query-replace): Add new arg `regexp-flag' and use it. Set point to start of match if region is not active in transient mark mode (to include the current match to region boundaries). Push the search string to `query-replace-from-history-variable'. Add prompt "Query replace regexp" for isearch-regexp. Add region beginning/end as last arguments of `perform-replace.' (isearch-query-replace-regexp): Replace code by the call to `isearch-query-replace' with arg `t'.
author Juri Linkov <juri@jurta.org>
date Fri, 03 Sep 2004 20:32:57 +0000
parents 73c87f418eba
children 481f80f548e1 4c90ffeb71c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
3 ;; Copyright (C) 1995, 96, 97, 2000, 2004 Free Software Foundation, Inc.
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
4
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13979
diff changeset
5 ;; Author: Michelangelo Grigni <mic@mathcs.emory.edu>
52689
2b7d168d24b4 Change maintainer.
Richard M. Stallman <rms@gnu.org>
parents: 52672
diff changeset
6 ;; Maintainer: Rajesh Vaidheeswarran <rv@gnu.org>
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
7 ;; Created: 29 Mar 1993
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 22214
diff changeset
8 ;; Keywords: files, hypermedia, matching, mouse, convenience
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
9 ;; X-URL: ftp://ftp.mathcs.emory.edu/pub/mic/emacs/
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; any later version.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; GNU General Public License for more details.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13979
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13979
diff changeset
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13979
diff changeset
26 ;; Boston, MA 02111-1307, USA.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
28
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;;; Commentary:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
31 ;; 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
32 ;; 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
33 ;; 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
34 ;; (`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
35 ;; 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
36 ;; 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
37 ;; M-x ffap-bug.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;;
34867
e701bc3564db (ffap-bindings): Make interactive and add an autoload cookie.
Eli Zaretskii <eliz@gnu.org>
parents: 30687
diff changeset
39 ;; For the default installation, add this line to your .emacs file:
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
41 ;; (ffap-bindings) ; do default key bindings
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
43 ;; ffap-bindings makes the following global key bindings:
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
45 ;; C-x C-f find-file-at-point (abbreviated as ffap)
48409
09f47b7d547d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 45169
diff changeset
46 ;; C-x d dired-at-point
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
47 ;; C-x 4 f ffap-other-window
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
48 ;; C-x 5 f ffap-other-frame
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
49 ;; 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
50 ;; C-S-mouse-3 ffap-menu
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
52 ;; 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
53 ;; in vm, gnus, and rmail:
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 ;;
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
55 ;; 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
56 ;; M-m ffap-menu, or ffap-gnus-menu in gnus (m == "menu")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
58 ;; 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
59 ;; `ffap-bindings', or write your own.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
61 ;; 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
62 ;; 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
63 ;; 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
64 ;; option variables. In particular, if ffap is slow, try these:
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
66 ;; (setq ffap-alist nil) ; faster, dumber prompting
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
67 ;; (setq ffap-machine-p-known 'accept) ; no pinging
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
68 ;; (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
69 ;; (setq ffap-shell-prompt-regexp nil) ; disable shell prompt stripping
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;;
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
71 ;; 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
72 ;; 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
73 ;; 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
74 ;; the file and URL references within a buffer.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
76
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
77 ;;; Change Log:
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
78 ;;
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
79 ;; 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
80 ;; 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
81
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
82
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
83 ;;; Todo list:
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
84 ;; * use kpsewhich
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
85 ;; * 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
86 ;; * 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
87 ;; * 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
88 ;; * notice node in "(dired)Virtual Dired" (quotes, parentheses, whitespace)
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
89 ;; * 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
90 ;; * 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
91 ;; * 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
92 ;; * 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
93 ;; * handle "$(VAR)" in Makefiles
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
94 ;; * use the font-lock machinery
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 ;;; Code:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 (provide 'ffap)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
101 ;; Please do not delete this variable, it is checked in bug reports.
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
102 (defconst ffap-version "1.9-fsf <97/06/25 13:21:41 mic>"
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
103 "The version of ffap: \"Major.Minor-Build <Timestamp>\"")
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
104
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
105
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
106 (defgroup ffap nil
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
107 "Find file or URL at point."
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
108 :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
109 :group 'matching
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 22214
diff changeset
110 :group 'convenience)
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
111
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
112 ;; 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
113 ;; 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
114
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
115
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 ;;; User Variables:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
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 (defun ffap-soft-value (name &optional default)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
119 "Return value of symbol with NAME, if it is interned.
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
120 Otherwise return nil (or the optional DEFAULT value)."
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
121 ;; Bug: (ffap-soft-value "nil" 5) --> 5
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 (let ((sym (intern-soft name)))
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
123 (if (and sym (boundp sym)) (symbol-value sym) default)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124
52672
d4d213cfb340 whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents: 52401
diff changeset
125 (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
126 ;; 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
127 ;; 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
128 ;; 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
129 "[$%><]*"
d4d213cfb340 whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents: 52401
diff changeset
130 "Paths matching this regexp are stripped off the shell prompt
d4d213cfb340 whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents: 52401
diff changeset
131 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
132 :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
133 (const :tag "Standard" "[$%><]*")
d4d213cfb340 whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents: 52401
diff changeset
134 regexp)
d4d213cfb340 whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents: 52401
diff changeset
135 :group 'ffap)
d4d213cfb340 whitespace.el now takes user customizable variable to display cleanliness of
Rajesh Vaidheeswarran <rv@gnu.org>
parents: 52401
diff changeset
136
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
137 (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
138 ;; 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
139 ;; 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
140 "\\`/[^/:]+:"
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
141 "*File names matching this regexp are treated as remote ffap.
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
142 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
143 :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
144 (const :tag "Standard" "\\`/[^/:]+:")
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
145 regexp)
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
146 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
148 (defcustom ffap-url-unwrap-local t
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
149 "*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
150 :type 'boolean
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
151 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
153 (defcustom ffap-url-unwrap-remote t
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
154 "*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
155 This is ignored if `ffap-ftp-regexp' is nil."
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
156 :type 'boolean
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
157 :group 'ffap)
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
158
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
159 (defcustom ffap-ftp-default-user "anonymous"
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
160 "*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
161 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
162 \(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
163 :type 'string
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
164 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
166 (defcustom ffap-rfs-regexp
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 ;; Remote file access built into file system? HP rfa or Andrew afs:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 "\\`/\\(afs\\|net\\)/."
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 ;; afs only: (and (file-exists-p "/afs") "\\`/afs/.")
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
170 "*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
171 :type 'regexp
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
172 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 (defvar ffap-url-regexp
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 ;; Could just use `url-nonrelative-link' of w3, if loaded.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 ;; This regexp is not exhaustive, it just matches common cases.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 (concat
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 "\\`\\("
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 "news\\(post\\)?:\\|mailto:\\|file:" ; no host ok
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 "\\|"
29115
4d1a63ff990f (ffap-url-regexp): Add `https'.
Gerd Moellmann <gerd@gnu.org>
parents: 26725
diff changeset
181 "\\(ftp\\|https?\\|telnet\\|gopher\\|www\\|wais\\)://" ; needs host
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 "\\)." ; require one more character
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 )
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
184 "Regexp matching URL's. nil to disable URL features in ffap.")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
186 (defcustom ffap-foo-at-bar-prefix "mailto"
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
187 "*Presumed URL prefix type of strings like \"<foo.9z@bar>\".
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
188 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
189 :type '(choice (const "mailto")
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
190 (const "news")
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
191 (const :tag "Disable" nil)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
192 ;; 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
193 )
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
194 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
197 ;;; Peanut Gallery (More User Variables):
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
198 ;;
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 ;; Users of ffap occasionally suggest new features. If I consider
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 ;; those features interesting but not clear winners (a matter of
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 ;; 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
202 ;; 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
203 ;; enabler in your .emacs file.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
205 (defcustom ffap-dired-wildcards nil
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
206 ;; Suggestion from RHOGEE, 07 Jul 1994. Disabled, dired is still
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
207 ;; available by "C-x C-d <pattern>", and valid filenames may
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
208 ;; sometimes contain wildcard characters.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 "*A regexp matching filename wildcard characters, or nil.
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
210 If `find-file-at-point' gets a filename matching this pattern,
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
211 it passes it on to `dired' instead of `find-file'."
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
212 :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
213 (const :tag "Enable" "[*?][^/]*\\'")
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
214 ;; regexp -- probably not useful
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
215 )
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
216 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
218 (defcustom ffap-newfile-prompt nil
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
219 ;; 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
220 ;; better handled by `find-file-not-found-hooks'.
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
221 "*Whether `find-file-at-point' prompts about a nonexistent file."
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
222 :type 'boolean
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
223 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
225 (defcustom ffap-require-prefix nil
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
226 ;; Suggestion from RHOGEE, 20 Oct 1994.
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
227 "*If set, reverses the prefix argument to `find-file-at-point'.
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
228 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
229 ffap most of the time."
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
230 :type 'boolean
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
231 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
233 (defcustom ffap-file-finder 'find-file
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
234 "*The command called by `find-file-at-point' to find a file."
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
235 :type 'function
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
236 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 (put 'ffap-file-finder 'risky-local-variable t)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
239 (defcustom ffap-url-fetcher
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
240 (if (fboundp 'browse-url)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
241 'browse-url ; rely on browse-url-browser-function
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
242 'w3-fetch)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
243 ;; Remote control references:
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 ;; http://www.ncsa.uiuc.edu/SDG/Software/XMosaic/remote-control.html
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 ;; http://home.netscape.com/newsref/std/x-remote.html
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
246 "*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
247 Reasonable choices are `w3-fetch' or a `browse-url-*' function.
23352
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
248 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
249 :type '(choice (const w3-fetch)
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
250 (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
251 (const browse-url-netscape)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
252 (const browse-url-mosaic)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
253 function)
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
254 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 (put 'ffap-url-fetcher 'risky-local-variable t)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
258 ;;; Compatibility:
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
259 ;;
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
260 ;; This version of ffap supports Emacs 20 only, see the ftp site
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
261 ;; for a more general version. The following functions are necessary
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
262 ;; "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
263
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
264 (defun ffap-mouse-event nil ; current mouse event, or nil
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
265 (and (listp last-nonmenu-event) last-nonmenu-event))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
266 (defun ffap-event-buffer (event)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
267 (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
268
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
269
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
270 ;;; Find Next Thing in buffer (`ffap-next'):
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
272 ;; 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
273 ;; 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
274 ;; ffap-next (a command). It now work on files as well as url's.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
276 (defcustom ffap-next-regexp
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 ;; If you want ffap-next to find URL's only, try this:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 ;; (and ffap-url-regexp (string-match "\\\\`" ffap-url-regexp)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 ;; (concat "\\<" (substring ffap-url-regexp 2))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 ;;
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 ;; It pays to put a big fancy regexp here, since ffap-guesser is
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 ;; much more time-consuming than regexp searching:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 "[/:.~a-zA-Z]/\\|@[a-zA-Z][-a-zA-Z0-9]*\\."
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
284 "*Regular expression governing movements of `ffap-next'."
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
285 :type 'regexp
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
286 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
288 (defvar ffap-next-guess nil
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
289 "Last value returned by `ffap-next-guess'.")
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
290
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
291 (defvar ffap-string-at-point-region '(1 1)
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
292 "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
293
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 (defun ffap-next-guess (&optional back lim)
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
295 "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
296 If nothing is found, leave point at limit and return nil.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 Optional BACK argument makes search backwards.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 Optional LIM argument limits the search.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 Only considers strings that match `ffap-next-regexp'."
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 (or lim (setq lim (if back (point-min) (point-max))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 (let (guess)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 (while (not (or guess (eq (point) lim)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 (funcall (if back 're-search-backward 're-search-forward)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 ffap-next-regexp lim 'move)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 (setq guess (ffap-guesser)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 ;; Go to end, so we do not get same guess twice:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 (goto-char (nth (if back 0 1) ffap-string-at-point-region))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 (setq ffap-next-guess guess)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 ;;;###autoload
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 (defun ffap-next (&optional back wrap)
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
312 "Search buffer for next file or URL, and run ffap.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 Optional argument BACK says to search backwards.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 Optional argument WRAP says to try wrapping around if necessary.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 Interactively: use a single prefix to search backwards,
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 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
317 Actual search is done by `ffap-next-guess'."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 (interactive
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 (cdr (assq (prefix-numeric-value current-prefix-arg)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 '((1) (4 t) (16 nil t) (64 t t)))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 (let ((pt (point))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 (guess (ffap-next-guess back)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 ;; Try wraparound if necessary:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 (and (not guess) wrap
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 (goto-char (if back (point-max) (point-min)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 (setq guess (ffap-next-guess back pt)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 (if guess
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 (progn
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 (sit-for 0) ; display point movement
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 (find-file-at-point (ffap-prompter guess)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 (goto-char pt) ; restore point
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
332 (message "No %sfiles or URL's found"
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 (if wrap "" "more ")))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 (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
336 "Like `ffap-next', but search with `ffap-url-regexp'."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 (interactive)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 (let ((ffap-next-regexp ffap-url-regexp))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 (if (interactive-p)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 (call-interactively 'ffap-next)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 (ffap-next back wrap))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
344 ;;; Machines (`ffap-machine-p'):
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 ;; I cannot decide a "best" strategy here, so these are variables. In
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 ;; particular, if `Pinging...' is broken or takes too long on your
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 ;; 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
349 (defcustom ffap-machine-p-local 'reject ; this happens often
23352
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
350 "*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
351 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
352 :type '(choice (const ping)
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
353 (const accept)
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
354 (const reject))
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
355 :group 'ffap)
23352
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
356 (defcustom ffap-machine-p-known 'ping ; `accept' for higher speed
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
357 "*What `ffap-machine-p' does with hostnames that have a known domain.
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
358 Value should be a symbol, one of `ping', `accept', and `reject'.
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
359 See `mail-extr.el' for the known domains."
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
360 :type '(choice (const ping)
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
361 (const accept)
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
362 (const reject))
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
363 :group 'ffap)
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
364 (defcustom ffap-machine-p-unknown 'reject
23352
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
365 "*What `ffap-machine-p' does with hostnames that have an unknown domain.
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
366 Value should be a symbol, one of `ping', `accept', and `reject'.
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
367 See `mail-extr.el' for the known domains."
17635
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
368 :type '(choice (const ping)
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
369 (const accept)
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
370 (const reject))
e687d30cbf1a Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16286
diff changeset
371 :group 'ffap)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
373 (defun ffap-what-domain (domain)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
374 ;; 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
375 (require 'mail-extr)
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
376 (let ((ob (or (ffap-soft-value "mail-extr-all-top-level-domains")
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
377 (ffap-soft-value "all-top-level-domains")))) ; XEmacs
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
378 (and ob (get (intern-soft (downcase domain) ob) 'domain-name))))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
380 (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
381 "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
382 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
383 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
384 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
385 Optional SERVICE specifies the port used \(default \"discard\"\).
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 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
387 Optional STRATEGY overrides the three variables above.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 Returned values:
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
389 t means that HOST answered.
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
390 '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
391 \"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
392 ;; Try some (Emory local):
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
393 ;; (ffap-machine-p "ftp" nil nil 'ping)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
394 ;; (ffap-machine-p "nonesuch" nil nil 'ping)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
395 ;; (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
396 ;; (ffap-machine-p "mathcs" 5678 nil 'ping)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
397 ;; (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
398 ;; (ffap-machine-p "foo.bonk.com" nil nil 'ping)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (if (or (string-match "[^-a-zA-Z0-9.]" host) ; Illegal chars (?)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
400 (not (string-match "[^0-9]" host))) ; 1: a number? 2: quick reject
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 nil
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 (let* ((domain
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 (and (string-match "\\.[^.]*$" host)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (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
405 (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
406 (or strategy
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
407 (setq strategy
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
408 (cond ((not domain) ffap-machine-p-local)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
409 ((not what-domain) ffap-machine-p-unknown)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
410 (t ffap-machine-p-known))))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 (cond
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 ((eq strategy 'accept) 'accept)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 ((eq strategy 'reject) nil)
38070
e52b4f89d86f (ffap-machine-p): Always return nil if
Eli Zaretskii <eliz@gnu.org>
parents: 35096
diff changeset
414 ((not (fboundp 'open-network-stream)) nil)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 ;; assume (eq strategy 'ping)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 (t
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 (or quiet
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
418 (if (stringp what-domain)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
419 (message "Pinging %s (%s)..." host what-domain)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 (message "Pinging %s ..." host)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 (condition-case error
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 (progn
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 (delete-process
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 (open-network-stream
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 "ffap-machine-p" nil host (or service "discard")))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 t)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 (error
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 (let ((mesg (car (cdr error))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 (cond
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 ;; v18:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 ((string-match "^Unknown host" mesg) nil)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 ((string-match "not responding$" mesg) mesg)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 ;; v19:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 ;; (file-error "connection failed" "permission denied"
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 ;; "nonesuch" "ffap-machine-p")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 ;; (file-error "connection failed" "host is unreachable"
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 ;; "gopher.house.gov" "ffap-machine-p")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 ;; (file-error "connection failed" "address already in use"
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 ;; "ftp.uu.net" "ffap-machine-p")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 ((equal mesg "connection failed")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 (if (equal (nth 2 error) "permission denied")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 nil ; host does not exist
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
443 ;; Other errors mean the host exists:
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 (nth 2 error)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 ;; Could be "Unknown service":
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 (t (signal (car error) (cdr error))))))))))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
448
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
449 ;;; Possibly Remote Resources:
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
450
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
451 (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
452 "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
453 ;; 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
454 (let (found)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
455 (mapcar
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
456 (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
457 '(
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
458 efs-replace-path-component
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
459 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
460 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
461 ))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
462 (and found
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
463 (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
464 (funcall found fullname name))))
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
465 ;; (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
466
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
467 (defun ffap-file-suffix (file)
23352
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
468 "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
469 (let ((pos (string-match "\\.[^./]*\\'" file)))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
470 (and pos (substring file pos nil))))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
471
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
472 (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
473 "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
474
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
475 (defun ffap-file-exists-string (file &optional nomodify)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
476 ;; 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
477 ;; 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
478 ;; 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
479 ;; Here we document and simulate the old behavior.
23352
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
480 "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
481 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
482 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
483 The optional NOMODIFY argument suppresses the extra search."
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
484 (cond
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
485 ((not file) nil) ; quietly reject nil
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
486 ((file-exists-p file) file) ; try unmodified first
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
487 ;; three reasons to suppress search:
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
488 (nomodify nil)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
489 ((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
490 ((member (ffap-file-suffix file) ffap-compression-suffixes) nil)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
491 (t ; ok, do the search
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
492 (let ((list ffap-compression-suffixes) try ret)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
493 (while list
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
494 (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
495 (setq ret try list nil)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
496 (setq list (cdr list))))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
497 ret))))
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
498
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 (defun ffap-file-remote-p (filename)
23352
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
500 "If FILENAME looks remote, return it (maybe slightly improved)."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 ;; (ffap-file-remote-p "/user@foo.bar.com:/pub")
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
502 ;; (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
503 ;; (ffap-file-remote-p "/ffap.el:80")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 (or (and ffap-ftp-regexp
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 (string-match ffap-ftp-regexp filename)
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
506 ;; Convert "/host.com://dir" to "/host:/dir", to handle a dieing
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
507 ;; practice of advertising ftp files as "host.dom://filename".
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 (if (string-match "//" filename)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
509 ;; (replace-match "/" nil nil filename)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
510 (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
511 (substring filename (match-end 0)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 filename))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 (and ffap-rfs-regexp
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 (string-match ffap-rfs-regexp filename)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 filename)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 (defun ffap-machine-at-point nil
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
518 "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
519 (let ((mach (ffap-string-at-point 'machine)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 (and (ffap-machine-p mach) mach)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
522 (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
523 "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
524 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
525 (if (equal host "localhost")
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
526 ""
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
527 (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
528 ;; Avoid including the user if it is same as default:
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
529 (if (or (equal user (ffap-soft-value "ange-ftp-default-user"))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
530 (equal user (ffap-soft-value "efs-default-user")))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
531 (setq user nil))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
532 (concat "/" user (and user "@") host ":"))))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
533
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 (defun ffap-fixup-machine (mach)
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
535 ;; Convert a hostname into an url, an ftp file name, or nil.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 (cond
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 ((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
538 ;; gopher.well.com
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 ((string-match "\\`gopher[-.]" mach) ; or "info"?
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 (concat "gopher://" mach "/"))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
541 ;; www.ncsa.uiuc.edu
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 ((and (string-match "\\`w\\(ww\\|eb\\)[-.]" mach))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 (concat "http://" mach "/"))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 ;; More cases? Maybe "telnet:" for archie?
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
545 (ffap-ftp-regexp (ffap-host-to-filename mach))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 ))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
548 (defvar ffap-newsgroup-regexp "^[a-z]+\\.[-+a-z_0-9.]+$"
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
549 "Strings not matching this fail `ffap-newsgroup-p'.")
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
550 (defvar ffap-newsgroup-heads ; entirely inadequate
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
551 '("alt" "comp" "gnu" "misc" "news" "sci" "soc" "talk")
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
552 "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
553
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 (defun ffap-newsgroup-p (string)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 "Return STRING if it looks like a newsgroup name, else nil."
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 (and
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 (string-match ffap-newsgroup-regexp string)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 (let ((htbs '(gnus-active-hashtb gnus-newsrc-hashtb gnus-killed-hashtb))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 (heads ffap-newsgroup-heads)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 htb ret)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 (while htbs
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 (setq htb (car htbs) htbs (cdr htbs))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 (condition-case nil
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 (progn
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 ;; errs: htb symbol may be unbound, or not a hash-table.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 ;; 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
567 (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
568 (intern-soft string (symbol-value htb))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 (setq ret string htbs nil))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
570 ;; If we made it this far, gnus is running, so ignore "heads":
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 (setq heads nil))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 (error nil)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 (or ret (not heads)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 (let ((head (string-match "\\`\\([a-z]+\\)\\." string)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 (and head (setq head (substring string 0 (match-end 1)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 (member head heads)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 (setq ret string))))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
578 ;; Is there ever a need to modify string as a newsgroup name?
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 ret)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
581 (defsubst ffap-url-p (string)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
582 "If STRING looks like an url, return it (maybe improved), else nil."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 (let ((case-fold-search t))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 (and ffap-url-regexp (string-match ffap-url-regexp string)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 ;; I lied, no improvement:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 string)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
588 ;; 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
589 (defsubst ffap-url-unwrap-local (url)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
590 "Return URL as a local file, or nil. Ignores `ffap-url-regexp'."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 (and (string-match "\\`\\(file\\|ftp\\):/?\\([^/]\\|\\'\\)" url)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 (substring url (1+ (match-end 1)))))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
593 (defsubst ffap-url-unwrap-remote (url)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
594 "Return URL as a remote file, or nil. Ignores `ffap-url-regexp'."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 (and (string-match "\\`\\(ftp\\|file\\)://\\([^:/]+\\):?\\(/.*\\)" url)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 (concat
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
597 (ffap-host-to-filename (substring url (match-beginning 2) (match-end 2)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 (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
599 ;; Test: (ffap-url-unwrap-remote "ftp://foo.com/bar.boz")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 (defun ffap-fixup-url (url)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
602 "Clean up URL and return it, maybe as a file name."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 (cond
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 ((not (stringp url)) nil)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 ((and ffap-url-unwrap-local (ffap-url-unwrap-local url)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 ((and ffap-url-unwrap-remote ffap-ftp-regexp
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 (ffap-url-unwrap-remote url)))
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
608 ((fboundp 'url-normalize-url) ; may autoload url (part of w3)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
609 (url-normalize-url url))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
610 (url)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
613 ;;; File Name Handling:
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 ;;
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
615 ;; The upcoming ffap-alist actions need various utilities to prepare
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
616 ;; and search directories. Too many features here.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
618 ;; (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
619 ;; (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
620 ;; "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
621 ;; (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
622 ;; (while inlist
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
623 ;; (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
624 ;; (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
625 ;; (cdr head)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 (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
628 "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
629 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
630 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
631 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
632 ;; 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
633 ;; "//" 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
634 ;; 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
635 ;; in ff-paths and bib-cite. The EMPTY arg may help mimic kpathsea.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (if (or empty (getenv env)) ; should return something
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (let ((start 0) match dir ret)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
638 (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
639 (while (setq match (string-match path-separator env start))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 (setq dir (substring env start match) start (1+ match))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 ;;(and (file-directory-p dir) (not (member dir ret)) ...)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 (setq ret (cons dir ret)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 (setq ret (nreverse ret))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 (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
645 (progn ; allow string or list here
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 (setcdr match (append (cdr-safe empty) (cdr match)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 (setcar match (or (car-safe empty) empty))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 ret)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (defun ffap-reduce-path (path)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
651 "Remove duplicates and non-directories from PATH list."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 (let (ret tem)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 (while path
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 (setq tem path path (cdr path))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
655 (if (equal (car tem) ".") (setcar tem ""))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 (or (member (car tem) ret)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 (not (file-directory-p (car tem)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 (progn (setcdr tem ret) (setq ret tem))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 (nreverse ret)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
661 (defun ffap-all-subdirs (dir &optional depth)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
662 "Return list all subdirectories under DIR, starting with itself.
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
663 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
664 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
665 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
666 (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
667 (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
668
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
669 (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
670 (setq depth (1- depth))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
671 (cons dir
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
672 (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
673 (apply 'nconc
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
674 (mapcar
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
675 (function
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
676 (lambda (d)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
677 (cond
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
678 ((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
679 ((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
680 (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
681 (directory-files dir t "\\`[^.]")
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
682 )))))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
683
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
684 (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
685 "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
686 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
687
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
688 (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
689 "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
690 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
691 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
692 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
693 (apply 'nconc
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
694 (mapcar
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
695 (function
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
696 (lambda (dir)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
697 (if (string-match "[^/]//\\'" dir)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
698 (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
699 (list dir))))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
700 path)))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
701
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
702 (defun ffap-locate-file (file &optional nosuffix path dir-ok)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
703 ;; The Emacs 20 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
704 ;; 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
705 ;; compression-suffixes search moved to 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
706 "A generic path-searching function, mimics `load' by default.
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
707 Returns path to file that \(load FILE\) would load, or nil.
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
708 Optional NOSUFFIX, if nil or t, is like the fourth argument
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
709 for load: whether to try the suffixes (\".elc\" \".el\" \"\").
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
710 If a nonempty list, it is a list of suffixes to try instead.
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
711 Optional PATH is a list of directories instead of `load-path'.
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
712 Optional DIR-OK means that returning a directory is allowed,
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
713 DIR-OK is already implicit if FILE looks like a directory.
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
714
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
715 This uses ffap-file-exists-string, which may try adding suffixes from
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
716 `ffap-compression-suffixes'."
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
717 (or path (setq path load-path))
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
718 (or dir-ok (setq dir-ok (equal "" (file-name-nondirectory file))))
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
719 (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
720 (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
721 file (file-name-nondirectory file)))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
722 (let ((suffixes-to-try
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
723 (cond
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
724 ((consp nosuffix) nosuffix)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
725 (nosuffix '(""))
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
726 (t '(".elc" ".el" ""))))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
727 suffixes try found)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
728 (while path
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
729 (setq suffixes suffixes-to-try)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
730 (while suffixes
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
731 (setq try (ffap-file-exists-string
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
732 (expand-file-name
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
733 (concat file (car suffixes)) (car path))))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
734 (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
735 (setq found try suffixes nil path nil)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
736 (setq suffixes (cdr suffixes))))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
737 (setq path (cdr path)))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
738 found))
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
739
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
740
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
741 ;;; Action List (`ffap-alist'):
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
742 ;;
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
743 ;; 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
744 ;; 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
745 ;; 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
746 ;; good example of featuritis. Trim this list for speed.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748 (defvar ffap-alist
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
749 '(
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
750 ("" . 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
751 ("\\.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
752 ("\\`info/" . ffap-info-2) ; info/emacs
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
753 ("\\`[-a-z]+\\'" . ffap-info-3) ; (emacs)Top [only in the parentheses]
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
754 ("\\.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
755 (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
756 ;; (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
757 (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
758 (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
759 (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
760 (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
761 ("\\.\\([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
762 (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
763 ("\\.[fF]\\'" . ffap-fortran-mode)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
764 (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
765 (latex-mode . ffap-latex-mode) ; similar
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
766 ("\\.\\(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
767 ("\\.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
768 ("\\`\\." . 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
769 ("\\`~/" . ffap-lcd) ; |~/misc/ffap.el.Z|
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
770 ("^[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
771 . 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
772 (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
773 )
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
774 "Alist of \(KEY . FUNCTION\) pairs parsed by `ffap-file-at-point'.
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
775 If string NAME at point (maybe \"\") is not a file or url, these pairs
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
776 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
777 KEY is a symbol, and it equals `major-mode', or
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
778 KEY is a string, it should matches NAME as a regexp.
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
779 On a match, \(FUNCTION NAME\) is called and should return a file, an
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
780 url, or nil. If nil, search the alist for further matches.")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 (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
783
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
784 ;; Example `ffap-alist' modifications:
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
785 ;;
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
786 ;; (setq ffap-alist ; remove a feature in `ffap-alist'
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
787 ;; (delete (assoc 'c-mode ffap-alist) ffap-alist))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
788 ;;
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
789 ;; (setq ffap-alist ; add something to `ffap-alist'
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
790 ;; (cons
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
791 ;; (cons "^YSN[0-9]+$"
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
792 ;; (defun ffap-ysn (name)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
793 ;; (concat
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
794 ;; "http://www.physics.uiuc.edu/"
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
795 ;; "ysn/httpd/htdocs/ysnarchive/issuefiles/"
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
796 ;; (substring name 3) ".html")))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
797 ;; ffap-alist))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
798
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
799
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
800 ;;; Action Definitions:
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
801 ;;
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
802 ;; 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
803
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
804 (defun ffap-completable (name)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
805 (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
806 (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
807 (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
808
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
809 (defun ffap-home (name) (ffap-locate-file name t '("~")))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
811 (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
812 (ffap-locate-file
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
813 name '("" ".info")
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
814 (or (ffap-soft-value "Info-directory-list")
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
815 (ffap-soft-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
816 )))
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
817
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
818 (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
819
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
820 (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
821 ;; 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
822 (and (equal (ffap-string-around) "()") (ffap-info name)))
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
823
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
824 (defun ffap-el (name) (ffap-locate-file name t))
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
825
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
826 (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
827 ;; 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
828 ;; 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
829 (and (not (string-match "\\.el\\'" name))
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
830 (ffap-locate-file name '(".el"))))
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
831
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
832 (defvar ffap-c-path
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
833 ;; 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
834 '("/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
835 (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
836 (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
837
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
838 (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
839
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
840 (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
841 (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
842
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
843 (defvar ffap-tex-path
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
844 t ; delayed initialization
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
845 "Path where `ffap-tex-mode' looks for tex files.
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
846 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
847
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
848 (defun ffap-tex-init nil
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
849 ;; 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
850 (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
851 ;; this may be slow, so say something
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
852 (message "Initializing ffap-tex-path ...")
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
853 (setq ffap-tex-path
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
854 (ffap-reduce-path
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
855 (cons
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
856 "."
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
857 (ffap-kpathsea-expand-path
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
858 (append
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
859 (ffap-list-env "TEXINPUTS")
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
860 ;; (ffap-list-env "BIBINPUTS")
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
861 (ffap-soft-value
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
862 "TeX-macro-global" ; AUCTeX
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
863 '("/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
864 "/usr/local/lib/tex/inputs")))))))))
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
865
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
866 (defun ffap-tex-mode (name)
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
867 (ffap-tex-init)
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
868 (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
869
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
870 (defun ffap-latex-mode (name)
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
871 (ffap-tex-init)
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
872 ;; only rare need for ""
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
873 (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
874
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
875 (defun ffap-tex (name)
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
876 (ffap-tex-init)
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
877 (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
878
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
879 (defvar ffap-bib-path
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
880 (ffap-list-env "BIBINPUTS"
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
881 (ffap-reduce-path
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
882 '(
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
883 ;; 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
884 "/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
885 "/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
886 ))))
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-bib (name)
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
889 (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
890
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
891 (defun ffap-dired (name)
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
892 (let ((pt (point)) dir try)
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
893 (save-excursion
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
894 (and (progn
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
895 (beginning-of-line)
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
896 (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
897 (re-search-backward "^ *$" nil t)
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
898 (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
899 (file-exists-p
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
900 (setq try
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
901 (expand-file-name
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
902 name
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
903 (buffer-substring
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
904 (match-beginning 1) (match-end 1)))))
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
905 try))))
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
906
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
907 ;; Maybe a "Lisp Code Directory" reference:
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
908 (defun ffap-lcd (name)
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
909 (and
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
910 (or
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
911 ;; lisp-dir-apropos output buffer:
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
912 (string-match "Lisp Code Dir" (buffer-name))
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
913 ;; 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
914 ;; or maybe the holy LCD-Datafile itself:
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
915 (member (ffap-string-around) '("||" "|\n")))
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
916 (concat
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
917 ;; lispdir.el may not be loaded yet:
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
918 (ffap-host-to-filename
17676
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
919 (ffap-soft-value "elisp-archive-host"
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
920 "archive.cis.ohio-state.edu"))
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
921 (file-name-as-directory
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
922 (ffap-soft-value "elisp-archive-directory"
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
923 "/pub/gnu/emacs/elisp-archive/"))
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
924 (substring name 2))))
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
925
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
926 (defvar ffap-rfc-path
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
927 (concat (ffap-host-to-filename "ds.internic.net") "/rfc/rfc%s.txt"))
17676
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 (defun ffap-rfc (name)
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
930 (format ffap-rfc-path
fcbe987b332a (ffap-alist): Delete `math-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 17635
diff changeset
931 (substring name (match-beginning 1) (match-end 1))))
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
932
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 ;;; At-Point Functions:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 (defvar ffap-string-at-point-mode-alist
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 '(
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
938 ;; The default, used when the `major-mode' is not found.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 ;; Slightly controversial decisions:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 ;; * strip trailing "@" and ":"
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 ;; * no commas (good for latex)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
942 (file "--:$+<>@-Z_a-z~" "<@" "@>;.,!?:")
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
943 ;; An url, or maybe a email/news message-id:
55999
73c87f418eba Fix for url mode alist to recognize patterns such as &<str>; as valid
Rajesh Vaidheeswarran <rv@gnu.org>
parents: 54183
diff changeset
944 (url "--:=&?$+@-Z_a-z~#,%;" "^A-Za-z0-9" ":;.,!?")
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
945 ;; Find a string that does *not* contain a colon:
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
946 (nocolon "--9$+<>@-Z_a-z~" "<@" "@>;.,!?")
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
947 ;; A machine:
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
948 (machine "-a-zA-Z0-9." "" ".")
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
949 ;; Mathematica paths: allow backquotes
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
950 (math-mode ",-:$+<>@-Z_a-z~`" "<" "@>;.,!?`:")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 )
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
952 "Alist of \(MODE CHARS BEG END\), where MODE is a symbol,
23352
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
953 possibly a major-mode name, or one of the symbol
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
954 `file', `url', `machine', and `nocolon'.
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
955 `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
956 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
957 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
958 3. Strip END chars after point from the end.")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 (defvar ffap-string-at-point nil
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 ;; 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
962 "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
963
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
964 (defun ffap-string-at-point (&optional mode)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
965 "Return a string of characters from around point.
23352
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
966 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
967 syntax parameters in `ffap-string-at-point-mode-alist'.
23352
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
968 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
969 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
970 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
971 (let* ((args
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
972 (cdr
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
973 (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
974 (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
975 (pt (point))
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
976 (str
54183
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
977 (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
978 (buffer-substring
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
979 (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
980 (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
981 (buffer-substring
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
982 (save-excursion
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
983 (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
984 (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
985 (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
986 (save-excursion
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
987 (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
988 (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
989 (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
990 (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
991 (setq ffap-string-at-point str)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (defun ffap-string-around nil
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 ;; 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
995 "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
996 Assumes the buffer has not changed."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 (save-excursion
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 (format "%c%c"
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 (progn
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 (goto-char (car ffap-string-at-point-region))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 (preceding-char)) ; maybe 0
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 (progn
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 (goto-char (nth 1 ffap-string-at-point-region))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 (following-char)) ; maybe 0
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 )))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1007 (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
1008 ;; Requested by MCOOK. Useful?
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1009 "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
1010 (interactive)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1011 (let ((str (ffap-string-at-point mode)))
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1012 (if (equal "" str)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1013 (message "No string found around point.")
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1014 (kill-new str)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1015 ;; 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
1016 (message "Copied to kill ring: %s" str))))
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1017
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018 (defun ffap-url-at-point nil
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1019 "Return url from around point if it exists, or nil."
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1020 ;; 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
1021 ;; 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
1022 ;; 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
1023 ;; ffap be less aggressive in such situations.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 (and
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 ffap-url-regexp
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 (or
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1027 ;; 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
1028 (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
1029 ;; interface recommended by wmperry:
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1030 (w3-view-this-url t))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 ;; 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
1032 (let ((name (ffap-string-at-point 'url)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 (cond
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 ((string-match "^url:" name) (setq name (substring name 4)))
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1035 ((and (string-match "\\`[^:</>@]+@[^:</>@]+[a-zA-Z0-9]\\'" name)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 ;; "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
1037 ;; 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
1038 ;; either, so consult `ffap-foo-at-bar-prefix'.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 (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
1040 ;; Expect some odd characters:
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 (string-match "[$.0-9].*[$.0-9].*@" name))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 ;; Could be news:
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1043 ffap-foo-at-bar-prefix
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 "mailto")))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 (and prefix (setq name (concat prefix ":" name))))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 ((ffap-newsgroup-p name) (setq name (concat "news:" name)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047 ((and (string-match "\\`[a-z0-9]+\\'" name) ; <mic> <root> <nobody>
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 (equal (ffap-string-around) "<>")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 ;; (ffap-user-p name):
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 (not (string-match "~" (expand-file-name (concat "~" name))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 )
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 (setq name (concat "mailto:" name)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 )
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 (and (ffap-url-p name) name)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 ))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 (defvar ffap-gopher-regexp
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 "^.*\\<\\(Type\\|Name\\|Path\\|Host\\|Port\\) *= *\\(.*\\) *$"
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 "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
1060 The two subexpressions are the KEY and VALUE.")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 (defun ffap-gopher-at-point nil
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063 "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
1064 ;; `gopher-parse-bookmark' from gopher.el is not so robust
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065 (save-excursion
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1066 (beginning-of-line)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1067 (if (looking-at ffap-gopher-regexp)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068 (progn
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1069 (while (and (looking-at ffap-gopher-regexp) (not (bobp)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070 (forward-line -1))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 (or (looking-at ffap-gopher-regexp) (forward-line 1))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 (let ((type "1") name path host (port "70"))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 (while (looking-at ffap-gopher-regexp)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 (let ((var (intern
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075 (downcase
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 (buffer-substring (match-beginning 1)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077 (match-end 1)))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 (val (buffer-substring (match-beginning 2)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079 (match-end 2))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1080 (set var val)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 (forward-line 1)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 (if (and path (string-match "^ftp:.*@" path))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 (concat "ftp://"
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084 (substring path 4 (1- (match-end 0)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085 (substring path (match-end 0)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 (and (= (length type) 1)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087 host;; (ffap-machine-p host)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088 (concat "gopher://" host
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 (if (equal port "70") "" (concat ":" port))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 "/" type path))))))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 (defvar ffap-ftp-sans-slash-regexp
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 (and
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 ffap-ftp-regexp
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1095 ;; Note: by now, we know it is not an url.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 ;; Icky regexp avoids: default: 123: foo::bar cs:pub
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 ;; It does match on: mic@cs: cs:/pub mathcs.emory.edu: (point at end)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 "\\`\\([^:@]+@[^:@]+:\\|[^@.:]+\\.[^@:]+:\\|[^:]+:[~/]\\)\\([^:]\\|\\'\\)")
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
1099 "Strings matching this are coerced to ftp file names by ffap.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 That is, ffap just prepends \"/\". Set to nil to disable.")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 (defun ffap-file-at-point nil
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 "Return filename from around point if it exists, or nil.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 Existence test is skipped for names that look remote.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 If the filename is not obvious, it also tries `ffap-alist',
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1106 which may actually result in an url rather than a filename."
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1107 ;; Note: this function does not need to look for url's, just
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 ;; filenames. On the other hand, it is responsible for converting
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
1109 ;; a pseudo-url "site.com://dir" to an ftp file name
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 (let* ((case-fold-search t) ; url prefixes are case-insensitive
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111 (data (match-data))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1112 (string (ffap-string-at-point)) ; uses mode alist
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 (name
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1114 (or (condition-case nil
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1115 (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
1116 (substitute-in-file-name string))
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1117 (error nil))
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1118 string))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119 (abs (file-name-absolute-p name))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120 (default-directory default-directory))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121 (unwind-protect
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 (cond
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123 ;; Immediate rejects (/ and // are too common in C++):
24312
24ffa91626d3 (ffap-file-at-point): Test local file names
Richard M. Stallman <rms@gnu.org>
parents: 23443
diff changeset
1124 ((member name '("" "/" "//" ".")) nil)
24ffa91626d3 (ffap-file-at-point): Test local file names
Richard M. Stallman <rms@gnu.org>
parents: 23443
diff changeset
1125 ;; 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
1126 ;; 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
1127 ((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
1128 ;; 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
1129 ((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
1130 (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
1131 ;; 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
1132 ;; 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
1133 ((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
1134 (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
1135 (ffap-file-exists-string (substring name (match-end 0)))))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 ;; Accept remote names without actual checking (too slow):
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 ((if abs
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 (ffap-file-remote-p name)
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
1139 ;; Try adding a leading "/" (common omission in ftp file names):
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 (and
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 ffap-ftp-sans-slash-regexp
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 (string-match ffap-ftp-sans-slash-regexp name)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 (ffap-file-remote-p (concat "/" name)))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 ;; Ok, not remote, try the existence test even if it is absolute:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 ((and abs (ffap-file-exists-string name)))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1146 ;; 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
1147 ((and (string-match path-separator name)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1148 (setq name (ffap-string-at-point 'nocolon))
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1149 (ffap-file-exists-string name)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 ;; File does not exist, try the alist:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 ((let ((alist ffap-alist) tem try case-fold-search)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 (while (and alist (not try))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 (setq tem (car alist) alist (cdr alist))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 (if (or (eq major-mode (car tem))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 (and (stringp (car tem))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 (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
1157 (and (setq try
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1158 (condition-case nil
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1159 (funcall (cdr tem) name)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1160 (error nil)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 (setq try (or
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 (ffap-url-p try) ; not a file!
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 (ffap-file-remote-p try)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (ffap-file-exists-string try))))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 try))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 ;; Alist failed? Try to guess an active remote connection
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 ;; from buffer variables, and try once more, both as an
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
1168 ;; absolute and relative file name on that remote host.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 ((let* (ffap-rfs-regexp ; suppress
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 (remote-dir
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 (cond
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 ((ffap-file-remote-p default-directory))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 ((and (eq major-mode 'internal-ange-ftp-mode)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 (string-match "^\\*ftp \\(.*\\)@\\(.*\\)\\*$"
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 (buffer-name)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 (concat "/" (substring (buffer-name) 5 -1) ":"))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177 ;; This is too often a bad idea:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 ;;((and (eq major-mode 'w3-mode)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 ;; (stringp url-current-server))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 ;; (host-to-ange-path url-current-server))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 )))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 (and remote-dir
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 (or
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184 (and (string-match "\\`\\(/?~?ftp\\)/" name)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 (ffap-file-exists-string
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
1186 (ffap-replace-file-component
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 remote-dir (substring name (match-end 1)))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 (ffap-file-exists-string
49808
6a37bab32791 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49694
diff changeset
1189 (ffap-replace-file-component remote-dir name))))))
54106
9aa83ff74ef0 (ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53313
diff changeset
1190 ;; 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
1191 ;; 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
1192 ((let ((dir name))
9aa83ff74ef0 (ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53313
diff changeset
1193 (while (and dir
9aa83ff74ef0 (ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53313
diff changeset
1194 (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
1195 (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
1196 (directory-file-name dir)))))))
9aa83ff74ef0 (ffap-file-at-point): Try parent directories.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53313
diff changeset
1197 (ffap-file-exists-string dir)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 )
21155
5df2a690a85f (ffap-file-at-point): store-match-data => set-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 18486
diff changeset
1199 (set-match-data data))))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1201 ;;; Prompting (`ffap-read-file-or-url'):
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1203 ;; 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
1204 ;; 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
1205 ;; 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
1206 ;; `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
1207 ;; contents before attempting to complete filenames.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209 (defun ffap-read-file-or-url (prompt guess)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1210 "Read file or url from minibuffer, with PROMPT and initial GUESS."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 (or guess (setq guess default-directory))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1212 (let (dir)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 ;; Tricky: guess may have or be a local directory, like "w3/w3.elc"
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 ;; 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
1215 (or (ffap-url-p guess)
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 (progn
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 (or (ffap-file-remote-p guess)
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1218 (setq guess
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1219 (abbreviate-file-name (expand-file-name guess))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1220 ))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 (setq dir (file-name-directory guess))))
22659
8dda497e707d (ffap-read-file-or-url): Bind minibuffer-completing-file-name to t.
Richard M. Stallman <rms@gnu.org>
parents: 22282
diff changeset
1222 (let ((minibuffer-completing-file-name t))
8dda497e707d (ffap-read-file-or-url): Bind minibuffer-completing-file-name to t.
Richard M. Stallman <rms@gnu.org>
parents: 22282
diff changeset
1223 (setq guess
8dda497e707d (ffap-read-file-or-url): Bind minibuffer-completing-file-name to t.
Richard M. Stallman <rms@gnu.org>
parents: 22282
diff changeset
1224 (completing-read
8dda497e707d (ffap-read-file-or-url): Bind minibuffer-completing-file-name to t.
Richard M. Stallman <rms@gnu.org>
parents: 22282
diff changeset
1225 prompt
8dda497e707d (ffap-read-file-or-url): Bind minibuffer-completing-file-name to t.
Richard M. Stallman <rms@gnu.org>
parents: 22282
diff changeset
1226 'ffap-read-file-or-url-internal
8dda497e707d (ffap-read-file-or-url): Bind minibuffer-completing-file-name to t.
Richard M. Stallman <rms@gnu.org>
parents: 22282
diff changeset
1227 dir
8dda497e707d (ffap-read-file-or-url): Bind minibuffer-completing-file-name to t.
Richard M. Stallman <rms@gnu.org>
parents: 22282
diff changeset
1228 nil
53313
89450ca4c47e (ffap-read-file-or-url): Revert previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53261
diff changeset
1229 (if dir (cons guess (length dir)) guess)
22659
8dda497e707d (ffap-read-file-or-url): Bind minibuffer-completing-file-name to t.
Richard M. Stallman <rms@gnu.org>
parents: 22282
diff changeset
1230 (list 'file-name-history))))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1231 ;; 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
1232 (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
1233 ;; 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
1234 ;; 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
1235 guess))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 (defun ffap-read-url-internal (string dir action)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1238 "Complete url's from history, treating given string as valid."
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1239 (let ((hist (ffap-soft-value "url-global-history-hash-table")))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 (cond
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 ((not action)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 (or (try-completion string hist) string))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243 ((eq action t)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 (or (all-completions string hist) (list string)))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1245 ;; 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
1246 ;; valid "match". Let us always say yes.
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1247 (t t))))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249 (defun ffap-read-file-or-url-internal (string dir action)
30687
34027013888a (ffap-read-file-or-url-internal): Handle case the
Gerd Moellmann <gerd@gnu.org>
parents: 29203
diff changeset
1250 (unless dir
34027013888a (ffap-read-file-or-url-internal): Handle case the
Gerd Moellmann <gerd@gnu.org>
parents: 29203
diff changeset
1251 (setq dir default-directory))
34027013888a (ffap-read-file-or-url-internal): Handle case the
Gerd Moellmann <gerd@gnu.org>
parents: 29203
diff changeset
1252 (unless string
34027013888a (ffap-read-file-or-url-internal): Handle case the
Gerd Moellmann <gerd@gnu.org>
parents: 29203
diff changeset
1253 (setq string default-directory))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 (if (ffap-url-p string)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 (ffap-read-url-internal string dir action)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 (read-file-name-internal string dir action)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1258 ;; 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
1259 ;; 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
1260 ;;
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1261 ;; 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
1262 ;; will do filename style completion.
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1263
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1264 (defun ffap-complete-as-file-p nil
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1265 ;; Will `minibuffer-completion-table' complete the minibuffer
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1266 ;; 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
1267 ;; 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
1268 (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
1269 (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
1270 (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
1271
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 (and
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1273 (featurep 'complete)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1274 (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
1275 ;; 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
1276 (setq PC-completion-as-file-name-predicate 'ffap-complete-as-file-p)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1277
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1278
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1279 ;;; Highlighting (`ffap-highlight'):
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280 ;;
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 ;; Based on overlay highlighting in Emacs 19.28 isearch.el.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282
29203
004bedde23fc (ffap-menu-text-plist): Use display-mouse-p, not window-system.
Eli Zaretskii <eliz@gnu.org>
parents: 29117
diff changeset
1283 (defvar ffap-highlight t
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 "If non-nil, ffap highlights the current buffer substring.")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1286 (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
1287 "Overlay used by `ffap-highlight'.")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 (defun ffap-highlight (&optional remove)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1290 "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
1291 That is, the last buffer substring found by `ffap-string-at-point'.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292 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
1293 Uses the face `ffap' if it is defined, or else `highlight'."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294 (cond
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1295 (remove
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1296 (and ffap-highlight-overlay
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1297 (delete-overlay ffap-highlight-overlay))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1298 )
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1299 ((not ffap-highlight) nil)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1300 (ffap-highlight-overlay
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1301 (move-overlay
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1302 ffap-highlight-overlay
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1303 (car ffap-string-at-point-region)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1304 (nth 1 ffap-string-at-point-region)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1305 (current-buffer)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1306 (t
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1307 (setq ffap-highlight-overlay
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1308 (apply 'make-overlay ffap-string-at-point-region))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1309 (overlay-put ffap-highlight-overlay 'face
29117
9906c04b247b (ffap-highlight): Use facep rather than internal-find-face.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29115
diff changeset
1310 (if (facep 'ffap) 'ffap 'highlight)))))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1311
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1312
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1313 ;;; Main Entrance (`find-file-at-point' == `ffap'):
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1315 (defun ffap-guesser nil
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1316 "Return file or URL or nil, guessed from text around point."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1317 (or (and ffap-url-regexp
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1318 (ffap-fixup-url (or (ffap-url-at-point)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1319 (ffap-gopher-at-point))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1320 (ffap-file-at-point) ; may yield url!
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1321 (ffap-fixup-machine (ffap-machine-at-point))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1323 (defun ffap-prompter (&optional guess)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1324 ;; 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
1325 ;; Extra complication for the temporary highlighting.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326 (unwind-protect
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1327 ;; 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
1328 ;; 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
1329 (catch 'ffap-prompter
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1330 (ffap-read-file-or-url
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1331 (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
1332 (prog1
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1333 (setq guess (or guess (ffap-guesser))) ; using ffap-alist here
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1334 (and guess (ffap-highlight))
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1335 )))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336 (ffap-highlight t)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1337
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1338 ;;;###autoload
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1339 (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
1340 "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
1341 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
1342 With a prefix, this command behaves exactly like `ffap-file-finder'.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 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
1344 See also the variables `ffap-dired-wildcards', `ffap-newfile-prompt',
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1345 and the functions `ffap-file-at-point' and `ffap-url-at-point'.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1347 See <ftp://ftp.mathcs.emory.edu/pub/mic/emacs/> for latest version."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348 (interactive)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 (if (and (interactive-p)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 (if ffap-require-prefix (not current-prefix-arg)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 current-prefix-arg))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 ;; 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
1353 (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
1354 (call-interactively ffap-file-finder))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 (or filename (setq filename (ffap-prompter)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356 (cond
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357 ((ffap-url-p filename)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1358 (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
1359 (funcall ffap-url-fetcher filename)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 ;; This junk more properly belongs in a modified ffap-file-finder:
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1361 ((and ffap-dired-wildcards
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1362 (string-match ffap-dired-wildcards filename))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 (dired filename))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 ((or (not ffap-newfile-prompt)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 (file-exists-p filename)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 (y-or-n-p "File does not exist, create buffer? "))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 (funcall ffap-file-finder
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 ;; expand-file-name fixes "~/~/.emacs" bug sent by CHUCKR.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 (expand-file-name filename)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 ;; User does not want to find a non-existent file:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 ((signal 'file-error (list "Opening file buffer"
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372 "no such file or directory"
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 filename))))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1375 ;; 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
1376 ;;;###autoload
f29db3d22988 (ffap): Don't hide it behind the autoload-cookie.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 43174
diff changeset
1377 (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
1378
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1380 ;;; Menu support (`ffap-menu'):
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1381
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382 (defvar ffap-menu-regexp nil
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1383 "*If non-nil, overrides `ffap-next-regexp' during `ffap-menu'.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 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
1385 For example, try \":/\" for URL (and some ftp) references.")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 (defvar ffap-menu-alist nil
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1388 "Buffer local cache of menu presented by `ffap-menu'.")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 (make-variable-buffer-local 'ffap-menu-alist)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1391 (defvar ffap-menu-text-plist
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1392 (cond
29203
004bedde23fc (ffap-menu-text-plist): Use display-mouse-p, not window-system.
Eli Zaretskii <eliz@gnu.org>
parents: 29117
diff changeset
1393 ((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
1394 (t nil))
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1395 "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
1396 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
1397
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 ;;;###autoload
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 (defun ffap-menu (&optional rescan)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1400 "Put up a menu of files and urls mentioned in this buffer.
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1401 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
1402 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
1403 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
1404 a rebuild. Searches with `ffap-menu-regexp'."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1405 (interactive "P")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 ;; (require 'imenu) -- no longer used, but roughly emulated
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407 (if (or (not ffap-menu-alist) rescan
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 ;; or if the first entry is wrong:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1409 (and ffap-menu-alist
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1410 (let ((first (car ffap-menu-alist)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 (save-excursion
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 (goto-char (cdr first))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 (not (equal (car first) (ffap-guesser)))))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414 (ffap-menu-rescan))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 ;; Tail recursive:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416 (ffap-menu-ask
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 (if ffap-url-regexp "Find file or URL" "Find file")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1418 (cons (cons "*Rescan Buffer*" -1) ffap-menu-alist)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419 'ffap-menu-cont))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1420
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1421 (defun ffap-menu-cont (choice) ; continuation of ffap-menu
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1422 (if (< (cdr choice) 0)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1423 (ffap-menu t) ; *Rescan*
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1424 (push-mark)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1425 (goto-char (cdr choice))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1426 ;; Momentary highlight:
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1427 (unwind-protect
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1428 (progn
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1429 (and ffap-highlight (ffap-guesser) (ffap-highlight))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1430 (sit-for 0) ; display
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1431 (find-file-at-point (car choice)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1432 (ffap-highlight t))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1434 (defun ffap-menu-ask (title alist cont)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1435 "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
1436 Arguments are TITLE, ALIST, and CONT \(a continuation function\).
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1437 This uses either a menu or the minibuffer depending on invocation.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1438 The TITLE string is used as either the prompt or menu title.
23352
0550057ebca1 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 22659
diff changeset
1439 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
1440 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
1441 ;; 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
1442 ;; 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
1443 ;; 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
1444 (let (choice)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1445 (cond
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1446 ;; Emacs mouse:
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1447 ((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
1448 (setq choice
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1449 (x-popup-menu
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1450 t
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1451 (list "" (cons title
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1452 (mapcar (function (lambda (i) (cons (car i) i)))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1453 alist))))))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1454 ;; minibuffer with completion buffer:
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1455 (t
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1456 (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
1457 ;; 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
1458 (setq choice
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1459 (completing-read
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1460 (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
1461 alist nil t
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1462 ;; (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
1463 nil)))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1464 (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
1465 ;; Convert string to its entry, or else the default:
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1466 (setq choice (or (assoc choice alist) (car alist))))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1467 )
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1468 (if choice
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1469 (funcall cont choice)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1470 (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
1471 nil)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1472
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 (defun ffap-menu-rescan nil
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1474 "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
1475 Applies `ffap-menu-text-plist' text properties at all matches."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1476 (interactive)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1477 (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
1478 (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
1479 (mod (buffer-modified-p)) ; was buffer modified?
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1480 buffer-read-only ; 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
1481 item
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1482 ;; Avoid repeated searches of the *mode-alist:
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1483 (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
1484 major-mode
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1485 'file)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1486 (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
1487 (unwind-protect
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1488 (save-excursion
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1489 (goto-char (point-min))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1490 (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
1491 (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
1492 (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
1493 ffap-menu-text-plist)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1494 (message "Scanning...%2d%% <%s>"
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1495 (/ (* 100 (- (point) (point-min))) range) item)))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1496 (or mod (set-buffer-modified-p nil))))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1497 (message "Scanning...done")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 ;; Remove duplicates.
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1499 (setq ffap-menu-alist ; sort by item
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1500 (sort ffap-menu-alist
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1501 (function
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502 (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
1503 (let ((ptr ffap-menu-alist)) ; remove duplicates
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1504 (while (cdr ptr)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1505 (if (equal (car (car ptr)) (car (car (cdr ptr))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1506 (setcdr ptr (cdr (cdr ptr)))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1507 (setq ptr (cdr ptr)))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1508 (setq ffap-menu-alist ; sort by position
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1509 (sort ffap-menu-alist
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1510 (function
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1511 (lambda (a b) (< (cdr a) (cdr b)))))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1512
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1513
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1514 ;;; Mouse Support (`ffap-at-mouse'):
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1515 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1516 ;; See the suggested binding in ffap-bindings (near eof).
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1517
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1518 (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
1519 "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
1520 Ignored when `ffap-at-mouse' is called programmatically.")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1521 (put 'ffap-at-mouse-fallback 'risky-local-variable t)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1522
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1523 ;;;###autoload
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1524 (defun ffap-at-mouse (e)
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1525 "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
1526 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
1527 Return value:
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1528 * 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
1529 * if the fallback is called, return whatever it returns
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1530 * otherwise, nil"
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1531 (interactive "e")
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1532 (let ((guess
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1533 ;; Maybe less surprising without the save-excursion?
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1534 (save-excursion
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535 (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
1536 ;; 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
1537 ;; to tell that the click was beyond the end of current line?
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1538 (ffap-guesser))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1539 (cond
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1540 (guess
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1541 (set-buffer (ffap-event-buffer e))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1542 (ffap-highlight)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1543 (unwind-protect
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1544 (progn
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1545 (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
1546 (message "Finding `%s'" guess)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1547 (find-file-at-point guess)
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1548 guess) ; success: return non-nil
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1549 (ffap-highlight t)))
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1550 ((interactive-p)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1551 (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
1552 (call-interactively ffap-at-mouse-fallback)
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1553 (message "No file or url found at mouse click.")
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1554 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
1555 ;; failure: return nil
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1556 )))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1557
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1558
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1559 ;;; ffap-other-* commands:
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1560 ;;
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1561 ;; Requested by KPC.
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1562
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1563 ;; 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
1564 ;; 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
1565 ;; So instead, we just fake it with a slow save-window-excursion.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1566
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1567 (defun ffap-other-window nil
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1568 "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
1569 Only intended for interactive use."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1570 (interactive)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1571 (switch-to-buffer-other-window
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1572 (save-window-excursion (call-interactively 'ffap) (current-buffer))))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1573
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1574 (defun ffap-other-frame nil
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1575 "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
1576 Only intended for interactive use."
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1577 (interactive)
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1578 ;; Extra code works around dedicated windows (noted by JENS, 7/96):
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1579 (let* ((win (selected-window)) (wdp (window-dedicated-p win)))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1580 (unwind-protect
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1581 (progn
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1582 (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
1583 (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
1584 (save-window-excursion
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1585 (call-interactively 'ffap)
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1586 (current-buffer))))
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1587 (set-window-dedicated-p win wdp))))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1588
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1589
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1590 ;;; Bug Reporter:
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1591
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1592 (defun ffap-bug nil
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1593 "Submit a bug report for the ffap package."
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1594 ;; Important: keep the version string here in synch with that at top
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1595 ;; of file! Could use lisp-mnt from Emacs 19, but that would depend
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1596 ;; on being able to find the ffap.el source file.
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1597 (interactive)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1598 (require 'reporter)
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1599 (let ((reporter-prompt-for-summary-p t))
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1600 (reporter-submit-bug-report
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1601 "Michelangelo Grigni <mic@mathcs.emory.edu>"
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1602 "ffap"
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1603 (mapcar 'intern (all-completions "ffap-" obarray 'boundp)))))
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1604
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1605 (fset 'ffap-submit-bug 'ffap-bug) ; another likely name
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1606
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1607
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1608 ;;; Hooks for Gnus, VM, Rmail:
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1609 ;;
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1610 ;; 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
1611 ;; bindings you would prefer.
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1612
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1613 (defun ffap-ro-mode-hook nil
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1614 "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
1615 (local-set-key "\M-l" 'ffap-next)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1616 (local-set-key "\M-m" 'ffap-menu)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1617 )
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1618
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1619 (defun ffap-gnus-hook nil
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1620 "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
1621 (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
1622 ;; Note "l", "L", "m", "M" are taken:
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1623 (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
1624 (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
1625
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1626 (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
1627 (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
1628 (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
1629 ;; 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
1630 ;; 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
1631 ;; 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
1632 (let ((sb (window-buffer (selected-window))))
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1633 (gnus-configure-windows 'article)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1634 (pop-to-buffer gnus-article-buffer)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1635 (widen)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1636 ;; 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
1637 (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
1638 (unwind-protect
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1639 (eval form)
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1640 (pop-to-buffer sb))))
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1641
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1642 (defun ffap-gnus-next nil
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1643 "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
1644 (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
1645
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1646 (defun ffap-gnus-menu nil
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1647 "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
1648 (interactive) (ffap-gnus-wrapper '(ffap-menu)))
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1649
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1650
21815
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1651 (defcustom dired-at-point-require-prefix nil
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1652 "*If set, reverses the prefix argument to `dired-at-point'.
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1653 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
1654 ffap most of the time."
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1655 :type 'boolean
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1656 :group 'ffap
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1657 :version "20.3")
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1658
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1659 ;;;###autoload
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1660 (defun dired-at-point (&optional filename)
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1661 "Start Dired, defaulting to file at point. See `ffap'."
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1662 (interactive)
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1663 (if (and (interactive-p)
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1664 (if dired-at-point-require-prefix
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1665 (not current-prefix-arg)
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1666 current-prefix-arg))
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1667 (let (current-prefix-arg) ; already interpreted
22214
daca88de8a78 (dired-at-point): Eliminate var dired-function; use `dired'.
Richard M. Stallman <rms@gnu.org>
parents: 21816
diff changeset
1668 (call-interactively 'dired))
21815
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1669 (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
1670 (cond
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1671 ((ffap-url-p filename)
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1672 (funcall ffap-url-fetcher filename))
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1673 ((and ffap-dired-wildcards
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1674 (string-match ffap-dired-wildcards filename))
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1675 (dired filename))
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1676 ((file-exists-p filename)
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1677 (if (file-directory-p filename)
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1678 (dired (expand-file-name filename))
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1679 (dired (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
1680 ((and (file-writable-p
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1681 (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
1682 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
1683 (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
1684 (make-directory filename)
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1685 (dired filename))
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1686 ((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
1687
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1688 (defun dired-at-point-prompter (&optional guess)
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1689 ;; 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
1690 ;; Extra complication for the temporary highlighting.
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1691 (unwind-protect
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1692 (ffap-read-file-or-url
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1693 (if ffap-url-regexp "Dired file or URL: " "Dired file: ")
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1694 (prog1
54183
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1695 (setq guess (or guess
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1696 (let ((guess (ffap-guesser)))
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1697 (if (or (not guess)
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1698 (ffap-url-p guess)
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1699 (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
1700 guess
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1701 (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
1702 (expand-file-name guess)))
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1703 (cond
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1704 ;; 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
1705 ((file-directory-p guess)
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1706 (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
1707 ;; 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
1708 ((file-regular-p guess)
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1709 (file-name-directory guess))
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1710 (guess))))
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1711 ))
b91c8ab75b81 (dired-at-point): Additional writability test for relative directory names.
Juri Linkov <juri@jurta.org>
parents: 54106
diff changeset
1712 (and guess (ffap-highlight))))
21815
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1713 (ffap-highlight t)))
e3c8e2bb08b9 (dired-at-point): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 21155
diff changeset
1714
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1715 ;;; Offer default global bindings (`ffap-bindings'):
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1716
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1717 (defvar ffap-bindings
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1718 '(
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1719 (global-set-key [S-mouse-3] 'ffap-at-mouse)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1720 (global-set-key [C-S-mouse-3] 'ffap-menu)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1721 (global-set-key "\C-x\C-f" 'find-file-at-point)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1722 (global-set-key "\C-x4f" 'ffap-other-window)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1723 (global-set-key "\C-x5f" 'ffap-other-frame)
22282
95a8d00b0c5c (ffap-bindings): Fix the dired-at-point binding.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1724 (global-set-key "\C-xd" 'dired-at-point)
18486
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1725 (add-hook 'gnus-summary-mode-hook 'ffap-gnus-hook)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1726 (add-hook 'gnus-article-mode-hook 'ffap-gnus-hook)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1727 (add-hook 'vm-mode-hook 'ffap-ro-mode-hook)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1728 (add-hook 'rmail-mode-hook 'ffap-ro-mode-hook)
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1729 ;; (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
1730 )
83ff1ecdb0e3 XEmacs compatibility hacks cleaned up.
Karl Heuer <kwzh@gnu.org>
parents: 18291
diff changeset
1731 "List of binding forms evaluated by function `ffap-bindings'.
35096
fd0085875bc0 (ffap-bindings): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 34867
diff changeset
1732 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
1733 (ffap-bindings)
18291
130a48e6cc13 (ffap-soft-value): Make this a function again; the macro
Karl Heuer <kwzh@gnu.org>
parents: 17676
diff changeset
1734 Of course if you do not like these bindings, just roll your own!")
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1735
34867
e701bc3564db (ffap-bindings): Make interactive and add an autoload cookie.
Eli Zaretskii <eliz@gnu.org>
parents: 30687
diff changeset
1736 ;;;###autoload
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1737 (defun ffap-bindings nil
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1738 "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
1739 (interactive)
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1740 (eval (cons 'progn ffap-bindings)))
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1741
14874
cecaaaec6fd6 Doc fixes. Reorganized. Retired v18 support.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1742
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 50042
diff changeset
1743
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 50042
diff changeset
1744 ;;; arch-tag: 9dd3e88a-5dec-4607-bd57-60ae9ede8ebc
13531
b4d9bb7adf24 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1745 ;;; ffap.el ends here