From ede907775db2df00c0c99a7bc3f2994782125d67 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Thu, 20 Aug 2026 12:28:35 -0700 Subject: Squashed commit of the following: commit a00bfc643e834498b020eb47ee37da4a17cf6e39 Author: Cliff Click Date: Thu Aug 20 12:27:52 2026 -0700 Add a emacs Simple.el mode commit b5b399e16038d20ba6928aa329268b229b90e2f7 Author: Cliff Click 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 --- .emacs/simple-mode.el | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .emacs/simple-mode.el (limited to '.emacs') 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)) + ("\\_\\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 -- cgit v1.2.3