aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake.deps/cmake/BuildLuarocks.cmake58
-rw-r--r--runtime/bugreport.vim87
-rw-r--r--runtime/doc/deprecated.txt2
-rw-r--r--runtime/lua/vim/diagnostic.lua2
-rw-r--r--src/nvim/drawline.c10
-rw-r--r--src/nvim/ex_getln.c3
-rw-r--r--src/nvim/tag.c9
-rw-r--r--test/functional/ui/statuscolumn_spec.lua13
-rw-r--r--test/old/testdir/test_cmdline.vim8
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())