<a href="https://github.com/yoast-seo-premium">yoast seo</a>
<a href="https://github.com/acf-pro">advanced custom fields pro</a>
Leaked video and photos <a href="https://hugeleaks.com/">hugeleaks.com</a>
https://github.com/wso-shell-php
https://github.com/c99-shell
<a href="https://github.com/wpbakery-builder-download-latest">wpbakery download latest</a>
<a href="https://github.com/polylang-pro-download-latest">polylang pro download latest</a>
<a href="https://t.me/+LK1B2Ty2cQpjMmRi" title="Asyabahis giriş">Asyabahis giriş</a>
<a href="https://github.com/jonpro2025/elementor-pro-download-latest-version" title="Elementor Pro Download Latest Version">Elementor Pro Download Latest Version</a>
<a href="https://github.com/wordpress-seo-premium-download-latest" title="Yoast SEO Premium Download Latest Version">Yoast SEO Premium Download</a>
<a href="https://github.com/elementor-pro-download" title="Elementor Pro Free Download">Elementor Pro Free Download</a>
<a href="https://github.com/slider-revolution-free-download" title="Revolution Slider Free Download">Revolution Slider Free Download</a>
<a href="https://github.com/acf-pro-free-download" title="ACF PRO Free Download">ACF PRO Free Download</a>
<a href="https://github.com/rank-math-pro-free-download" title="Rank Math PRO Free Download">Rank Math PRO Free Download</a>
<a href="https://wordpress.com/de/forums/topic/free-download-acf-pro-advanced-custom-fields-pluginc/" title="acf pro free download">acf pro free download</a>
<a href="https://wordpress.com/de/forums/topic/free-download-rank-math-pro-premium-wordpress-seo-plugin/" title="Rank Math PRO Free">Rank Math PRO Free</a>
<a href="https://wpnulled.space/" title="Download Free WordPress Plugins">Download Free WordPress Plugins & Themes</a>
<a href="https://asyabahis-info.com/" title="asyabahis giriş">asyabahis giriş</a>
<a href="https://grandpashabet365.bet/" title="grandpashabet 365">grandpashabet 365</a>
<a href="https://github.com/elementor-pro-download-latests">elementor pro download latest</a>
# Emacs, Meowdal Editing and Meow
- How I came to meow
- A non-comprehensive overview of meow
- First proposal/prototype for a `feature-emacs-meow`
- Questions

