summaryrefslogtreecommitdiffstatshomepage
path: root/src/nvim/message.c
diff options
context:
space:
mode:
authorPeter Cardenas <16930781+PeterCardenas@users.noreply.github.com>2026-04-24 08:57:35 -0700
committerGitHub <noreply@github.com>2026-04-24 11:57:35 -0400
commit27191e0f4f4f9086180a8fbe3e52c1c280a70b09 (patch)
tree7db425cbd45fbc5a32ed2a937691bdd7019d6cbc /src/nvim/message.c
parenta57fab2f2d852ec33bdbcb7fc8b90d611e6a653b (diff)
feat(api): nvim_echo(percent=nil) means "unknown" progress #39029
Problem: No way to signal "unknown" or "indeterminate" progress percentage. Solution: Treat percent=nil as "indeterminate" percent.
Diffstat (limited to 'src/nvim/message.c')
-rw-r--r--src/nvim/message.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/nvim/message.c b/src/nvim/message.c
index 1d7c24ce02..5b5a6ba2f8 100644
--- a/src/nvim/message.c
+++ b/src/nvim/message.c
@@ -337,7 +337,7 @@ static HlMessage format_progress_message(HlMessage hl_msg, MessageData *msg_data
((HlMessageChunk){ .text = copy_string(msg_data->title, NULL), .hl_id = hl_id }));
kv_push(updated_msg, ((HlMessageChunk){ .text = cstr_to_string(": "), .hl_id = 0 }));
}
- if (msg_data->percent > 0) {
+ if (msg_data->percent >= 0) {
char percent_buf[10];
vim_snprintf(percent_buf, sizeof(percent_buf), "%3ld%% ", (long)msg_data->percent);
String percent = cstr_to_string(percent_buf);
@@ -1173,7 +1173,10 @@ void do_autocmd_progress(MsgID msg_id, HlMessage msg, MessageData *msg_data)
PUT_C(data, "id", OBJECT_OBJ(msg_id));
PUT_C(data, "text", ARRAY_OBJ(messages));
if (msg_data != NULL) {
- PUT_C(data, "percent", INTEGER_OBJ(msg_data->percent));
+ if (msg_data->percent >= 0) {
+ // If percent=nil we omit it, it means "indeterminate progress". #39029
+ PUT_C(data, "percent", INTEGER_OBJ(msg_data->percent));
+ }
PUT_C(data, "source", STRING_OBJ(msg_data->source));
PUT_C(data, "status", STRING_OBJ(msg_data->status));
PUT_C(data, "title", STRING_OBJ(msg_data->title));