[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/forth-mode 24d3d052fe 003/153: More work. Font lock and na
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/forth-mode 24d3d052fe 003/153: More work. Font lock and navigation somewhat usable. |
Date: |
Sat, 29 Jan 2022 08:02:06 -0500 (EST) |
branch: elpa/forth-mode
commit 24d3d052fe86b3cc22967bddecf4a5e941bc935d
Author: Lars Brinkhoff <lars@nocrew.org>
Commit: Lars Brinkhoff <lars@nocrew.org>
More work. Font lock and navigation somewhat usable.
---
forth-block-mode.el | 3 +++
forth-interaction-mode.el | 3 +++
forth-mode.el | 66 ++++++++++++++++++++++++++++++++++++-----------
3 files changed, 57 insertions(+), 15 deletions(-)
diff --git a/forth-block-mode.el b/forth-block-mode.el
new file mode 100644
index 0000000000..5edbbf0524
--- /dev/null
+++ b/forth-block-mode.el
@@ -0,0 +1,3 @@
+(define-minor-mode forth-block-mode
+ "Minor mode for Forth code in blocks."
+ :lighter " block")
diff --git a/forth-interaction-mode.el b/forth-interaction-mode.el
new file mode 100644
index 0000000000..74dc7696b7
--- /dev/null
+++ b/forth-interaction-mode.el
@@ -0,0 +1,3 @@
+(define-derived-mode forth-interaction-mode comint-mode "Forth Interaction"
+ "Major mode for interacting with Forth."
+ :syntax-table forth-interaction-mode-syntax-table)
diff --git a/forth-mode.el b/forth-mode.el
index 815d18b571..ad55515344 100644
--- a/forth-mode.el
+++ b/forth-mode.el
@@ -1,13 +1,40 @@
;;;; -*- emacs-lisp -*-
+;;; Copyright 2014 Lars Brinkhoff
-(defvar forth-mode-map)
+(defvar forth-mode-map
+ (let ((map (make-sparse-keymap)))
+ ;; (define-key (kbd "C-x C-e") #'forth-eval-last-sexp)
+ ;; (define-key (kbd "C-M-x") #'forth-eval-defun)
+ ;; (define-key (kbd "C-c C-r") #'forth-eval-region)
+ ;; eval-buffer
+ ;; compile-region
+ ;; (define-key (kbd "C-x C-e") #'forth-eval-last-sexp)
+ ;; (define-key (kbd "C-M-x") #'forth-eval-defun)
+ ;; (define-key (kbd "C-c C-r") #'forth-eval-region)
+ ;; (define-key (kbd "C-c C-l") #'forth-load-file)
+ ;; (define-key (kbd "C-c :") #'forth-eval-expression)
+ ;; (define-key (kbd "C-c C-c") #'forth-compile-defun)
+ ;; (define-key (kbd "C-c C-k") #'forth-compile-and-load-file)
+ ;; (define-key (kbd "C-c M-k") #'forth-compile-file)
+ ;; (define-key (kbd "C-x `") #'forth-next-error)
+ ;; (define-key (kbd "M-n") #'forth-next-note)
+ ;; (define-key (kbd "M-p") #'forth-previous-note)
+ ;; (define-key (kbd "M-TAB") #'forth-complete-symbol)
+ ;; (define-key (kbd "M-.") #'forth-edit-definition)
+ ;; (define-key (kbd "C-c M-d") #'forth-disassemble-symbol)
+ ;; (define-key (kbd "C-c M-d") #'forth-disassemble-symbol)
+ ;; (define-key (kbd "C-c C-z") #'forth-switch-to-output-buffer)
+ map))
(defvar forth-mode-syntax-table
(let ((table (make-syntax-table)))
(modify-syntax-entry ?\\ "<" table)
(modify-syntax-entry ?\n ">" table)
- (modify-syntax-entry ?\( "<" table)
- (modify-syntax-entry ?\) ">" table)
+ (modify-syntax-entry ?\( "<1" table)
+ (modify-syntax-entry ?\) ">4" table)
+ (modify-syntax-entry ?* "_23n" table)
+ (modify-syntax-entry ?\{ "<" table)
+ (modify-syntax-entry ?\} ">" table)
(modify-syntax-entry ?\: "(" table)
(modify-syntax-entry ?\; ")" table)
(modify-syntax-entry ?[ "(" table)
@@ -21,30 +48,39 @@
(modify-syntax-entry ?, "_" table)
table))
-(defvar forth-mode-hooks)
+(defvar forth-mode-hook)
+
+(defvar forth-font-lock-keywords
+ '((forth-match-colon-definition 3 font-lock-function-name-face)))
;;;### autoload
-(defun forth-mode ()
- "Major mode for editing Forth files."
- (interactive)
- (kill-all-local-variables)
- (set-syntax-table forth-mode-syntax-table)
- ;; (make-local-variable ...)
- (setq major-mode 'forth-mode
- mode-name "Forth"
- ;; font-lock-defaults
+(define-derived-mode forth-mode prog-mode "Forth"
+ "Major mode for editing Forth files."
+ :syntax-table forth-mode-syntax-table
+ (setq font-lock-defaults '(forth-font-lock-keywords))
+ (setq ;; font-lock-defaults
indent-line-function #'forth-indent
comment-indent-function #'forth-indent-comment
comment-start-skip "\\((\\*?\\|\\\\\\) *"
comment-start "("
- comment-end ")")
- (run-mode-hooks 'forth-mode-hooks))
+ comment-end ")"
+ imenu-generic-expression
+ '(("Words"
+ "^\\s-*\\(:\\|code\\|defer\\)\\s-+\\(\\(\\sw\\|\\s_\\)+\\)" 2)
+ ("Variables"
+
"^\\s-*2?\\(variable\\|create\\|value\\)\\s-+\\(\\(\\sw\\|\\s_\\)+\\)" 2)
+ ("Constants"
+ "\\s-2?constant\\s-+\\(\\(\\sw\\|\\s_\\)+\\)" 1))))
(add-to-list 'auto-mode-alist '("\\.\\(f\\|fs\\|fth\\)\\'" . forth-mode))
;;; : ; does> variable constant value
;;; if else then do loop begin while repeat again until postpone
+(defun forth-match-colon-definition (limit)
+ (search-forward-regexp
"\\(^\\|\\s-\\)\\(\\S-*:\\|code\\|defer\\|2?variable\\|create\\|2?value\\|2?constant\\)\\s-+\\([[:graph:]]+\\)"
+ limit t))
+
(defun forth-forward-sexp ())
(defun forth-backward-sexp ())
(defun forth-kill-sexp ())
- [nongnu] elpa/forth-mode 8471704670 116/153: Add more font lock keywords, (continued)
- [nongnu] elpa/forth-mode 8471704670 116/153: Add more font lock keywords, ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 9300eb75c4 025/153: Remove stubs., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 778470cbcb 014/153: Load a file into an interactive Forth session., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 9855800cb7 053/153: Start a user manual., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 3deee67777 097/153: Emacs 23: Don't test font-lock., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode b455a556fe 056/153: Add C-M-x, forth-eval-defun., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 973481a1c5 007/153: Add some autoloads., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 244c416c4d 013/153: Variable for secifying Forth executable., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode cdab2e4ec1 038/153: Also recognise .4th., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 695bb04ebc 002/153: A humble beginning., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 24d3d052fe 003/153: More work. Font lock and navigation somewhat usable.,
ELPA Syncer <=
- [nongnu] elpa/forth-mode 93756ec224 005/153: Some basic and flawed support for block files., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode bca8f01218 004/153: Make it work in older Emacsen without prog-mode., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode effb52b8e0 009/153: Load files from load-path., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 3047dfa37a 008/153: Run a subprocess Forth for interaction., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 6ab334684b 010/153: Send a string to an interactive Forth session., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode b6b1f049b0 017/153: Restart an interactive Forth session., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 7c75c452e9 022/153: Correct autoload cookie format, ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode e4ed4a8acf 050/153: Test with both Emacs 23 and 24., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode cc267b4b85 043/153: Symbol completion. Candidates come from a running Forth., ELPA Syncer, 2022/01/29
- [nongnu] elpa/forth-mode 50adf0d552 024/153: Remove byte-compile warnings., ELPA Syncer, 2022/01/29