52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from prompt_toolkit.key_binding.vi_state import InputMode
|
|
from prompt_toolkit.enums import EditingMode
|
|
from prompt_toolkit.application import get_app
|
|
|
|
|
|
def create_toolbar_tokens_func(cli, show_fish_help):
|
|
"""
|
|
Return a function that generates the toolbar tokens.
|
|
"""
|
|
|
|
def get_toolbar_tokens():
|
|
result = []
|
|
result.append(("class:bottom-toolbar", " "))
|
|
|
|
if cli.multi_line:
|
|
result.append(
|
|
("class:bottom-toolbar", " (Semi-colon [;] will end the line) ")
|
|
)
|
|
|
|
if cli.multi_line:
|
|
result.append(("class:bottom-toolbar.on", "[F3] Multiline: ON "))
|
|
else:
|
|
result.append(("class:bottom-toolbar.off", "[F3] Multiline: OFF "))
|
|
if cli.prompt_app.editing_mode == EditingMode.VI:
|
|
result.append(
|
|
("class:botton-toolbar.on", "Vi-mode ({})".format(_get_vi_mode()))
|
|
)
|
|
|
|
if show_fish_help():
|
|
result.append(
|
|
("class:bottom-toolbar", " Right-arrow to complete suggestion")
|
|
)
|
|
|
|
if cli.completion_refresher.is_refreshing():
|
|
result.append(("class:bottom-toolbar", " Refreshing completions..."))
|
|
|
|
return result
|
|
|
|
return get_toolbar_tokens
|
|
|
|
|
|
def _get_vi_mode():
|
|
"""Get the current vi mode for display."""
|
|
return {
|
|
InputMode.INSERT: "I",
|
|
InputMode.NAVIGATION: "N",
|
|
InputMode.REPLACE: "R",
|
|
InputMode.INSERT_MULTIPLE: "M",
|
|
InputMode.REPLACE_SINGLE: "R",
|
|
}[get_app().vi_state.input_mode]
|