aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* feat(runtime): highlight hl groups in syntax.txt (#25050)zeertzjq2023-09-08
| | | | | | - Add runtime/lua/vim/vimhelp.lua, which is a translation of Vim's runtime/import/dist/vimhelp.vim. - Unlike Vim, run the highlighting from an ftplugin file instead of a syntax file, so that it is run even if using treesitter.
* Merge pull request #24985 from bfredl/hash2bfredl2023-09-08
|\ | | | | refactor(map): enhanced implementation, Clean Code™, etc etc
| * refactor(map): enhanced implementation, Clean Code™, etc etcbfredl2023-09-08
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This involves two redesigns of the map.c implementations: 1. Change of macro style and code organization The old khash.h and map.c implementation used huge #define blocks with a lot of backslash line continuations. This instead uses the "implementation file" .c.h pattern. Such a file is meant to be included multiple times, with different macros set prior to inclusion as parameters. we already use this pattern e.g. for eval/typval_encode.c.h to implement different typval encoders reusing a similar structure. We can structure this code into two parts. one that only depends on key type and is enough to implement sets, and one which depends on both key and value to implement maps (as a wrapper around sets, with an added value[] array) 2. Separate the main hash buckets from the key / value arrays Change the hack buckets to only contain an index into separate key / value arrays This is a common pattern in modern, state of the art hashmap implementations. Even though this leads to one more allocated array, it is this often is a net reduction of memory consumption. Consider key+value consuming at least 12 bytes per pair. On average, we will have twice as many buckets per item. Thus old implementation: 2*12 = 24 bytes per item New implementation 1*12 + 2*4 = 20 bytes per item And the difference gets bigger with larger items. One might think we have pulled a fast one here, as wouldn't the average size of the new key/value arrays be 1.5 slots per items due to amortized grows? But remember, these arrays are fully dense, and thus the accessed memory, measured in _cache lines_, the unit which actually matters, will be the fully used memory but just rounded up to the nearest cache line boundary. This has some other interesting properties, such as an insert-only set/map will be fully ordered by insert only. Preserving this ordering in face of deletions is more tricky tho. As we currently don't use ordered maps, the "delete" operation maintains compactness of the item arrays in the simplest way by breaking the ordering. It would be possible to implement an order-preserving delete although at some cost, like allowing the items array to become non-dense until the next rehash. Finally, in face of these two major changes, all code used in khash.h has been integrated into map.c and friends. Given the heavy edits it makes no sense to "layer" the code into a vendored and a wrapper part. Rather, the layered cake follows the specialization depth: code shared for all maps, code specialized to a key type (and its equivalence relation), and finally code specialized to value+key type.
* build(vim-patch.sh): don't use control chars in command (#25044)zeertzjq2023-09-08
|
* build(vim-patch.sh): use older associative array syntaxzeertzjq2023-09-08
|
* build(vim-patch.sh): dereference annotated tags when listing (#25042)zeertzjq2023-09-08
|
* Merge pull request #25024 from bfredl/luacheck2bfredl2023-09-07
|\ | | | | refactor(build): derocksify luacheck
| * refactor(build): derocksify luacheckbfredl2023-09-07
|/
* feat(lsp): add original LSP Location as item's user_data in ↵Tom Praschan2023-09-07
| | | | locations_to_items (#23743)
* vim-patch:f7ac0ef50988Christian Clason2023-09-07
| | | | | | | | | | | | | | | | | | | | | | | | | runtime: don't execute external commands when loading ftplugins This is a followup to 816fbcc262687b81fc46f82f7bbeb1453addfe0c (patch 9.0.1833: [security] runtime file fixes) It basically disables that external commands are run on loading of the filetype plugin, **unless** the user has set the `g:plugin_exec = 1` global variable in their configuration or for a specific filetype the variable g:<filetype>_exec=1. There are a few more plugins, that may execute system commands like debchangelog, gitcommit, sh, racket, zsh, ps1 but those do at least do not run those commands by default during loading of the filetype plugin (there the command is mostly run as convenience for auto-completion or to provide documentation lookup). closes: vim/vim#13034 https://github.com/vim/vim/commit/f7ac0ef5098856bedca26e7073594a407c05636f Co-authored-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Tim Pope <vim@tpope.org>
* vim-patch:67c951df4c95Christian Clason2023-09-07
| | | | | | | | | | | | | | | | | runtime(ftplugin): allow to exec if curdir is in PATH In case the current directory is present as valid $PATH entry, it is OK to call the program from it, even if vim curdir is in that same directory. (Without that patch, for instance, you will not be able to open .zip files while your current directory is /bin) closes: vim/vim#13027 https://github.com/vim/vim/commit/67c951df4c95981c716eeedb1b102d9668549e65 Co-authored-by: Anton Sharonov <anton.sharonov@gmail.com>
* fix(diagnostic): always return copies of diagnostic items (#25010)Evgeni Chasnovski2023-09-06
|
* Merge pull request #25030 from zeertzjq/vim-9.0.1874zeertzjq2023-09-06
|\ | | | | vim-patch:9.0.{partial:0669,1874}
| * vim-patch:9.0.1874: CI may fail in test_recover_empty_swapzeertzjq2023-09-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: CI may fail in test_recover_empty_swap Solution: Set directory option Fix failing Test_recover_empty_swap test :recover by default not only looks in the current directory, but also in ~/tmp for files to recover. If it finds some files to recover, it will interactively prompt for a file to recover. However, prompting doesn't work when running the test suite (and even if it would, there is no one that can answer the prompt). So it doesn't really make sense during testing, to inspect different directories for swap files and prompt and wait (which will lead to a timeout and therefore a failing test). So set the 'directory' option temporarily to the current directory only and reset it back once the test finishes. closes: vim/vim#13038 https://github.com/vim/vim/commit/1c7397f3f1e168541f88bb1bbd93a9f0b1235852 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * vim-patch:partial:9.0.0669: too many delete() calls in testszeertzjq2023-09-06
|/ | | | | | | | | | | | Problem: Too many delete() calls in tests. Solution: Use deferred delete where possible. https://github.com/vim/vim/commit/db77cb3c08784e6038dd029271b2080c1b2d9acb Include test_recover.vim changes only. Cherry-pick test_recover.vim change from patch 8.2.3637. Co-authored-by: Bram Moolenaar <Bram@vim.org>
* test(old): reorder test_quickfix.vim to match upstream (#25029)zeertzjq2023-09-06
|
* Merge pull request #25006 from lewis6991/fix/systemkillLewis Russell2023-09-05
|\ | | | | `vim.system` fixes and improvements
| * fix: windows timeouts have exit code 1Lewis Russell2023-09-05
| |
| * refactor(vim.system): factor out on_exit handlingLewis Russell2023-09-05
| |
| * fix(vim.system): make timeout work properlyLewis Russell2023-09-05
| | | | | | | | Mimic the behaviour of timeout(1) from coreutils.
| * fix(vim.system): let on_exit handle cleanup after killLewis Russell2023-09-05
| | | | | | | | Fixes #25000
* | fix(options): correct condition for calling did_set_option() (#25026)zeertzjq2023-09-05
|/
* vim-patch:282a94be990fChristian Clason2023-09-05
| | | | | | | | | runtime: Fix problem of checking wrong cwd for ruby ftplugin (vim/vim#13026) https://github.com/vim/vim/commit/282a94be990fc1ee5be46548bf7241b583d48972 Co-authored-by: Anton Sharonov (ant0sha) <109120102+ant0sha@users.noreply.github.com> Co-authored-by: Anton Sharonov <anton.sharonov@gmail.com>
* vim-patch:3170342af304Christian Clason2023-09-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | runtime(php): Update the php indent script to the 1.75 (from 1.70) (vim/vim#13025) Changes: 1.75: - Fix 2072/PHP-Indenting-for-VImvim/vim#87: The indent optimization was causing wrong indentation of lines preceded by a line ending with '}' when preceded by non white characters. - Fix long standing non-reported regex escaping issue in cleaning end of line comments function. This should help fixing some other unreported issues when parts of codes are commented out at ends of lines... 1.74: - Fix 2072/PHP-Indenting-for-VImvim/vim#86: Add support for `match` expression. 1.73: - Fix 2072/PHP-Indenting-for-VImvim/vim#77 where multi line strings and true/false keywords at beginning of a line would cause indentation failures. 1.72: - Fix vim/vimvim/vim#5722 where it was reported that the option PHP_BracesAtCodeLevel had not been working for the last 6 years. 1.71: - Fix 2072/PHP-Indenting-for-VImvim/vim#75 where the indent script would hang on some multi-line quoted strings. https://github.com/vim/vim/commit/3170342af3049852afb2fbca85df37baf5fec82f Co-authored-by: John Wellesz <john.wellesz@gmail.com>
* vim-patch:9.0.1866: undo is synced after character find (#25021)zeertzjq2023-09-05
| | | | | | | | | | | vim-patch:9.0.1866: undo is synced after character find Problem: Undo is synced after character find. Solution: Set no_u_sync when calling gotchars_nop(). closes: vim/vim#13022 closes: vim/vim#13024 https://github.com/vim/vim/commit/dccc29c228f8336ef7dd069a447886639af4458e
* ci: bump actions/checkout from 3 to 4dependabot[bot]2023-09-04
| | | | | | | | | | | | | | | Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
* build: bump lpeg to 1.1.0 (#25016)dundargoc2023-09-04
| | | | Release notes indicates it has better UTF8 handling which is relevant for us.
* vim-patch:9.0.1863: wrong format specifiers in e_aptypes_is_null_str_nr (#25015)zeertzjq2023-09-04
| | | | | | | | Problem: wrong format specifiers in e_aptypes_is_null_str_nr Solution: Fix the wrong format specifier closes: vim/vim#13020 https://github.com/vim/vim/commit/7db89bdc23e53c7bc43af6f1c7281bc69a6a3098
* vim-patch:9.0.1856: issues with formatting positional arguments (#25013)zeertzjq2023-09-04
| | | | | | | | | | | | | Problem: issues with formatting positional arguments Solution: fix them, add tests and documentation closes: vim/vim#12140 closes: vim/vim#12985 Tentatively fix message_test. Check NULL ptr. https://github.com/vim/vim/commit/aa90d4f031f73a34aaef5746931ea746849a2231 Co-authored-by: Christ van Willegen <cvwillegen@gmail.com>
* build: various fixesdundargoc2023-09-04
| | | | | | | | | - simplify lua interpreter search - fix incorrect variable name in BuildLua.cmake - build PUC Lua with -O2 - silence non-mandatory find_package search for libuv - simplify Find modules - Prefer using the explicitly set CI_BUILD over relying on the environment variable "CI".
* Merge pull request #24974 from bfredl/memline2bfredl2023-09-03
|\ | | | | fix(memline): more curbuf stuff
| * fix(memline): more curbuf stuffbfredl2023-09-01
| |
* | ci: move external_deps job from cirrus-ci back to github actionsdundargoc2023-09-03
| | | | | | | | | | | | | | This partially reverts commit 7d0479c55810af9bf9f115ba69d1419ea81ec41e. The job has been particularly unstable when used with docker on cirrus-ci, which is especially bad as it's meant to be a non-flaky and simple test.
* | refactor(ex_session.c): remove unnecessary char -> int -> char castzeertzjq2023-09-03
| | | | | | | | The two calls to get_view_file() both pass a char in a string, and get_view_file() assigns it to a char in a string.
* | vim-patch:9.0.1848: [security] buffer-overflow in vim_regsub_both() (#25001)zeertzjq2023-09-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: buffer-overflow in vim_regsub_both() Solution: Check remaining space https://github.com/vim/vim/commit/ced2c7394aafdc90fb7845e09b3a3fee23d48cb1 The change to do_sub() looks confusing. Maybe it's an overflow check? Then the crash may not be applicable to Nvim because of different casts. The test also looks confusing. It seems to source itself recursively. Also don't call strlen() twice on evaluation result. N/A patches for version.c: vim-patch:9.0.1849: CI error on different signedness in ex_cmds.c vim-patch:9.0.1853: CI error on different signedness in regexp.c Co-authored-by: Christian Brabandt <cb@256bit.org>
* | perf(substitute): don't reallocate new_start every time (#24997)zeertzjq2023-09-03
| |
* | vim-patch:9.0.1840: [security] use-after-free in do_ecmd (#24993)zeertzjq2023-09-03
| | | | | | | | | | | | | | | | | | | | | | Problem: use-after-free in do_ecmd Solution: Verify oldwin pointer after reset_VIsual() https://github.com/vim/vim/commit/e1dc9a627536304bc4f738c21e909ad9fcf3974c N/A patches for version.c: vim-patch:9.0.1841: style: trailing whitespace in ex_cmds.c Co-authored-by: Christian Brabandt <cb@256bit.org>
* | refactor(marks): don't set timestamp twice with :delmarks (#24994)zeertzjq2023-09-03
| | | | | | refactor(mark): don't set same timestamp twice
* | fix(shada): update marks when using delmarks! (#24978)Maria José Solano2023-09-03
| |
* | Merge pull request #24991 from zeertzjq/vim-9.0.1846zeertzjq2023-09-03
|\ \ | | | | | | vim-patch:9.0.{1846,1847}
| * | vim-patch:9.0.1847: [security] potential oob write in do_addsub()zeertzjq2023-09-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: potential oob write in do_addsub() Solution: don't overflow buf2, check size in for loop() https://github.com/vim/vim/commit/889f6af37164775192e33b233a90e86fd3df0f57 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1846: [security] crash in fullcommandzeertzjq2023-09-03
|/ / | | | | | | | | | | | | | | | | Problem: crash in fullcommand Solution: Check for typeval correctly https://github.com/vim/vim/commit/4c6fe2e2ea62469642ed1d80b16d39e616b25cf5 Co-authored-by: Christian Brabandt <cb@256bit.org>
* | vim-patch:9.0.1852: i_CTRL-O does not reset Select Mode (#24990)zeertzjq2023-09-03
| | | | | | | | | | | | | | | | | | | | | | | | Problem: i_CTRL-O does not reset Select Mode Solution: Reset select mode on CTRL-O in insert mode closes: vim/vim#13001 closes: vim/vim#12115 https://github.com/vim/vim/commit/d69aecf141ff05a645d02f39f1cbf6381ed7d0c0 Co-authored-by: pierreganty <pierreganty@gmail.com> Co-authored-by: Christian Brabandt <cb@256bit.org>
* | build: download busted from own neovim/deps repositorydundargoc2023-09-03
| | | | | | | | | | | | | | | | Downloading the necessary files all at once instead of doing dependency handling with luarocks speeds up installation immensely. We speed up the process even more by using luv as a replacement for the C modules in the busted dependencies, which allows us to skip costly compilation times. Co-authored-by: bfredl <bjorn.linse@gmail.com>
* | docs(luv): correct uv.spawn options.args docs about the first argumentChristian Clason2023-09-02
| | | | | | | | https://github.com/luvit/luv/commit/045bf29b6f54f9b511f8b76088250d2a90dbdf4f
* | fix(ui): avoid ambiguity about chunk that clears part of line (#24982)zeertzjq2023-09-02
| | | | | | Co-authored-by: bfredl <bjorn.linse@gmail.com>
* | Merge pull request #24310 from lewis6991/refactor/optionvalidateLewis Russell2023-09-02
|\ \ | | | | | | refactor(option.c): misc
| * | refactor(option): add set_option()Lewis Russell2023-08-31
| | |
| * | refactor(option): pass varp to set_string_optionLewis Russell2023-08-31
| | |
| * | refactor(option): option clearingLewis Russell2023-08-31
| | |