emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/forth-mode ee0781f0a8 066/153: Add more functions for eval


From: ELPA Syncer
Subject: [nongnu] elpa/forth-mode ee0781f0a8 066/153: Add more functions for evaluating Forth expressions.
Date: Sat, 29 Jan 2022 08:02:17 -0500 (EST)

branch: elpa/forth-mode
commit ee0781f0a8efe6861e84beddad6622ec5144fd26
Author: Lars Brinkhoff <lars.brinkhoff@delphi.com>
Commit: Lars Brinkhoff <lars.brinkhoff@delphi.com>

    Add more functions for evaluating Forth expressions.
---
 forth-interaction-mode.el | 36 +++++++++++++++++++++++++++++++++++-
 forth-mode.el             |  7 ++++---
 2 files changed, 39 insertions(+), 4 deletions(-)

diff --git a/forth-interaction-mode.el b/forth-interaction-mode.el
index 42f86a9373..784ce45959 100644
--- a/forth-interaction-mode.el
+++ b/forth-interaction-mode.el
@@ -103,10 +103,15 @@
        (setq forth-words-cache
              (split-string (forth-interaction-send "words"))))))
 
+;;;###autoload
+(defun forth-eval (string)
+  (interactive "sForth expression: ")
+  (message "%s" (forth-interaction-send string)))
+
 ;;;###autoload
 (defun forth-eval-region (start end)
   (interactive "r")
-  (message "%s" (forth-interaction-send (buffer-substring start end))))
+  (forth-eval (buffer-substring start end)))
 
 ;;;###autoload
 (defun forth-eval-defun ()
@@ -130,4 +135,33 @@
       (insert (forth-interaction-send "see " word)))
     (special-mode)))
 
+;;;###autoload
+(defun forth-switch-to-output-buffer ()
+  (interactive)
+  (if forth-interaction-buffer
+      (switch-to-buffer forth-interaction-buffer)
+      (message "Forth not started.")))
+
+;;;###autoload
+(defun forth-eval-last-expression ()
+  (interactive)
+  (save-excursion
+    (backward-sexp)
+    (let ((start (point)))
+      (forward-sexp)
+      (forth-eval-region start (point)))))
+
+;;;###autoload
+(defun forth-eval-last-expression-display-output ()
+  (interactive)
+  (if forth-interaction-buffer
+      (save-excursion
+       (backward-sexp)
+       (let ((start (point)))
+         (forward-sexp)
+         (let ((string (buffer-substring start (point))))
+           (forth-switch-to-output-buffer)
+           (insert (forth-interaction-send string)))))
+      (message "Forth not started.")))
+
 (provide 'forth-interaction-mode)
diff --git a/forth-mode.el b/forth-mode.el
index 5bc1430d81..2d618670da 100644
--- a/forth-mode.el
+++ b/forth-mode.el
@@ -20,14 +20,15 @@
     (define-key map (kbd "C-c C-s") 'forth-see)
     (define-key map (kbd "C-M-x") 'forth-eval-defun)
     (define-key map (kbd "C-c C-k") 'forth-kill)
+    (define-key map (kbd "C-c C-e") 'forth-eval-last-expression)
+    (define-key map (kbd "C-x M-e") 'forth-eval-last-expression-display-output)
+    (define-key map (kbd "C-c C-z") 'forth-switch-to-output-buffer)
+    (define-key map (kbd "C-c :") 'forth-eval)
     ;; (define-key map (kbd "C-c C-c") 'eval-buffer)
-    ;; (define-key map (kbd "C-x C-e") #'forth-eval-last-sexp)
-    ;; (define-key map (kbd "C-c :") #'forth-eval-expression)
     ;; (define-key map (kbd "C-x `") #'forth-next-error)
     ;; (define-key map (kbd "M-n") #'forth-next-note)
     ;; (define-key map (kbd "M-p") #'forth-previous-note)
     ;; (define-key map (kbd "M-.") #'forth-find-definition)
-    ;; (define-key map (kbd "C-c C-z") #'forth-switch-to-output-buffer)
     map))
 
 (defvar forth-mode-syntax-table



reply via email to

[Prev in Thread] Current Thread [Next in Thread]