Mercurial > emacs
annotate lisp/emacs-lisp/disass.el @ 30408:e3e2c9051c5f
Got rid of all byte-compiler warnings on Emacs.
Add to the menu when the file is loaded, not in ada-mode-hook.
Add -toolbar to the default ddd command Switches moved from
ada-prj-default-comp-cmd and ada-prj-default-make-cmd to
ada-prj-default-comp-opt
(ada-add-ada-menu): Remove the map and name parameters Add the Ada
Reference Manual to the menu
(ada-check-current): rewritten as a call to ada-compile-current
(ada-compile): Removed.
(ada-compile-application, ada-compile-current, ada-check-current):
Set the compilation-search-path so that compile.el automatically
finds the sources in src_dir. Automatic scrollong of the
compilation buffer. C-uC-cC-c asks for confirmation before
compiling
(ada-compile-current): New parameter, prj-field
(ada-complete-identifier): Load the .ali file before doing
processing
(ada-find-ali-file-in-dir): prepend build_dir to obj_dir to
conform to gnatmake's behavior.
(ada-find-file-in-dir): New function
(ada-find-references): Set the environment variables for gnatfind
(ada-find-src-file-in-dir): New function.
(ada-first-non-nil): Removed
(ada-gdb-application): Add support for jdb, the java debugger.
(ada-get-ada-file-name): Load the original-file first if not done
yet.
(ada-get-all-references): Handles the new ali syntax (parent types
are found between <>).
(ada-initialize-runtime-library): New function
(ada-mode-hook): Always load a project file when a file is opened,
so that the casing exceptions are correctly read.
(ada-operator-re): Add all missing operators ("abs", "rem", "**").
(ada-parse-prj-file): Use find-file-noselect instead of find-file
to open the project file, since the latter does not work with
speedbar Get default values before loading the prj file, or the
default executable file name is wrong. Use the absolute value of
src_dir to initialize ada-search-directories and
compilation-search-path,... Add the standard runtime library to
the search path for find-file.
(ada-prj-default-debugger): Was missing an opening '{'
(ada-prj-default-bind-opt, ada-prj-default-link-opt): New
variables.
(ada-prj-default-gnatmake-opt): New variable
(ada-prj-find-prj-file): Handles non-file buffers For non-Ada
buffers, the project file is the default one Save the windows
configuration before displaying the menu.
(ada-prj-src-dir, ada-prj-obj-dir, ada-prj-comp-opt,...): Removed
(ada-read-identifier): Fix xrefs on operators (for "mod", "and",
...) regexp-quote identifiers names to support operators +,
-,... in regexps.
(ada-remote): New function.
(ada-run-application): Erase the output buffer before starting the
run Support remote execution of the application. Use
call-process, or the arguments are incorrectly parsed
(ada-set-default-project-file): Reread the content of the active
project file, not the one from the current buffer When a project
file is set as the default project, all directories are
automatically associated with it.
(ada-set-environment): New function
(ada-treat-cmd-string): New special variable ${current}
(ada-treat-cmd-string): Revised. The substitution is now done for
any ${...} substring
(ada-xref-current): If no body was found, compiles the spec
instead. Setup ADA_{SOURCE,OBJECTS}_PATH before running the
compiler to get rid of command line length limitations.
(ada-xref-get-project-field): New function
(ada-xref-project-files): New variable
(ada-xref-runtime-library-specs-path)
(ada-xref-runtime-library-ali-path): New variables
(ada-xref-set-default-prj-values): Default run command now does a
cd to the build directory. New field: main_unit Provide a default
file name even if the current buffer has no prj file.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Mon, 24 Jul 2000 11:13:11 +0000 |
parents | bc5bd04bf914 |
children | 0d8b17d428b5 |
rev | line source |
---|---|
811
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
1 ;;; disass.el --- disassembler for compiled Emacs Lisp code |
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
2 |
14169 | 3 ;; Copyright (C) 1986, 1991 Free Software Foundation, Inc. |
845 | 4 |
811
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
5 ;; Author: Doug Cutting <doug@csli.stanford.edu> |
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
6 ;; Jamie Zawinski <jwz@lucid.com> |
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
7 ;; Maintainer: Jamie Zawinski <jwz@lucid.com> |
2247
2c7997f249eb
Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1821
diff
changeset
|
8 ;; Keywords: internal |
811
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
9 |
757 | 10 ;; This file is part of GNU Emacs. |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
13 ;; it under the terms of the GNU General Public License as published by | |
806 | 14 ;; the Free Software Foundation; either version 2, or (at your option) |
757 | 15 ;; any later version. |
16 | |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
14169 | 23 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
25 ;; Boston, MA 02111-1307, USA. | |
757 | 26 |
811
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
27 ;;; Commentary: |
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
28 |
2307
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2247
diff
changeset
|
29 ;; The single entry point, `disassemble', disassembles a code object generated |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2247
diff
changeset
|
30 ;; by the Emacs Lisp byte-compiler. This doesn't invert the compilation |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2247
diff
changeset
|
31 ;; operation, not by a long shot, but it's useful for debugging. |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2247
diff
changeset
|
32 |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2247
diff
changeset
|
33 ;; |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2247
diff
changeset
|
34 ;; Original version by Doug Cutting (doug@csli.stanford.edu) |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2247
diff
changeset
|
35 ;; Substantially modified by Jamie Zawinski <jwz@lucid.com> for |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2247
diff
changeset
|
36 ;; the new lapcode-based byte compiler. |
811
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
37 |
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
38 ;;; Code: |
757 | 39 |
40 ;;; The variable byte-code-vector is defined by the new bytecomp.el. | |
802 | 41 ;;; The function byte-decompile-lapcode is defined in byte-opt.el. |
42 ;;; Since we don't use byte-decompile-lapcode, let's try not loading byte-opt. | |
1606
4303c30b29de
* disass.el (byte-compile): Specify that the 'byte-compile feature
Jim Blandy <jimb@redhat.com>
parents:
845
diff
changeset
|
43 (require 'byte-compile "bytecomp") |
757 | 44 |
8293
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
45 (defvar disassemble-column-1-indent 8 "*") |
757 | 46 (defvar disassemble-column-2-indent 10 "*") |
47 | |
48 (defvar disassemble-recursive-indent 3 "*") | |
49 | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1606
diff
changeset
|
50 ;;;###autoload |
757 | 51 (defun disassemble (object &optional buffer indent interactive-p) |
52 "Print disassembled code for OBJECT in (optional) BUFFER. | |
53 OBJECT can be a symbol defined as a function, or a function itself | |
54 \(a lambda expression or a compiled-function object). | |
55 If OBJECT is not already compiled, we compile it, but do not | |
56 redefine OBJECT if it is a symbol." | |
57 (interactive (list (intern (completing-read "Disassemble function: " | |
58 obarray 'fboundp t)) | |
59 nil 0 t)) | |
60 (if (eq (car-safe object) 'byte-code) | |
61 (setq object (list 'lambda () object))) | |
62 (or indent (setq indent 0)) ;Default indent to zero | |
63 (save-excursion | |
64 (if (or interactive-p (null buffer)) | |
65 (with-output-to-temp-buffer "*Disassemble*" | |
66 (set-buffer "*Disassemble*") | |
67 (disassemble-internal object indent (not interactive-p))) | |
68 (set-buffer buffer) | |
69 (disassemble-internal object indent nil))) | |
70 nil) | |
71 | |
72 | |
73 (defun disassemble-internal (obj indent interactive-p) | |
74 (let ((macro 'nil) | |
75 (name 'nil) | |
76 (doc 'nil) | |
77 args) | |
78 (while (symbolp obj) | |
79 (setq name obj | |
80 obj (symbol-function obj))) | |
81 (if (subrp obj) | |
82 (error "Can't disassemble #<subr %s>" name)) | |
3767
660b7b4e3e40
(disassemble-internal): If function is autoload, load it.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
83 (if (and (listp obj) (eq (car obj) 'autoload)) |
660b7b4e3e40
(disassemble-internal): If function is autoload, load it.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
84 (progn |
660b7b4e3e40
(disassemble-internal): If function is autoload, load it.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
85 (load (nth 1 obj)) |
660b7b4e3e40
(disassemble-internal): If function is autoload, load it.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
86 (setq obj (symbol-function name)))) |
757 | 87 (if (eq (car-safe obj) 'macro) ;handle macros |
88 (setq macro t | |
89 obj (cdr obj))) | |
4789
86318d7728f5
(disassemble-internal): Allow a call to byte-code as argument.
Richard M. Stallman <rms@gnu.org>
parents:
3767
diff
changeset
|
90 (if (and (listp obj) (eq (car obj) 'byte-code)) |
86318d7728f5
(disassemble-internal): Allow a call to byte-code as argument.
Richard M. Stallman <rms@gnu.org>
parents:
3767
diff
changeset
|
91 (setq obj (list 'lambda nil obj))) |
757 | 92 (if (and (listp obj) (not (eq (car obj) 'lambda))) |
93 (error "not a function")) | |
94 (if (consp obj) | |
95 (if (assq 'byte-code obj) | |
96 nil | |
97 (if interactive-p (message (if name | |
98 "Compiling %s's definition..." | |
99 "Compiling definition...") | |
100 name)) | |
101 (setq obj (byte-compile obj)) | |
102 (if interactive-p (message "Done compiling. Disassembling...")))) | |
103 (cond ((consp obj) | |
104 (setq obj (cdr obj)) ;throw lambda away | |
105 (setq args (car obj)) ;save arg list | |
106 (setq obj (cdr obj))) | |
14960
8fe7e5e09773
(disassemble-internal): Graceful error if compile failed.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
107 ((byte-code-function-p obj) |
8fe7e5e09773
(disassemble-internal): Graceful error if compile failed.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
108 (setq args (aref obj 0))) |
8fe7e5e09773
(disassemble-internal): Graceful error if compile failed.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
109 (t (error "Compilation failed"))) |
757 | 110 (if (zerop indent) ; not a nested function |
111 (progn | |
112 (indent-to indent) | |
113 (insert (format "byte code%s%s%s:\n" | |
114 (if (or macro name) " for" "") | |
115 (if macro " macro" "") | |
116 (if name (format " %s" name) ""))))) | |
117 (let ((doc (if (consp obj) | |
118 (and (stringp (car obj)) (car obj)) | |
13340
53bbedbefdb2
(disassemble-internal): Handle lazy-loaded doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
8293
diff
changeset
|
119 ;; Use documentation to get lazy-loaded doc string |
53bbedbefdb2
(disassemble-internal): Handle lazy-loaded doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
8293
diff
changeset
|
120 (documentation obj t)))) |
757 | 121 (if (and doc (stringp doc)) |
122 (progn (and (consp obj) (setq obj (cdr obj))) | |
123 (indent-to indent) | |
124 (princ " doc: " (current-buffer)) | |
125 (if (string-match "\n" doc) | |
126 (setq doc (concat (substring doc 0 (match-beginning 0)) | |
127 " ..."))) | |
128 (insert doc "\n")))) | |
129 (indent-to indent) | |
130 (insert " args: ") | |
131 (prin1 args (current-buffer)) | |
132 (insert "\n") | |
133 (let ((interactive (cond ((consp obj) | |
134 (assq 'interactive obj)) | |
135 ((> (length obj) 5) | |
136 (list 'interactive (aref obj 5)))))) | |
137 (if interactive | |
138 (progn | |
139 (setq interactive (nth 1 interactive)) | |
140 (if (eq (car-safe (car-safe obj)) 'interactive) | |
141 (setq obj (cdr obj))) | |
142 (indent-to indent) | |
143 (insert " interactive: ") | |
144 (if (eq (car-safe interactive) 'byte-code) | |
145 (progn | |
146 (insert "\n") | |
147 (disassemble-1 interactive | |
148 (+ indent disassemble-recursive-indent))) | |
149 (let ((print-escape-newlines t)) | |
150 (prin1 interactive (current-buffer)))) | |
151 (insert "\n")))) | |
152 (cond ((and (consp obj) (assq 'byte-code obj)) | |
153 (disassemble-1 (assq 'byte-code obj) indent)) | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1606
diff
changeset
|
154 ((byte-code-function-p obj) |
757 | 155 (disassemble-1 obj indent)) |
156 (t | |
157 (insert "Uncompiled body: ") | |
158 (let ((print-escape-newlines t)) | |
159 (prin1 (if (cdr obj) (cons 'progn obj) (car obj)) | |
160 (current-buffer)))))) | |
161 (if interactive-p | |
162 (message ""))) | |
163 | |
164 | |
165 (defun disassemble-1 (obj indent) | |
166 "Prints the byte-code call OBJ in the current buffer. | |
167 OBJ should be a call to BYTE-CODE generated by the byte compiler." | |
168 (let (bytes constvec) | |
169 (if (consp obj) | |
170 (setq bytes (car (cdr obj)) ;the byte code | |
171 constvec (car (cdr (cdr obj)))) ;constant vector | |
13340
53bbedbefdb2
(disassemble-internal): Handle lazy-loaded doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
8293
diff
changeset
|
172 ;; If it is lazy-loaded, load it now |
53bbedbefdb2
(disassemble-internal): Handle lazy-loaded doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
8293
diff
changeset
|
173 (fetch-bytecode obj) |
22995
bc5bd04bf914
(disassemble-1): Move the call to
Richard M. Stallman <rms@gnu.org>
parents:
22055
diff
changeset
|
174 (setq bytes (aref obj 1) |
757 | 175 constvec (aref obj 2))) |
22995
bc5bd04bf914
(disassemble-1): Move the call to
Richard M. Stallman <rms@gnu.org>
parents:
22055
diff
changeset
|
176 (let ((lap (byte-decompile-bytecode (string-as-unibyte bytes) constvec)) |
8293
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
177 op arg opname pc-value) |
757 | 178 (let ((tagno 0) |
179 tmp | |
180 (lap lap)) | |
181 (while (setq tmp (assq 'TAG lap)) | |
182 (setcar (cdr tmp) (setq tagno (1+ tagno))) | |
183 (setq lap (cdr (memq tmp lap))))) | |
184 (while lap | |
8293
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
185 ;; Take off the pc value of the next thing |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
186 ;; and put it in pc-value. |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
187 (setq pc-value nil) |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
188 (if (numberp (car lap)) |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
189 (setq pc-value (car lap) |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
190 lap (cdr lap))) |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
191 ;; Fetch the next op and its arg. |
757 | 192 (setq op (car (car lap)) |
193 arg (cdr (car lap))) | |
8293
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
194 (setq lap (cdr lap)) |
757 | 195 (indent-to indent) |
196 (if (eq 'TAG op) | |
8293
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
197 (progn |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
198 ;; We have a label. Display it, but first its pc value. |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
199 (if pc-value |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
200 (insert (format "%d:" pc-value))) |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
201 (insert (int-to-string (car arg)))) |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
202 ;; We have an instruction. Display its pc value first. |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
203 (if pc-value |
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
204 (insert (format "%d" pc-value))) |
757 | 205 (indent-to (+ indent disassemble-column-1-indent)) |
206 (if (and op | |
207 (string-match "^byte-" (setq opname (symbol-name op)))) | |
208 (setq opname (substring opname 5)) | |
209 (setq opname "<not-an-opcode>")) | |
210 (if (eq op 'byte-constant2) | |
211 (insert " #### shouldn't have seen constant2 here!\n ")) | |
212 (insert opname) | |
213 (indent-to (+ indent disassemble-column-1-indent | |
214 disassemble-column-2-indent | |
215 -1)) | |
216 (insert " ") | |
217 (cond ((memq op byte-goto-ops) | |
218 (insert (int-to-string (nth 1 arg)))) | |
219 ((memq op '(byte-call byte-unbind | |
220 byte-listN byte-concatN byte-insertN)) | |
221 (insert (int-to-string arg))) | |
222 ((memq op '(byte-varref byte-varset byte-varbind)) | |
223 (prin1 (car arg) (current-buffer))) | |
224 ((memq op '(byte-constant byte-constant2)) | |
225 ;; it's a constant | |
226 (setq arg (car arg)) | |
227 ;; but if the value of the constant is compiled code, then | |
228 ;; recursively disassemble it. | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1606
diff
changeset
|
229 (cond ((or (byte-code-function-p arg) |
757 | 230 (and (eq (car-safe arg) 'lambda) |
231 (assq 'byte-code arg)) | |
232 (and (eq (car-safe arg) 'macro) | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1606
diff
changeset
|
233 (or (byte-code-function-p (cdr arg)) |
757 | 234 (and (eq (car-safe (cdr arg)) 'lambda) |
235 (assq 'byte-code (cdr arg)))))) | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1606
diff
changeset
|
236 (cond ((byte-code-function-p arg) |
757 | 237 (insert "<compiled-function>\n")) |
238 ((eq (car-safe arg) 'lambda) | |
239 (insert "<compiled lambda>")) | |
240 (t (insert "<compiled macro>\n"))) | |
241 (disassemble-internal | |
242 arg | |
243 (+ indent disassemble-recursive-indent 1) | |
244 nil)) | |
245 ((eq (car-safe arg) 'byte-code) | |
246 (insert "<byte code>\n") | |
247 (disassemble-1 ;recurse on byte-code object | |
248 arg | |
249 (+ indent disassemble-recursive-indent))) | |
250 ((eq (car-safe (car-safe arg)) 'byte-code) | |
251 (insert "(<byte code>...)\n") | |
252 (mapcar ;recurse on list of byte-code objects | |
253 '(lambda (obj) | |
254 (disassemble-1 | |
255 obj | |
256 (+ indent disassemble-recursive-indent))) | |
257 arg)) | |
258 (t | |
259 ;; really just a constant | |
260 (let ((print-escape-newlines t)) | |
261 (prin1 arg (current-buffer)))))) | |
262 ) | |
8293
74218ea236fe
(disassemble-1): Display the pc values.
Richard M. Stallman <rms@gnu.org>
parents:
4789
diff
changeset
|
263 (insert "\n"))))) |
757 | 264 nil) |
811
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
265 |
18383 | 266 (provide 'disass) |
267 | |
811
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
268 ;;; disass.el ends here |