]> git.eshelyaron.com Git - emacs.git/commitdiff
el.el: WIP
authorEshel Yaron <me@eshelyaron.com>
Mon, 26 Aug 2024 14:28:26 +0000 (16:28 +0200)
committerEshel Yaron <me@eshelyaron.com>
Wed, 4 Sep 2024 07:51:21 +0000 (09:51 +0200)
lisp/progmodes/el.el

index 520d06b926a4cb107cc78ae7081e4fc71429d069..7d5c8f981a715d183b1e0df4a681c0f417c82aa4 100644 (file)
@@ -25,8 +25,8 @@
 ;;; Code:
 
 (eval-when-compile (require 'cl-lib))
-
 (require 'subr-x)
+(require 'avy)
 
 (defface el-free-variable '((t :inherit underline))
   "Face for highlighting free variables in Emacs Lisp code.")
@@ -201,8 +201,29 @@ This is the `font-lock-fontify-region-function' for `emacs-lisp-mode'."
       (replace-region-contents beg end (lambda () str))
     (user-error "No expression at point")))
 
+(defun el-code-pos-p (&optional pos) (null (nth 8 (syntax-ppss pos))))
+
+(defun el-jump ()
+  (interactive)
+  (avy-jump "[([]"
+            :window-flip t
+            :beg (save-excursion (beginning-of-defun) (point))
+            :end (save-excursion (end-of-defun) (point))
+            :action #'avy-action-goto
+            :pred #'el-code-pos-p))
+
+(defun el-last ()
+  (interactive "" el-mode)
+  (up-list 1 t t) (backward-char))
+
+(defun el-backward-down ()
+  (interactive)
+  (backward-sexp)
+  (down-list)
+  (el-last))
+
 (defvar-keymap el-mode-map
-  :doc "Keymap for `el-mode'."
+  :suppress t
   "r" #'raise-sexp
   "t" #'transpose-sexps
   "u" #'backward-up-list
@@ -216,11 +237,17 @@ This is the `font-lock-fontify-region-function' for `emacs-lisp-mode'."
   "\"" #'insert-pair
   "/" #'undo
   "c" #'el-insert-function-call
-  "s" #'el-edit-sexp
+  "e" #'end-of-defun
   "x" #'eval-defun
   "a" #'beginning-of-defun
-  "e" #'end-of-defun
-  "m" #'mark-sexp)
+  "s" #'el-edit-sexp
+  "i" #'el-insert-sexp
+  "l" #'el-last
+  "p" #'el-backward-down
+  "j" #'el-jump
+  "m" #'mark-sexp
+  "." #'xref-find-definitions
+  "," #'xref-go-back)
 
 ;;;###autoload
 (define-derived-mode el-mode prog-mode "EL"