;;; meow.el -*- lexical-binding: t; -*- (setq doom-leader-alt-key "C-") (setq doom-localleader-alt-key "C-M-") ;; Also use SPC m for localleader (defun my/call-localleader () (interactive) (setq unread-command-events (listify-key-sequence (kbd "C-M-SPC")))) (map! :leader (:desc "localleader" "m" #'my/call-localleader)) (defun meow--eval-sexp () (interactive) (cond ((derived-mode-p 'lisp-mode) (sly-eval-defun)) ((derived-mode-p 'sclang-mode) (sclang-eval-region-or-line)) (t (eros-eval-defun nil)))) (defun meow--post-isearch-function () (unless isearch-mode-end-hook-quit (when isearch-success (let ((beg (car isearch-match-data)) (end (cadr isearch-match-data))) (thread-first (meow--make-selection '(select . visit) beg (if isearch-forward end isearch-other-end)) (meow--select (not isearch-forward))))))) (add-hook 'isearch-mode-end-hook 'meow--post-isearch-function) (defun meow-setup () (setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty) (map! :leader "?" #'meow-cheatsheet) (meow-motion-define-key '("SPC" . doom/leader) ;; '("j" . meow-next) ;; '("k" . meow-prev) '("" . doom/escape)) (meow-normal-define-key '("SPC" . doom/leader) '("0" . meow-expand-0) '("9" . meow-expand-9) '("8" . meow-expand-8) '("7" . meow-expand-7) '("6" . meow-expand-6) '("5" . meow-expand-5) '("4" . meow-expand-4) '("3" . meow-expand-3) '("2" . meow-expand-2) '("1" . meow-expand-1) '("-" . negative-argument) '(";" . meow-reverse) '("," . meow-inner-of-thing) '("." . meow-bounds-of-thing) '("a" . meow-append) '("A" . meow-open-below) '("b" . meow-back-word) '("B" . meow-back-symbol) '("c" . meow-change) '("d" . meow-delete) '("D" . meow-backward-delete) '("e" . meow-next-word) '("E" . meow-next-symbol) '("f" . meow-find) '("F" . meow-query-replace) '("g" . meow-cancel-selection) '("G" . meow-grab) '("h" . meow-left) '("H" . meow-left-expand) '("i" . meow-insert) '("I" . meow-open-above) '("j" . meow-next) '("J" . meow-next-expand) '("k" . meow-prev) '("K" . meow-prev-expand) '("l" . meow-right) '("L" . meow-right-expand) '("m" . meow-join) '("n" . meow-search) '("o" . meow-block) '("O" . meow-to-block) '("p" . meow-yank) '("q" . meow-quit) '("Q" . meow-goto-line) '("r" . meow-replace) '("R" . meow-swap-grab) '("s" . meow-kill) '("t" . meow-till) '("u" . meow-undo) '("U" . meow-undo-in-selection) '("v" . meow-visit) '("w" . meow-mark-word) '("W" . meow-mark-symbol) '("x" . meow-line) '("X" . meow-goto-line) '("y" . meow-save) '("Y" . meow-sync-grab) '("z" . meow-pop-selection) '("'" . repeat) '("=" . meow--eval-sexp) '("[" . sp-backward-sexp) '("]" . sp-forward-sexp) '("{" . sp-backward-up-sexp) '("}" . sp-down-sexp) '("<" . meow-beginning-of-thing) '(">" . meow-end-of-thing) '("/" . bookmark-in-project-jump) '("?" . bookmark-jump) '("รท" . bookmark-delete) '("#" . string-inflection-all-cycle) '("" . doom/escape))) (use-package! meow :config (meow-setup) (pushnew! meow-mode-state-list '(mu4e-main-mode . motion)) (pushnew! meow-mode-state-list '(sly-db-mode . motion)) (pushnew! meow-mode-state-list '(sly-inspector-mode . motion)) (pushnew! meow-mode-state-list '(vterm-mode . insert)) (pushnew! meow-mode-state-list '(sly-mode . insert)) (meow-global-mode 1))