diff options
author | Neil Jerram <neil@ossau.uklinux.net> | 2008-07-11 17:53:43 +0100 |
---|---|---|
committer | Neil Jerram <neil@ossau.uklinux.net> | 2008-07-17 23:05:57 +0100 |
commit | 091baf9edfb8330226524b99c3bf623499516bf7 (patch) | |
tree | c10c5cc50e2397626401f6d930d945e9cea563d4 /emacs | |
parent | 0d751d472091421d91c097342c849cd52386f6ca (diff) |
Single stepping through code from Emacs
When you use GDS to evaluate Scheme code from Emacs, you can now use
`C-u' to indicate that you want to single step through that code. See
`Evaluating Scheme Code' in the manual for more details.
* scheme-using.texi (Evaluating Scheme Code): Document use of
`C-u' prefix with evaluation commands.
* gds-scheme.el (gds-eval-region, gds-eval-expression)
(gds-eval-defun, gds-eval-last-sexp): Support `C-u' prefix,
meaning that user wants to single step through the code.
* gds-client.scm (handle-nondebug-protocol): Add support for
setting a trap on code that is about to be evaluated.
Diffstat (limited to 'emacs')
-rw-r--r-- | emacs/ChangeLog | 6 | ||||
-rwxr-xr-x | emacs/gds-scheme.el | 52 |
2 files changed, 39 insertions, 19 deletions
diff --git a/emacs/ChangeLog b/emacs/ChangeLog index 5a4365ff5..fb9d78999 100644 --- a/emacs/ChangeLog +++ b/emacs/ChangeLog @@ -1,3 +1,9 @@ +2008-07-17 Neil Jerram <neil@ossau.uklinux.net> + + * gds-scheme.el (gds-eval-region, gds-eval-expression) + (gds-eval-defun, gds-eval-last-sexp): Support `C-u' prefix, + meaning that user wants to single step through the code. + 2007-02-06 Clinton Ebadi <clinton@unknownlamer.org> * gds-scheme.el (gds-display-results): Use save-selected-window diff --git a/emacs/gds-scheme.el b/emacs/gds-scheme.el index a03a07ba5..db0e6cd41 100755 --- a/emacs/gds-scheme.el +++ b/emacs/gds-scheme.el @@ -279,9 +279,12 @@ region's code." (setq line (count-lines (point-min) (point)))) (cons line column))) -(defun gds-eval-region (start end) - "Evaluate the current region." - (interactive "r") +(defun gds-eval-region (start end &optional debugp) + "Evaluate the current region. If invoked with `C-u' prefix (or, in +a program, with optional DEBUGP arg non-nil), pause and pop up the +stack at the start of the evaluation, so that the user can single-step +through the code." + (interactive "r\nP") (or gds-client (gds-auto-associate-buffer) (call-interactively 'gds-associate-buffer)) @@ -289,24 +292,29 @@ region's code." (port-name (gds-port-name start end)) (lc (gds-line-and-column start))) (let ((code (buffer-substring-no-properties start end))) - (gds-send (format "eval (region . %S) %s %S %d %d %S" + (gds-send (format "eval (region . %S) %s %S %d %d %S %s" (gds-abbreviated code) (if module (prin1-to-string module) "#f") port-name (car lc) (cdr lc) - code) + code + (if debugp '(debug) '(none))) gds-client)))) -(defun gds-eval-expression (expr &optional correlator) - "Evaluate the supplied EXPR (a string)." - (interactive "sEvaluate expression: \nP") +(defun gds-eval-expression (expr &optional correlator debugp) + "Evaluate the supplied EXPR (a string). If invoked with `C-u' +prefix (or, in a program, with optional DEBUGP arg non-nil), pause and +pop up the stack at the start of the evaluation, so that the user can +single-step through the code." + (interactive "sEvaluate expression: \ni\nP") (or gds-client (gds-auto-associate-buffer) (call-interactively 'gds-associate-buffer)) (set-text-properties 0 (length expr) nil expr) - (gds-send (format "eval (%S . %S) #f \"Emacs expression\" 0 0 %S" + (gds-send (format "eval (%S . %S) #f \"Emacs expression\" 0 0 %S %s" (or correlator 'expression) (gds-abbreviated expr) - expr) + expr + (if debugp '(debug) '(none))) gds-client)) (defconst gds-abbreviated-length 35) @@ -325,19 +333,25 @@ region's code." (concat (substring code 0 (- gds-abbreviated-length 3)) "...") code)) -(defun gds-eval-defun () - "Evaluate the defun (top-level form) at point." - (interactive) +(defun gds-eval-defun (&optional debugp) + "Evaluate the defun (top-level form) at point. If invoked with +`C-u' prefix (or, in a program, with optional DEBUGP arg non-nil), +pause and pop up the stack at the start of the evaluation, so that the +user can single-step through the code." + (interactive "P") (save-excursion (end-of-defun) (let ((end (point))) (beginning-of-defun) - (gds-eval-region (point) end)))) - -(defun gds-eval-last-sexp () - "Evaluate the sexp before point." - (interactive) - (gds-eval-region (save-excursion (backward-sexp) (point)) (point))) + (gds-eval-region (point) end debugp)))) + +(defun gds-eval-last-sexp (&optional debugp) + "Evaluate the sexp before point. If invoked with `C-u' prefix (or, +in a program, with optional DEBUGP arg non-nil), pause and pop up the +stack at the start of the evaluation, so that the user can single-step +through the code." + (interactive "P") + (gds-eval-region (save-excursion (backward-sexp) (point)) (point) debugp)) ;;;; Help. |