(progn (setq edebug-eval-top-level-form t) (setq edebug-all-defs t) (setq edebug-all-forms t) (setq edebug-on-error t)) (defun smegulator () void-variable-smeg ) ;;(smegulator) (defmacro dmp-quote (&rest rest) t) (dmp-quote When I put the following code at the start of my .emacs file it executes without errors as it should. However when I evaluate (smegulator) it brings up the following message, without a black triangle elisp--eval-last-sexp: Symbol’s value as variable is void: void-variable-smeg When I execute C-u C-M-x on (defun smegulator () void-variable-smeg) it brings up the following messages. edebug-after: Symbol’s value as variable is void: void-variable-smeg elisp--eval-last-sexp: Symbol’s value as variable is void: void-variable-smeg with a black triangle indicating we are in edebug mode. How do I get the black triangle online in other files for debugging my code? i.e. how do you get Emacs to do a C-u C-M-x on every defun without doing it manually C-u C-M-x for every function one at a time? ) *Davin.* On Tue, 27 Dec 2022 at 01:29, Eli Zaretskii wrote: > > From: Davin Pearson > > Date: Mon, 26 Dec 2022 13:54:39 +1300 > > Cc: Michael Welsh Duggan , emacs-devel@gnu.org > > > > Consider the following code: > > > > (progn > > (defun foo () > > tomcat > > ) > > (defun bar () > > (foo)) > > ) > > > > (bar) > > > > When I instrument the foo and bar defuns for debugging by > > entering the command C-u M-C-x over the (progn ...) sexp and > > pressing the "n" key it comes with a black triangle next to > > tomcat, thus indicating that we are stepping through the foo > > function which is what I want. > > > > The error message is this: > > > > edebug-after: Symbol’s value as variable is void: tomcat > > > > This is all good. What I need to know is how to instrument every > > function for debugging. I tried the following command at > > the top of my ~/.emacs file: > > > > (progn > > (setq edebug-on-error t) > > (setq edebug-all-defs t)) > > > > When I put the above foo/bar/tomcat code in another file and I > > try to instrument the foo and bar methods for debugging, again > > with C-u M-C-x it comes back with the following error: > > > > bar: Symbol’s value as variable is void: tomcat > > > > Note that there is no black triangle next to the tomcat sexp, > > indicating we are using the debug module and not the edebug > > module, which is not what I want. > > > > How do I get every function marked as instrumented? > > According to the manual: > > If ‘edebug-all-defs’ is non-‘nil’, then the commands ‘eval-region’, > ‘eval-current-buffer’, and ‘eval-buffer’ also instrument any definitions > they evaluate. Similarly, ‘edebug-all-forms’ controls whether > ‘eval-region’ should instrument _any_ form, even non-defining forms. > This doesn’t apply to loading or evaluations in the minibuffer. The > command ‘M-x edebug-all-forms’ toggles this option. > > Another command, ‘M-x edebug-eval-top-level-form’, is available to > instrument any top-level form regardless of the values of > ‘edebug-all-defs’ and ‘edebug-all-forms’. ‘edebug-defun’ is an alias > for ‘edebug-eval-top-level-form’. > > I think this answers your questions. >