diff options
| author | Cliff Click <cliffc@acm.org> | 2026-08-20 12:28:35 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-08-20 12:28:35 -0700 |
| commit | ede907775db2df00c0c99a7bc3f2994782125d67 (patch) | |
| tree | 5b676781e64dbfb2f0a660b1e2d506da7d4d9754 /.emacs | |
| parent | 3568f3deed586327f885ac98b73d07ae3ade6e57 (diff) | |
| download | Simple-ede907775db2df00c0c99a7bc3f2994782125d67.tar.gz Simple-ede907775db2df00c0c99a7bc3f2994782125d67.zip | |
Squashed commit of the following:
commit a00bfc643e834498b020eb47ee37da4a17cf6e39
Author: Cliff Click <cliffc@acm.org>
Date: Thu Aug 20 12:27:52 2026 -0700
Add a emacs Simple.el mode
commit b5b399e16038d20ba6928aa329268b229b90e2f7
Author: Cliff Click <cliffc@acm.org>
Date: Thu Aug 20 11:37:17 2026 -0700
Tone down expensive asserts
Put the expensive asserts on a log-scale flag, run them only once every 2^N attempts
Diffstat (limited to '.emacs')
| -rw-r--r-- | .emacs/simple-mode.el | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/.emacs/simple-mode.el b/.emacs/simple-mode.el new file mode 100644 index 00000000..47800806 --- /dev/null +++ b/.emacs/simple-mode.el @@ -0,0 +1,38 @@ +;;; simple-mode.el --- Major mode for Simple source files -*- lexical-binding: t; -*- + +(require 'cc-mode) + +(defconst simple-mode-primitive-types + '("int" "i8" "i16" "i32" "i64" "u8" "u16" "u32" "u64" + "byte" "bool" "flt" "f32" "f64" "val" "var") + "Primitive and built-in type names in Simple.") + +(defconst simple-mode-font-lock-keywords + `((,(regexp-opt simple-mode-primitive-types 'symbols) . font-lock-type-face) + (,(regexp-opt '("boolean" "long" "short" "char" "float" "double" "void") 'symbols) (0 nil t)) + ("\\_<new\\_>\\s-+\\(?:[[:alpha:]_][[:alnum:]_$]*\\.\\)*\\([[:alpha:]_][[:alnum:]_$]*\\)" (1 nil t))) + "Additional Simple keywords using Java's type face.") + +(defun simple-mode-set-indentation () + (setq-local c-basic-offset 4) + (setq-local indent-tabs-mode nil)) + +(define-derived-mode simple-mode java-mode "Simple" + "Major mode for Simple .smp source files." + (simple-mode-set-indentation) + (setq-local c-primitive-type-key + (concat "\\(" (regexp-opt simple-mode-primitive-types) "\\)" + "\\([^[:alnum:]_$]\\|$\\)")) + (setq-local font-lock-defaults + `((,@java-font-lock-keywords ,@simple-mode-font-lock-keywords) + nil nil ((?_ . "w") (?$ . "w")) + c-beginning-of-syntax + (font-lock-mark-block-function . c-mark-function))) + (setq-local font-lock-keywords nil) + (font-lock-set-defaults) + (font-lock-mode 1)) + +(add-hook 'simple-mode-hook #'simple-mode-set-indentation) + +(provide 'simple-mode) +;;; simple-mode.el ends here |
