dotfiles/emacs-lisp/meow.org
2023-09-16 19:54:12 +02:00

131 lines
3.7 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:PROPERTIES:
:ID: b88618f2-258f-4f3a-93f7-46fd45bc833f
:END:
#+title: Meow
#+filetags: emacs-load
# SPDX-FileCopyrightText: 2022 Richard Brežák <richard@brezak.sk>
#
# SPDX-License-Identifier: LGPL-3.0-or-later
Meow is a modal editing framework, it's a bit like evil but also very different. This keymap is setup for KOY.
#+begin_src emacs-lisp
(defun magic_rb/meow-prev (arg)
"Runs meow-prev except for some specific cases"
(interactive "P")
(pcase major-mode
('ement-room-list-mode (forward-button (* (or arg 1) -1)))
(mode (meow-prev arg))))
(defun magic_rb/meow-next (arg)
"Runs meow-prev except for some specific cases"
(interactive "P")
(pcase major-mode
('ement-room-list-mode (forward-button (or arg 1)))
(mode (meow-next arg))))
;; (add-hook #'ement-room-list-mode-hook (lambda () (unless (button-at (point)) (forward-button 1))))
(defun meow-setup ()
(setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty)
(general-def
:keymaps 'meow-insert-state-keymap
"j" (general-key-dispatch 'self-insert-command
:timeout 0.25
"j" 'meow-insert-exit))
(meow-motion-overwrite-define-key
'("r" . magic_rb/meow-prev)
'("n" . magic_rb/meow-next)
'("<escape>" . ignore))
(meow-leader-define-key
;; SPC r/n will run the original command in MOTION state.
'("r" . "H-r")
'("n" . "H-n")
;; Use SPC (0-9) for digit arguments.
'("1" . meow-digit-argument)
'("2" . meow-digit-argument)
'("3" . meow-digit-argument)
'("4" . meow-digit-argument)
'("5" . meow-digit-argument)
'("6" . meow-digit-argument)
'("7" . meow-digit-argument)
'("8" . meow-digit-argument)
'("9" . meow-digit-argument)
'("0" . meow-digit-argument)
'("/" . meow-keypad-describe-key)
'("?" . meow-cheatsheet))
(meow-normal-define-key
'("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)
'("d" . meow-reverse)
'("w" . meow-inner-of-thing)
'("m" . meow-bounds-of-thing)
'("z" . meow-beginning-of-thing)
'("f" . meow-end-of-thing)
'("h" . meow-append)
'("H" . meow-open-below)
'("ö" . meow-back-word)
'("Ö" . meow-back-symbol)
'("ä" . meow-change)
'("e" . meow-delete)
'("E" . meow-backward-delete)
'("o" . meow-next-word)
'("O" . meow-next-symbol)
'("i" . meow-find)
'("u" . meow-cancel-selection)
'("U" . meow-grab)
'("c" . meow-insert)
'("C" . meow-open-above)
'("t" . meow-left)
'("T" . meow-left-expand)
'("r" . meow-prev)
'("R" . meow-prev-expand)
'("n" . meow-next)
'("N" . meow-next-expand)
'("s" . meow-right)
'("S" . meow-right-expand)
'("p" . meow-join)
'("b" . meow-search)
'("l" . meow-block)
'("L" . meow-to-block)
'("ß" . meow-clipboard-yank)
'("k" . meow-quit)
'("K" . meow-goto-line)
'("," . meow-replace)
'("" . meow-swap-grab)
'("a" . meow-clipboard-kill)
'("y" . meow-till)
'("g" . meow-undo)
'("G" . meow-undo-in-selection)
'("ü" . avy-goto-char-2)
'("." . meow-mark-word)
'("" . meow-mark-symbol)
'("q" . meow-line)
'("Q" . meow-goto-line)
'("v" . meow-clipboard-save)
'("V" . meow-sync-grab)
'("x" . meow-pop-selection)
'("D" . repeat)
'("<escape>" . ignore)))
#+end_src
#+begin_src emacs-lisp
(use-package meow
:straight t
:config
(meow-setup)
(meow-global-mode 1))
#+end_src