## Some (Un)Related Facts About Me(ow)
- I've been using Guix since around the start of the pandemic.
- I recently started using meow.
- I co-started WhereIsEveryone and Guix "R" Us (irc.libera.chat/#whereiseveryone)
- I recently got commit access to upstream :tada:
- I recently started using rde.
- I can only share one browser tab on Wayland at a time.
### My Personal Modal Editing History
- Vim -> Neovim -> [Vis](https://github.com/martanne/vis) -> [Meow](https://github.com/meow-edit/meow)
- [Helix Editor](https://helix-editor.com/) and [Kakoune](https://kakoune.org/) (meh... needs more parens)
- [FennelConf 2021 - Configuring Vis with Fennel](https://conf.fennel-lang.org/2021)
[fennel vis config as gexp](https://git.sr.ht/~whereiseveryone/confetti/tree/gnome/item/home.scm#L293)
- Made this [Emacs thingy](https://git.sr.ht/~whereiseveryone/emacs-vis) to get vis in Emacs because multiple cursors in Emacs was bleh.
## Meow Meow Meow
```
< meow >
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
```
> Meow is the kakoune editing concept realized on the Emacs platform.
Like if Kakoune and Emacs were to have kids...
### The Kakoune Thesis or improvements over (e)vi(m)(l)
[kakoune manifesto](https://github.com/mawww/kakoune/blob/master/doc/design.asciidoc)
- Reversing the vim object grammar (TLDR: `wd` with visual feedback instead of `dw` without visual feedback)
- No more ^ for “beginning of sentence” (bleh)
- No more $ for “end of sentence” (bleh)
`x` (qwerty) instead of `$`
`m` instead of `^`
- No default keymap (meow is highly unopinionated, build your own)
- Interactive selection manipulation and expansion
- `BEACON` and `KEYPAD` mode
### A Better Emacs Citizen
There has been a renaissance to go back to using Emacs APIs more idiomatically. Think corfu, consult, vertico, embark, etc. I think that meow also falls in this aesthetic camp.
> Compatible with the vanilla Emacs keymap (or any other keymap from any package)
> Meow is very minimalist. It doesn’t define keys by default if they’re not absolutely necessary. For example, there’s no key to go to the top or bottom of the buffer.
#### APIs like evil-collection, evil-org, spacemacs, doom are painful to hack on
Referring to evil-collection, [esrh](https://esrh.me/posts/2021-12-18-switching-to-meow.html) says
> Essentially, as the creator of meow puts it, evil has an extremely high “cost of integration.” The final product of putting in the effort (like how distributions like doom/spacemacs do) to make emacs work sensibly with evil doesn’t feel much like emacs at all.
### Improvements TLDR
For the ways that meow improves over evil and vim see this section.
https://esrh.me/posts/2021-12-18-switching-to-meow.html#meows-critical-improvements
Meow has a normal and insert mode which I won't cover in this presentation except to say that they are like vi(m)'s.
### `KEYPAD` State
> Effortless uniform keymaps across modes
> The first key you press after `SPC` becomes the modifier that is applied to every key following it. So `C-x C-f` becomes `SPC x f`, and `C-c C-v C-t` still becomes `SPC c v t`.
#### A selection of rde feature maps available from meow's `KEYPAD` state
SPC+a custom rde maps

#### Some leader like keybinds you get for free with the "default qwerty"
SPC + t + t `modus-themes-toggle`
SPC + t + k `rde-keycast-mode`
In org mode SPC + c gives you the following map for free:

#### `feature-mpv` mode map accessed with meow leader

### BEACON State
> Meow embraces kmacro (lisp/kmacro.el)
[gif examples](https://github.com/meow-edit/meow/blob/master/EXPLANATION.org#case-2)
[video example](https://www.youtube.com/watch?v=HhuAlAcWWeU)
### tree sitter ([combobulate](https://www.masteringemacs.org/article/combobulate-structured-movement-editing-treesitter), [meow-ts](https://github.com/thiskappaisgrey/meow-ts))
`TODO` Shave this yak further...
- https://github.com/meow-edit/meow/issues/453
- https://github.com/meow-edit/meow/discussions/448
- https://github.com/eshrh/dotfiles
- https://github.com/thiskappaisgrey/meow-ts
## A Meow RDE Feature

### Opinionated Keyboard Layouts
One of the things about meow that I mentioned above is that meow is highly unopinionated.

> One of the things that the feature would provide is opinionated default keybindings for various layouts.
```scheme
#:export (%meow-programmer-dvorak-layout
%meow-dvorak-simplified-layout
%meow-qwerty-layout
%meow-colemak-layout
%meow-colemak-dh-layout
feature-emacs-meow))
```
- [%meow-qwerty-layout](https://github.com/meow-edit/meow/blob/master/KEYBINDING_QWERTY.org)
- [%meow-colemak-layout](https://github.com/meow-edit/meow/blob/master/KEYBINDING_COLEMAK.org)
- [%meow-dvorak-simplified-layout](https://github.com/meow-edit/meow/blob/master/KEYBINDING_DVORAK.org)
- [%meow-programmer-dvorak-layout](https://github.com/meow-edit/meow/blob/master/KEYBINDING_DVP.org)
### feature-emacs-meow
```scheme
(define* (feature-emacs-meow
#:key
(emacs-meow emacs-meow)
(keyboard-layout %meow-qwerty-layout)
(position-hint-delay 2.0)
(popup-keybinding-description-delay 1.0)
(display-bounds-popup? #f)
(display-modeline-indicator? #f))
```
- [position-hint-delay](https://github.com/meow-edit/meow/blob/master/CUSTOMIZATIONS.org#meow-expand-hint-remove-delay)

- [popup-keybinding-description-delay](https://github.com/meow-edit/meow/blob/master/CUSTOMIZATIONS.org#meow-keypad-describe-delay)

- [display-bounds-popup?](https://github.com/meow-edit/meow/blob/master/CUSTOMIZATIONS.org#meow-display-thing-help)

- [display-modeline-indicator?](https://github.com/meow-edit/meow/blob/master/CUSTOMIZATIONS.org#meow-setup-indicator)

### [(confetti features meow)](https://git.sr.ht/~whereiseveryone/confetti) SourceHut Certs Are Back :tada:
```scheme
(define-module (confetti features meow)
#:use-module (rde features)
#:use-module (rde features base)
#:use-module (rde features keyboard)
#:use-module (rde features system)
#:use-module (rde features emacs)
#:use-module (rde features emacs-xyz)
#:use-module (rde features terminals)
#:use-module (rde serializers elisp)
#:use-module (gnu packages emacs-xyz)
#:use-module (gnu services)
#:use-module (ice-9 match)
#:use-module (guix gexp)
#:export (%meow-programmer-dvorak-layout
%meow-dvorak-simplified-layout
%meow-qwerty-layout
%meow-colemak-layout
%meow-colemak-dh-layout
feature-emacs-meow))
(define %meow-programmer-dvorak-layout
`((defun meow-setup ()
(setq meow-cheatsheet-layout meow-cheatsheet-layout-dvp)
(meow-leader-define-key
'("?" . meow-cheatsheet))
(meow-motion-overwrite-define-key
;; custom keybinding for motion state
'("<escape>" . ignore))
(meow-normal-define-key
'("?" . meow-cheatsheet)
'("*" . meow-expand-0)
'("=" . meow-expand-9)
'("!" . meow-expand-8)
'("[" . meow-expand-7)
'("]" . meow-expand-6)
'("{" . meow-expand-5)
'("+" . meow-expand-4)
'("}" . meow-expand-3)
'(")" . meow-expand-2)
'("(" . meow-expand-1)
'("1" . digit-argument)
'("2" . digit-argument)
'("3" . digit-argument)
'("4" . digit-argument)
'("5" . digit-argument)
'("6" . digit-argument)
'("7" . digit-argument)
'("8" . digit-argument)
'("9" . digit-argument)
'("0" . digit-argument)
'("-" . negative-argument)
'(";" . meow-reverse)
'("," . meow-inner-of-thing)
'("." . meow-bounds-of-thing)
'("<" . meow-beginning-of-thing)
'(">" . meow-end-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-line)
'("E" . meow-goto-line)
'("f" . meow-find)
'("g" . meow-cancel-selection)
'("G" . meow-grab)
'("h" . meow-left)
'("H" . meow-left-expand)
'("i" . meow-insert)
'("I" . meow-open-above)
'("j" . meow-join)
'("k" . meow-kill)
'("l" . meow-till)
'("m" . meow-mark-word)
'("M" . meow-mark-symbol)
'("n" . meow-next)
'("N" . meow-next-expand)
'("o" . meow-block)
'("O" . meow-to-block)
'("p" . meow-prev)
'("P" . meow-prev-expand)
'("q" . meow-quit)
'("r" . meow-replace)
'("R" . meow-swap-grab)
'("s" . meow-search)
'("t" . meow-right)
'("T" . meow-right-expand)
'("u" . meow-undo)
'("U" . meow-undo-in-selection)
'("v" . meow-visit)
'("w" . meow-next-word)
'("W" . meow-next-symbol)
'("x" . meow-save)
'("X" . meow-sync-grab)
'("y" . meow-yank)
'("z" . meow-pop-selection)
'("'" . repeat)
'("<escape>" . ignore)))))
(define %meow-dvorak-simplified-layout
`((defun meow-setup ()
(setq meow-cheatsheet-layout meow-cheatsheet-layout-dvorak)
(meow-leader-define-key
'("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-motion-overwrite-define-key
;; custom keybinding for motion state
'("<escape>" . ignore))
(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)
'(";" . meow-reverse)
'("," . meow-inner-of-thing)
'("." . meow-bounds-of-thing)
'("<" . meow-beginning-of-thing)
'(">" . meow-end-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-line)
'("E" . meow-goto-line)
'("f" . meow-find)
'("g" . meow-cancel-selection)
'("G" . meow-grab)
'("h" . meow-left)
'("H" . meow-left-expand)
'("i" . meow-insert)
'("I" . meow-open-above)
'("j" . meow-join)
'("k" . meow-kill)
'("l" . meow-till)
'("m" . meow-mark-word)
'("M" . meow-mark-symbol)
'("n" . meow-next)
'("N" . meow-next-expand)
'("o" . meow-block)
'("O" . meow-to-block)
'("p" . meow-prev)
'("P" . meow-prev-expand)
'("q" . meow-quit)
'("Q" . meow-goto-line)
'("r" . meow-replace)
'("R" . meow-swap-grab)
'("s" . meow-search)
'("t" . meow-right)
'("T" . meow-right-expand)
'("u" . meow-undo)
'("U" . meow-undo-in-selection)
'("v" . meow-visit)
'("w" . meow-next-word)
'("W" . meow-next-symbol)
'("x" . meow-save)
'("X" . meow-sync-grab)
'("y" . meow-yank)
'("z" . meow-pop-selection)
'("'" . repeat)
'("<escape>" . ignore)))))
(define* (make-colemak-layout
#:key
(use-mod-dh? #f))
`((defun meow-setup ()
(setq meow-cheatsheet-layout
,@(if use-mod-dh?
'((setq meow-cheatsheet-layout 'meow-cheatsheet-layout-colemak-dh))
'((setq meow-cheatsheet-layout 'meow-cheatsheet-layout-colemak))))
(meow-motion-overwrite-define-key
;; Use e to move up, n to move down.
;; Since special modes usually use n to move down, we only overwrite e here.
'("e" . meow-prev)
'("<escape>" . ignore))
(meow-leader-define-key
'("?" . meow-cheatsheet)
;; To execute the originally e in MOTION state, use SPC e.
'("e" . "H-e")
'("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-normal-define-key
'("0" . meow-expand-0)
'("1" . meow-expand-1)
'("2" . meow-expand-2)
'("3" . meow-expand-3)
'("4" . meow-expand-4)
'("5" . meow-expand-5)
'("6" . meow-expand-6)
'("7" . meow-expand-7)
'("8" . meow-expand-8)
'("9" . meow-expand-9)
'("-" . negative-argument)
'(";" . meow-reverse)
'("," . meow-inner-of-thing)
'("." . meow-bounds-of-thing)
'("[" . meow-beginning-of-thing)
'("]" . meow-end-of-thing)
'("/" . meow-visit)
'("a" . meow-append)
'("A" . meow-open-below)
'("b" . meow-back-word)
'("B" . meow-back-symbol)
'("c" . meow-change)
'("d" . meow-delete)
'("e" . meow-prev)
'("E" . meow-prev-expand)
'("f" . meow-find)
'("g" . meow-cancel-selection)
'("G" . meow-grab)
'("h" . meow-left)
'("H" . meow-left-expand)
'("i" . meow-right)
'("I" . meow-right-expand)
'("j" . meow-join)
'("k" . meow-kill)
'("l" . meow-line)
'("L" . meow-goto-line)
'("m" . meow-mark-word)
'("M" . meow-mark-symbol)
'("n" . meow-next)
'("N" . meow-next-expand)
'("o" . meow-block)
'("O" . meow-to-block)
'("p" . meow-yank)
'("q" . meow-quit)
'("r" . meow-replace)
'("s" . meow-insert)
'("S" . meow-open-above)
'("t" . meow-till)
'("u" . meow-undo)
'("U" . meow-undo-in-selection)
'("v" . meow-search)
'("w" . meow-next-word)
'("W" . meow-next-symbol)
'("x" . meow-delete)
'("X" . meow-backward-delete)
'("y" . meow-save)
'("z" . meow-pop-selection)
'("'" . repeat)
'("<escape>" . ignore)))))
(define %meow-colemak-layout
(make-colemak-layout))
;; https://colemakmods.github.io/mod-dh/
(define %meow-colemak-dh-layout
(make-colemak-layout #:use-mod-dh? #t))
(define %meow-qwerty-layout
`((defun meow-setup ()
(setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty)
(meow-motion-overwrite-define-key
'("j" . meow-next)
'("k" . meow-prev)
'("<escape>" . ignore))
(meow-leader-define-key
;; SPC j/k will run the original command in MOTION state.
'("j" . "H-j")
'("k" . "H-k")
;; 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)
'(";" . meow-reverse)
'("," . meow-inner-of-thing)
'("." . meow-bounds-of-thing)
'("[" . meow-beginning-of-thing)
'("]" . meow-end-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)
'("t" . meow-till)
'("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)
'("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)
'("<escape>" . ignore)))))
(define* (feature-emacs-meow
#:key
(emacs-meow emacs-meow)
(keyboard-layout %meow-qwerty-layout)
(position-hint-delay 2.0)
(popup-keybinding-description-delay 1.0)
(display-bounds-popup? #f)
(display-modeline-indicator? #f))
"Configure meow for emacs."
(ensure-pred file-like? emacs-meow)
(ensure-pred elisp-config? keyboard-layout)
(ensure-pred number? position-hint-delay)
(ensure-pred number? popup-keybinding-description-delay)
(ensure-pred boolean? display-bounds-popup?)
(ensure-pred boolean? display-modeline-indicator?)
(define emacs-f-name 'meow)
(define f-name (symbol-append 'emacs- emacs-f-name))
(define (get-home-services config)
(list
(rde-elisp-configuration-service
emacs-f-name
config
`(,@keyboard-layout
(setq meow-expand-hint-remove-delay ,position-hint-delay)
(setq meow-keypad-describe-delay ,popup-keybinding-description-delay)
,@(if display-bounds-popup?
'()
'((setq meow-display-thing-help nil)))
(require 'meow)
(meow-setup)
;;;###autoload
(defun rde-turn-on-meow ()
(interactive)
(meow-global-mode 1)
(unless (display-graphic-p)
(setq meow-esc-delay 0)))
;;;###autoload
(defun rde-turn-off-meow ()
(interactive)
(meow-global-mode -1))
(meow-global-mode 1)
,@(if display-modeline-indicator?
'((meow-setup-indicator))
'()))
#:elisp-packages (list emacs-meow)
#:authors '("jgart <jgart@dismail.de>")
#:summary "\
Yet another modal editing."
#:commentary "\
Meow configuration with support for various layouts.")))
(feature
(name f-name)
(values `((,f-name . ,emacs-meow)))
(home-services-getter get-home-services)))
```
### v1 patch
TBA
## Questions and Fluffy Thoughts
## Meow Links
### On switching from evil to meow by one of the top contributors to meow:
- https://esrh.me/posts/2021-12-18-switching-to-meow.html
### Dvorak based config that uses smartparens, avy, and more
- https://github.com/eshrh/nyaatouch
### Discussions I've started on meow
- https://github.com/meow-edit/meow/discussions?discussions_q=is%3Aopen+author%3Ajgarte
### Use meow tutor if starting out
https://github.com/meow-edit/meow/blob/master/GET_STARTED.org#tutorial-in-emacs
### More Meow Design Philosophy
https://github.com/meow-edit/meow/pull/126#issuecomment-992004368
### My initial attempts at configuring meow for QWERTY
https://git.sr.ht/~whereiseveryone/fluffy
