aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-05-05 20:04:35 +0200
committerGitHub <noreply@github.com>2019-05-05 20:04:35 +0200
commit8a1880f04109b2043efdd4c53f5b24cadf511c69 (patch)
tree1479322cdf125176ac145dc3cc6a8f5fb151a59e /src
parent9d6c205a339f0926bdf6cf9312e1db40642df259 (diff)
parentfb02e9f1e95a72cc7e09465d706f67652ff3bb5e (diff)
downloadrneovim-8a1880f04109b2043efdd4c53f5b24cadf511c69.tar.gz
rneovim-8a1880f04109b2043efdd4c53f5b24cadf511c69.tar.bz2
rneovim-8a1880f04109b2043efdd4c53f5b24cadf511c69.zip
Merge #9972 from janlazo/vim-8.1.1249
vim-patch:8.1.{613,1046,1249}
Diffstat (limited to 'src')
-rw-r--r--src/nvim/buffer.c5
-rw-r--r--src/nvim/option.c22
-rw-r--r--src/nvim/regexp_nfa.c6
-rw-r--r--src/nvim/testdir/test_autocmd.vim23
-rw-r--r--src/nvim/testdir/test_findfile.vim1
-rw-r--r--src/nvim/testdir/test_normal.vim1
6 files changed, 40 insertions, 18 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c
index c8ed7d0b37..cdb226b94d 100644
--- a/src/nvim/buffer.c
+++ b/src/nvim/buffer.c
@@ -5112,14 +5112,15 @@ chk_modeline(
*e = NUL; // truncate the set command
if (*s != NUL) { // skip over an empty "::"
+ const int secure_save = secure;
save_SID = current_SID;
current_SID = SID_MODELINE;
// Make sure no risky things are executed as a side effect.
- secure++;
+ secure = 1;
retval = do_set(s, OPT_MODELINE | OPT_LOCAL | flags);
- secure--;
+ secure = secure_save;
current_SID = save_SID;
if (retval == FAIL) { // stop if error found
break;
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 41d3b03e41..743f6c8311 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -1833,34 +1833,30 @@ int do_set(
{
uint32_t *p = insecure_flag(opt_idx, opt_flags);
- int did_inc_secure = false;
+ const int secure_saved = secure;
// When an option is set in the sandbox, from a
// modeline or in secure mode, then deal with side
// effects in secure mode. Also when the value was
// set with the P_INSECURE flag and is not
// completely replaced.
- if (secure
+ if ((opt_flags & OPT_MODELINE)
|| sandbox != 0
- || (opt_flags & OPT_MODELINE)
|| (!value_is_replaced && (*p & P_INSECURE))) {
- did_inc_secure = true;
- secure++;
+ secure = 1;
}
- // Handle side effects, and set the global value for
- // ":set" on local options. Note: when setting 'syntax'
- // or 'filetype' autocommands may be triggered that can
- // cause havoc.
+ // Handle side effects, and set the global value
+ // for ":set" on local options. Note: when setting
+ // 'syntax' or 'filetype' autocommands may be
+ // triggered that can cause havoc.
errmsg = did_set_string_option(opt_idx, (char_u **)varp,
new_value_alloced, oldval,
errbuf, sizeof(errbuf),
opt_flags, &value_checked);
- if (did_inc_secure) {
- secure--;
- }
- }
+ secure = secure_saved;
+ }
if (errmsg == NULL) {
if (!starting) {
diff --git a/src/nvim/regexp_nfa.c b/src/nvim/regexp_nfa.c
index b935b44291..ce7270ae65 100644
--- a/src/nvim/regexp_nfa.c
+++ b/src/nvim/regexp_nfa.c
@@ -4968,13 +4968,15 @@ static int nfa_did_time_out(void)
///
/// When "nfa_endp" is not NULL it is a required end-of-match position.
///
-/// Return TRUE if there is a match, FALSE otherwise.
+/// Return TRUE if there is a match, FALSE if there is no match,
+/// NFA_TOO_EXPENSIVE if we end up with too many states.
/// When there is a match "submatch" contains the positions.
+///
/// Note: Caller must ensure that: start != NULL.
static int nfa_regmatch(nfa_regprog_T *prog, nfa_state_T *start,
regsubs_T *submatch, regsubs_T *m)
{
- int result;
+ int result = false;
int flag = 0;
bool go_to_nextline = false;
nfa_thread_T *t;
diff --git a/src/nvim/testdir/test_autocmd.vim b/src/nvim/testdir/test_autocmd.vim
index cf08df4b08..d13761e2ba 100644
--- a/src/nvim/testdir/test_autocmd.vim
+++ b/src/nvim/testdir/test_autocmd.vim
@@ -677,6 +677,29 @@ func Test_OptionSet_diffmode_close()
"delfunc! AutoCommandOptionSet
endfunc
+func Test_OptionSet_modeline()
+ throw 'skipped: Nvim does not support test_override()'
+ call test_override('starting', 1)
+ au! OptionSet
+ augroup set_tabstop
+ au OptionSet tabstop call timer_start(1, {-> execute("echo 'Handler called'", "")})
+ augroup END
+ call writefile(['vim: set ts=7 sw=5 :', 'something'], 'XoptionsetModeline')
+ set modeline
+ let v:errmsg = ''
+ call assert_fails('split XoptionsetModeline', 'E12:')
+ call assert_equal(7, &ts)
+ call assert_equal('', v:errmsg)
+
+ augroup set_tabstop
+ au!
+ augroup END
+ bwipe!
+ set ts&
+ call delete('XoptionsetModeline')
+ call test_override('starting', 0)
+endfunc
+
" Test for Bufleave autocommand that deletes the buffer we are about to edit.
func Test_BufleaveWithDelete()
new | edit Xfile1
diff --git a/src/nvim/testdir/test_findfile.vim b/src/nvim/testdir/test_findfile.vim
index 0bae161a8b..f5488a6a27 100644
--- a/src/nvim/testdir/test_findfile.vim
+++ b/src/nvim/testdir/test_findfile.vim
@@ -133,6 +133,7 @@ func Test_finddir()
let save_shellslash = &shellslash
let save_dir = getcwd()
set path=,,
+ set shellslash
call CreateFiles()
cd Xdir1
diff --git a/src/nvim/testdir/test_normal.vim b/src/nvim/testdir/test_normal.vim
index 9733c73cfc..ef17209f74 100644
--- a/src/nvim/testdir/test_normal.vim
+++ b/src/nvim/testdir/test_normal.vim
@@ -82,7 +82,6 @@ fun! Test_normal00_optrans()
endfunc
func! Test_normal01_keymodel()
- throw "skipped: Nvim regression: 'keymodel'"
call Setup_NewWindow()
" Test 1: depending on 'keymodel' <s-down> does something different
50