branch: elpa/forth-mode
commit ee0781f0a8efe6861e84beddad6622ec5144fd26
Author: Lars Brinkhoff <[email protected]>
Commit: Lars Brinkhoff <[email protected]>
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