diff --git a/.config/kak/autoload/insert-mode.kak b/.config/kak/autoload/insert-mode.kak index 91b57c45..a60e5e41 100644 --- a/.config/kak/autoload/insert-mode.kak +++ b/.config/kak/autoload/insert-mode.kak @@ -1,5 +1,50 @@ -map global insert -map global insert +# arrow keys for completions + +declare-option -hidden str completions_status 'completions-off' +define-command -hidden completions-off fail +define-command -hidden completions-on nop +define-command -hidden completions-up nop +define-command -hidden completions-down fail + +hook global InsertCompletionShow .* %{ + set-option window completions_status 'completions-on' +} + +hook global InsertCompletionHide .* %{ + set-option window completions_status 'completions-off' +} + +define-command -hidden assert-completions %{ + %opt{completions_status} +} + +# arg: "completions-up" or "completions-down" +define-command -hidden -params 1 move-or-complete %{ + try %{ + # completions are visible + %opt{completions_status} + try %{ + # up + %arg{1} + execute-keys + } catch %{ + # down + execute-keys + } + } catch %{ + # completions are not visible + try %{ + # up + %arg{1} + execute-keys + } catch %{ + execute-keys + } + } +} + +map global insert ': move-or-complete completions-down' +map global insert ': move-or-complete completions-up' map global insert map global insert