1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-18 12:00:38 -07:00

Fix handling of Eshell debug modes

Previously, these were enabled/disabled at byte-compilation time, but
we want to control them at runtime.

* lisp/eshell/esh-cmd.el (eshell-eval-command): Call
'eshell-debug-command-start'.
(eshell-manipulate): Check 'eshell-debug-command' at runtime.  Update
callers.
(eshell-debug-command): Move to "esh-util.el".
(eshell/eshell-debug, pcomplate/eshell-mode/eshell-debug): Move to
"em-basic.el".
(eshell-debug-show-parsed-args): Update implementation.

* lisp/eshell/esh-util.el (eshell-debug-command): Move from
"esh-cmd.el" and convert to a list.
(eshell-debug-command-buffer): New variable.
(eshell-condition-case): Check 'eshell-handle-errors' at runtime.
(eshell-debug-command-start): New function.
(eshell-debug-command): Move from "esh-cmd.el" and convert to a macro.

* lisp/eshell/em-basic.el (eshell/eshell-debug)
(pcomplete/eshell-mode/eshell-debug): Move from "esh-cmd.el" and
reimplement.

* lisp/eshell/eshell.el (eshell-command): Pass the original input to
'eshell-eval-command'.

* doc/misc/eshell.texi (Built-ins): Update documentation for
'eshell-debug'.
This commit is contained in:
Jim Porter 2023-08-29 17:02:40 -07:00
parent 17188e07ab
commit ccb62321d2
5 changed files with 108 additions and 92 deletions

View file

@ -188,6 +188,37 @@ or `eshell-printn' for display."
(put 'eshell/umask 'eshell-no-numeric-conversions t)
(defun eshell/eshell-debug (&rest args)
"A command for toggling certain debug variables."
(eshell-eval-using-options
"eshell-debug" args
'((?h "help" nil nil "display this usage message")
:usage "[KIND]...
This command is used to aid in debugging problems related to Eshell
itself. It is not useful for anything else. The recognized `kinds'
are:
error stops Eshell from trapping errors
form shows command form manipulation in `*eshell last cmd*'")
(if args
(dolist (kind args)
(if (equal kind "error")
(setq eshell-handle-errors (not eshell-handle-errors))
(let ((kind-sym (intern kind)))
(if (memq kind-sym eshell-debug-command)
(setq eshell-debug-command
(delq kind-sym eshell-debug-command))
(push kind-sym eshell-debug-command)))))
;; Output the currently-enabled debug kinds.
(unless eshell-handle-errors
(eshell-print "errors\n"))
(dolist (kind eshell-debug-command)
(eshell-printn (symbol-name kind))))))
(defun pcomplete/eshell-mode/eshell-debug ()
"Completion for the `debug' command."
(while (pcomplete-here '("error" "form"))))
(provide 'em-basic)
;; Local Variables: