diff options
-rw-r--r-- | cmake.deps/cmake/BuildLuarocks.cmake | 58 | ||||
-rw-r--r-- | runtime/bugreport.vim | 87 | ||||
-rw-r--r-- | runtime/doc/deprecated.txt | 2 | ||||
-rw-r--r-- | runtime/lua/vim/diagnostic.lua | 2 | ||||
-rw-r--r-- | src/nvim/drawline.c | 10 | ||||
-rw-r--r-- | src/nvim/ex_getln.c | 3 | ||||
-rw-r--r-- | src/nvim/tag.c | 9 | ||||
-rw-r--r-- | test/functional/ui/statuscolumn_spec.lua | 13 | ||||
-rw-r--r-- | test/old/testdir/test_cmdline.vim | 8 |
9 files changed, 60 insertions, 132 deletions
diff --git a/cmake.deps/cmake/BuildLuarocks.cmake b/cmake.deps/cmake/BuildLuarocks.cmake index 901d1f17da..674a7eaee1 100644 --- a/cmake.deps/cmake/BuildLuarocks.cmake +++ b/cmake.deps/cmake/BuildLuarocks.cmake @@ -104,34 +104,29 @@ if(MSVC) set(PATH PATH=${DEPS_INSTALL_DIR}/luarocks/tools;$ENV{PATH}) endif() -# mpack -add_custom_command(OUTPUT ${ROCKS_DIR}/mpack - COMMAND ${CMAKE_COMMAND} -E env "${PATH}" ${LUAROCKS_BINARY} build mpack 1.0.10-0 ${LUAROCKS_BUILDARGS} - DEPENDS luarocks) -add_custom_target(mpack ALL DEPENDS ${ROCKS_DIR}/mpack) - -# lpeg -add_custom_command(OUTPUT ${ROCKS_DIR}/lpeg - COMMAND ${CMAKE_COMMAND} -E env "${PATH}" ${LUAROCKS_BINARY} build lpeg 1.0.2-1 ${LUAROCKS_BUILDARGS} - DEPENDS mpack) -add_custom_target(lpeg ALL DEPENDS ${ROCKS_DIR}/lpeg) +set(CURRENT_DEP luarocks) + +function(Download ROCK VER) + if(ARGV2) + set(OUTPUT ${ARGV2}) + else() + set(OUTPUT ${ROCKS_DIR}/${ROCK}) + endif() + add_custom_command(OUTPUT ${OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env "${PATH}" ${LUAROCKS_BINARY} build ${ROCK} ${VER} ${LUAROCKS_BUILDARGS} + DEPENDS ${CURRENT_DEP}) + add_custom_target(${ROCK} ALL DEPENDS ${OUTPUT}) + set(CURRENT_DEP ${ROCK} PARENT_SCOPE) +endfunction() + +Download(mpack 1.0.10-0) +Download(lpeg 1.0.2-1) if((NOT USE_BUNDLED_LUAJIT) AND USE_BUNDLED_LUA) - # luabitop - add_custom_command(OUTPUT ${ROCKS_DIR}/luabitop - COMMAND ${CMAKE_COMMAND} -E env "${PATH}" ${LUAROCKS_BINARY} build luabitop 1.0.2-3 ${LUAROCKS_BUILDARGS} - DEPENDS lpeg) - add_custom_target(luabitop ALL DEPENDS ${ROCKS_DIR}/luabitop) + Download(luabitop 1.0.2-3) endif() if(USE_BUNDLED_BUSTED) - if((NOT USE_BUNDLED_LUAJIT) AND USE_BUNDLED_LUA) - set(BUSTED_DEPENDS luabitop) - else() - set(BUSTED_DEPENDS lpeg) - endif() - - # busted if(WIN32) set(BUSTED_EXE "${DEPS_BIN_DIR}/busted.bat") set(LUACHECK_EXE "${DEPS_BIN_DIR}/luacheck.bat") @@ -139,22 +134,11 @@ if(USE_BUNDLED_BUSTED) set(BUSTED_EXE "${DEPS_BIN_DIR}/busted") set(LUACHECK_EXE "${DEPS_BIN_DIR}/luacheck") endif() - add_custom_command(OUTPUT ${BUSTED_EXE} - COMMAND ${CMAKE_COMMAND} -E env "${PATH}" ${LUAROCKS_BINARY} build busted 2.1.1 ${LUAROCKS_BUILDARGS} - DEPENDS ${BUSTED_DEPENDS}) - add_custom_target(busted ALL DEPENDS ${BUSTED_EXE}) - # luacheck - add_custom_command(OUTPUT ${LUACHECK_EXE} - COMMAND ${CMAKE_COMMAND} -E env "${PATH}" ${LUAROCKS_BINARY} build luacheck 1.1.0-1 ${LUAROCKS_BUILDARGS} - DEPENDS busted) - add_custom_target(luacheck ALL DEPENDS ${LUACHECK_EXE}) + Download(busted 2.1.1 ${BUSTED_EXE}) + Download(luacheck 1.1.0-1 ${LUACHECK_EXE}) if (USE_BUNDLED_LUA OR NOT USE_BUNDLED_LUAJIT) - # coxpcall - add_custom_command(OUTPUT ${ROCKS_DIR}/coxpcall - COMMAND ${CMAKE_COMMAND} -E env "${PATH}" ${LUAROCKS_BINARY} build coxpcall 1.17.0-1 ${LUAROCKS_BUILDARGS} - DEPENDS luarocks) - add_custom_target(coxpcall ALL DEPENDS ${ROCKS_DIR}/coxpcall) + Download(coxpcall 1.17.0-1) endif() endif() diff --git a/runtime/bugreport.vim b/runtime/bugreport.vim deleted file mode 100644 index 27761ca011..0000000000 --- a/runtime/bugreport.vim +++ /dev/null @@ -1,87 +0,0 @@ -:" Use this script to create the file "bugreport.txt", which contains -:" information about the environment of a possible bug in Vim. -:" -:" Maintainer: Bram Moolenaar <Bram@vim.org> -:" Last change: 2019 Jan 27 -:" -:" To use inside Vim: -:" :so $VIMRUNTIME/bugreport.vim -:" Or, from the command line: -:" vim -s $VIMRUNTIME/bugreport.vim -:" -:" The "if 1" lines are to avoid error messages when expression evaluation is -:" not compiled in. -:" -:if 1 -: let more_save = &more -:endif -:set nomore -:if has("unix") -: !echo "uname -a" >bugreport.txt -: !uname -a >>bugreport.txt -:endif -:redir >>bugreport.txt -:version -:if 1 -: func <SID>CheckDir(n) -: if isdirectory(a:n) -: echo 'directory "' . a:n . '" exists' -: else -: echo 'directory "' . a:n . '" does NOT exist' -: endif -: endfun -: func <SID>CheckFile(n) -: if filereadable(a:n) -: echo '"' . a:n . '" is readable' -: else -: echo '"' . a:n . '" is NOT readable' -: endif -: endfun -: echo "--- Directories and Files ---" -: echo '$VIM = "' . $VIM . '"' -: call <SID>CheckDir($VIM) -: echo '$VIMRUNTIME = "' . $VIMRUNTIME . '"' -: call <SID>CheckDir($VIMRUNTIME) -: call <SID>CheckFile(&helpfile) -: call <SID>CheckFile(fnamemodify(&helpfile, ":h") . "/tags") -: call <SID>CheckFile($VIMRUNTIME . "/menu.vim") -: call <SID>CheckFile($VIMRUNTIME . "/filetype.vim") -: call <SID>CheckFile($VIMRUNTIME . "/syntax/synload.vim") -: delfun <SID>CheckDir -: delfun <SID>CheckFile -: echo "--- Scripts sourced ---" -: scriptnames -:endif -:set all -:if has("autocmd") -: au -:endif -:if 1 -: echo "--- Normal/Visual mode mappings ---" -:endif -:map -:if 1 -: echo "--- Insert/Command-line mode mappings ---" -:endif -:map! -:if 1 -: echo "--- Abbreviations ---" -:endif -:ab -:if 1 -: echo "--- Highlighting ---" -:endif -:highlight -:if 1 -: echo "--- Variables ---" -:endif -:if 1 -: let -:endif -:redir END -:set more& -:if 1 -: let &more = more_save -: unlet more_save -:endif -:e bugreport.txt diff --git a/runtime/doc/deprecated.txt b/runtime/doc/deprecated.txt index 3735073867..171d285950 100644 --- a/runtime/doc/deprecated.txt +++ b/runtime/doc/deprecated.txt @@ -120,6 +120,8 @@ LSP FUNCTIONS {buffer = bufnr} instead. - *vim.lsp.buf.formatting()* Use |vim.lsp.buf.format()| with {async = true} instead. +- *vim.lsp.buf.formatting_sync()* Use |vim.lsp.buf.format()| with + {async = false} instead. - *vim.lsp.buf.range_formatting()* Use |vim.lsp.formatexpr()| or |vim.lsp.buf.format()| instead. diff --git a/runtime/lua/vim/diagnostic.lua b/runtime/lua/vim/diagnostic.lua index 714038f8e4..d1b50304c7 100644 --- a/runtime/lua/vim/diagnostic.lua +++ b/runtime/lua/vim/diagnostic.lua @@ -744,7 +744,7 @@ function M.get_namespaces() end ---@class Diagnostic ----@field buffer integer +---@field bufnr integer ---@field lnum integer 0-indexed ---@field end_lnum nil|integer 0-indexed ---@field col integer 0-indexed diff --git a/src/nvim/drawline.c b/src/nvim/drawline.c index 27e1632559..2268a7cd3e 100644 --- a/src/nvim/drawline.c +++ b/src/nvim/drawline.c @@ -656,7 +656,15 @@ static void get_statuscol_str(win_T *wp, linenr_T lnum, int virtnum, statuscol_T wp->w_statuscol_line_count = wp->w_nrwidth_line_count; set_vim_var_nr(VV_VIRTNUM, 0); build_statuscol_str(wp, wp->w_nrwidth_line_count, 0, stcp); - stcp->width += stcp->truncate; + if (stcp->truncate > 0) { + // Add truncated width to avoid unnecessary redraws + int addwidth = MIN(stcp->truncate, MAX_NUMBERWIDTH - wp->w_nrwidth); + stcp->truncate = 0; + stcp->width += addwidth; + wp->w_nrwidth += addwidth; + wp->w_nrwidth_width = wp->w_nrwidth; + wp->w_valid &= ~VALID_WCOL; + } } set_vim_var_nr(VV_VIRTNUM, virtnum); diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index ba403e3dd9..f3afbdcaaf 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -4209,7 +4209,8 @@ void f_setcmdline(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) } } - rettv->vval.v_number = set_cmdline_str(argvars[0].vval.v_string, pos); + // Use tv_get_string() to handle a NULL string like an empty string. + rettv->vval.v_number = set_cmdline_str(tv_get_string(&argvars[0]), pos); } /// "setcmdpos()" function diff --git a/src/nvim/tag.c b/src/nvim/tag.c index 401b43204e..cebc7d5d89 100644 --- a/src/nvim/tag.c +++ b/src/nvim/tag.c @@ -3322,11 +3322,10 @@ int get_tags(list_T *list, char *pat, char *buf_fname) } for (i = 0; i < num_matches; i++) { - int parse_result = parse_match(matches[i], &tp); - - // Avoid an unused variable warning in release builds. - (void)parse_result; - assert(parse_result == OK); + if (parse_match(matches[i], &tp) == FAIL) { + xfree(matches[i]); + continue; + } bool is_static = test_for_static(&tp); diff --git a/test/functional/ui/statuscolumn_spec.lua b/test/functional/ui/statuscolumn_spec.lua index 83c49e56a0..a2fe875e65 100644 --- a/test/functional/ui/statuscolumn_spec.lua +++ b/test/functional/ui/statuscolumn_spec.lua @@ -616,4 +616,17 @@ describe('statuscolumn', function() | ]]) end) + + it("is only evaluated twice, once to estimate and once to draw", function() + command([[ + let g:stcnr = 0 + func! Stc() + let g:stcnr += 1 + return '12345' + endfunc + set stc=%!Stc() + norm ggdG + ]]) + eq(2, eval('g:stcnr')) + end) end) diff --git a/test/old/testdir/test_cmdline.vim b/test/old/testdir/test_cmdline.vim index f9ac7db5d2..37c284064e 100644 --- a/test/old/testdir/test_cmdline.vim +++ b/test/old/testdir/test_cmdline.vim @@ -3508,6 +3508,14 @@ endfunc func Test_setcmdline() func SetText(text, pos) + call assert_equal(0, setcmdline(v:_null_string)) + call assert_equal('', getcmdline()) + call assert_equal(1, getcmdpos()) + + call assert_equal(0, setcmdline(''[: -1])) + call assert_equal('', getcmdline()) + call assert_equal(1, getcmdpos()) + autocmd CmdlineChanged * let g:cmdtype = expand('<afile>') call assert_equal(0, setcmdline(a:text)) call assert_equal(a:text, getcmdline()) |