doom-meow icon indicating copy to clipboard operation
doom-meow copied to clipboard

A meow module for Doom Emacs

#+TITLE: Meow mode for Doom Emacs #+DATE: December 6, 2021 #+SINCE: v2021.12

  • Table of Contents :TOC_3:noexport:
  • [[#overview][Overview]]
  • [[#features][Features]]
  • [[#getting-started][Getting started]]
    • [[#prerequisites][Prerequisites]]
    • [[#installation][Installation]]
  • [[#configuration][Configuration]]
    • [[#leader-and-localleader][Leader and Localleader]]
    • [[#manually-creating-cheatsheet-and-bindings][Manually creating cheatsheet and bindings]]
    • [[#system-clipboard][System Clipboard]]
    • [[#issues][Issues]]
  • [[#description][Description]]
    • [[#module-flags][Module Flags]]
    • [[#plugins][Plugins]]
  • Overview

This community module by me and [[https://github.com/VitalyAnkh][Vitaly]] (their older commits can be seen in the archived repository) adds support for [[https://github.com/meow-edit/meow][meow]], a global minor-mode for simple but powerful modal editing.

  • Features

[[https://github.com/meow-edit/meow][See the Meow project README]] for information on keybinds and usage. Also, if you have enabled this module, run =meow-tutor= in Emacs to get started with meow.

  • Getting started

** Prerequisites This module has no prerequisites

** Installation Make the directories =modules/editor= in your doom directory, (usually =~/.config/doom= or =~/.doom.d=), then clone this repo as =/modules/editor/meow= #+BEGIN_SRC sh mkdir -p ~/.doom.d/modules/editor && git clone https://github.com/Not-Leader/doom-meow ~/.doom.d/modules/editor/meow #+END_SRC sh

Then add =meow= to the =:editor= section of the init.el of your doom directory, with the module flag matching your layout and (recommended) with the =+leader= and =+override= module flags. #+BEGIN_SRC elisp :editor (meow +qwerty +override +leader) ;;(evil +everywhere); come to the dark side, we have cookies ... #+END_SRC elisp

  • Configuration *** Leader and Localleader When the =+leader= module flag is disabled, the bindings for =doom-leader-alt-key= and =doom-localleader-alt-key= are used for doom's leader and localleader key respectively.

If you want these bindings to be more easily accessible from meow's keypad, then they can be bound to something that exclusively uses the Control key, eg: setting =doom-localleader-alt-key= to =C-l=. Then the =l= binding of =meow-leader-keymap= (=SPC l= by default) can be used to access the localleader bindings by binding it to the function =meow-keypad-start= . These bindings should be set in the =config.el= file

#+BEGIN_SRC elisp (setq doom-localleader-alt-key "C-l") (map! :map meow-leader-keymap "l" #'meow-keypad-start) #+END_SRC elisp

It is also possible to directly bind the key to =doom-localleader-alt-key= #+BEGIN_SRC elisp (setq doom-localleader-alt-key "C-l") (map! :map meow-leader-keymap "l" doom-localleader-alt-key) #+END_SRC elisp

*** Manually creating cheatsheet and bindings If none of the layout module flags are enabled, meow will not have any cheatsheet or bindings (excluding the keypad or leader bindings). If you want to manually configure these, then it can be done by modifying the =meow-cheatsheet-layout= variable (see one of the preconfigured values to understand how to configure it) and through binding keys to =meow-normal-state-map=.

If you want to manually add override bindings as well, bind keys using =meow-motion-overwrite-define-key= and add passthrough bindings by binding something to =H-= using one of the meow-*-define-key macros

*** System Clipboard Meow uses a local kill ring by default, but it can be modified to use the local through setting the variable =meow-use-clipboard= to =t= #+BEGIN_SRC elisp (setq meow-use-clipboard t) #+END_SRC elisp ** Issues

  • This module can not be ran alongside the modules: =:editor evil=, =:editor god=, or =:editor objed=. Enabling them with =:editor meow= will cause keybindings to conflict.
  • The localleader keybinds are garbled, and many leader keybindings are missing when the =+leader= module flag is enabled.
  • Description

** Module Flags

  • ~+colemak~ Add default configuration for ~colemak~ layout.
  • ~+dvorak~ Add default configuration for ~dvorak~ layout.
  • ~+dvp~ Add default configuration for ~dvp~ layout.
  • ~+qwerty~ Add default configuration for ~qwerty~ layout.
  • ~+leader~ Use Doom's ~doom/leader~ instead of meow's ~meow-keypad-mode~
  • ~+override~ Have meow override movement keybinds in most major modes.

** Plugins

  • [[https://github.com/meow-edit/meow][meow]]