From 2576f016153baa11c6e62deeb329dd72f0aa89c8 Mon Sep 17 00:00:00 2001 From: TCCQ Date: Fri, 14 Feb 2025 15:40:29 -0800 Subject: emacs full rework from laptop --- emacs/site-lisp/maze.el | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 emacs/site-lisp/maze.el (limited to 'emacs/site-lisp/maze.el') diff --git a/emacs/site-lisp/maze.el b/emacs/site-lisp/maze.el new file mode 100644 index 0000000..784049f --- /dev/null +++ b/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