aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2018-08-26 15:17:54 +0200
committerGitHub <noreply@github.com>2018-08-26 15:17:54 +0200
commit8f058dca890ca9b9678e2435020f84a5f9c75acb (patch)
tree1e52a92192a46d3f660ce02b7891b365f2da0d7f
parent7898de5211fc396dc5a001a22f9c7db5311c317e (diff)
parente85bed083022c88bd8c42d91f8432eb5dd4ff141 (diff)
downloadrneovim-8f058dca890ca9b9678e2435020f84a5f9c75acb.tar.gz
rneovim-8f058dca890ca9b9678e2435020f84a5f9c75acb.tar.bz2
rneovim-8f058dca890ca9b9678e2435020f84a5f9c75acb.zip
Merge #8904 from janlazo/vim-8.0.0900
-rw-r--r--runtime/optwin.vim19
-rw-r--r--src/nvim/ex_cmds2.c1
-rw-r--r--src/nvim/memory.c4
-rw-r--r--src/nvim/screen.c2
4 files changed, 13 insertions, 13 deletions
diff --git a/runtime/optwin.vim b/runtime/optwin.vim
index 81eb3f11fd..83c509b7cb 100644
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -4,17 +4,14 @@
" Last Change: 2017 Oct 19
" If there already is an option window, jump to that one.
-if bufwinnr("option-window") > 0
- let s:thiswin = winnr()
- while 1
- if @% == "option-window"
+let buf = bufnr('option-window')
+if buf >= 0
+ let winids = win_findbuf(buf)
+ if len(winids) > 0
+ if win_gotoid(winids[0]) == 1
finish
endif
- wincmd w
- if s:thiswin == winnr()
- break
- endif
- endwhile
+ endif
endif
" Make sure the '<' flag is not included in 'cpoptions', otherwise <CR> would
@@ -141,8 +138,8 @@ while exists("b:current_syntax") && b:current_syntax == "help"
endif
endwhile
-" Open the window
-new option-window
+" Open the window. $OPTWIN_CMD is set to "tab" for ":tab options".
+exe $OPTWIN_CMD . ' new option-window'
setlocal ts=15 tw=0 noro buftype=nofile
" Insert help and a "set" command for each option.
diff --git a/src/nvim/ex_cmds2.c b/src/nvim/ex_cmds2.c
index c384d253b9..ab24b63110 100644
--- a/src/nvim/ex_cmds2.c
+++ b/src/nvim/ex_cmds2.c
@@ -2728,6 +2728,7 @@ void ex_packadd(exarg_T *eap)
/// ":options"
void ex_options(exarg_T *eap)
{
+ vim_setenv("OPTWIN_CMD", cmdmod.tab ? "tab" : "");
cmd_source((char_u *)SYS_OPTWIN_FILE, NULL);
}
diff --git a/src/nvim/memory.c b/src/nvim/memory.c
index d3d0968a5c..8789075c44 100644
--- a/src/nvim/memory.c
+++ b/src/nvim/memory.c
@@ -619,7 +619,6 @@ void free_all_mem(void)
/* Obviously named calls. */
free_all_autocmds();
- free_all_options();
free_all_marks();
alist_clear(&global_alist);
free_homedir();
@@ -657,6 +656,9 @@ void free_all_mem(void)
/* Destroy all windows. Must come before freeing buffers. */
win_free_all();
+ // Free all option values. Must come after closing windows.
+ free_all_options();
+
free_cmdline_buf();
/* Clear registers. */
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 092820321c..c3996046e0 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -149,7 +149,7 @@ void redraw_later(int type)
void redraw_win_later(win_T *wp, int type)
{
- if (wp->w_redr_type < type) {
+ if (!exiting && wp->w_redr_type < type) {
wp->w_redr_type = type;
if (type >= NOT_VALID)
wp->w_lines_valid = 0;