Files
doomemacs/modules/input/layout
Gerry Agbobada 065b26e0c5 [:ui layout bepo] Fix notmuch, C-, M- mappings
WIP:
- Add fixme for evil-org remaps

Misc changes:
- Remove notmuch-search binding
  (Unmap the bare "s" keymap from notmuch)
- Remap [] evil-org bindings to ()
- Fix org-capture not finalizing with C-c
- Remap evilem-map
- Add more triggers to minibuffer rotations
- Unmap C-c and C-r from evil-org

Meta:
- Specify bepo layout in maintainer status
- Add basic troubleshooting

In the remapping functions:
- Add operator maps
- Remap C- and M- bindings in normal mode

Respect evil-org-movement-bindings:
This allow non-qwerty users to keep the correct bindings. The additional
let-binding is done to force evaluation of the concatenations and avoid
`void-variable concat` when the map! gets evaluated

Avoid double rotation on magit maps

- Reorder properly magit-mode-map like done on notmuch
  (evil-collection PR#428)
2021-02-22 10:32:03 +01:00
..
2020-08-18 11:49:46 +02:00

input/layout

Description

This module provides barebones support for using Doom with non-qwerty layouts.

Maintainers

  • @gagbo (Author, Bépo)

Module Flags

  • +bepo Enables modifications for the BÉPO layout (customized with version 1.1 in mind)

Plugins

None

Prerequisites

If you are using :editor evil, you should use (evil +everywhere), as the module uses evil-collection utilities to do the remapping.

If you are not using :editor evil, then you have nothing to do.

Features

Bépo

Support for the bépo layout includes:

  • Setting Avy keys to the correct home row keys
  • Changing navigation keys to ctsr

    • old t is mapped to j
    • old s is mapped to k (i.e. staging in the magit status buffer is done with k)
    • See Configuration to see where old c and r functions are remapped
  • Bind <> functions to «» keys when possible
  • Bind [] functions to () keys when possible (the "unimpaired-like" bindings)
  • Bind é key to w functions when possible
  • Bind è key to useful functions when possible
  • Bind `~ functions to $# keys when possible

Easymotion

If you use evil-easymotion, then all the bindings that were on gs have been moved to .

In short : g s j -> g é t (evilem-motion-next-line). And so on.

Leaving mnemonics alone when possible

Exchanging hjkl to ctsr has the effect of destroying a few mnemonics: the change operator becomes l for example, or the window split becomes SPC é k.

The module tries to limit those changes to the minimum, especially in special buffers. A concrete example is magit.

As the magit: project buffer (obtained with magit-status) does not need left-right navigation, keys c, r, h, and l keep their "expected" bindings, while t, s, j, and k are flipped:

  • checking the log from a magit buffer is still on l
  • staging a file/region has been moved to k

Possible contributions

A nice addition in the future might be to have all the normal mode bindings that start with g start with , instead to avoid the curl on these common bindings. This is not implemented for the time being.

Also, implementing all those changes as a minor we could flip on and off would help with adoption

Org-mode

evil-org allows to define evil-org-movement-bindings to automatically map movement bindings on non-hjkl keys. It maps automatically keys to C-c and C-r in normal and insert states though, and it's not really user friendly in Emacs to remap those.

Therefore, in org-mode:

  • org-shiftright is bound to C-»
  • org-shiftleft is bound to C-«

Configuration

Bépo

doom-bepo-cr-rotation-style controls whether:

  • qwerty-c functions are mapped on bépo-l key, and qwerty-r functions on bépo-h key ('ergodis), or
  • qwerty-c functions are mapped on bépo-h key, and qwerty-r functions on bépo-l key ('strict)

'strict would be the logical choice but the c functions are used more often than the r ones so Ergodis advises to actually put all the c functions on the key that does not need a curl.

Troubleshooting

How to investigate an issue ?

If a key is misbehaving, use describe-key (C-h k or SPC h k or F1 k) to see the functions bound to the key, and more importantly in which map it is bound.

You should ignore all evil-collection-...-backup-map keymaps, as they are artifacts from evil-collection-translate-key and those maps are actually not active.

Most likely the solution is to call one of the "key rotation" functions on the relevant keymaps.

How to deactivate the new bindings and go back to the old ones ?

If you are learning a new layout you might want to go back to tho old one to "get work done". Sadly the only way is to comment out the module, run doom sync and restart emacs.

Restoring the session SPC q l by default helps to lower the impact of the restart.