diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-01-29 06:03:22 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-29 06:03:22 +0800 |
commit | af9a2a201d5e2bc178488a04c114ba6c1db4fa19 (patch) | |
tree | 5ef968d12383adaad8ca096116fc15946ea1d84a /src/nvim/ex_session.c | |
parent | 98fddc1d4c6e961afe6ea03ff31ee38f44be746e (diff) | |
parent | aa5adef969f5f1ffcc3867200211fa236b569ae3 (diff) | |
download | rneovim-af9a2a201d5e2bc178488a04c114ba6c1db4fa19.tar.gz rneovim-af9a2a201d5e2bc178488a04c114ba6c1db4fa19.tar.bz2 rneovim-af9a2a201d5e2bc178488a04c114ba6c1db4fa19.zip |
Merge pull request #16951 from zeertzjq/vim-8.2.4007
Diffstat (limited to 'src/nvim/ex_session.c')
-rw-r--r-- | src/nvim/ex_session.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/nvim/ex_session.c b/src/nvim/ex_session.c index a37cad9f2d..a6d6bcbb8d 100644 --- a/src/nvim/ex_session.c +++ b/src/nvim/ex_session.c @@ -338,14 +338,26 @@ static int put_view(FILE *fd, win_T *wp, int add_edit, unsigned *flagp, int curr // Edit the file. Skip this when ":next" already did it. if (add_edit && (!did_next || wp->w_arg_idx_invalid)) { - char *fname_esc = - ses_escape_fname(ses_get_fname(wp->w_buffer, flagp), flagp); - // - // Load the file. - // - if (wp->w_buffer->b_ffname != NULL - && (!bt_nofile(wp->w_buffer) - || wp->w_buffer->terminal)) { + char *fname_esc = ses_escape_fname(ses_get_fname(wp->w_buffer, flagp), flagp); + if (bt_help(wp->w_buffer)) { + char *curtag = ""; + + // A help buffer needs some options to be set. + // First, create a new empty buffer with "buftype=help". + // Then ":help" will re-use both the buffer and the window and set + // the options, even when "options" is not in 'sessionoptions'. + if (0 < wp->w_tagstackidx && wp->w_tagstackidx <= wp->w_tagstacklen) { + curtag = (char *)wp->w_tagstack[wp->w_tagstackidx - 1].tagname; + } + + if (put_line(fd, "enew | setl bt=help") == FAIL + || fprintf(fd, "help %s", curtag) < 0 || put_eol(fd) == FAIL) { + return FAIL; + } + } else if (wp->w_buffer->b_ffname != NULL + && (!bt_nofile(wp->w_buffer) || wp->w_buffer->terminal)) { + // Load the file. + // Editing a file in this buffer: use ":edit file". // This may have side effects! (e.g., compressed or network file). // |