annotate lisp/emacs-lisp/find-func.el @ 55434:f88632e54afb

2004-05-08 John Wiegley <johnw@newartisans.com> * iswitchb.el (iswitchb-use-virtual-buffers): Added support for "virtual buffers" (off by default), which makes it possible to switch to the buffers of recently files. When a buffer name search fails, and this option is on, iswitchb will look at the list of recently visited files, and permit matching against those names. When the user hits RET on a match, it will revisit that file. (iswitchb-read-buffer): Added two optional arguments, which makes isearchb.el possible. (iswitchb-completions, iswitchb-set-matches, iswitchb-prev-match, iswitchb-next-match): Added support for virtual buffers.
author John Wiegley <johnw@newartisans.com>
date Sat, 08 May 2004 13:00:52 +0000
parents 7fc34677dcb8
children 212733e53508 4c90ffeb71c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
1 ;;; find-func.el --- find the definition of the Emacs Lisp function near point
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
2
55231
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
3 ;; Copyright (C) 1997, 1999, 2001, 2004 Free Software Foundation, Inc.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
4
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
5 ;; Author: Jens Petersen <petersen@kurims.kyoto-u.ac.jp>
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
6 ;; Maintainer: petersen@kurims.kyoto-u.ac.jp
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
7 ;; Keywords: emacs-lisp, functions, variables
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
8 ;; Created: 97/07/25
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
9
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
11
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
15 ;; any later version.
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
16
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
21
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
25 ;; Boston, MA 02111-1307, USA.
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
26
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
28 ;;
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
29 ;; The funniest thing about this is that I can't imagine why a package
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
30 ;; so obviously useful as this hasn't been written before!!
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
31 ;; ;;; find-func
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
32 ;; (find-function-setup-keys)
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
33 ;;
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
34 ;; or just:
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
35 ;;
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
36 ;; (load "find-func")
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
37 ;;
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
38 ;; if you don't like the given keybindings and away you go! It does
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
39 ;; pretty much what you would expect, putting the cursor at the
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
40 ;; definition of the function or variable at point.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
41 ;;
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
42 ;; The code started out from `describe-function', `describe-key'
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
43 ;; ("help.el") and `fff-find-loaded-emacs-lisp-function' (Noah Friedman's
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
44 ;; "fff.el").
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
45
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 33198
diff changeset
46 ;;; Code:
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
47
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
48 (require 'loadhist)
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
49
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
50 ;;; User variables:
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
51
20962
54413501e4a9 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20184
diff changeset
52 (defgroup find-function nil
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
53 "Finds the definition of the Emacs Lisp symbol near point."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
54 ;; :prefix "find-function"
20962
54413501e4a9 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20184
diff changeset
55 :group 'lisp)
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
56
45326
892ea515fb3a (find-function-search-for-symbol): Find funs defined with defun-cvs-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45257
diff changeset
57 (defconst find-function-space-re "\\(?:\\s-\\|\n\\|;.*\n\\)+")
892ea515fb3a (find-function-search-for-symbol): Find funs defined with defun-cvs-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45257
diff changeset
58
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
59 (defcustom find-function-regexp
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
60 ;; Match things like (defun foo ...), (defmacro foo ...),
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
61 ;; (define-skeleton foo ...), (define-generic-mode 'foo ...),
26558
2daba92c1033 (find-function-regexp): Use `define-minor-mode' after easy-menu
Dave Love <fx@gnu.org>
parents: 25424
diff changeset
62 ;; (define-derived-mode foo ...), (define-minor-mode foo)
45326
892ea515fb3a (find-function-search-for-symbol): Find funs defined with defun-cvs-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45257
diff changeset
63 (concat
892ea515fb3a (find-function-search-for-symbol): Find funs defined with defun-cvs-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45257
diff changeset
64 "^\\s-*(\\(def\\(ine-skeleton\\|ine-generic-mode\\|ine-derived-mode\\|\
38557
cda1a73acb68 (find-function-regexp): Add
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
65 \[^cgv\W]\\w+\\*?\\)\\|define-minor-mode\
45326
892ea515fb3a (find-function-search-for-symbol): Find funs defined with defun-cvs-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45257
diff changeset
66 \\|easy-mmode-define-global-mode\\)" find-function-space-re
892ea515fb3a (find-function-search-for-symbol): Find funs defined with defun-cvs-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45257
diff changeset
67 "\\('\\|\(quote \\)?%s\\(\\s-\\|$\\|\(\\|\)\\)")
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
68 "The regexp used by `find-function' to search for a function definition.
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
69 Note it must contain a `%s' at the place where `format'
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
70 should insert the function name. The default value avoids `defconst',
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
71 `defgroup', `defvar'.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
72
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
73 Please send improvements and fixes to the maintainer."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
74 :type 'regexp
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
75 :group 'find-function
26558
2daba92c1033 (find-function-regexp): Use `define-minor-mode' after easy-menu
Dave Love <fx@gnu.org>
parents: 25424
diff changeset
76 :version "21.1")
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
77
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
78 (defcustom find-variable-regexp
45326
892ea515fb3a (find-function-search-for-symbol): Find funs defined with defun-cvs-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45257
diff changeset
79 (concat"^\\s-*(def[^umag]\\(\\w\\|\\s_\\)+\\*?" find-function-space-re "%s\\(\\s-\\|$\\)")
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
80 "The regexp used by `find-variable' to search for a variable definition.
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
81 It should match right up to the variable name. The default value
33155
02b0153b79a7 (find-variable-regexp): Avoid defgroup.
Dave Love <fx@gnu.org>
parents: 32226
diff changeset
82 avoids `defun', `defmacro', `defalias', `defadvice', `defgroup'.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
83
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
84 Please send improvements and fixes to the maintainer."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
85 :type 'regexp
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
86 :group 'find-function
32226
2af46c6c8bde (find-function-regexp): Remove spurion.
Dave Love <fx@gnu.org>
parents: 26593
diff changeset
87 :version "21.1")
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
88
20962
54413501e4a9 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20184
diff changeset
89 (defcustom find-function-source-path nil
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
90 "The default list of directories where `find-function' searches.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
91
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
92 If this variable is nil then `find-function' searches `load-path' by
20962
54413501e4a9 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20184
diff changeset
93 default."
54413501e4a9 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20184
diff changeset
94 :type '(repeat directory)
54413501e4a9 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20184
diff changeset
95 :group 'find-function)
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
96
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
97 (defcustom find-function-recenter-line 1
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
98 "The window line-number from which to start displaying a symbol definition.
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
99 A value of nil implies center the beginning of the definition.
47298
c6dddb2746ee * emacs-lisp/cl-indent.el (extended-loop-p): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents: 47255
diff changeset
100 See `find-function' and `find-variable'."
c6dddb2746ee * emacs-lisp/cl-indent.el (extended-loop-p): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents: 47255
diff changeset
101 :type '(choice (const :tag "Center" nil)
c6dddb2746ee * emacs-lisp/cl-indent.el (extended-loop-p): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents: 47255
diff changeset
102 integer)
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
103 :group 'find-function
23100
043247d0ced9 Fix :version tags to have a string value, not a float.
Andreas Schwab <schwab@suse.de>
parents: 22867
diff changeset
104 :version "20.3")
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
105
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
106 (defcustom find-function-after-hook nil
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
107 "Hook run after finding symbol definition.
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
108
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
109 See the functions `find-function' and `find-variable'."
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
110 :group 'find-function
23100
043247d0ced9 Fix :version tags to have a string value, not a float.
Andreas Schwab <schwab@suse.de>
parents: 22867
diff changeset
111 :version "20.3")
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
112
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
113 ;;; Functions:
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
114
47345
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
115 (defun find-library-suffixes ()
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
116 (let ((suffixes nil))
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
117 (dolist (suffix load-suffixes (nreverse suffixes))
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
118 (unless (string-match "elc" suffix) (push suffix suffixes)))))
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
119
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
120 (defun find-library-name (library)
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
121 "Return the full name of the elisp source of LIBRARY."
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
122 ;; If the library is byte-compiled, try to find a source library by
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
123 ;; the same name.
47610
8a24f7edde82 (find-library-name): Correctly find "f.el.gz" from "f.elc" or "f.elc.gz".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47447
diff changeset
124 (if (string-match "\\.el\\(c\\(\\..*\\)?\\)\\'" library)
8a24f7edde82 (find-library-name): Correctly find "f.el.gz" from "f.elc" or "f.elc.gz".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47447
diff changeset
125 (setq library (replace-match "" t t library)))
47345
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
126 (or (locate-file library
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
127 (or find-function-source-path load-path)
47447
85021da80289 (find-library-name): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47446
diff changeset
128 (append (find-library-suffixes) '("")))
47446
8bd5dd6cc381 (find-library-name): Don't forget the empty suffix. Fix stale variable name.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47345
diff changeset
129 (error "Can't find library %s" library)))
47345
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
130
55231
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
131 (defvar find-function-C-source-directory
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
132 (let ((dir (expand-file-name "src" source-directory)))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
133 (when (and (file-directory-p dir) (file-readable-p dir))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
134 dir))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
135 "Directory where the C source files of Emacs can be found.
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
136 If nil, do not try to find the source code of functions and variables
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
137 defined in C.")
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
138
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
139 (defun find-function-C-source (fun-or-var file variable-p)
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
140 "Find the source location where SUBR-OR-VAR is defined in FILE.
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
141 VARIABLE-P should be non-nil for a variable or nil for a subroutine."
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
142 (unless find-function-C-source-directory
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
143 (setq find-function-C-source-directory
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
144 (read-directory-name "Emacs C source dir: " nil nil t)))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
145 (setq file (expand-file-name file find-function-C-source-directory))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
146 (unless (file-readable-p file)
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
147 (error "The C source file %s is not available"
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
148 (file-name-nondirectory file)))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
149 (unless variable-p
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
150 (setq fun-or-var (indirect-function fun-or-var)))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
151 (with-current-buffer (find-file-noselect file)
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
152 (goto-char (point-min))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
153 (unless (re-search-forward
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
154 (if variable-p
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
155 (concat "DEFVAR[A-Z_]*[ \t\n]*([ \t\n]*\""
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
156 (regexp-quote (symbol-name fun-or-var))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
157 "\"")
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
158 (concat "DEFUN[ \t\n]*([ \t\n]*\""
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
159 (regexp-quote (subr-name fun-or-var))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
160 "\""))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
161 nil t)
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
162 (error "Can't find source for %s" fun-or-var))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
163 (cons (current-buffer) (match-beginning 0))))
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
164
47345
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
165 ;;;###autoload
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
166 (defun find-library (library)
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
167 "Find the elisp source of LIBRARY."
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
168 (interactive
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
169 (list
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
170 (completing-read "Library name: "
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
171 'locate-file-completion
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
172 (cons (or find-function-source-path load-path)
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
173 (find-library-suffixes)))))
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
174 (let ((buf (find-file-noselect (find-library-name library))))
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
175 (condition-case nil (switch-to-buffer buf) (error (pop-to-buffer buf)))))
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
176
45190
9c3195b605f7 (find-function-search-for-symbol): Add autoload cookie.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45150
diff changeset
177 ;;;###autoload
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
178 (defun find-function-search-for-symbol (symbol variable-p library)
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
179 "Search for SYMBOL.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
180 If VARIABLE-P is nil, `find-function-regexp' is used, otherwise
47255
ad258fa595db (find-function-search-for-symbol): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents: 46893
diff changeset
181 `find-variable-regexp' is used. The search is done in library LIBRARY."
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
182 (if (null library)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
183 (error "Don't know where `%s' is defined" symbol))
46874
cbd462ecc9ad (find-function-search-for-symbol): Obey `definition-name' properties.
Richard M. Stallman <rms@gnu.org>
parents: 45326
diff changeset
184 ;; Some functions are defined as part of the construct
cbd462ecc9ad (find-function-search-for-symbol): Obey `definition-name' properties.
Richard M. Stallman <rms@gnu.org>
parents: 45326
diff changeset
185 ;; that defines something else.
55231
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
186 (while (and (symbolp symbol) (get symbol 'definition-name))
46874
cbd462ecc9ad (find-function-search-for-symbol): Obey `definition-name' properties.
Richard M. Stallman <rms@gnu.org>
parents: 45326
diff changeset
187 (setq symbol (get symbol 'definition-name)))
55231
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
188 (if (string-match "\\`src/\\(.*\\.c\\)\\'" library)
7fc34677dcb8 (find-function-C-source-directory): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
189 (find-function-C-source symbol (match-string 1 library) variable-p)
23862
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
190 (if (string-match "\\.el\\(c\\)\\'" library)
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
191 (setq library (substring library 0 (match-beginning 1))))
47345
8268e926d8e9 (find-library-suffixes, find-library-name)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47298
diff changeset
192 (let* ((filename (find-library-name library)))
23862
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
193 (with-current-buffer (find-file-noselect filename)
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
194 (let ((regexp (format (if variable-p
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
195 find-variable-regexp
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
196 find-function-regexp)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
197 (regexp-quote (symbol-name symbol))))
45120
254bce531056 (find-function-search-for-symbol): Bind case-fold-search when searching.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 40480
diff changeset
198 (case-fold-search))
45150
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
199 (with-syntax-table emacs-lisp-mode-syntax-table
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
200 (goto-char (point-min))
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
201 (if (or (re-search-forward regexp nil t)
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
202 (re-search-forward
45326
892ea515fb3a (find-function-search-for-symbol): Find funs defined with defun-cvs-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45257
diff changeset
203 (concat "^([^ ]+" find-function-space-re "['(]"
45150
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
204 (regexp-quote (symbol-name symbol))
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
205 "\\>")
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
206 nil t))
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
207 (progn
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
208 (beginning-of-line)
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
209 (cons (current-buffer) (point)))
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
210 (error "Cannot find definition of `%s' in library `%s'"
4a2bcce6b13a (find-function-search-for-symbol): Use with-syntax-table.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45120
diff changeset
211 symbol library))))))))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
212
22851
2c2eb47ec8e3 (find-function-noselect): Autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 22759
diff changeset
213 ;;;###autoload
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
214 (defun find-function-noselect (function)
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
215 "Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
216
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
217 Finds the Emacs Lisp library containing the definition of FUNCTION
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
218 in a buffer and the point of the definition. The buffer is
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
219 not selected.
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
220
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
221 If the file where FUNCTION is defined is not known, then it is
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
222 searched for in `find-function-source-path' if non nil, otherwise
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
223 in `load-path'."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
224 (if (not function)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
225 (error "You didn't specify a function"))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
226 (and (subrp (symbol-function function))
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
227 (error "%s is a primitive function" function))
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
228 (let ((def (symbol-function function))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
229 aliases)
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
230 (while (symbolp def)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
231 (or (eq def function)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
232 (if aliases
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
233 (setq aliases (concat aliases
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
234 (format ", which is an alias for `%s'"
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
235 (symbol-name def))))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
236 (setq aliases (format "`%s' an alias for `%s'"
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
237 function (symbol-name def)))))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
238 (setq function (symbol-function function)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
239 def (symbol-function function)))
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
240 (if aliases
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
241 (message aliases))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
242 (let ((library
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
243 (cond ((eq (car-safe def) 'autoload)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
244 (nth 1 def))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
245 ((symbol-file function)))))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
246 (find-function-search-for-symbol function nil library))))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
247
32226
2af46c6c8bde (find-function-regexp): Remove spurion.
Dave Love <fx@gnu.org>
parents: 26593
diff changeset
248 (defalias 'function-at-point 'function-called-at-point)
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
249
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
250 (defun find-function-read (&optional variable-p)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
251 "Read and return an interned symbol, defaulting to the one near point.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
252
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
253 If the optional VARIABLE-P is nil, then a function is gotten
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
254 defaulting to the value of the function `function-at-point', otherwise
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
255 a variable is asked for, with the default coming from
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
256 `variable-at-point'."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
257 (let ((symb (funcall (if variable-p
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
258 'variable-at-point
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
259 'function-at-point)))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
260 (enable-recursive-minibuffers t)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
261 val)
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
262 (if (equal symb 0)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
263 (setq symb nil))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
264 (setq val (if variable-p
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
265 (completing-read
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
266 (concat "Find variable"
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
267 (if symb
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
268 (format " (default %s)" symb))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
269 ": ")
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
270 obarray 'boundp t nil)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
271 (completing-read
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
272 (concat "Find function"
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
273 (if symb
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
274 (format " (default %s)" symb))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
275 ": ")
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
276 obarray 'fboundp t nil)))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
277 (list (if (equal val "")
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
278 symb
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
279 (intern val)))))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
280
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
281 (defun find-function-do-it (symbol variable-p switch-fn)
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
282 "Find Emacs Lisp SYMBOL in a buffer and display it.
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
283 If VARIABLE-P is nil, a function definition is searched for, otherwise
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
284 a variable definition is searched for. The start of a definition is
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
285 centered according to the variable `find-function-recenter-line'.
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
286 See also `find-function-after-hook' It is displayed with function SWITCH-FN.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
287
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
288 Point is saved in the buffer if it is one of the current buffers."
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
289 (let* ((orig-point (point))
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
290 (orig-buf (window-buffer))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
291 (orig-buffers (buffer-list))
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
292 (buffer-point (save-excursion
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
293 (funcall (if variable-p
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
294 'find-variable-noselect
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
295 'find-function-noselect)
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
296 symbol)))
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
297 (new-buf (car buffer-point))
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
298 (new-point (cdr buffer-point)))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
299 (when buffer-point
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
300 (when (memq new-buf orig-buffers)
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
301 (push-mark orig-point))
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
302 (funcall switch-fn new-buf)
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
303 (goto-char new-point)
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
304 (recenter find-function-recenter-line)
33198
167dad6064bf (find-function-do-it): Quote the hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33155
diff changeset
305 (run-hooks 'find-function-after-hook))))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
306
20184
c8d4024e07de (find-function, find-function-other-window, find-function-other-frame,
Dave Love <fx@gnu.org>
parents: 20183
diff changeset
307 ;;;###autoload
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
308 (defun find-function (function)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
309 "Find the definition of the FUNCTION near point.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
310
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
311 Finds the Emacs Lisp library containing the definition of the function
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
312 near point (selected by `function-at-point') in a buffer and
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
313 places point before the definition. Point is saved in the buffer if
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
314 it is one of the current buffers.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
315
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
316 The library where FUNCTION is defined is searched for in
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
317 `find-function-source-path', if non nil, otherwise in `load-path'.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
318 See also `find-function-recenter-line' and `find-function-after-hook'."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
319 (interactive (find-function-read))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
320 (find-function-do-it function nil 'switch-to-buffer))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
321
20184
c8d4024e07de (find-function, find-function-other-window, find-function-other-frame,
Dave Love <fx@gnu.org>
parents: 20183
diff changeset
322 ;;;###autoload
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
323 (defun find-function-other-window (function)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
324 "Find, in another window, the definition of FUNCTION near point.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
325
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
326 See `find-function' for more details."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
327 (interactive (find-function-read))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
328 (find-function-do-it function nil 'switch-to-buffer-other-window))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
329
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
330 ;;;###autoload
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
331 (defun find-function-other-frame (function)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
332 "Find, in ananother frame, the definition of FUNCTION near point.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
333
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
334 See `find-function' for more details."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
335 (interactive (find-function-read))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
336 (find-function-do-it function nil 'switch-to-buffer-other-frame))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
337
23659
e221aa952b5b (find-variable-noselect): Autoload.
Karl Heuer <kwzh@gnu.org>
parents: 23287
diff changeset
338 ;;;###autoload
40480
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
339 (defun find-variable-noselect (variable &optional file)
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
340 "Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
341
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
342 Finds the Emacs Lisp library containing the definition of SYMBOL
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
343 in a buffer and the point of the definition. The buffer is
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
344 not selected.
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
345
40480
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
346 The library where VARIABLE is defined is searched for in FILE or
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
347 `find-function-source-path', if non nil, otherwise in `load-path'."
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
348 (if (not variable)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
349 (error "You didn't specify a variable"))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49031
diff changeset
350 ;; Fixme: I think `symbol-file' should be fixed instead. -- fx
49031
1f99e20d4977 (find-variable-noselect): Make it work
Dave Love <fx@gnu.org>
parents: 47610
diff changeset
351 (let ((library (or file (symbol-file (cons 'defvar variable)))))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
352 (find-function-search-for-symbol variable 'variable library)))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
353
20184
c8d4024e07de (find-function, find-function-other-window, find-function-other-frame,
Dave Love <fx@gnu.org>
parents: 20183
diff changeset
354 ;;;###autoload
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
355 (defun find-variable (variable)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
356 "Find the definition of the VARIABLE near point.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
357
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
358 Finds the Emacs Lisp library containing the definition of the variable
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
359 near point (selected by `variable-at-point') in a buffer and
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
360 places point before the definition. Point is saved in the buffer if
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
361 it is one of the current buffers.
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
362
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
363 The library where VARIABLE is defined is searched for in
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
364 `find-function-source-path', if non nil, otherwise in `load-path'.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
365 See also `find-function-recenter-line' and `find-function-after-hook'."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
366 (interactive (find-function-read 'variable))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
367 (find-function-do-it variable t 'switch-to-buffer))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
368
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
369 ;;;###autoload
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
370 (defun find-variable-other-window (variable)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
371 "Find, in another window, the definition of VARIABLE near point.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
372
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
373 See `find-variable' for more details."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
374 (interactive (find-function-read 'variable))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
375 (find-function-do-it variable t 'switch-to-buffer-other-window))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
376
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
377 ;;;###autoload
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
378 (defun find-variable-other-frame (variable)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
379 "Find, in annother frame, the definition of VARIABLE near point.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
380
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
381 See `find-variable' for more details."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
382 (interactive (find-function-read 'variable))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
383 (find-function-do-it variable t 'switch-to-buffer-other-frame))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
384
20184
c8d4024e07de (find-function, find-function-other-window, find-function-other-frame,
Dave Love <fx@gnu.org>
parents: 20183
diff changeset
385 ;;;###autoload
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
386 (defun find-function-on-key (key)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
387 "Find the function that KEY invokes. KEY is a string.
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
388 Point is saved if FUNCTION is in the current buffer."
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
389 (interactive "kFind function on key: ")
51097
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
390 (let (defn)
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
391 (save-excursion
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
392 (let* ((event (and (eventp key) (aref key 0))) ; Null event OK below.
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
393 (start (event-start event))
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
394 (modifiers (event-modifiers event))
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
395 (window (and (or (memq 'click modifiers) (memq 'down modifiers)
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
396 (memq 'drag modifiers))
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
397 (posn-window start))))
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
398 ;; For a mouse button event, go to the button it applies to
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
399 ;; to get the right key bindings. And go to the right place
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
400 ;; in case the keymap depends on where you clicked.
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
401 (when (windowp window)
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
402 (set-buffer (window-buffer window))
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
403 (goto-char (posn-point start)))
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
404 (setq defn (key-binding key))))
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
405 (let ((key-desc (key-description key)))
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
406 (if (or (null defn) (integerp defn))
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
407 (message "%s is unbound" key-desc)
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
408 (if (consp defn)
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
409 (message "%s runs %s" key-desc (prin1-to-string defn))
37a69a2f1992 (find-function-on-key): Move the call to find-function-other-window
Richard M. Stallman <rms@gnu.org>
parents: 49598
diff changeset
410 (find-function-other-window defn))))))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
411
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
412 ;;;###autoload
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
413 (defun find-function-at-point ()
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
414 "Find directly the function at point in the other window."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
415 (interactive)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
416 (let ((symb (function-at-point)))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
417 (when symb
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
418 (find-function-other-window symb))))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
419
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
420 ;;;###autoload
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
421 (defun find-variable-at-point ()
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
422 "Find directly the function at point in the other window."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
423 (interactive)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
424 (let ((symb (variable-at-point)))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
425 (when (and symb (not (equal symb 0)))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
426 (find-variable-other-window symb))))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
427
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
428 ;;;###autoload
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
429 (defun find-function-setup-keys ()
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
430 "Define some key bindings for the find-function family of functions."
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
431 (define-key ctl-x-map "F" 'find-function)
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
432 (define-key ctl-x-4-map "F" 'find-function-other-window)
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
433 (define-key ctl-x-5-map "F" 'find-function-other-frame)
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
434 (define-key ctl-x-map "K" 'find-function-on-key)
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
435 (define-key ctl-x-map "V" 'find-variable)
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
436 (define-key ctl-x-4-map "V" 'find-variable-other-window)
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
437 (define-key ctl-x-5-map "V" 'find-variable-other-frame))
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
438
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
439 (provide 'find-func)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
440
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51097
diff changeset
441 ;;; arch-tag: 43ecd81c-74dc-4d9a-8f63-a61e55670d64
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
442 ;;; find-func.el ends here