mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.0.0086 (#7118)
Problem: Cannot add a comment after ":hide". (Norio Takagi)
Solution: Make it work, add a test. (Hirohito Higashi)
2256c99471
This commit is contained in:
parent
5bec94652c
commit
36ceb9397c
@ -1076,7 +1076,7 @@ return {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
command='hide',
|
command='hide',
|
||||||
flags=bit.bor(BANG, RANGE, NOTADR, COUNT, EXTRA, NOTRLCOM),
|
flags=bit.bor(BANG, RANGE, NOTADR, COUNT, EXTRA, TRLBAR),
|
||||||
addr_type=ADDR_WINDOWS,
|
addr_type=ADDR_WINDOWS,
|
||||||
func='ex_hide',
|
func='ex_hide',
|
||||||
},
|
},
|
||||||
|
@ -4674,17 +4674,17 @@ char_u *find_nextcmd(const char_u *p)
|
|||||||
return (char_u *)p + 1;
|
return (char_u *)p + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/// Check if *p is a separator between Ex commands, skipping over white space.
|
||||||
* Check if *p is a separator between Ex commands.
|
/// Return NULL if it isn't, the following character if it is.
|
||||||
* Return NULL if it isn't, (p + 1) if it is.
|
|
||||||
*/
|
|
||||||
char_u *check_nextcmd(char_u *p)
|
char_u *check_nextcmd(char_u *p)
|
||||||
{
|
{
|
||||||
p = skipwhite(p);
|
char_u *s = skipwhite(p);
|
||||||
if (*p == '|' || *p == '\n')
|
|
||||||
return p + 1;
|
if (*s == '|' || *s == '\n') {
|
||||||
else
|
return (s + 1);
|
||||||
return NULL;
|
} else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -6254,31 +6254,27 @@ void ex_all(exarg_T *eap)
|
|||||||
|
|
||||||
static void ex_hide(exarg_T *eap)
|
static void ex_hide(exarg_T *eap)
|
||||||
{
|
{
|
||||||
if (*eap->arg != NUL && check_nextcmd(eap->arg) == NULL)
|
// ":hide" or ":hide | cmd": hide current window
|
||||||
eap->errmsg = e_invarg;
|
|
||||||
else {
|
|
||||||
/* ":hide" or ":hide | cmd": hide current window */
|
|
||||||
eap->nextcmd = check_nextcmd(eap->arg);
|
|
||||||
if (!eap->skip) {
|
if (!eap->skip) {
|
||||||
if (eap->addr_count == 0)
|
if (eap->addr_count == 0) {
|
||||||
win_close(curwin, FALSE); /* don't free buffer */
|
win_close(curwin, false); // don't free buffer
|
||||||
else {
|
} else {
|
||||||
int winnr = 0;
|
int winnr = 0;
|
||||||
win_T *win = NULL;
|
win_T *win = NULL;
|
||||||
|
|
||||||
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
||||||
winnr++;
|
winnr++;
|
||||||
if (winnr == eap->line2) {
|
if (winnr == eap->line2) {
|
||||||
win = wp;
|
win = wp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (win == NULL) {
|
||||||
|
win = lastwin;
|
||||||
|
}
|
||||||
|
win_close(win, false);
|
||||||
}
|
}
|
||||||
if (win == NULL)
|
|
||||||
win = lastwin;
|
|
||||||
win_close(win, FALSE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -45,6 +45,7 @@ NEW_TESTS ?= \
|
|||||||
test_gn.res \
|
test_gn.res \
|
||||||
test_hardcopy.res \
|
test_hardcopy.res \
|
||||||
test_help_tagjump.res \
|
test_help_tagjump.res \
|
||||||
|
test_hide.res \
|
||||||
test_history.res \
|
test_history.res \
|
||||||
test_hlsearch.res \
|
test_hlsearch.res \
|
||||||
test_increment.res \
|
test_increment.res \
|
||||||
|
97
src/nvim/testdir/test_hide.vim
Normal file
97
src/nvim/testdir/test_hide.vim
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
" Tests for :hide command/modifier and 'hidden' option
|
||||||
|
|
||||||
|
function SetUp()
|
||||||
|
let s:save_hidden = &hidden
|
||||||
|
let s:save_bufhidden = &bufhidden
|
||||||
|
let s:save_autowrite = &autowrite
|
||||||
|
set nohidden
|
||||||
|
set bufhidden=
|
||||||
|
set noautowrite
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
function TearDown()
|
||||||
|
let &hidden = s:save_hidden
|
||||||
|
let &bufhidden = s:save_bufhidden
|
||||||
|
let &autowrite = s:save_autowrite
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
function Test_hide()
|
||||||
|
let orig_bname = bufname('')
|
||||||
|
let orig_winnr = winnr('$')
|
||||||
|
|
||||||
|
new Xf1
|
||||||
|
set modified
|
||||||
|
call assert_fails('edit Xf2')
|
||||||
|
bwipeout! Xf1
|
||||||
|
|
||||||
|
new Xf1
|
||||||
|
set modified
|
||||||
|
edit! Xf2
|
||||||
|
call assert_equal(['Xf2', 2], [bufname(''), winnr('$')])
|
||||||
|
call assert_equal([1, 0], [buflisted('Xf1'), bufloaded('Xf1')])
|
||||||
|
bwipeout! Xf1
|
||||||
|
bwipeout! Xf2
|
||||||
|
|
||||||
|
new Xf1
|
||||||
|
set modified
|
||||||
|
" :hide as a command
|
||||||
|
hide
|
||||||
|
call assert_equal([orig_bname, orig_winnr], [bufname(''), winnr('$')])
|
||||||
|
call assert_equal([1, 1], [buflisted('Xf1'), bufloaded('Xf1')])
|
||||||
|
bwipeout! Xf1
|
||||||
|
|
||||||
|
new Xf1
|
||||||
|
set modified
|
||||||
|
" :hide as a command with trailing comment
|
||||||
|
hide " comment
|
||||||
|
call assert_equal([orig_bname, orig_winnr], [bufname(''), winnr('$')])
|
||||||
|
call assert_equal([1, 1], [buflisted('Xf1'), bufloaded('Xf1')])
|
||||||
|
bwipeout! Xf1
|
||||||
|
|
||||||
|
new Xf1
|
||||||
|
set modified
|
||||||
|
" :hide as a command with bar
|
||||||
|
hide | new Xf2 " comment
|
||||||
|
call assert_equal(['Xf2', 2], [bufname(''), winnr('$')])
|
||||||
|
call assert_equal([1, 1], [buflisted('Xf1'), bufloaded('Xf1')])
|
||||||
|
bwipeout! Xf1
|
||||||
|
bwipeout! Xf2
|
||||||
|
|
||||||
|
new Xf1
|
||||||
|
set modified
|
||||||
|
" :hide as a modifier with trailing comment
|
||||||
|
hide edit Xf2 " comment
|
||||||
|
call assert_equal(['Xf2', 2], [bufname(''), winnr('$')])
|
||||||
|
call assert_equal([1, 1], [buflisted('Xf1'), bufloaded('Xf1')])
|
||||||
|
bwipeout! Xf1
|
||||||
|
bwipeout! Xf2
|
||||||
|
|
||||||
|
new Xf1
|
||||||
|
set modified
|
||||||
|
" To check that the bar is not recognized to separate commands
|
||||||
|
hide echo "one|two"
|
||||||
|
call assert_equal(['Xf1', 2], [bufname(''), winnr('$')])
|
||||||
|
call assert_equal([1, 1], [buflisted('Xf1'), bufloaded('Xf1')])
|
||||||
|
bwipeout! Xf1
|
||||||
|
|
||||||
|
" set hidden
|
||||||
|
new Xf1
|
||||||
|
set hidden
|
||||||
|
set modified
|
||||||
|
edit Xf2 " comment
|
||||||
|
call assert_equal(['Xf2', 2], [bufname(''), winnr('$')])
|
||||||
|
call assert_equal([1, 1], [buflisted('Xf1'), bufloaded('Xf1')])
|
||||||
|
bwipeout! Xf1
|
||||||
|
bwipeout! Xf2
|
||||||
|
|
||||||
|
" set hidden bufhidden=wipe
|
||||||
|
new Xf1
|
||||||
|
set bufhidden=wipe
|
||||||
|
set modified
|
||||||
|
hide edit! Xf2 " comment
|
||||||
|
call assert_equal(['Xf2', 2], [bufname(''), winnr('$')])
|
||||||
|
call assert_equal([0, 0], [buflisted('Xf1'), bufloaded('Xf1')])
|
||||||
|
bwipeout! Xf2
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" vim: shiftwidth=2 sts=2 expandtab
|
@ -866,7 +866,7 @@ static const int included_patches[] = {
|
|||||||
// 89 NA
|
// 89 NA
|
||||||
88,
|
88,
|
||||||
// 87 NA
|
// 87 NA
|
||||||
// 86,
|
86,
|
||||||
85,
|
85,
|
||||||
84,
|
84,
|
||||||
83,
|
83,
|
||||||
|
Loading…
Reference in New Issue
Block a user