From 9139a1b136fa2b5adfcac0ac09a4f61aa1ee1ff4 Mon Sep 17 00:00:00 2001 From: Thomas Ulmer Date: Wed, 4 Feb 2026 14:24:16 -0800 Subject: full reorg --- config/emacs/site-lisp/maze.el | 64 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 config/emacs/site-lisp/maze.el (limited to 'config/emacs/site-lisp/maze.el') diff --git a/config/emacs/site-lisp/maze.el b/config/emacs/site-lisp/maze.el new file mode 100644 index 0000000..784049f --- /dev/null +++ b/config/emacs/site-lisp/maze.el @@ -0,0 +1,64 @@ +;; [adj] movement and editing for lisp + +(provide 'maze-lisp) + +(defun maze--cur-end () + (push-mark) + (thing-at-point--end-of-sexp) + (let ((cur (point))) + (goto-char (mark)) + (pop-mark) + cur)) + +(defun maze--hl (beg end &optional buffer) + (let ((overlay (make-overlay beg end (or buffer (current-buffer))))) + (overlay-put overlay 'face 'highlight) + (setq maze-overlay overlay) + overlay)) + +(defun maze--unhl () + (if maze-overlay + (delete-overlay maze-overlay))) + +(defun maze--update-hl (beg end) + (if maze-overlay + (move-overlay maze-overlay beg end) + (maze--hl beg end))) + +(defun maze-forward (n) + (interactive "p") + (goto-char (or (scan-sexps (point) 2) (buffer-end 1))) + (thing-at-point--beginning-of-sexp) + (maze--update-hl (point) (maze--cur-end))) + +(defun maze-backward (n) + (interactive "p") + (let ((n (or n 1))) + (backward-sexp n)) + (maze--update-hl (point) (maze--cur-end))) + +(defun maze-inward (n) + (interactive "p") + (down-list n) + (maze--update-hl (point) (maze--cur-end))) + +(defun maze-outward (n) + (interactive "p") + (backward-up-list n) + (maze--update-hl (point) (maze--cur-end))) + +(defvar-keymap maze-mode-map + (kbd "j") 'maze-forward + (kbd "k") 'maze-backward + (kbd "l") 'maze-inward + (kbd "h") 'maze-outward) + + +(define-minor-mode maze-mode + "doc" + :keymap maze-mode-map + :init-value nil + :after-hook (progn + (setq-local parse-sexp-ignore-comments t) + (setq-local maze-overlay nil) + (font-lock-mode 1))) -- cgit v1.2.3