aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
| * | fix: make_filter_cmd for :! powershell #15913Enan Ajmain2022-06-25
|/ / | | | | | | | | | | | | | | | | | | | | | | | | Problem: Nvim fails to create tempfile "…/nvim6UJx04/7" when 'shell' is set to pwsh (PowerShell Core). This breaks filtered shell commands ":{range}!". With shell set to cmd, it works. Solution: PowerShell doesn't use "<" for stdin redirection. Instead, use "-RedirectStandardInput". Closes #15913
* | fix(build): strip trailing newline from variable (#19084)Christian Clason2022-06-25
| | | | | | | | | | | | | | | | Problem: #19029 added a new fallback that sets `$MACOSX_DEPLOYMENT_TARGET` to the local macOS version via `sw_vers`. However, the output included a newline, which broke the generated Ninja build script. Solution: use `OUTPUT_STRIP_TRAILING_WHITESPACE` for `execute_process`.
* | vim-patch:8.2.5022: 'completefunc'/'omnifunc' error does not end completion ↵zeertzjq2022-06-25
| | | | | | | | | | | | | | | | (#19083) Problem: 'completefunc'/'omnifunc' error does not end completion. Solution: Check if there was an error or exception. (closes vim/vim#10486, closes vim/vim#4218) https://github.com/vim/vim/commit/9bcb9ca9c7dd1632385dc3351b5e019739368658
* | Merge pull request #19029 from carlocab/macos-universalChristian Clason2022-06-25
|\ \ | | | | | | ci: build universal release on macOS
| * | ci(release): build a universal binary on macOSCarlo Cabrera2022-06-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After some tweaks to our dep builds, we can now build a universal binary for macOS by using `CMAKE_OSX_ARCHITECTURES`. So, let's do that. This requires a number of additional changes: 1. We need to build on macOS 11, since earlier versions do not support building universal (M1 + Intel) binaries. 2. We need to provision a universal `libintl`. The linker will look for an ARM64 version of this library when linking the `nvim` binary. While we're here: 1. Link statically to `libintl`. This allows to to avoid having to do any install name rewriting or codesigning to package Neovim. 2. Bump the `MACOSX_DEPLOYMENT_TARGET` to `11`. We're already using a `libintl` built by Homebrew (through the pre-installed version of `gettext`), and that is built for macOS 11. In order to ensure we link to `libintl.a` instead of `libintl.dylib`, we have to make sure that CMake can't find the latter. This ideally should be a matter of doing `brew unlink gettext`. However, CMake is too adept at finding things that Homebrew has installed (even when not linked), so we have to do a bit more than that. This appears in the additional step ensuring static linkage to `libintl`. We end up breaking some Homebrew-installed software in the process, and some of these software is called during our build (e.g. curl, git, wget). To avoid any adverse effects, let's just uninstall them.
| * | build(deps): support universal builds on macOSCarlo Cabrera2022-06-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CMake can handle building universal binaries on macOS using the `CMAKE_OSX_ARCHITECTURES` variable. Let's pass this variable to the relevant dep builds. We use the `LIST_SEPARATOR` argument to prevent the shell from interpreting the `;` that CMake uses as a list separator. For dependencies that don't build using CMake, we only need to make sure that the compiler is invoked with the correct `-arch` flags. The compiler does the rest. The only exception to this is the LuaJIT build, which we handle separately as a special case.
| * | build(luajit): support universal builds on macOSCarlo Cabrera2022-06-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To build universal binaries on macOS, one typically only needs to pass multiple `-arch` flags to `clang`. Unfortunately, this strategy causes LuaJIT builds to fail. To work around this, we build LuaJIT for each requested architecture individually first and then use `lipo` to package each architecture slice into a universal binary. To be able to do this on an Intel macOS host or an M1 macOS host without a Rosetta installation, we need some special flags in order to tell LuaJIT that it is cross-compiling for a different target. See [1] for details. [1] https://luajit.org/install.html#cross
* | | build(gen_vimdoc): remove needless list creation and unused variable (#19079)Axis2022-06-25
| | | | | | | | | build(gen_vimdoc): remove needless list creation
* | | Merge pull request #19041 from lewis6991/globallocalbfredl2022-06-25
|\ \ \ | | | | | | | | fix(api): nvim_set_option_value for global-local options
| * | | fix(api): nvim_set_option_value for global-local optionsLewis Russell2022-06-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | global-local window options need to be handled specially. When `win` is given but `scope` is not, then we want to set the local version of the option but not the global one, therefore we need to force `scope='local'`. Note this does not apply to window-local only options (e.g. 'number') Example: nvim_set_option_value('scrolloff', 10, {}) -- global-local window option; set global value nvim_set_option_value('scrolloff', 20, {win=0}) -- global-local window option; set local value nvim_set_option_value('number', true, {}) -- local window option is now equivalent to: nvim_set_option_value('scrolloff', 10, {}) nvim_set_option_value('scrolloff', 20, {win=0, scope='local'}) -- changed from before nvim_set_option_value('number', true, {win=0}) -- unchanged from before Only the global-local option with a `win` provided gets forced to local scope.
* | | | fix(filetype.lua): always return a string in getlines function (#19080)Hazel Weakly2022-06-24
| |/ / |/| | | | | | | | This re-introduces the fix that the filetype.lua refactor inadvertently reverted. The fix ensures that in the case when end_lnum is omitted, a string is always returned.
* | | Merge pull request #19071 from bfredl/minimapbfredl2022-06-24
|\ \ \ | | | | | | | | perf(map): some optimizations when setting mappings
| * | | refactor(map): statically initialize maphash arraybfredl2022-06-24
| | | |
| * | | refactor(map): simplify free_all_mem handlingbfredl2022-06-24
| | | |
| * | | perf(map): avoid extraneous heap allocations when setting mappingsbfredl2022-06-24
| | | | | | | | | | | | | | | | | | | | | | | | - don't immediately vim_strsave and then xfree a heap buffer. - allow replace_termcodes to take in a buffer instead of allocating it - grug! memory allocation bad!
| * | | perf(map): visit only one hash bucket instead of all, like an actual hash tablebfredl2022-06-24
| | |/ | |/|
* / | vim-patch:a57b553b4328 (#19076)Christian Clason2022-06-24
|/ / | | | | | | Update runtime files https://github.com/vim/vim/commit/a57b553b432855667c9f26edfad95ccfdd24a6b7
* | Merge pull request #19072 from zeertzjq/vim-8.2.4628zeertzjq2022-06-24
|\ \ | | | | | | vim-patch:8.2.{4628,4895,4977,5146,5154}
| * | vim-patch:8.2.5146: memory leak when substitute expression nestszeertzjq2022-06-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Memory leak when substitute expression nests. Solution: Use an array of expression results. https://github.com/vim/vim/commit/44ddf19ec0ff59c969658ec7d9ed42070c59c51b Cherry-pick a comment change from patch 8.2.5057. N/A patches for version.c: vim-patch:8.2.5154: still mentioning version8, some cosmetic issues Problem: Still mentioning version8, some cosmetic issues. Solution: Prefer mentioning version9, cosmetic improvements. https://github.com/vim/vim/commit/abd56da30bae4a5c6c20b9363ccae12f7b126026
| * | vim-patch:8.2.4977: memory access error when substitute expression changes ↵zeertzjq2022-06-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | window Problem: Memory access error when substitute expression changes window. Solution: Disallow changing window in substitute expression. https://github.com/vim/vim/commit/e2bd8600b873d2cd1f9d667c28cba8b1dba18839 "textwinlock" was renamed back to "textlock" in patch 8.2.5029.
| * | vim-patch:8.2.4895: buffer overflow with invalid command with composing charszeertzjq2022-06-24
| | | | | | | | | | | | | | | | | | Problem: Buffer overflow with invalid command with composing chars. Solution: Check that the whole character fits in the buffer. https://github.com/vim/vim/commit/d88934406c5375d88f8f1b65331c9f0cab68cc6c
| * | vim-patch:8.2.4628: not enough testing for 2/3 letter substitute commandszeertzjq2022-06-24
|/ / | | | | | | | | | | Problem: Not enough testing for 2/3 letter substitute commands. Solution: Add more tests. (Yegappan Lakshmanan, closes vim/vim#10019) https://github.com/vim/vim/commit/5e877baf87530d5c4fe4da2c5a6269cf19526c27
* | fix(tests): remove misleading $TEST_PATH segment #19050Justin M. Keyes2022-06-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: RunTests.cmake adds $TEST_PATH to $TMPDIR with the implication that it gives more isolation. But this is misleading because $TEST_PATH is only defined once. Full test runs use the same $TMPDIR for all tests. This was likely added with the intention of invoking RunTests.cmake once-per-testfile from a wrapper than does the isolation/orchestration. But even so, Nvim's vim_maketempdir() / vim_mktempdir() _already_ creates a unique tempdir per session. Solution: Don't append $TEST_PATH to $TMPDIR. Avoids confusion and makes the path shorter.
* | vim-patch:8cc5b559f700 (#19066)Christian Clason2022-06-23
| | | | | | | | Update runtime files https://github.com/vim/vim/commit/8cc5b559f70041361612b8a6a87922503b33baa6
* | fix(api): check for inclusive buffer line index out of bounds correctly (#19056)zeertzjq2022-06-23
| |
* | refactor: move some mapping-related code to a separate file (#19061)zeertzjq2022-06-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This marks the following Vim patches as ported: vim-patch:8.1.1785: map functionality mixed with character input Problem: Map functionality mixed with character input. Solution: Move the map functionality to a separate file. (Yegappan Lakshmanan, closes vim/vim#4740) Graduate the +localmap feature. https://github.com/vim/vim/commit/b66bab381c8ba71fd6e92327d1d34c6f8a65f2a7 vim-patch:8.2.3643: header for source file is outdated Problem: Header for source file is outdated. Solution: Make the header more accurate. (closes vim/vim#9186) https://github.com/vim/vim/commit/a3f83feb63eae5464a620ae793c002eb45f7a838 Also cherry-pick a change for <unique> mappings from patch 8.2.0807. Rename map_clear_mode() to do_mapclear().
* | Merge pull request #19058 from bfredl/minioptbfredl2022-06-23
|\ \ | | | | | | perf(highlight): use binary search to lookup RGB color names
| * | perf(highlight): use binary search to lookup RGB color namesbfredl2022-06-23
| |/
* | vim-patch:8.2.5152: search() gets stuck with "c" and skip evaluates to true ↵zeertzjq2022-06-23
| | | | | | | | | | | | | | (#19064) Problem: search() gets stuck with "c" and skip evaluates to true. Solution: Reset the SEARCH_START option. (closes vim/vim#10608) https://github.com/vim/vim/commit/180246cfd1a5842c538fa8a4a0b520f1d95c90c7
* | Merge pull request #19020 from echasnovski/screenchar-floatbfredl2022-06-23
|\ \ | | | | | | fix(float): make `screen*()` functions respect floating windows
| * | fix(float): make `screen*()` functions respect floating windowsEvgeni Chasnovski2022-06-23
| | | | | | | | | | | | Resolves #19013.
* | | vim-patch:8.2.2068: transparent syntax item uses start/end of containing ↵zeertzjq2022-06-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | region (#19055) Problem: Transparent syntax item uses start/end of containing region. Solution: Do not change the startpos and endpos of a transparent region to that of its containing region. (Adrian Ghizaru, closes vim/vim#7349, closes vim/vim#7391) https://github.com/vim/vim/commit/b46f57e87b3706a8c4b97d8e03f7853a7938b061
* | | Merge pull request #19054 from zeertzjq/vim-8.2.5150zeertzjq2022-06-23
|\ \ \ | | | | | | | | vim-patch:8.2.{5150,5151}: reading beyond the end of the line
| * | | vim-patch:8.2.5151: reading beyond the end of the line with lisp indentingzeertzjq2022-06-23
| | | | | | | | | | | | | | | | | | | | | | | | Problem: Reading beyond the end of the line with lisp indenting. Solution: Avoid going over the NUL at the end of the line. https://github.com/vim/vim/commit/8eba2bd291b347e3008aa9e565652d51ad638cfa
| * | | vim-patch:8.2.5150: read past the end of the first line with ":0;'{"zeertzjq2022-06-23
|/ / / | | | | | | | | | | | | | | | Problem: Read past the end of the first line with ":0;'{". Solution: When on line zero check the column is valid for line one. https://github.com/vim/vim/commit/f7c7c3fad6d2135d558f3b36d0d1a943118aeb5e
* | | fix(input): use correct grid when restoring cursor for <expr> mapping (#19047)zeertzjq2022-06-23
| | |
* | | fix(api): check error after getting win/buf handle (#19052)Gregory Anders2022-06-22
| | |
* | | fix(build): only pass -municode if MINGW #19049Justin M. Keyes2022-06-22
| |/ |/| | | | | | | Avoids this warning in the Windows build: 2022-06-22T08:58:13.0542153Z LINK : warning LNK4044: unrecognized option '/municode'; ignored [D:\a\neovim\neovim\build\test\functional\fixtures\printenv-test.vcxproj]
* | Merge pull request #19039 from bfredl/multicolorbfredl2022-06-22
|\ \ | | | | | | perf: get rid of unnecessary allocations in highlight groups
| * | perf(ui): remove spurious allocations from mode_style_array()bfredl2022-06-21
| | |
| * | perf(highlight): allocate permanent names in an arena for fun and cache localitybfredl2022-06-21
| | |
| * | refactor: remove atrocious HL_TABLE()[idx] syntax before I poke my eyes outbfredl2022-06-21
| | |
| * | refactor(highlight): get rid of syn_unadd_group()bfredl2022-06-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is a sham. if the user does hi ExistingGroup guifg=AliceBlue invalidkey=foobar the "guifg" part will still be executed. No need to micro-manage the same case where ANewGroup is added instead.
| * | perf(highlight): don't allocate duplicates for color namesbfredl2022-06-21
| | |
| * | perf(highlight): get rid of local memory allocations for "{key}={arg}"bfredl2022-06-21
| | |
* | | vim-patch:8.2.5132: :mkview test doesn't test much (#19045)zeertzjq2022-06-22
| | | | | | | | | | | | | | | Problem: :mkview test doesn't test much. Solution: Save the view with the folds closed. (James McCoy, closes vim/vim#10596) https://github.com/vim/vim/commit/c829faa8211df52997c0b9ee49cdea0c8786b177
* | | refactor(option): DRY get/set option value #19038Lewis Russell2022-06-21
| | | | | | | | | | | | | | | | | | | | | | | | The main motivation for this is for the buf and win cases which need to set up and restore context, and it's what specifically makes the semantics of options nuanced, and thus this should not be repeated more than once. - nvim_get/set_option_value now share argument validation.
* | | Merge pull request #19043 from dundargoc/cmakebfredl2022-06-22
|\ \ \ | | | | | | | | build(cmake): use glob_wrapper instead of file(GLOB ...) in main CMakeLists
| * | | build(cmake): use glob_wrapper instead of file(GLOB in main CMakeListsDundar Goc2022-06-21
|/ / / | | | | | | | | | | | | | | | | | | This will allow cmake to check if any directories needs re-globbing, in other words, if any new file has been added since last time cmake was run. This will (allegedly) make the configure stage slower but I have not noticed any difference so I believe this is well worth it.
* / / refactor(runtime): refactor filetype.lua (#18813)Jonas Strittmatter2022-06-21
|/ / | | | | | | Move some filetype detection functions to detect.lua, sort patterns by detected filetype.