Which Key.nvim Versions Save

💥 Create key bindings that stick. WhichKey is a lua plugin for Neovim 0.5 that displays a popup with possible keybindings of the command you started typing.

v1.2.1

1 year ago

1.2.1 (2023-03-26)

Bug Fixes

  • icons: fixed obsolete icons with nerdfix (151f21d)
  • view: wrong window position when statusline is not set (#363) (e14f8dc)

v1.2.0

1 year ago

1.2.0 (2023-03-01)

Features

  • enable spelling plugin by default (6d886f4)
  • make delay configurable for marks/registers/spelling. Fixes #379. Fixes #152, Fixes #220, Fixes #334 (5649320)

v1.1.1

1 year ago

1.1.1 (2023-02-10)

Bug Fixes

v1.1.0

1 year ago

1.1.0 (2023-01-10)

Features

  • Hide mapping when desc = "which_key_ignore" (#391) (fd07b61)

Bug Fixes

v1.0.0

1 year ago

1.0.0 (2023-01-04)

Features

  • add <C-w>_ to misc (#296) (03b8c1d)
  • add preset key to mappings for API usage (ed7d6c5)
  • added a winblend option for the floating window (#161) (d3032b6)
  • added duplicate mapping checks to checkhealth #34 (710c5f8)
  • added healthcheck to check for conflicting keymaps (44d3c3f)
  • added ignore_missing option to hide any keymap for which no label exists #60 (1ccba9d)
  • added operators plugin (c7f8496)
  • added option to configure scroll bindings inside the popup (#175) (a54ef5f)
  • added options to align columns left, center or right #82 (2467fb1)
  • added settings to disable the WhichKey popup for certain buftypes and filetyes (fb276a0)
  • added support for expr mappings (9d2785c)
  • added triggers_blacklist to blacklist certain whichkey hooks #73 (ec1474b)
  • added WhichKeyBorder highlight group (9c190ea)
  • allow functions to be passed to create keybindings. Implements #31 (cf644cd)
  • allow manual setup of triggers #30 (423a50c)
  • allow mapping to have multiple modes as a table (0d559fa)
  • allow mode to be set on a single mapping (2a08d58)
  • allow overriding key labels #77 (2be929e)
  • allow to close popup with <c-c> #33 (410523a)
  • better logging (c39df95)
  • better support for plugin actions with custom lua function (222a8ee)
  • builtin key mappings (0063ceb)
  • check for rogue existsing WhichKey mappings and show error. WK handles triggers automatically, no need to define them (db97a30)
  • easily reset WK with plenary for development of WK (55b4dab)
  • expose registers to customize order (2b83fe7)
  • for nvim 0.7.0 or higher, use native keymap callbacks instead of which key functions (5e96cf9)
  • group symbol (5e02b66)
  • handle [count] with motion. Implements #11 (d93ef0f)
  • hide mapping boilerplate (#6) (b3357de)
  • honor timeoutlen when typing an operator followed by i or a instead of showing immediately (54d1b3a)
  • initial commit (970e79f)
  • keyamp functions (801cc81)
  • make custom operators configurable (fixes #9) (81875d8)
  • make help message configurable (7b1c6aa)
  • Make keypress message configuratble (#351) (fd2422f)
  • motions plugin (f989fcf)
  • new keymap dsl (#352) Docs to come (fbf0381)
  • option to make some triggers show immediately, regardless of timeoutlen (3a52dc0)
  • plugin for registers (5415832)
  • plugin support + first builtin marks plugin (9d5e631)
  • prefer desc to cmd as the fallback label (#253) (bd4411a)
  • preset with misc keybindings (e610338)
  • set keymap desc when creating new mappings based on the WhichKey labels (f4518ca)
  • set popup filetype to WhichKey and buftype to nofile #86 (20682f1)
  • show a warning if <leader> is already mapped, even if it's (ac56f45)
  • show breadcrumb and help on command line (c27535c)
  • show keys and help in float when cmdheight == 0 (f645017)
  • show/hide a fake cursor when WK is open (0f53f40)
  • spelling suggestion plugin (4b74f21)
  • support for custom text object completion. Fixes #10 (394ff5a)
  • support opts.remap for keymap (#339) (6885b66)
  • support using lua function for expr (#110) (e0dce15)
  • text objects (d255b71)
  • WhichKey vim command to show arbitrary keymaps (df615d4)

Bug Fixes

  • :norm .. commands keep feeding <esc> at the end of the command #58 (d66ffdd)
  • add delay option to macro key (#152) (#156) (bd226c4)
  • add remaining <esc> to pending in case there's no other characters (29a82b5)
  • add triggers for other modes in marks and register plugin (#116) (bbfc640)
  • added @ trigger for showing registers (01b6676)
  • added builtin plugins to config (6e461ca)
  • added hidden option to disable the popup on motion counts (motions.count) (ea975ef)
  • added support for operator pending keymaps (1f6b510)
  • added z= for spelling correction (59603de)
  • always escape <leader> when it's a backslash (41636a3)
  • always execute keys with remap, but unhook / hook WK triggers (Fixes #8) (bf329df)
  • always map <leader>, even without register (512631c)
  • always unhook and ignore errors (01a60cd)
  • always use noremap=false for <plug> commands (9b9cece)
  • always use word under the cursor for spelling suggestions (c5b19ec)
  • better handling of weird norm and getchar endless <esc> bug #68 (bfd37e9)
  • better sorting (99e8940)
  • center alignemnt should be an integer (db85198)
  • check for FloatBorder before setting winhighlight (af6b91d)
  • check is hook exists before unhooking (f6cf3a2)
  • cmd can be nil (060a574)
  • colors: Separator links to DiffAdd (#302) (a2749c5)
  • Compatibility with Visual Multi plug (#278) (92916b6)
  • convert trings with strtrans to properly render non printable characters (d85ce36)
  • correct floating window position in Neovim 0.6 nightly (#176) (a35a910)
  • correctly handle counts before commands #17 (4feb319)
  • correctly unhook buffer local mappings before executing keys (4f98b47)
  • disable folding on whichkey popup. Fixes #99 (78821de)
  • disable operator pending maps for now (#2) (0cd66a8)
  • do feedkeys in correct mode when dealing with operator pending commands. Fixes #8 (cf30788)
  • don't show <esc> mappings since closes the popup (09db756)
  • don't show spelling when the command was started with a count #80 (20a85bd)
  • dont do feedkeys when user uses WhichKey command with non existing prefix (f9537ce)
  • dont pass zero counts (0c3cfb0)
  • dont show errors about loading order of setup and register (2adbc17)
  • explicitely check if we try to execute an auto which-key mapping. shouldn't happen, but still safer to check (30fdd46)
  • expose presets so one can change them if needed #70 (46ea686)
  • feed CTRL-O again if called from CTRL-O (#145) (833b5ea)
  • feed the keys as typed (#333) (33b4e72)
  • fix flickering on tmux (f112602)
  • fix issue when cmdheight=0 #301 (#305) (9cd09ca)
  • fixed 0 after an operator. Wrongly assumed any number to be a count for following op mode, but not the case for 0 #59 #61 (36616ca)
  • fixed possible nil error when showing marks (b44fc09)
  • for sporadic loss of lua function for mapping (#216) (312c386)
  • formatting of text-objects plugin (442d2d3)
  • get value of register '=' with getreg('=',1) (#114) (6224ea8)
  • handle backslash as localleader #47 (cd23fdc)
  • handle baskslashes when leader or localleader isn't set (d155ab3)
  • handle keymaps with a <nop> rhs as non existing and possibly overwrite them with WK hooks #35 (402be18)
  • handle nvim_{buf_}get_keymap return no rhs due to 'callback' mapping (#223) (28d2bd1)
  • handle possible errors when getting last expression register #64 (7a1be6f)
  • highlighting of line number in marks (9997d93)
  • immediately show registers and marks. Fixes #144 (653ce71)
  • link default WhichKeyBorder to FloatBorder. Fixes #331 (1698d6d)
  • make register selection work in INSERT mode (d4315f8)
  • make spelling suggestions also work for correctly spelled words (d02dc34)
  • make sure we never accidentally show WK triggers (197b4d3)
  • make which-key's lazy loading work when it is also lazy-loaded (7d929b9)
  • manual command now uses proper escaping for prefix (334fcca)
  • mapleader=\ (b5c8985)
  • mapping when right-hand side is nil (#323) (1d449d4)
  • never hook in SELECT mode and properly handle v, x, s #45 #46 (2844e1c)
  • never hook j and k in INSERT mode automatcally to prevent jk kj <ESC> mappings to work as intended (9a2faed)
  • never hook numbers. locks up due to v:count. Fixes #118 (2d2954a)
  • never hook on <esc> (fd08322)
  • never hook q #63 (95ae9d2)
  • never hook to operators in visual mode #61 (43d799a)
  • nil in health check (5c018ae)
  • nvim_win_close force = true (ca73a0e)
  • nvim-0.7.0 check (#338) (1491c35)
  • only create mappings for builtin operators. plugings will always have their own mappings (1b2ec76)
  • only enable plugins that are specified in the configuration (b8ed0e8)
  • only show message about existing <leader> mapping in NORMAL mode #75 (bcc8297)
  • only show up/down when scrolling is posible (fixes #4) (9e7986d)
  • override <leader> if it's mapped to (928288b)
  • pass + and * regsiters to feedkeys #36 (ce37f41)
  • pass 0 instead of nil for current buffer (#227) (387fd67)
  • passing registers in INSERT mode, is not by pasting them 😅 #62 (342c8cd)
  • place popup correctly respecting cmdheight #28 (490e4d5)
  • possible nil value in health check (b1627ca)
  • possible recursion (f7fef32)
  • prevent double escaping of key codes (1676611)
  • properly escape sequence (2473329)
  • properly escape terminal chars to see if we already hooked a trigger (1bee8a1)
  • properly format unicode text in columns (fixes #66) (e3066fa)
  • properly handle < chatracters (should be <lt>) (e618f84)
  • properly handle < when loading WK #16 (6cf68b4)
  • properly handle <lt> when executing keys (fixes #16 again) (8500ebf)
  • properly handle buffer=0 as the current buffer. Fixes #91 (9ea98e5)
  • properly handle selected regsiters when executing keys #36 (5248a2d)
  • properly parse internal key codes and key notation (535703c)
  • redraw after nvim_echo to fix issue with cmdheight=0 (abcc2c6)
  • registers plugin for visual mode (86a58ea)
  • remove unnecessary replacement of backslash (#284) (7afe584)
  • removed debug code (2f823b8)
  • removed feedkeys as typed, since some normal mappings stop working (e6a63ec)
  • removed triggers_nowait from README since this really only makes sense for plugins (69fcfff)
  • Reset + and * to default register when clipboard is set (#233) (8154e65)
  • reset op_count when it's 0 (e3ad7c9)
  • set noautocmd on the WhichKey window, so it works properly for other floats like Telescope (36fdfe8)
  • set scheduled instantly (dc9c3be)
  • show correct level and sort on keys / group (a372c63)
  • show error when setup was not run (194f788)
  • sort keys case insensitive #25 (e26be8c)
  • special handling needed when <leader> = #40 (c4a59d7)
  • start of visual selection mark should be <lt> instead of < #69 (840311c)
  • typo (4bacbfd)
  • use buffer instead of bufnr + added warning (df49a59)
  • use Comment as fallback color for the Separator (7ee35a7)
  • use config.key_labels for cmdline trail as well (Fixes #108) (1872dd8)
  • use mode instead of redraw when cmdheight=0. (Fixes #327) (c966279)
  • use secret nop bindings to make sure timeoutlen is always respected (eccd5f8)
  • use strwidth instead of strdisplaywidth (386591e)

Performance Improvements

  • as long as we didnt finish loading, queue registers (1bac978)
  • defer loading to VimEnter and only process hooks once when ready (84ddcdc)
  • no need to create triggers for all levels. first level that is not a cmd is enough (3cc0424)
  • no need to hook buffer-local if we have a global hook for a certain prefix (bb5e0d9)
  • only load modules when needed (6f8ae23)