aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/terminal.c
diff options
context:
space:
mode:
authorerw7 <erw7.github@gmail.com>2021-11-12 00:07:03 +0900
committerzeertzjq <zeertzjq@outlook.com>2022-03-12 19:23:45 +0800
commit5051510ade5f171c1239906c8638e804356186fe (patch)
tree43ce21d99a58a7c77baf6f98d0c5234070db93e4 /src/nvim/terminal.c
parentab456bc304965d83585cd248284cb36c96927457 (diff)
downloadrneovim-5051510ade5f171c1239906c8638e804356186fe.tar.gz
rneovim-5051510ade5f171c1239906c8638e804356186fe.tar.bz2
rneovim-5051510ade5f171c1239906c8638e804356186fe.zip
fix(channel): fix channel consistency
- Fix the problem that chanclose() does not work for channel created by nvim_open_term(). - Fix the problem that the loopback channel is not released. - Fix the error message when sending raw data to the loopback channel.
Diffstat (limited to 'src/nvim/terminal.c')
-rw-r--r--src/nvim/terminal.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c
index 1c26e46a21..a76a806b80 100644
--- a/src/nvim/terminal.c
+++ b/src/nvim/terminal.c
@@ -317,10 +317,14 @@ void terminal_close(Terminal *term, int status)
term->opts.close_cb(term->opts.data);
}
} else if (!only_destroy) {
- // This was called by channel_process_exit_cb() not in process_teardown().
+ // Associated channel has been closed and the editor is not exiting.
// Do not call the close callback now. Wait for the user to press a key.
char msg[sizeof("\r\n[Process exited ]") + NUMBUFLEN];
- snprintf(msg, sizeof msg, "\r\n[Process exited %d]", status);
+ if (((Channel *)term->opts.data)->streamtype == kChannelStreamInternal) {
+ snprintf(msg, sizeof msg, "\r\n[Terminal closed]");
+ } else {
+ snprintf(msg, sizeof msg, "\r\n[Process exited %d]", status);
+ }
terminal_receive(term, msg, strlen(msg));
}