dot-doom/meow.el

122 lines
3.3 KiB
EmacsLisp

;;; meow.el -*- lexical-binding: t; -*-
(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)))))))
(setf meow--kbd-forward-char "<right>"
meow--kbd-undo "C-z")
(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)
'("<escape>" . 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)
'("P" . meow-yank-pop)
'("q" . meow-quit)
'("Q" . meow-goto-line)
'("r" . meow-swap-grab)
'("R" . rectangle-mark-mode)
'("s" . meow-kill)
'("t" . meow-till)
'("u" . meow-undo)
'("U" . undo-redo)
'("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" . end-of-buffer)
'("Z" . beginning-of-buffer)
'("<" . meow-beginning-of-thing)
'(">" . meow-end-of-thing)
'("/" . bookmark-in-project-jump)
'("'" . repeat)
'("=" . meow--eval-sexp)
'("[" . sp-backward-sexp)
'("]" . sp-forward-sexp)
'("{" . sp-backward-up-sexp)
'("}" . sp-down-sexp)
'("?" . bookmark-jump)
'("/" . bookmark-set)
'("\\" . bookmark-delete)
'("#" . string-inflection-all-cycle)
'("<escape>" . doom/escape)))
(use-package! meow
:demand t
: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))