Commit Graph

21939 Commits

Author SHA1 Message Date
Carlo Cabrera
adcaf24f42 build(luajit): support universal builds on macOS
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
2022-06-24 23:34:57 +08:00
bfredl
12c62ddea6 Merge pull request #19071 from bfredl/minimap
perf(map): some optimizations when setting mappings
2022-06-24 16:20:13 +02:00
Christian Clason
823d9e0af1 vim-patch:a57b553b4328 (#19076)
Update runtime files
a57b553b43
2022-06-24 14:45:07 +02:00
bfredl
777faa29b3 refactor(map): statically initialize maphash array 2022-06-24 14:40:27 +02:00
bfredl
f3ee62a743 refactor(map): simplify free_all_mem handling 2022-06-24 14:40:09 +02:00
bfredl
a8ecc1ae6d perf(map): avoid extraneous heap allocations when setting mappings
- 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!
2022-06-24 13:53:42 +02:00
bfredl
614fd3a883 perf(map): visit only one hash bucket instead of all, like an actual hash table 2022-06-24 12:56:24 +02:00
zeertzjq
3a4fa22bad Merge pull request #19072 from zeertzjq/vim-8.2.4628
vim-patch:8.2.{4628,4895,4977,5146,5154}
2022-06-24 09:04:56 +08:00
zeertzjq
affeb5c6dd vim-patch:8.2.5146: memory leak when substitute expression nests
Problem:    Memory leak when substitute expression nests.
Solution:   Use an array of expression results.
44ddf19ec0

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.
abd56da30b
2022-06-24 07:26:06 +08:00
zeertzjq
589f418fce vim-patch:8.2.4977: memory access error when substitute expression changes window
Problem:    Memory access error when substitute expression changes window.
Solution:   Disallow changing window in substitute expression.
e2bd8600b8

"textwinlock" was renamed back to "textlock" in patch 8.2.5029.
2022-06-24 07:26:06 +08:00
zeertzjq
0cf0be302b vim-patch:8.2.4895: buffer overflow with invalid command with composing chars
Problem:    Buffer overflow with invalid command with composing chars.
Solution:   Check that the whole character fits in the buffer.
d88934406c
2022-06-24 07:26:06 +08:00
zeertzjq
764dc7c383 vim-patch:8.2.4628: not enough testing for 2/3 letter substitute commands
Problem:    Not enough testing for 2/3 letter substitute commands.
Solution:   Add more tests. (Yegappan Lakshmanan, closes vim/vim#10019)
5e877baf87
2022-06-24 07:26:06 +08:00
Justin M. Keyes
a9cb0b8a5a fix(tests): remove misleading $TEST_PATH segment #19050
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.
2022-06-23 16:15:55 -07:00
Christian Clason
c00a3f45d4 vim-patch:8cc5b559f700 (#19066)
Update runtime files
8cc5b559f7
2022-06-23 15:57:51 +02:00
zeertzjq
3c85fd817e fix(api): check for inclusive buffer line index out of bounds correctly (#19056) 2022-06-23 21:38:00 +08:00
zeertzjq
7718b75846 refactor: move some mapping-related code to a separate file (#19061)
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.
b66bab381c

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)
a3f83feb63

Also cherry-pick a change for <unique> mappings from patch 8.2.0807.
Rename map_clear_mode() to do_mapclear().
2022-06-23 21:17:11 +08:00
bfredl
05ca14a881 Merge pull request #19058 from bfredl/miniopt
perf(highlight): use binary search to lookup RGB color names
2022-06-23 13:42:57 +02:00
zeertzjq
84de4d8655 vim-patch:8.2.5152: search() gets stuck with "c" and skip evaluates to true (#19064)
Problem:    search() gets stuck with "c" and skip evaluates to true.
Solution:   Reset the SEARCH_START option. (closes vim/vim#10608)
180246cfd1
2022-06-23 19:34:43 +08:00
bfredl
a3ce03bef1 Merge pull request #19020 from echasnovski/screenchar-float
fix(float): make `screen*()` functions respect floating windows
2022-06-23 12:01:27 +02:00
bfredl
9690f8c57b perf(highlight): use binary search to lookup RGB color names 2022-06-23 11:48:12 +02:00
Evgeni Chasnovski
9f28eddfab fix(float): make screen*() functions respect floating windows
Resolves #19013.
2022-06-23 10:34:02 +03:00
zeertzjq
e694e56422 vim-patch:8.2.2068: transparent syntax item uses start/end of containing 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)
b46f57e87b
2022-06-23 13:01:31 +08:00
zeertzjq
1b75094e3e Merge pull request #19054 from zeertzjq/vim-8.2.5150
vim-patch:8.2.{5150,5151}: reading beyond the end of the line
2022-06-23 07:37:54 +08:00
zeertzjq
a4d7394bc8 vim-patch:8.2.5151: reading beyond the end of the line with lisp indenting
Problem:    Reading beyond the end of the line with lisp indenting.
Solution:   Avoid going over the NUL at the end of the line.
8eba2bd291
2022-06-23 06:34:56 +08:00
zeertzjq
f088915495 vim-patch:8.2.5150: read past the end of the first line with ":0;'{"
Problem:    Read past the end of the first line with ":0;'{".
Solution:   When on line zero check the column is valid for line one.
f7c7c3fad6
2022-06-23 06:25:05 +08:00
zeertzjq
801faeaae2 fix(input): use correct grid when restoring cursor for <expr> mapping (#19047) 2022-06-23 06:04:03 +08:00
Gregory Anders
c94325288a fix(api): check error after getting win/buf handle (#19052) 2022-06-22 13:19:03 -06:00
Justin M. Keyes
b20b28249b fix(build): only pass -municode if MINGW #19049
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]
2022-06-22 07:09:19 -07:00
bfredl
dd591adf8a Merge pull request #19039 from bfredl/multicolor
perf: get rid of unnecessary allocations in highlight groups
2022-06-22 10:49:36 +02:00
zeertzjq
f17d88c47a vim-patch:8.2.5132: :mkview test doesn't test much (#19045)
Problem:    :mkview test doesn't test much.
Solution:   Save the view with the folds closed. (James McCoy, closes vim/vim#10596)
c829faa821
2022-06-22 11:08:00 +08:00
Lewis Russell
34ae896b82 refactor(option): DRY get/set option value #19038
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.
2022-06-21 19:09:50 -07:00
bfredl
04592759fa Merge pull request #19043 from dundargoc/cmake
build(cmake): use glob_wrapper instead of file(GLOB ...) in main CMakeLists
2022-06-22 00:06:35 +02:00
Dundar Goc
230cb00cc5 build(cmake): use glob_wrapper instead of file(GLOB in main CMakeLists
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.
2022-06-21 23:29:05 +02:00
Jonas Strittmatter
e3b51d5842 refactor(runtime): refactor filetype.lua (#18813)
Move some filetype detection functions to detect.lua,
sort patterns by detected filetype.
2022-06-21 11:29:52 -06:00
bfredl
8cd94e3bc0 perf(ui): remove spurious allocations from mode_style_array() 2022-06-21 18:40:35 +02:00
bfredl
a9442c532e perf(highlight): allocate permanent names in an arena for fun and cache locality 2022-06-21 18:40:35 +02:00
bfredl
1dad288432 refactor: remove atrocious HL_TABLE()[idx] syntax before I poke my eyes out 2022-06-21 18:40:35 +02:00
bfredl
ce7d18f86a refactor(highlight): get rid of syn_unadd_group()
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.
2022-06-21 18:40:35 +02:00
bfredl
374e0b6678 perf(highlight): don't allocate duplicates for color names 2022-06-21 18:40:33 +02:00
bfredl
5ad97fcc0e perf(highlight): get rid of local memory allocations for "{key}={arg}" 2022-06-21 18:09:11 +02:00
eyalk11
f479dd0bbe docs(deprecated): alternatives for $NVIM_LISTEN_ADDRESS 2022-06-21 10:25:44 +02:00
Gregory Anders
6d52a29c3b Merge pull request #18743 from gpanders/bowooptvalue
Add "buf" and "win" to nvim_get_option_value and use them in vim.bo and vim.wo
2022-06-20 17:28:37 -06:00
zeertzjq
bc6a5943de Merge pull request #19030 from zeertzjq/vim-8.2.5138
vim-patch:8.2.{5107,5138}: various small issues
2022-06-21 07:06:56 +08:00
Christian Clason
7a309311a2 vim-patch:d799daa660b8 (#19031)
Update runtime files
d799daa660
2022-06-20 18:47:30 +02:00
Gregory Anders
87a68b6a3a refactor: use nvim_{get,set}_option_value for vim.{b,w}o
`nvim_get_option_value` and `nvim_set_option_value` better handle
unsetting local options. For instance, this is currently not possible:

    vim.bo.tagfunc = nil

This does not work because 'tagfunc' is marked as "local to buffer" and
does not have a fallback global option. However, using :setlocal *does*
work as expected

    :setlocal tagfunc=

`nvim_set_option_value` behaves more like :set and :setlocal (by
design), so using these as the underlying API functions beneath vim.bo
and vim.wo makes those two tables act more like :setlocal. Note that
vim.o *already* uses `nvim_set_option_value` under the hood, so that
vim.o behaves like :set.
2022-06-20 09:16:21 -06:00
Gregory Anders
58d028f64b feat(api): add "buf" and "win" to nvim_get_option_value
These mirror their counterparts in nvim_set_option_value.
2022-06-20 09:16:21 -06:00
Zaz Brown
99ef06d846 refactor(provider): use list comprehension #19027
- list(filter(lambda x: x != "", sys.path))
+ [p for p in sys.path if p != ""]
2022-06-20 06:17:00 -07:00
bfredl
e3bfc1293e Merge pull request #18988 from bfredl/uipack
refactor(ui): encode "redraw" events without intermediate allocations
2022-06-20 15:04:40 +02:00
zeertzjq
9aaff18489 vim-patch:8.2.5138: various small issues
Problem:    Various small issues.
Solution:   Various small improvments.
8088ae95bb

N/A patches for version.c:

vim-patch:8.2.5107: some callers of rettv_list_alloc() check for not OK

Problem:    Some callers of rettv_list_alloc() check for not OK. (Christ van
            Willegen)
Solution:   Use "==" instead of "!=" when checking the return value.
93a1096fe4
2022-06-20 20:51:11 +08:00
bfredl
5d69872105 perf(ui): reduce allocation overhead when encoding "redraw" events
Note for external UIs: Nvim can now emit multiple "redraw" event batches
before a final "flush" event is received. To retain existing behavior,
clients should make sure to update visible state at an explicit "flush"
event, not just the end of a "redraw" batch of event.

* Get rid of copy_object() blizzard in the auto-generated ui_event layer
* Special case "grid_line" by encoding screen state directly to
  msgpack events with no intermediate API events.
* Get rid of the arcane notion of referring to the screen as the "shell"
* Array and Dictionary are kvec_t:s, so define them as such.
* Allow kvec_t:s, such as Arrays and Dictionaries, to be allocated with
  a predetermined size within an arena.
* Eliminate redundant capacity checking when filling such kvec_t:s
  with values.
2022-06-20 12:44:56 +02:00