diff options
| author | Philipp Jungkamp <p.jungkamp@gmx.net> | 2025-07-05 00:24:54 +0200 |
|---|---|---|
| committer | Philipp Jungkamp <p.jungkamp@gmx.net> | 2025-07-05 00:24:54 +0200 |
| commit | 2eb6aa9e20901c53ec7c288d47592043649b1bbd (patch) | |
| tree | 743d84905db6fc0bf578654528fdb7be93375ad9 /src/main.cc | |
| parent | c24c802373fc223fb80f1b80419ce6dcc59f2836 (diff) | |
Introduce `history_since_<id>` value expansion
The `history_since_<id>` value expansion allows incremental parsing of a
buffer's history.
declare-option int my_last_history_id
define-command my-process-history ...
# process the initial buffer history
my-process-history %val{bufname} 0 %val{history}
set-option buffer my_last_history_id 0
# only process new history changes on idle
hook buffer NormalIdle %{
evaluate-commands %exp{
my-process-history \
%%val{bufname} \
%%opt{my_last_history_id} \
%%val{history_since_%opt{my_last_history_id}}
}
set-option buffer my_last_history_id %val{history_id}
}
Diffstat (limited to 'src/main.cc')
| -rw-r--r-- | src/main.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/main.cc b/src/main.cc index bf382dd2..fb78669d 100644 --- a/src/main.cc +++ b/src/main.cc @@ -413,6 +413,13 @@ static const EnvVarDesc builtin_env_vars[] = { { [](StringView name, const Context& context) -> Vector<String> { return history_as_strings(context.buffer().history()); } }, { + "history_since_", true, + [](StringView name, const Context& context) -> Vector<String> + { return history_as_strings( + ArrayView(context.buffer().history()) + .subrange(str_to_int(name.substr(14_byte)) + 1) + ); } + }, { "uncommitted_modifications", false, [](StringView name, const Context& context) -> Vector<String> { return undo_group_as_strings(context.buffer().current_undo_group()); } |
