This commit is contained in:
Zelong Kuang
2026-04-06 19:51:57 +10:00
parent 2fe4ba46e8
commit 14ecd3b17a
4 changed files with 60 additions and 9 deletions

View File

@@ -82,14 +82,12 @@
'("z" . meow-pop-selection)
'("'" . repeat)
'("<escape>" . ignore))
;; (meow-define-keys
;; 'beacon
;; '("C-g" . meow-grab))
;; (meow-define-keys
;; 'insert
;; '("ESC" . <escape>))
(meow-define-keys
'beacon
'("C-g" . meow-grab))
)
(use-package meow
:demand t
:hook (elpaca-after-init . meow-global-mode)
@@ -100,6 +98,8 @@
(add-to-list 'meow-mode-state-list '(eshell-mode . insert))
(add-to-list 'meow-mode-state-list '(git-commit-elisp-text-mode . insert))
(define-key input-decode-map (kbd "C-[") [control-bracketleft])
(define-key meow-insert-state-keymap [control-bracketleft] 'meow-insert-exit)
(setq meow-keypad-leader-dispatch "C-c"
meow-use-clipboard t)
(setq meow-replace-state-name-list
@@ -110,4 +110,40 @@
(beacon . "<B>")))
(setq meow-cursor-type-normal 'bar))
;; Meow jk exit
(use-package meow
:disabled t
:after meow
:config
;; Use jk to escape from insert state to normal state
(defvar meow-two-char-escape-sequence "jk")
(defvar meow-two-char-escape-delay 0.5)
(defun meow--two-char-exit-insert-state (s)
"Exit meow insert state when pressing consecutive two keys.
S is string of the two-key sequence."
(when (meow-insert-mode-p)
(let ((modified (buffer-modified-p))
(undo-list buffer-undo-list))
(insert (elt s 0))
(let* ((second-char (elt s 1))
(event
(if defining-kbd-macro
(read-event nil nil)
(read-event nil nil meow-two-char-escape-delay))))
(when event
(if (and (characterp event) (= event second-char))
(progn
(backward-delete-char 1)
(set-buffer-modified-p modified)
(setq buffer-undo-list undo-list)
(meow-insert-exit))
(push event unread-command-events)))))))
(defun meow-two-char-exit-insert-state ()
"Exit meow insert state when pressing consecutive two keys."
(interactive)
(meow--two-char-exit-insert-state meow-two-char-escape-sequence))
(define-key meow-insert-state-keymap (substring meow-two-char-escape-sequence 0 1)
#'meow-two-char-exit-insert-state))
(provide 'init-meow)