Add alt-| for piping and appending rather than replacing
This commit is contained in:
parent
fd17ea00dd
commit
983abefc30
|
@ -159,7 +159,9 @@ Changes
|
|||
indent (3 leading spaces when indent is 4)
|
||||
|
||||
* _|_: pipe each selections through the given external filter program
|
||||
and replace with it's output.
|
||||
and replace the selection with it's output.
|
||||
* _alt-|_: pipe each selections through the given external filter program
|
||||
and append the selection with it's output.
|
||||
|
||||
* _u_: undo last change
|
||||
* _U_: redo last change
|
||||
|
|
|
@ -418,6 +418,7 @@ void command(Context& context, int)
|
|||
});
|
||||
}
|
||||
|
||||
template<InsertMode mode>
|
||||
void pipe(Context& context, int)
|
||||
{
|
||||
auto completer = [](const Context& context, CompletionFlags flags,
|
||||
|
@ -450,7 +451,8 @@ void pipe(Context& context, int)
|
|||
return completions;
|
||||
};
|
||||
|
||||
context.input_handler().prompt("pipe:", get_color("Prompt"), completer,
|
||||
const char* prompt = mode == InsertMode::Replace ? "pipe:" : "pipe (ins):";
|
||||
context.input_handler().prompt(prompt, get_color("Prompt"), completer,
|
||||
[](const String& cmdline, PromptEvent event, Context& context)
|
||||
{
|
||||
if (event != PromptEvent::Validate)
|
||||
|
@ -484,7 +486,7 @@ void pipe(Context& context, int)
|
|||
strings.push_back(str);
|
||||
}
|
||||
ScopedEdition edition(context);
|
||||
insert<InsertMode::Replace>(buffer, selections, strings);
|
||||
insert<mode>(buffer, selections, strings);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1280,7 +1282,8 @@ KeyMap keymap =
|
|||
{ '%', [](Context& context, int) { select_whole_buffer(context.buffer(), context.selections()); } },
|
||||
|
||||
{ ':', command },
|
||||
{ '|', pipe },
|
||||
{ '|', pipe<InsertMode::Replace> },
|
||||
{ alt('|'), pipe<InsertMode::Append> },
|
||||
{ ' ', [](Context& context, int count) { if (count == 0) clear_selections(context.buffer(), context.selections());
|
||||
else keep_selection(context.selections(), count-1); } },
|
||||
{ alt(' '), [](Context& context, int count) { if (count == 0) flip_selections(context.selections());
|
||||
|
|
Loading…
Reference in New Issue
Block a user