-
-
Notifications
You must be signed in to change notification settings - Fork 6.3k
[RFC] add display=msgsep flag to separate messages and avoid full-screen scrolling #8088
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
I would suggest always showing some sort of line (the statusline isn't really relevant in this state), one of these (or just a solid color):
Definitely it should be the default. Probably it should be an option, if only to avoid churn in tests. Could be a new flag in |
I thought of I will add a dedicated line. If we use unicode char it needs to be overridable, what if the users favorite font looks ugly with this char. Probably should use |
Added |
Interesting ASAN failure. We probably need to add some check to not enter the debugger after start of teardown.
|
It is, |
@@ -642,7 +642,7 @@ return { | |||
vim=true, | |||
redraw={'all_windows'}, | |||
varname='p_dy', | |||
defaults={if_true={vi="", vim="lastline"}} | |||
defaults={if_true={vi="", vim="lastline,msgsep"}} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also mention in vim_diff.txt
Yes, I haven't started with docs yet :) Is the name |
406a4ff
to
abe4443
Compare
Added tests and docs, marking RFC. |
https://api.travis-ci.org/v3/job/358522097/log.txt
Edit: Not related to this PR, it happened on #8184 also. https://api.travis-ci.org/v3/job/358244576/log.txt |
Seems at any point As the ASAN failures look unrelated, should we merge this? If this causes trouble/backlash for master-followers, there is ample time to change the default back before the release. |
@@ -5999,6 +5999,7 @@ static const char *highlight_init_both[] = { | |||
"default link QuickFixLine Search", | |||
"default link Substitute Search", | |||
"default link Whitespace NonText", | |||
"default link MsgSeparator StatusLine", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the others are in alphabetical order
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 to merge
@bfredl |
fixes neovim#8354 Regression from neovim#8088, where we try to avoid clearing the screen if not absolutely necessary
fixes neovim#8354 Regression from neovim#8088, where we try to avoid clearing the screen if not absolutely necessary
FEATURES: 3cc7ebf #7234 built-in VimL expression parser 6a7c904 #4419 implement <Cmd> key to invoke command in any mode b836328 #7679 'startup: treat stdin as text instead of commands' 58b210e :digraphs : highlight with hl-SpecialKey #2690 7a13611 #8276 'startup: Let `-s -` read from stdin' 1e71978 events: VimSuspend, VimResume #8280 1e7d5e8 #6272 'stdpath()' f96d99a #8247 server: introduce --listen e8c39f7 #8226 insert-mode: interpret unmapped META as ESC 98e7112 msg: do not scroll entire screen (#8088) f72630b #8055 let negative 'writedelay' show all redraws 5d2dd2e win: has("wsl") on Windows Subsystem for Linux #7330 a4f6cec cmdline: CmdlineEnter and CmdlineLeave autocommands (#7422) 207b7ca #6844 channels: support buffered output and bytes sockets/stdio API: f85cbea #7917 API: buffer updates 418abfc #6743 API: list information about all channels/jobs. 36b2e3f #8375 API: nvim_get_commands 273d2cd #8329 API: Make nvim_set_option() update `:verbose set …` 8d40b36 #8371 API: more reliable/descriptive VimL errors ebb1acb #8353 API: nvim_call_dict_function 9f994bb #8004 API: nvim_list_uis 3405704 #7520 API/UI: forward option updates to UIs 911b1e4 #7821 API: improve nvim_command_output WINDOWS OS: 9cefd83 #8084, #8516 build/win: support MSVC ee4e1fd win: Fix reading content from stdin (#8267) TUI: ffb8904 #8309 TUI: add support for mouse release events in urxvt 8d5a46e #8081 TUI: implement "standout" attribute 6071637 TUI: support TERM=konsole-256color 67848c0 #7653 TUI: report TUI info with -V3 ('verbose' >= 3) 3d0ee17 TUI/rxvt: enable focus-reporting d109f56 #7640 TUI: 'term' option: reflect effective terminal behavior FIXES: ed6a113 #8273 'job-control: avoid kill-timer race' 4e02f1a #8107 'jobs: separate process-group' 451c48a terminal: flush vterm output buffer on pty output #8486 5d6732f :checkhealth fixes #8335 53f11dc #8218 'Fix errors reported by PVS' d05712f inccommand: pause :terminal redraws (#8307) 51af911 inccommand: do not execute trailing commands #8256 84359a4 terminal: resize to the max dimensions (#8249) d49c1dd #8228 Make vim_fgets() return the same values as in Vim 60e96a4 screen: winhl=Normal:Background should not override syntax (#8093) 0c59ac1 #5908 'shada: Also save numbered marks' ba87a2c cscope: ignore EINTR while reading the prompt (#8079) b1412dc #7971 ':terminal Enter/Leave should not increment jumplist' 3a5721e TUI: libtermkey: force CSI driver for mouse input #7948 6ff13d7 #7720 TUI: faster startup 1c6e956 #7862 TUI: fix resize-related segfaults a58c909 #7676 TUI: always hide cursor when flushing, never flush buffers during unibilium output 303e1df #7624 TUI: disable BCE almost always 249bdb0 #7761 mark: Make sure that jumplist item will not have zero lnum 6f41ce0 #7704 macOS: Set $LANG based on the system locale a043899 #7633 'Retry fgets on EINTR' CHANGES: ad60927 #8304 default to 'nofsync' f3f1970 #8035 defaults: 'fillchars' a6052c7 #7984 defaults: sidescroll=1 b69fa86 #7888 defaults: enable cscopeverbose 7c4bb23 defaults: do :filetype stuff unless explicitly "off" 2aa308c #5658 'Apply :lmap in macros' 8ce6393 terminal: Leave 'relativenumber' alone (#8360) e46534b #4486 refactor: Remove maxmem, maxmemtot options 131aad9 win: defaults: 'shellcmdflag', 'shellxquote' #7343 c57d315 #8031 jobwait(): return -2 on interrupt also with timeout 6452831 clipboard: macOS: fallback to tmux if pbcopy is broken #7940 300d365 #7919 Make 'langnoremap' apply directly after a map ada1956 #7880 'lua/executor: Remove lightuserdata' INTERNAL: de0a954 #7806 internal statistics for list impl dee78a4 #7708 rewrite internal list impl
closes neovim#8813 ref neovim#7813 (comment) ref neovim#8088 (comment) Sometimes ASan fails like this: = ==16820==ERROR: AddressSanitizer: SEGV on unknown address 0x000001baab50 (pc 0x00000044f3a1 bp 0x000000000001 sp 0x7fff7ddb6a60 T0) ... = 4 0xfbfae4 in xfree /home/travis/build/neovim/neovim/build/../src/nvim/memory.c:134:3 = 5 0x120e948 in free_string_option /home/travis/build/neovim/neovim/build/../src/nvim/option.c:2207:5 = 6 0x120de3d in free_all_options /home/travis/build/neovim/neovim/build/../src/nvim/option.c:923:9 = 7 0xfc2441 in free_all_mem /home/travis/build/neovim/neovim/build/../src/nvim/memory.c:622:3 = 8 0x12bbe6c in mch_exit /home/travis/build/neovim/neovim/build/../src/nvim/os_unix.c:153:3 = 9 0x1092cc3 in exit_event /home/travis/build/neovim/neovim/build/../src/nvim/msgpack_rpc/channel.c:542:5 = 10 0xa6b2d3 in multiqueue_process_events /home/travis/build/neovim/neovim/build/../src/nvim/event/multiqueue.c:150:7 = 11 0xa64e2f in loop_poll_events /home/travis/build/neovim/neovim/build/../src/nvim/event/loop.c:65:3 = 12 0x12a4ec0 in os_breakcheck /home/travis/build/neovim/neovim/build/../src/nvim/os/input.c:162:5 = 13 0x1035f07 in line_breakcheck /home/travis/build/neovim/neovim/build/../src/nvim/misc1.c:2692:5 ... = 19 0x137ac07 in vim_regexec_nl /home/travis/build/neovim/neovim/build/../src/nvim/regexp.c:7302:10 = 20 0x910f2b in f_split /home/travis/build/neovim/neovim/build/../src/nvim/eval.c:15673:17 ... = 43 0x11667d5 in normal_check /home/travis/build/neovim/neovim/build/../src/nvim/normal.c:1325:5 = 44 0x17774c1 in state_enter /home/travis/build/neovim/neovim/build/../src/nvim/state.c:28:35 = 45 0x10c0bf4 in normal_enter /home/travis/build/neovim/neovim/build/../src/nvim/normal.c:467:3 = 46 0xea98a2 in main /home/travis/build/neovim/neovim/build/../src/nvim/main.c:566:3 = 47 0x7fbb0a667f44 in __libc_start_main /build/eglibc-ripdx6/eglibc-2.19/csu/libc-start.c:287 = 48 0x44e39b in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x44e39b) ===================================================================================================== test/helpers.lua:149: assertion failed! Discussion: - `free_all_options` is free'ing something before it was alloc'd. - ~~Options init isn't complete?~~ (No: init completed, `main.c` reached `normal_enter()`) - stdio RPC channel was closed (so `rpc_close` schedules `exit_event`) - was this because the client died from a invalid message? - `exit_event` is scheduled on `main_loop.fast_events`. - would `main_loop.events` defer it? Or do we need something like `stuffReadbuff(":qall!\n")`?
closes neovim#8813 ref neovim#7813 (comment) ref neovim#8088 (comment) Sometimes ASan fails like this: = ==16820==ERROR: AddressSanitizer: SEGV on unknown address 0x000001baab50 (pc 0x00000044f3a1 bp 0x000000000001 sp 0x7fff7ddb6a60 T0) ... 4 0xfbfae4 in xfree /home/travis/build/neovim/neovim/build/../src/nvim/memory.c:134:3 5 0x120e948 in free_string_option /home/travis/build/neovim/neovim/build/../src/nvim/option.c:2207:5 6 0x120de3d in free_all_options /home/travis/build/neovim/neovim/build/../src/nvim/option.c:923:9 7 0xfc2441 in free_all_mem /home/travis/build/neovim/neovim/build/../src/nvim/memory.c:622:3 8 0x12bbe6c in mch_exit /home/travis/build/neovim/neovim/build/../src/nvim/os_unix.c:153:3 9 0x1092cc3 in exit_event /home/travis/build/neovim/neovim/build/../src/nvim/msgpack_rpc/channel.c:542:5 10 0xa6b2d3 in multiqueue_process_events /home/travis/build/neovim/neovim/build/../src/nvim/event/multiqueue.c:150:7 11 0xa64e2f in loop_poll_events /home/travis/build/neovim/neovim/build/../src/nvim/event/loop.c:65:3 12 0x12a4ec0 in os_breakcheck /home/travis/build/neovim/neovim/build/../src/nvim/os/input.c:162:5 13 0x1035f07 in line_breakcheck /home/travis/build/neovim/neovim/build/../src/nvim/misc1.c:2692:5 ... 19 0x137ac07 in vim_regexec_nl /home/travis/build/neovim/neovim/build/../src/nvim/regexp.c:7302:10 20 0x910f2b in f_split /home/travis/build/neovim/neovim/build/../src/nvim/eval.c:15673:17 ... 43 0x11667d5 in normal_check /home/travis/build/neovim/neovim/build/../src/nvim/normal.c:1325:5 44 0x17774c1 in state_enter /home/travis/build/neovim/neovim/build/../src/nvim/state.c:28:35 45 0x10c0bf4 in normal_enter /home/travis/build/neovim/neovim/build/../src/nvim/normal.c:467:3 46 0xea98a2 in main /home/travis/build/neovim/neovim/build/../src/nvim/main.c:566:3 47 0x7fbb0a667f44 in __libc_start_main /build/eglibc-ripdx6/eglibc-2.19/csu/libc-start.c:287 48 0x44e39b in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x44e39b) Discussion: - `free_all_options` is free'ing something before it was alloc'd. - ~~Options init isn't complete?~~ (No: init completed, `main.c` reached `normal_enter()`) - stdio RPC channel was closed (so `rpc_close` schedules `exit_event`) - was this because the client died from a invalid message? - `exit_event` is scheduled on `main_loop.fast_events`. - would `main_loop.events` defer it? Or do we need something like `stuffReadbuff(":qall!\n")`? Deferring the event: diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c index 3244d83..62c7717 100644 --- a/src/nvim/msgpack_rpc/channel.c +++ b/src/nvim/msgpack_rpc/channel.c @@ -532,7 +532,7 @@ void rpc_close(Channel *channel) channel_decref(channel); if (channel->streamtype == kChannelStreamStdio) { - multiqueue_put(main_loop.fast_events, exit_event, 0); + multiqueue_put(main_loop.events, exit_event, 0); } } ...leads to hangs (waiting for input): [5/7] Building C object test/functiona...s/CMakeFiles/tty-test.dir/tty-test.c.o�[K [6/7] Linking C executable bin/tty-test�[K [6/7] Linking C executable bin/tty-test�[K [7/7] cd /home/travis/build/neovim/neo...ild/neovim/neovim/cmake/RunTests.cmake�[K No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself. Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#Build-times-out-because-no-output-was-received The build has been terminated
closes neovim#8813 ref neovim#7813 (comment) ref neovim#8088 (comment) Sometimes ASan fails like this: = ==16820==ERROR: AddressSanitizer: SEGV on unknown address 0x000001baab50 (pc 0x00000044f3a1 bp 0x000000000001 sp 0x7fff7ddb6a60 T0) ... 4 0xfbfae4 in xfree /home/travis/build/neovim/neovim/build/../src/nvim/memory.c:134:3 5 0x120e948 in free_string_option /home/travis/build/neovim/neovim/build/../src/nvim/option.c:2207:5 6 0x120de3d in free_all_options /home/travis/build/neovim/neovim/build/../src/nvim/option.c:923:9 7 0xfc2441 in free_all_mem /home/travis/build/neovim/neovim/build/../src/nvim/memory.c:622:3 8 0x12bbe6c in mch_exit /home/travis/build/neovim/neovim/build/../src/nvim/os_unix.c:153:3 9 0x1092cc3 in exit_event /home/travis/build/neovim/neovim/build/../src/nvim/msgpack_rpc/channel.c:542:5 10 0xa6b2d3 in multiqueue_process_events /home/travis/build/neovim/neovim/build/../src/nvim/event/multiqueue.c:150:7 11 0xa64e2f in loop_poll_events /home/travis/build/neovim/neovim/build/../src/nvim/event/loop.c:65:3 12 0x12a4ec0 in os_breakcheck /home/travis/build/neovim/neovim/build/../src/nvim/os/input.c:162:5 13 0x1035f07 in line_breakcheck /home/travis/build/neovim/neovim/build/../src/nvim/misc1.c:2692:5 ... 19 0x137ac07 in vim_regexec_nl /home/travis/build/neovim/neovim/build/../src/nvim/regexp.c:7302:10 20 0x910f2b in f_split /home/travis/build/neovim/neovim/build/../src/nvim/eval.c:15673:17 ... 43 0x11667d5 in normal_check /home/travis/build/neovim/neovim/build/../src/nvim/normal.c:1325:5 44 0x17774c1 in state_enter /home/travis/build/neovim/neovim/build/../src/nvim/state.c:28:35 45 0x10c0bf4 in normal_enter /home/travis/build/neovim/neovim/build/../src/nvim/normal.c:467:3 46 0xea98a2 in main /home/travis/build/neovim/neovim/build/../src/nvim/main.c:566:3 47 0x7fbb0a667f44 in __libc_start_main /build/eglibc-ripdx6/eglibc-2.19/csu/libc-start.c:287 48 0x44e39b in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x44e39b) Discussion: - `free_all_options` is free'ing something before it was alloc'd. - ~~Options init isn't complete?~~ (No: init completed, `main.c` reached `normal_enter()`) - stdio RPC channel was closed (so `rpc_close` schedules `exit_event`) - was this because the client died from a invalid message? - `exit_event` is scheduled on `main_loop.fast_events`. - would `main_loop.events` defer it? Or do we need something like `stuffReadbuff(":qall!\n")`? Deferring the event: diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c index 3244d83..62c7717 100644 --- a/src/nvim/msgpack_rpc/channel.c +++ b/src/nvim/msgpack_rpc/channel.c @@ -532,7 +532,7 @@ void rpc_close(Channel *channel) channel_decref(channel); if (channel->streamtype == kChannelStreamStdio) { - multiqueue_put(main_loop.fast_events, exit_event, 0); + multiqueue_put(main_loop.events, exit_event, 0); } } ...leads to hangs (waiting for input): [5/7] Building C object test/functiona...s/CMakeFiles/tty-test.dir/tty-test.c.o�[K [6/7] Linking C executable bin/tty-test�[K [6/7] Linking C executable bin/tty-test�[K [7/7] cd /home/travis/build/neovim/neo...ild/neovim/neovim/cmake/RunTests.cmake�[K No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself. Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#Build-times-out-because-no-output-was-received The build has been terminated
closes neovim#8813 ref neovim#7813 (comment) ref neovim#8088 (comment) Sometimes ASan fails like this: = ==16820==ERROR: AddressSanitizer: SEGV on unknown address 0x000001baab50 (pc 0x00000044f3a1 bp 0x000000000001 sp 0x7fff7ddb6a60 T0) ... 4 0xfbfae4 in xfree /home/travis/build/neovim/neovim/build/../src/nvim/memory.c:134:3 5 0x120e948 in free_string_option /home/travis/build/neovim/neovim/build/../src/nvim/option.c:2207:5 6 0x120de3d in free_all_options /home/travis/build/neovim/neovim/build/../src/nvim/option.c:923:9 7 0xfc2441 in free_all_mem /home/travis/build/neovim/neovim/build/../src/nvim/memory.c:622:3 8 0x12bbe6c in mch_exit /home/travis/build/neovim/neovim/build/../src/nvim/os_unix.c:153:3 9 0x1092cc3 in exit_event /home/travis/build/neovim/neovim/build/../src/nvim/msgpack_rpc/channel.c:542:5 10 0xa6b2d3 in multiqueue_process_events /home/travis/build/neovim/neovim/build/../src/nvim/event/multiqueue.c:150:7 11 0xa64e2f in loop_poll_events /home/travis/build/neovim/neovim/build/../src/nvim/event/loop.c:65:3 12 0x12a4ec0 in os_breakcheck /home/travis/build/neovim/neovim/build/../src/nvim/os/input.c:162:5 13 0x1035f07 in line_breakcheck /home/travis/build/neovim/neovim/build/../src/nvim/misc1.c:2692:5 ... 19 0x137ac07 in vim_regexec_nl /home/travis/build/neovim/neovim/build/../src/nvim/regexp.c:7302:10 20 0x910f2b in f_split /home/travis/build/neovim/neovim/build/../src/nvim/eval.c:15673:17 ... 43 0x11667d5 in normal_check /home/travis/build/neovim/neovim/build/../src/nvim/normal.c:1325:5 44 0x17774c1 in state_enter /home/travis/build/neovim/neovim/build/../src/nvim/state.c:28:35 45 0x10c0bf4 in normal_enter /home/travis/build/neovim/neovim/build/../src/nvim/normal.c:467:3 46 0xea98a2 in main /home/travis/build/neovim/neovim/build/../src/nvim/main.c:566:3 47 0x7fbb0a667f44 in __libc_start_main /build/eglibc-ripdx6/eglibc-2.19/csu/libc-start.c:287 48 0x44e39b in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x44e39b) Discussion: - `free_all_options` is free'ing something before it was alloc'd. - ~~Options init isn't complete?~~ (No: init completed, `main.c` reached `normal_enter()`) - stdio RPC channel was closed (so `rpc_close` schedules `exit_event`) - was this because the client died from a invalid message? - `exit_event` is scheduled on `main_loop.fast_events`. - would `main_loop.events` defer it? Or do we need something like `stuffReadbuff(":qall!\n")`? Deferring the event: diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c index 3244d83..62c7717 100644 --- a/src/nvim/msgpack_rpc/channel.c +++ b/src/nvim/msgpack_rpc/channel.c @@ -532,7 +532,7 @@ void rpc_close(Channel *channel) channel_decref(channel); if (channel->streamtype == kChannelStreamStdio) { - multiqueue_put(main_loop.fast_events, exit_event, 0); + multiqueue_put(main_loop.events, exit_event, 0); } } ...leads to hangs (waiting for input): [5/7] Building C object test/functiona...s/CMakeFiles/tty-test.dir/tty-test.c.o�[K [6/7] Linking C executable bin/tty-test�[K [6/7] Linking C executable bin/tty-test�[K [7/7] cd /home/travis/build/neovim/neo...ild/neovim/neovim/cmake/RunTests.cmake�[K No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself. Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#Build-times-out-because-no-output-was-received The build has been terminated
closes neovim#8813 ref neovim#7813 (comment) ref neovim#8088 (comment) Sometimes ASan fails like this: = ==16820==ERROR: AddressSanitizer: SEGV on unknown address 0x000001baab50 (pc 0x00000044f3a1 bp 0x000000000001 sp 0x7fff7ddb6a60 T0) ... 4 0xfbfae4 in xfree /home/travis/build/neovim/neovim/build/../src/nvim/memory.c:134:3 5 0x120e948 in free_string_option /home/travis/build/neovim/neovim/build/../src/nvim/option.c:2207:5 6 0x120de3d in free_all_options /home/travis/build/neovim/neovim/build/../src/nvim/option.c:923:9 7 0xfc2441 in free_all_mem /home/travis/build/neovim/neovim/build/../src/nvim/memory.c:622:3 8 0x12bbe6c in mch_exit /home/travis/build/neovim/neovim/build/../src/nvim/os_unix.c:153:3 9 0x1092cc3 in exit_event /home/travis/build/neovim/neovim/build/../src/nvim/msgpack_rpc/channel.c:542:5 10 0xa6b2d3 in multiqueue_process_events /home/travis/build/neovim/neovim/build/../src/nvim/event/multiqueue.c:150:7 11 0xa64e2f in loop_poll_events /home/travis/build/neovim/neovim/build/../src/nvim/event/loop.c:65:3 12 0x12a4ec0 in os_breakcheck /home/travis/build/neovim/neovim/build/../src/nvim/os/input.c:162:5 13 0x1035f07 in line_breakcheck /home/travis/build/neovim/neovim/build/../src/nvim/misc1.c:2692:5 ... 19 0x137ac07 in vim_regexec_nl /home/travis/build/neovim/neovim/build/../src/nvim/regexp.c:7302:10 20 0x910f2b in f_split /home/travis/build/neovim/neovim/build/../src/nvim/eval.c:15673:17 ... 43 0x11667d5 in normal_check /home/travis/build/neovim/neovim/build/../src/nvim/normal.c:1325:5 44 0x17774c1 in state_enter /home/travis/build/neovim/neovim/build/../src/nvim/state.c:28:35 45 0x10c0bf4 in normal_enter /home/travis/build/neovim/neovim/build/../src/nvim/normal.c:467:3 46 0xea98a2 in main /home/travis/build/neovim/neovim/build/../src/nvim/main.c:566:3 47 0x7fbb0a667f44 in __libc_start_main /build/eglibc-ripdx6/eglibc-2.19/csu/libc-start.c:287 48 0x44e39b in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x44e39b) Discussion: - `free_all_options` is free'ing something before it was alloc'd. - ~~Options init isn't complete?~~ (No: init completed, `main.c` reached `normal_enter()`) - stdio RPC channel was closed (so `rpc_close` schedules `exit_event`) - was this because the client died from a invalid message? - `exit_event` is scheduled on `main_loop.fast_events`. - would `main_loop.events` defer it? Or do we need something like `stuffReadbuff(":qall!\n")`?
Instead of scrolling the entire screen like a dumb terminal, only scroll the messages that has been shown so far. It looks best with
laststatus=2
, to give a visual marker of the scrolled region. (of course a new solid line could be added for this purpose). Pager is unaffected, and scrolls the entire screen as usual.Not sure if/how we want to integrate this though: