125 lines
3.5 KiB
EmacsLisp
125 lines
3.5 KiB
EmacsLisp
;;; meow.el -*- lexical-binding: t; -*-
|
|
|
|
(setq doom-leader-alt-key "C-<SPC>")
|
|
(setq doom-localleader-alt-key "C-M-<SPC>")
|
|
|
|
;; 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)
|
|
'("<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)
|
|
'("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)
|
|
'("<escape>" . 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))
|