annotate lisp/emacs-lisp/find-func.el @ 42829:07bd6e693cb6

(easy-mmode-defmap): Enable "Up Stack", "Down Stack", and "Finish Function" menu map entries for jdb mode. (gud-jdb-use-classpath): New customization variable. (gud-jdb-command-name): Add customization. (gud-jdb-classpath, gud-marker-acc-max-length): New variables. (gud-jdb-classpath-string): New variable. (gud-jdb-source-files, gud-jdb-class-source-alist): Add doc strings. (gud-jdb-build-source-files-list): Likewise. (gud-jdb-massage-args): Record any command argument classpath string in `gud-jdb-classpath-string'. (gud-jdb-lowest-stack-level): New function, finds bottom of current java call stack in jdb output. (gud-jdb-find-source-using-classpath, gud-jdb-find-source) (gud-jdb-parse-classpath-string): New functions. (gud-jdb-marker-filter): Search/detect classpath information in jdb's output. marker regexp updated to match oldjdb and jdb output formats. Expand search for source files to include new/old methods using new functions above. Do not allow `gud-marker-acc' to grow without bound. (jdb): Set classpath information (if available) as jdb is started. Change `gud-break' and `gud-remove' to use new %c ("class") escape in format strings. Add `gud-finish', `gud-up', `gud-down' command string functions, and add them to the local menu map. Update `comint-prompt-regexp' for jdb and oldjdb. If attaching to an already running java VM and configured to use classpath, send command to query for classpath, else use previous method for finding and parsing java sources. Set `gud-jdb-find-source' function accordingly. (gud-mode): Doc fix. (gud-format-command): Add support for new %c ("class") escape. (gud-find-class): New function in support of %c escape.
author Richard M. Stallman <rms@gnu.org>
date Fri, 18 Jan 2002 18:57:20 +0000
parents 5ebd79883369
children 254bce531056
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
38557
cda1a73acb68 (find-function-regexp): Add
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
3 ;; Copyright (C) 1997, 1999, 2001 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
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
57 (defcustom find-function-regexp
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
58 ;; Match things like (defun foo ...), (defmacro foo ...),
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
59 ;; (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
60 ;; (define-derived-mode foo ...), (define-minor-mode foo)
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
61 "^\\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
62 \[^cgv\W]\\w+\\*?\\)\\|define-minor-mode\
cda1a73acb68 (find-function-regexp): Add
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
63 \\|easy-mmode-define-global-mode\\)\\(\\s-\\|\n\\)+'?\
25424
93dbc4684ddf (find-function-regexp): Allow a ) or ( to end a function name.
Richard M. Stallman <rms@gnu.org>
parents: 24062
diff changeset
64 %s\\(\\s-\\|$\\|\(\\|\)\\)"
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
65 "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
66 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
67 should insert the function name. The default value avoids `defconst',
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
68 `defgroup', `defvar'.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
69
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
70 Please send improvements and fixes to the maintainer."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
71 :type 'regexp
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
72 :group 'find-function
26558
2daba92c1033 (find-function-regexp): Use `define-minor-mode' after easy-menu
Dave Love <fx@gnu.org>
parents: 25424
diff changeset
73 :version "21.1")
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
74
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
75 (defcustom find-variable-regexp
33155
02b0153b79a7 (find-variable-regexp): Avoid defgroup.
Dave Love <fx@gnu.org>
parents: 32226
diff changeset
76 "^\\s-*(def[^umag]\\(\\w\\|\\s_\\)+\\*?\\s-+%s\\(\\s-\\|$\\)"
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
77 "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
78 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
79 avoids `defun', `defmacro', `defalias', `defadvice', `defgroup'.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
80
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
81 Please send improvements and fixes to the maintainer."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
82 :type 'regexp
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
83 :group 'find-function
32226
2af46c6c8bde (find-function-regexp): Remove spurion.
Dave Love <fx@gnu.org>
parents: 26593
diff changeset
84 :version "21.1")
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
85
20962
54413501e4a9 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20184
diff changeset
86 (defcustom find-function-source-path nil
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
87 "The default list of directories where `find-function' searches.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
88
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
89 If this variable is nil then `find-function' searches `load-path' by
20962
54413501e4a9 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20184
diff changeset
90 default."
54413501e4a9 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20184
diff changeset
91 :type '(repeat directory)
54413501e4a9 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20184
diff changeset
92 :group 'find-function)
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
93
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
94 (defcustom find-function-recenter-line 1
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
95 "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
96 A value of nil implies center the beginning of the definition.
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
97 See the function `center-to-window-line' for more information, and
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
98 `find-function' and `find-variable'."
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
99 :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
100 :version "20.3")
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
101
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
102 (defcustom find-function-after-hook nil
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
103 "Hook run after finding symbol definition.
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
104
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
105 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
106 :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
107 :version "20.3")
22641
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 ;;; Functions:
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
110
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
111 (defun find-function-search-for-symbol (symbol variable-p library)
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
112 "Search for SYMBOL.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
113 If VARIABLE-P is nil, `find-function-regexp' is used, otherwise
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
114 `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
115 (if (null library)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
116 (error "Don't know where `%s' is defined" symbol))
23862
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
117 (save-match-data
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
118 (if (string-match "\\.el\\(c\\)\\'" library)
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
119 (setq library (substring library 0 (match-beginning 1))))
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
120 (let* ((path find-function-source-path)
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
121 (compression (or (rassq 'jka-compr-handler file-name-handler-alist)
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
122 (member 'crypt-find-file-hook find-file-hooks)))
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
123 (filename (progn
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
124 ;; use `file-name-sans-extension' here? (if it gets fixed)
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
125 (if (string-match "\\(\\.el\\)\\'" library)
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
126 (setq library (substring library 0
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
127 (match-beginning 1))))
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
128 (or (locate-library (concat library ".el") t path)
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
129 (locate-library library t path)
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
130 (if compression
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
131 (or (locate-library (concat library ".el.gz")
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
132 t path)
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
133 (locate-library (concat library ".gz")
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
134 t path)))))))
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
135 (if (not filename)
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
136 (error "The library `%s' is not in the path" library))
d0e08cc0aa3d (find-function-search-for-symbol):
Dave Love <fx@gnu.org>
parents: 23737
diff changeset
137 (with-current-buffer (find-file-noselect filename)
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
138 (let ((regexp (format (if variable-p
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
139 find-variable-regexp
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
140 find-function-regexp)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
141 (regexp-quote (symbol-name symbol))))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
142 (syn-table (syntax-table)))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
143 (unwind-protect
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
144 (progn
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
145 (set-syntax-table emacs-lisp-mode-syntax-table)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
146 (goto-char (point-min))
40480
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
147 (if (or (re-search-forward regexp nil t)
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
148 (re-search-forward
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
149 (concat "^([^ ]+ +"
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
150 (regexp-quote (symbol-name symbol))
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
151 "\\>")
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
152 nil t))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
153 (progn
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
154 (beginning-of-line)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
155 (cons (current-buffer) (point)))
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
156 (error "Cannot find definition of `%s' in library `%s'"
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
157 symbol library)))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
158 (set-syntax-table syn-table)))))))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
159
22851
2c2eb47ec8e3 (find-function-noselect): Autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 22759
diff changeset
160 ;;;###autoload
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
161 (defun find-function-noselect (function)
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
162 "Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
163
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
164 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
165 in a buffer and the point of the definition. The buffer is
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
166 not selected.
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
167
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
168 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
169 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
170 in `load-path'."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
171 (if (not function)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
172 (error "You didn't specify a function"))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
173 (and (subrp (symbol-function function))
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
174 (error "%s is a primitive function" function))
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
175 (let ((def (symbol-function function))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
176 aliases)
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
177 (while (symbolp def)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
178 (or (eq def function)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
179 (if aliases
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
180 (setq aliases (concat aliases
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
181 (format ", which is an alias for `%s'"
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
182 (symbol-name def))))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
183 (setq aliases (format "`%s' an alias for `%s'"
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
184 function (symbol-name def)))))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
185 (setq function (symbol-function function)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
186 def (symbol-function function)))
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
187 (if aliases
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
188 (message aliases))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
189 (let ((library
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
190 (cond ((eq (car-safe def) 'autoload)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
191 (nth 1 def))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
192 ((symbol-file function)))))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
193 (find-function-search-for-symbol function nil library))))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
194
32226
2af46c6c8bde (find-function-regexp): Remove spurion.
Dave Love <fx@gnu.org>
parents: 26593
diff changeset
195 (defalias 'function-at-point 'function-called-at-point)
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
196
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
197 (defun find-function-read (&optional variable-p)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
198 "Read and return an interned symbol, defaulting to the one near point.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
199
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
200 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
201 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
202 a variable is asked for, with the default coming from
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
203 `variable-at-point'."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
204 (let ((symb (funcall (if variable-p
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
205 'variable-at-point
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
206 'function-at-point)))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
207 (enable-recursive-minibuffers t)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
208 val)
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
209 (if (equal symb 0)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
210 (setq symb nil))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
211 (setq val (if variable-p
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
212 (completing-read
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
213 (concat "Find variable"
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
214 (if symb
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
215 (format " (default %s)" symb))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
216 ": ")
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
217 obarray 'boundp t nil)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
218 (completing-read
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
219 (concat "Find function"
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
220 (if symb
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
221 (format " (default %s)" symb))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
222 ": ")
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
223 obarray 'fboundp t nil)))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
224 (list (if (equal val "")
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
225 symb
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
226 (intern val)))))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
227
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
228 (defun find-function-do-it (symbol variable-p switch-fn)
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
229 "Find Emacs Lisp SYMBOL in a buffer and display it.
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
230 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
231 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
232 centered according to the variable `find-function-recenter-line'.
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
233 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
234
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
235 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
236 (let* ((orig-point (point))
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
237 (orig-buf (window-buffer))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
238 (orig-buffers (buffer-list))
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
239 (buffer-point (save-excursion
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
240 (funcall (if variable-p
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
241 'find-variable-noselect
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
242 'find-function-noselect)
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
243 symbol)))
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
244 (new-buf (car buffer-point))
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
245 (new-point (cdr buffer-point)))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
246 (when buffer-point
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
247 (when (memq new-buf orig-buffers)
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
248 (push-mark orig-point))
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
249 (funcall switch-fn new-buf)
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
250 (goto-char new-point)
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
251 (recenter find-function-recenter-line)
33198
167dad6064bf (find-function-do-it): Quote the hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33155
diff changeset
252 (run-hooks 'find-function-after-hook))))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
253
20184
c8d4024e07de (find-function, find-function-other-window, find-function-other-frame,
Dave Love <fx@gnu.org>
parents: 20183
diff changeset
254 ;;;###autoload
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
255 (defun find-function (function)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
256 "Find the definition of the FUNCTION near point.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
257
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
258 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
259 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
260 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
261 it is one of the current buffers.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
262
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
263 The library where FUNCTION is defined is searched for in
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
264 `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
265 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
266 (interactive (find-function-read))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
267 (find-function-do-it function nil 'switch-to-buffer))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
268
20184
c8d4024e07de (find-function, find-function-other-window, find-function-other-frame,
Dave Love <fx@gnu.org>
parents: 20183
diff changeset
269 ;;;###autoload
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
270 (defun find-function-other-window (function)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
271 "Find, in another window, the definition of FUNCTION near point.
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
272
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
273 See `find-function' for more details."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
274 (interactive (find-function-read))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
275 (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
276
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
277 ;;;###autoload
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
278 (defun find-function-other-frame (function)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
279 "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
280
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
281 See `find-function' for more details."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
282 (interactive (find-function-read))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
283 (find-function-do-it function nil 'switch-to-buffer-other-frame))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
284
23659
e221aa952b5b (find-variable-noselect): Autoload.
Karl Heuer <kwzh@gnu.org>
parents: 23287
diff changeset
285 ;;;###autoload
40480
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
286 (defun find-variable-noselect (variable &optional file)
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
287 "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
288
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
289 Finds the Emacs Lisp library containing the definition of SYMBOL
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
290 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
291 not selected.
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
292
40480
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
293 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
294 `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
295 (if (not variable)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
296 (error "You didn't specify a variable"))
40480
5ebd79883369 (find-function-search-for-symbol):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38557
diff changeset
297 (let ((library (or file (symbol-file variable))))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
298 (find-function-search-for-symbol variable 'variable library)))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
299
20184
c8d4024e07de (find-function, find-function-other-window, find-function-other-frame,
Dave Love <fx@gnu.org>
parents: 20183
diff changeset
300 ;;;###autoload
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
301 (defun find-variable (variable)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
302 "Find the definition of the VARIABLE near point.
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
303
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
304 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
305 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
306 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
307 it is one of the current buffers.
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
308
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
309 The library where VARIABLE is defined is searched for in
24013
2f040734bd5f Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 23862
diff changeset
310 `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
311 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
312 (interactive (find-function-read 'variable))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
313 (find-function-do-it variable t 'switch-to-buffer))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
314
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
315 ;;;###autoload
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
316 (defun find-variable-other-window (variable)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
317 "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
318
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
319 See `find-variable' for more details."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
320 (interactive (find-function-read 'variable))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
321 (find-function-do-it variable t 'switch-to-buffer-other-window))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
322
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
323 ;;;###autoload
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
324 (defun find-variable-other-frame (variable)
24021
a937ab82e54f More doc fixes.
Dave Love <fx@gnu.org>
parents: 24013
diff changeset
325 "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
326
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
327 See `find-variable' for more details."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
328 (interactive (find-function-read 'variable))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
329 (find-function-do-it variable t 'switch-to-buffer-other-frame))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
330
20184
c8d4024e07de (find-function, find-function-other-window, find-function-other-frame,
Dave Love <fx@gnu.org>
parents: 20183
diff changeset
331 ;;;###autoload
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
332 (defun find-function-on-key (key)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
333 "Find the function that KEY invokes. KEY is a string.
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
334 Point is saved if FUNCTION is in the current buffer."
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
335 (interactive "kFind function on key: ")
24034
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
336 (save-excursion
24062
dd143e80ffcf (find-function-on-key): Fix previous
Dave Love <fx@gnu.org>
parents: 24034
diff changeset
337 (let* ((event (and (eventp key) (aref key 0))) ; Null event OK below.
24034
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
338 (start (event-start event))
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
339 (modifiers (event-modifiers event))
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
340 (window (and (or (memq 'click modifiers) (memq 'down modifiers)
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
341 (memq 'drag modifiers))
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
342 (posn-window start))))
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
343 ;; For a mouse button event, go to the button it applies to
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
344 ;; to get the right key bindings. And go to the right place
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
345 ;; in case the keymap depends on where you clicked.
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
346 (when (windowp window)
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
347 (set-buffer (window-buffer window))
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
348 (goto-char (posn-point start)))
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
349 (let ((defn (key-binding key))
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
350 (key-desc (key-description key)))
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
351 (if (or (null defn) (integerp defn))
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
352 (message "%s is unbound" key-desc)
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
353 (if (consp defn)
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
354 (message "%s runs %s" key-desc (prin1-to-string defn))
25a9e0ae5c91 (find-function-on-key): DTRT for mouse
Dave Love <fx@gnu.org>
parents: 24021
diff changeset
355 (find-function-other-window defn)))))))
22641
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
356
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
357 ;;;###autoload
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
358 (defun find-function-at-point ()
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
359 "Find directly the function at point in the other window."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
360 (interactive)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
361 (let ((symb (function-at-point)))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
362 (when symb
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
363 (find-function-other-window symb))))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
364
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
365 ;;;###autoload
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
366 (defun find-variable-at-point ()
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
367 "Find directly the function at point in the other window."
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
368 (interactive)
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
369 (let ((symb (variable-at-point)))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
370 (when (and symb (not (equal symb 0)))
1c5197790616 Require `loadhist'. Variable
Richard M. Stallman <rms@gnu.org>
parents: 22487
diff changeset
371 (find-variable-other-window symb))))
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
372
22759
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
373 ;;;###autoload
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
374 (defun find-function-setup-keys ()
be3e1a724828 (find-function-regexp): Added :version 20.3.
Richard M. Stallman <rms@gnu.org>
parents: 22641
diff changeset
375 "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
376 (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
377 (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
378 (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
379 (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
380 (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
381 (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
382 (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
383
20183
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
384 (provide 'find-func)
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
385
add8b7b3a7da Initial revision
Dave Love <fx@gnu.org>
parents:
diff changeset
386 ;;; find-func.el ends here