provide-module ui-mode %~ declare-user-mode ui map -docstring "UI" global user u ": enter-user-mode ui" define-command ui-wrap-enable -docstring "enable wrap" %{ add-highlighter window/wrap wrap -word -indent echo -markup "{Information}wrap enabled" } define-command ui-wrap-disable -docstring "disable wrap" %{ remove-highlighter window/wrap echo -markup "{Information}wrap disabled" } define-command -override ui-wrap-toggle -docstring "toggle wrap" %{ try %{ ui-wrap-enable } catch %{ ui-wrap-disable } } map -docstring "toggle soft wrap" global ui w ": ui-wrap-toggle" declare-option str base_scrolloff %opt{scrolloff} declare-option -hidden str prev_scrolloff %opt{base_scrolloff} define-command ui-scrolloff-disable %{ set-option window prev_scrolloff %opt{scrolloff} set-option window scrolloff 0,0 } define-command ui-scrolloff-enable %{ set-option window scrolloff %opt{prev_scrolloff} } define-command ui-scrolloff-toggle -docstring "toggle scrolloff" %{ evaluate-commands %sh{ IFS=, set -- $kak_opt_base_scrolloff TARG=${1:-0} HOR=${2:-0} # Parse current scrolloff IFS=, set -- $kak_opt_scrolloff VSCROLL=${1:-0} # Build the new scrolloff value if [ "$VSCROLL" = 99 ]; then final="$TARG" else final="99,$HOR" fi echo "set-option window scrolloff $final" } } map -docstring 'toggle screen centering' global ui z ": ui-scrolloff-toggle" declare-option bool autowrap false define-command autowrap-toggle -docstring "toggle autowrap" %{ evaluate-commands %sh{ if [ "$kak_opt_autowrap" = "true" ]; then echo "autowrap-disable" echo "set-option window autowrap false" echo "info -title Autowrap 'Window autowrap disabled'" else echo "autowrap-enable" echo "set-option window autowrap true" echo "info -title Autowrap 'Window autowrap enabled'" fi } } map -docstring 'toggle autowrap' global ui a ": autowrap-toggle" map -docstring 'toggle autospell' global ui s ": autospell-toggle" ~