diff options
author | Alexandre Dubray <alexandre.dubray@student.uclouvain.be> | 2018-01-09 12:01:02 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2020-01-26 17:13:00 -0800 |
commit | cf67f19ac2104ece76d040c8184bc287428299b3 (patch) | |
tree | dbf5f357e8985dd23bad128617a534b53363b36a /test | |
parent | 88f133c30d4b46e371f0cdb0797113cbbca9cc59 (diff) | |
download | rneovim-cf67f19ac2104ece76d040c8184bc287428299b3.tar.gz rneovim-cf67f19ac2104ece76d040c8184bc287428299b3.tar.bz2 rneovim-cf67f19ac2104ece76d040c8184bc287428299b3.zip |
mksession: restore same :term buf in split windows
Problem: When session-restore creates a terminal buffer with command
like `:edit term://.//16450:/bin/bash`, the buffer gets
a different name (depends on PID). Thus the later call to
`bufexists('term://.//16450:/bin/bash)` will return false.
Solution: Force the buffer name with :file. This as least ensures
the same buffer will show in multiple windows correctly, as
expected when saving the session. But it still has problems:
1. the PID in the buffer name is bogus
2. redundant :terminal buffers still hang around
fix #5250
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/ex_cmds/mksession_spec.lua | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/functional/ex_cmds/mksession_spec.lua b/test/functional/ex_cmds/mksession_spec.lua index 855f8105aa..726cfe7fe5 100644 --- a/test/functional/ex_cmds/mksession_spec.lua +++ b/test/functional/ex_cmds/mksession_spec.lua @@ -91,4 +91,23 @@ describe(':mksession', function() matches('^term://'..pesc(expected_cwd)..'//%d+:', funcs.expand('%')) command('qall!') end) + + it('restores multiple windows with same terminal instances', function() + -- Create a view with two buffers referencing the same terminal instance + command('terminal') + command('split') + command('mksession ' .. session_file) + + clear() + + command('source ' .. session_file) + -- Getting the name of the buffer shown to compare with the other window + local eval = helpers.eval + + command('exe 1 . "wincmd w"') + local expected_pid = eval('b:terminal_job_pid') + + command('exe 2 . "wincmd w"') + eq(expected_pid, eval('b:terminal_job_pid')) + end) end) |