diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-25 18:05:45 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-25 18:05:45 -0500 |
| commit | 9ed2af69be43d889f59ae1ca262af40405c481c5 (patch) | |
| tree | 911c44938776342b75821d0fc8304fa26d4e20e3 /modules/erc-config.el | |
| parent | 4828d59db798a0be5b6f3f1ccfd5c49dc4a6c92b (diff) | |
| download | dotemacs-9ed2af69be43d889f59ae1ca262af40405c481c5.tar.gz dotemacs-9ed2af69be43d889f59ae1ca262af40405c481c5.zip | |
perf(mousetrap): cache built keymaps per profile
mouse-trap--build-keymap ran on every major-mode hook and rebuilt the whole keymap (~8 prefixes by ~30 events) from scratch each time, so rapid mode-switching paid that cost over and over. I moved the build into mouse-trap--build-keymap-1 and cache its result in mouse-trap--keymap-cache, keyed on the profile name plus its allowed-categories list. The same profile reuses the cached keymap, and editing a profile's categories changes the key so it rebuilds.
Sharing one keymap object across buffers is safe here: the map only binds disallowed events to ignore and is never mutated after it's built. Added mouse-trap--clear-keymap-cache to force a fresh build after editing profiles by hand.
Diffstat (limited to 'modules/erc-config.el')
0 files changed, 0 insertions, 0 deletions
