liberte@M.CS.UIUC.EDU (Daniel LaLiberte) (11/29/88)
Here is patch number 1 for edebug.el. It fixes the bug in handling cond (so patch will fail on one chunk if you installed that fix already) and a couple other bugs with the use of (). Dan LaLiberte uiucdcs!liberte liberte@cs.uiuc.edu liberte%a.cs.uiuc.edu@uiucvmd.bitnet ======================================= *** /tmp/,RCSt1006143 Mon Nov 28 12:18:48 1988 --- edebug.el Mon Nov 28 12:16:17 1988 *************** *** 35,40 ;;; liberte@cs.uiuc.edu ;;; liberte%a.cs.uiuc.edu@uiucvmd.bitnet ;;;======================================================================== ;;; To use edebug, simply evaluate a defun with edebug-defun. Before --- 35,51 ----- ;;; liberte@cs.uiuc.edu ;;; liberte%a.cs.uiuc.edu@uiucvmd.bitnet + ;;; $Header: edebug.el,v 1.2 88/11/28 12:14:15 liberte Exp $ + ;;; $Log: edebug.el,v $ + ;;; Revision 1.2 88/11/28 12:14:15 liberte + ;;; Bug fixes: cond construct didnt execute. + ;;; () in sexp list didnt parse + ;;; () as variable in condition-case didnt parse. + ;;; + ;;; Revision 1.1 88/11/28 12:11:27 liberte + ;;; Initial revision + ;;; + ;;;======================================================================== ;;; To use edebug, simply evaluate a defun with edebug-defun. Before *************** *** 63,69 ;; Use setq to change the value of global-edebug-prefix before loading ;; edebug.el. ! (defvar global-edebug-prefix "\^XX" "Prefix key for global edebug commands.") (defvar allow-recursive-debug t --- 74,80 ----- ;; Use setq to change the value of global-edebug-prefix before loading ;; edebug.el. ! (defconst global-edebug-prefix "\^XX" "Prefix key for global edebug commands.") (defvar allow-recursive-debug t *************** *** 159,164 (if (not (listp defun-args)) (error "Bad arg list.")) (setq tmp-point (point)) (if (eq 'atom (edebug-next-token-class)) (setq token (edebug-read-one))) --- 170,176 ----- (if (not (listp defun-args)) (error "Bad arg list.")) + ;; look for doc string (setq tmp-point (point)) (if (eq 'atom (edebug-next-token-class)) (setq token (edebug-read-one))) *************** *** 168,173 (setq tmp-point (point)) )) (if (eq 'lparen (edebug-next-token-class)) (progn (forward-char 1) --- 180,186 ----- (setq tmp-point (point)) )) + ;; look for interactive form (if (eq 'lparen (edebug-next-token-class)) (progn (forward-char 1) ; skip \( *************** *** 170,176 (if (eq 'lparen (edebug-next-token-class)) (progn ! (forward-char 1) (if (eq 'atom (edebug-next-token-class)) (progn (setq token (edebug-read-one)) --- 183,189 ----- ;; look for interactive form (if (eq 'lparen (edebug-next-token-class)) (progn ! (forward-char 1) ; skip \( (if (eq 'atom (edebug-next-token-class)) (progn (setq token (edebug-read-one)) *************** *** 255,261 (forward-char 1) ; skip \( (if (eq 'atom (edebug-next-token-class)) (setq token (edebug-read-one)) ! (error "Bad form.")) ;; (message "head token: %s" token) (sit-for 2) (prog1 --- 268,276 ----- (forward-char 1) ; skip \( (if (eq 'atom (edebug-next-token-class)) (setq token (edebug-read-one)) ! (if (eq 'rparen (edebug-next-token-class)) ! (setq token nil) ! (error "Bad form."))) ;; (message "head token: %s" token) (sit-for 2) (prog1 *************** *** 259,271 ;; (message "head token: %s" token) (sit-for 2) (prog1 ! (cons token ! (cond ! ;; handle all special cases with unevaluated arguments - any more?? ! ((memq token '(let let*)) (edebug-let)) ! ((memq token '(setq setq-default)) (edebug-setq)) ! ((eq token 'cond) (edebug-cond)) ! ((eq token 'condition-case) (edebug-condition-case)) ((memq token '(quote function defun defvar defconst defmacro)) (edebug-sexp-list nil)) --- 274,287 ----- ;; (message "head token: %s" token) (sit-for 2) (prog1 ! (and token ! (cons token ! (cond ! ;; handle all special cases with unevaluated arguments ! ((memq token '(let let*)) (edebug-let)) ! ((memq token '(setq setq-default)) (edebug-setq)) ! ((eq token 'cond) (edebug-cond)) ! ((eq token 'condition-case) (edebug-condition-case)) ((memq token '(quote function defun defvar defconst defmacro)) *************** *** 267,274 ((eq token 'cond) (edebug-cond)) ((eq token 'condition-case) (edebug-condition-case)) ! ((memq token '(quote function defun defvar defconst defmacro)) ! (edebug-sexp-list nil)) ;; is it a lisp macro? ((macrop token) (edebug-sexp-list nil)) --- 283,291 ----- ((eq token 'cond) (edebug-cond)) ((eq token 'condition-case) (edebug-condition-case)) ! ((memq token '(quote function ! defun defvar defconst defmacro)) ! (edebug-sexp-list nil)) ;; is it a lisp macro? ((macrop token) (edebug-sexp-list nil)) *************** *** 270,277 ((memq token '(quote function defun defvar defconst defmacro)) (edebug-sexp-list nil)) ! ;; is it a lisp macro? ! ((macrop token) (edebug-sexp-list nil)) (t (edebug-sexp-list t)) )) --- 287,294 ----- defun defvar defconst defmacro)) (edebug-sexp-list nil)) ! ;; is it a lisp macro? ! ((macrop token) (edebug-sexp-list nil)) (t (edebug-sexp-list t)) ))) *************** *** 273,280 ;; is it a lisp macro? ((macrop token) (edebug-sexp-list nil)) ! (t (edebug-sexp-list t)) ! )) (forward-char 1) ; skip \) ) )) --- 290,297 ----- ;; is it a lisp macro? ((macrop token) (edebug-sexp-list nil)) ! (t (edebug-sexp-list t)) ! ))) (forward-char 1) ; skip \) ) )) *************** *** 341,347 (error "Bad condition in cond") (forward-char 1) ; \( (prog1 ! (list (edebug-sexp) (if (eq 'rparen (edebug-next-token-class)) nil --- 358,364 ----- (error "Bad condition in cond") (forward-char 1) ; \( (prog1 ! (cons (edebug-sexp) (if (eq 'rparen (edebug-next-token-class)) nil *************** *** 358,364 (defun edebug-condition-case () "Return the debug form of a condition-case." (let (symb-sexp-list ! class) (cons (if (not (eq 'atom (edebug-next-token-class))) (error "Bad variable in condition-case") --- 375,383 ----- (defun edebug-condition-case () "Return the debug form of a condition-case." (let (symb-sexp-list ! class ! token) ! (cons (prog1 ;; read the variable or nil *************** *** 360,370 (let (symb-sexp-list class) (cons ! (if (not (eq 'atom (edebug-next-token-class))) ! (error "Bad variable in condition-case") ! (edebug-read-one) ! (edebug-next-token) ! ) (cons (edebug-sexp) ; the form --- 379,390 ----- token) (cons ! (prog1 ! ;; read the variable or nil ! (setq token (edebug-read-one)) ! (if (not (symbolp token)) ! (error "Bad symbol in condition-case: %s" token)) ! (edebug-next-token)) (cons (edebug-sexp) ; the form