mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
New branch for lexbind, losing all history.
This initial patch is based on 2002-06-27T22:39:10Z!storm@cua.dk of the original lexbind branch.
This commit is contained in:
parent
a6e8d97c14
commit
b9598260f9
30 changed files with 3032 additions and 416 deletions
|
|
@ -73,19 +73,22 @@ redefine OBJECT if it is a symbol."
|
|||
(let ((macro 'nil)
|
||||
(name 'nil)
|
||||
(doc 'nil)
|
||||
(lexical-binding nil)
|
||||
args)
|
||||
(while (symbolp obj)
|
||||
(setq name obj
|
||||
obj (symbol-function obj)))
|
||||
(if (subrp obj)
|
||||
(error "Can't disassemble #<subr %s>" name))
|
||||
(if (and (listp obj) (eq (car obj) 'autoload))
|
||||
(progn
|
||||
(load (nth 1 obj))
|
||||
(setq obj (symbol-function name))))
|
||||
(when (and (listp obj) (eq (car obj) 'autoload))
|
||||
(load (nth 1 obj))
|
||||
(setq obj (symbol-function name)))
|
||||
(if (eq (car-safe obj) 'macro) ;handle macros
|
||||
(setq macro t
|
||||
obj (cdr obj)))
|
||||
(when (and (listp obj) (eq (car obj) 'closure))
|
||||
(setq lexical-binding t)
|
||||
(setq obj (cddr obj)))
|
||||
(if (and (listp obj) (eq (car obj) 'byte-code))
|
||||
(setq obj (list 'lambda nil obj)))
|
||||
(if (and (listp obj) (not (eq (car obj) 'lambda)))
|
||||
|
|
@ -216,7 +219,9 @@ OBJ should be a call to BYTE-CODE generated by the byte compiler."
|
|||
(cond ((memq op byte-goto-ops)
|
||||
(insert (int-to-string (nth 1 arg))))
|
||||
((memq op '(byte-call byte-unbind
|
||||
byte-listN byte-concatN byte-insertN))
|
||||
byte-listN byte-concatN byte-insertN
|
||||
byte-stack-ref byte-stack-set byte-stack-set2
|
||||
byte-discardN byte-discardN-preserve-tos))
|
||||
(insert (int-to-string arg)))
|
||||
((memq op '(byte-varref byte-varset byte-varbind))
|
||||
(prin1 (car arg) (current-buffer)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue