parent
0c1b27cfa7
commit
b370f91025
|
@ -1068,7 +1068,10 @@ const CommandDesc prompt_cmd = {
|
||||||
nullptr,
|
nullptr,
|
||||||
"prompt <prompt> <register> <command>: prompt the use to enter a text string "
|
"prompt <prompt> <register> <command>: prompt the use to enter a text string "
|
||||||
"stores it in <register> and then executes <command>",
|
"stores it in <register> and then executes <command>",
|
||||||
ParameterDesc{ SwitchMap{}, ParameterDesc::Flags::None, 3, 3 },
|
ParameterDesc{
|
||||||
|
SwitchMap{ { "init", { true, "set initial prompt content" } } },
|
||||||
|
ParameterDesc::Flags::None, 3, 3
|
||||||
|
},
|
||||||
CommandFlags::None,
|
CommandFlags::None,
|
||||||
CommandCompleter{},
|
CommandCompleter{},
|
||||||
[](const ParametersParser& params, Context& context)
|
[](const ParametersParser& params, Context& context)
|
||||||
|
@ -1078,8 +1081,12 @@ const CommandDesc prompt_cmd = {
|
||||||
const char reg = params[1][0];
|
const char reg = params[1][0];
|
||||||
const String& command = params[2];
|
const String& command = params[2];
|
||||||
|
|
||||||
|
String initstr;
|
||||||
|
if (params.has_option("init"))
|
||||||
|
initstr = params.option_value("init");
|
||||||
|
|
||||||
context.input_handler().prompt(
|
context.input_handler().prompt(
|
||||||
params[0], get_color("Prompt"), Completer{},
|
params[0], std::move(initstr), get_color("Prompt"), Completer{},
|
||||||
[=](const String& str, PromptEvent event, Context& context)
|
[=](const String& str, PromptEvent event, Context& context)
|
||||||
{
|
{
|
||||||
if (event != PromptEvent::Validate)
|
if (event != PromptEvent::Validate)
|
||||||
|
|
|
@ -353,13 +353,15 @@ class Prompt : public InputMode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Prompt(InputHandler& input_handler, const String& prompt,
|
Prompt(InputHandler& input_handler, const String& prompt,
|
||||||
ColorPair colors, Completer completer, PromptCallback callback)
|
String initstr, ColorPair colors, Completer completer,
|
||||||
|
PromptCallback callback)
|
||||||
: InputMode(input_handler), m_prompt(prompt), m_prompt_colors(colors),
|
: InputMode(input_handler), m_prompt(prompt), m_prompt_colors(colors),
|
||||||
m_completer(completer), m_callback(callback)
|
m_completer(completer), m_callback(callback)
|
||||||
{
|
{
|
||||||
m_history_it = ms_history[m_prompt].end();
|
m_history_it = ms_history[m_prompt].end();
|
||||||
if (context().options()["autoshowcompl"].get<bool>())
|
if (context().options()["autoshowcompl"].get<bool>())
|
||||||
refresh_completions(CompletionFlags::Fast);
|
refresh_completions(CompletionFlags::Fast);
|
||||||
|
m_line_editor.reset(std::move(initstr));
|
||||||
display();
|
display();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1259,11 +1261,13 @@ void InputHandler::repeat_last_insert()
|
||||||
kak_assert(dynamic_cast<InputModes::Normal*>(m_mode.get()) != nullptr);
|
kak_assert(dynamic_cast<InputModes::Normal*>(m_mode.get()) != nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InputHandler::prompt(const String& prompt, ColorPair prompt_colors,
|
void InputHandler::prompt(const String& prompt, String initstr,
|
||||||
Completer completer, PromptCallback callback)
|
ColorPair prompt_colors, Completer completer,
|
||||||
|
PromptCallback callback)
|
||||||
{
|
{
|
||||||
change_input_mode(new InputModes::Prompt(*this, prompt, prompt_colors,
|
change_input_mode(new InputModes::Prompt(*this, prompt, initstr,
|
||||||
completer, callback));
|
prompt_colors, completer,
|
||||||
|
callback));
|
||||||
}
|
}
|
||||||
|
|
||||||
void InputHandler::set_prompt_colors(ColorPair prompt_colors)
|
void InputHandler::set_prompt_colors(ColorPair prompt_colors)
|
||||||
|
|
|
@ -47,8 +47,9 @@ public:
|
||||||
// abort or validation with corresponding PromptEvent value
|
// abort or validation with corresponding PromptEvent value
|
||||||
// returns to normal mode after validation if callback does
|
// returns to normal mode after validation if callback does
|
||||||
// not change the mode itself
|
// not change the mode itself
|
||||||
void prompt(const String& prompt, ColorPair prompt_colors,
|
void prompt(const String& prompt, String initstr,
|
||||||
Completer completer, PromptCallback callback);
|
ColorPair prompt_colors, Completer completer,
|
||||||
|
PromptCallback callback);
|
||||||
void set_prompt_colors(ColorPair prompt_colors);
|
void set_prompt_colors(ColorPair prompt_colors);
|
||||||
|
|
||||||
// enter menu mode, callback is called on each selection change,
|
// enter menu mode, callback is called on each selection change,
|
||||||
|
|
|
@ -426,7 +426,7 @@ void for_each_char(Context& context, int)
|
||||||
void command(Context& context, int)
|
void command(Context& context, int)
|
||||||
{
|
{
|
||||||
context.input_handler().prompt(
|
context.input_handler().prompt(
|
||||||
":", get_color("Prompt"),
|
":", "", get_color("Prompt"),
|
||||||
std::bind(&CommandManager::complete, &CommandManager::instance(), _1, _2, _3, _4),
|
std::bind(&CommandManager::complete, &CommandManager::instance(), _1, _2, _3, _4),
|
||||||
[](const String& cmdline, PromptEvent event, Context& context) {
|
[](const String& cmdline, PromptEvent event, Context& context) {
|
||||||
if (context.has_ui())
|
if (context.has_ui())
|
||||||
|
@ -451,7 +451,7 @@ template<InsertMode mode>
|
||||||
void pipe(Context& context, int)
|
void pipe(Context& context, int)
|
||||||
{
|
{
|
||||||
const char* prompt = mode == InsertMode::Replace ? "pipe:" : "pipe (ins):";
|
const char* prompt = mode == InsertMode::Replace ? "pipe:" : "pipe (ins):";
|
||||||
context.input_handler().prompt(prompt, get_color("Prompt"), shell_complete,
|
context.input_handler().prompt(prompt, "", get_color("Prompt"), shell_complete,
|
||||||
[](const String& cmdline, PromptEvent event, Context& context)
|
[](const String& cmdline, PromptEvent event, Context& context)
|
||||||
{
|
{
|
||||||
if (event != PromptEvent::Validate)
|
if (event != PromptEvent::Validate)
|
||||||
|
@ -589,7 +589,7 @@ template<typename T>
|
||||||
void regex_prompt(Context& context, const String prompt, T func)
|
void regex_prompt(Context& context, const String prompt, T func)
|
||||||
{
|
{
|
||||||
DynamicSelectionList selections{context.buffer(), context.selections()};
|
DynamicSelectionList selections{context.buffer(), context.selections()};
|
||||||
context.input_handler().prompt(prompt, get_color("Prompt"), complete_nothing,
|
context.input_handler().prompt(prompt, "", get_color("Prompt"), complete_nothing,
|
||||||
[=](const String& str, PromptEvent event, Context& context) {
|
[=](const String& str, PromptEvent event, Context& context) {
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user