aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
| * | | | | build(clint): more precise check for "defs" headers (#26236)zeertzjq2023-11-27
| | | | | |
| * | | | | build(IWYU): remove arabic_defs.h (#26235)dundargoc2023-11-27
| | | | | | | | | | | | | | | | | | A _defs header is only needed if it's included by multiple files.
| * | | | | Merge pull request #26233 from bfredl/strictcharbfredl2023-11-26
| |\ \ \ \ \ | | | | | | | | | | | | | | refactor(encoding): remove redundant vim_isprintc_strict
| | * | | | | refactor(encoding): remove redundant vim_isprintc_strictbfredl2023-11-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This function is identical to vim_isprintc when encoding=utf-8 is used As this is the only internal encoding nvim supports, it is now redundant ref #2905
| * | | | | | build(IWYU): fix headers for arabic.hdundargoc2023-11-26
| |/ / / / /
| * | | | | vim-patch:cf40409e7d17Christian Clason2023-11-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | runtime(nginx): add additional nginx keywords (vim/vim#13581) * Add support for missing keywords to the nginx syntax plugin This adds support for several keywords from - the built-in HTTP/2 module, - the built-in SSL module, - the built-in uWSGI module, - the experimental QUIC branch, - the third-party SSL CT module, - the third-party dynamic TLS records patch. Co-Author: ObserverOfTime <chronobserver@disroot.org> * Add missing http2/ http3 keywords to nginx plugin https://github.com/vim/vim/commit/cf40409e7d17ddadaa697188788753c761479ef8 Co-authored-by: Chris Aumann <me@chr4.org> Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | | | | refactor: move garray_T to garray_defs.h (#26227)zeertzjq2023-11-26
| | | | | |
| * | | | | build: sync IWYU and clint to ignore the same headers (#26228)dundargoc2023-11-26
| | | | | | | | | | | | | | | | | | Also fix headers for autocmd.c.
| * | | | | build: add check to clint to prevent non-defs header includesdundargoc2023-11-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also enable iwyu on headers, but add an ignore for each file separately. Work on https://github.com/neovim/neovim/issues/6371.
| * | | | | build(IWYU): map everything in the C99 specificationdundargoc2023-11-26
| | | | | |
| * | | | | vim-patch:9.0.2128: runtime(swig): add syntax and filetype pluginsChristian Clason2023-11-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add syntax and filetype plugins for SWIG (Simplified Wrapper Interface Generator) description files. The default syntax for .i files highlights comments in a reverse color scheme which doesn't look well. This syntax builds on vim's c++ syntax by adding highlighting for common swig directives and user defined directives. For an alternative syntax, see vimscript vim/vim#1247 (which I found after writing this). closes: vim/vim#13562 https://github.com/vim/vim/commit/2e31065a650015892179e520038bf2083a9519b6 Co-authored-by: Julien Marrec <julien.marrec@gmail.com> Co-authored-by: Matěj Cepl <mcepl@cepl.eu>
| * | | | | fix(health): malformed call to warn() #26217Itamar Lencovsky2023-11-25
| | | | | |
| * | | | | build: rework IWYU mapping filesdundargoc2023-11-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Create mapping to most of the C spec and some POSIX specific functions. This is more robust than relying files shipped with IWYU.
| * | | | | vim-patch:813a538bb3ceChristian Clason2023-11-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | runtime(tsx): add indentation plugin (fixes vim/vim#13574) (vim/vim#13576) for now, let's just use the typescript indent file. https://github.com/vim/vim/commit/813a538bb3cec2eee4bf43e16b44fe40666529ef Co-authored-by: Jōshin <mrdomino@gmail.com>
| * | | | | docs: vim.iter #26169Justin M. Keyes2023-11-25
| | | | | | | | | | | | | | | | | | | | | | | | closes #24141 closes #24746
| * | | | | Merge pull request #26203 from jamessan/swapfile-test-fixJames McCoy2023-11-25
| |\ \ \ \ \ | | | | | | | | | | | | | | fix(oldtest): always use a 64-bit int for swapfile block number
| | * | | | | fix(oldtest): always use a 64-bit int for swapfile block numberJames McCoy2023-11-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 09d4133 changed blocknr_T from long to int64_t, so pe_bnum is now always 64-bit. This was an incompatible change in the swapfile format for 32-bit systems, but there have been no complaints in the past 9 years so just adjust the test.
| * | | | | | docs: recommend testing nightly or stable for bug reportsdundargoc2023-11-25
| | | | | | |
| * | | | | | vim-patch:8.2.4685: when a swap file is found for a popup there is no dialog ↵zeertzjq2023-11-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (#26207) Problem: When a swap file is found for a popup there is no dialog and the buffer is loaded anyway. Solution: Silently load the buffer read-only. (closes vim/vim#10073) https://github.com/vim/vim/commit/188639d75c363dffaf813e8e2209f7350ad1e871 Co-authored-by: Bram Moolenaar <Bram@vim.org>
| * | | | | | fix(mouse): avoid dragging when clicking next to popupmenu (#26201)luukvbaal2023-11-25
| |/ / / / /
| * | | | | refactor(tui): remove unnecessary scheduling when suspending (#26190)zeertzjq2023-11-24
| | | | | | | | | | | | | | | | | | | | | | | | Nvim no longer calls loop_poll_events() when suspending, so it isn't necessary to schedule suspend_event.
| * | | | | fix(messages): validate msg_grid before using msg_grid_pos (#26189)zeertzjq2023-11-24
| | | | | |
| * | | | | fix(mouse): avoid dragging after click label popupmenu callback (#26187)luukvbaal2023-11-24
| | | | | |
| * | | | | docs(starting.txt): correct step number (#26185)zeertzjq2023-11-24
| | | | | |
| * | | | | vim-patch:9.0.2126: unused assignments when checking 'listchars' (#26182)zeertzjq2023-11-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Unused assignments when checking the value of 'listchars'. Solution: Loop only once when just checking the value. Add a test to check that this change doesn't cause double-free. closes: vim/vim#13559 https://github.com/vim/vim/commit/00624a2fa08d04bdded240d474e9cfdc193dbe10
| * | | | | vim-patch:9.0.2125: File info disappears when 'cmdheight' has decreased (#26180)zeertzjq2023-11-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: File info disappears immediately when 'cmdheight' has just decreased due to switching tabpage and 'shortmess' doesn't contain 'o' or 'O'. Solution: Make sure msg_row isn't smaller than cmdline_row. fixes: vim/vim#13560 closes: vim/vim#13561 https://github.com/vim/vim/commit/40ed6711bd385051021691980e8ce16375b4b510
| * | | | | fix(grid): don't draw beyond max column (#26172)zeertzjq2023-11-24
| | | | | |
| * | | | | fix: missing case in setxattr error handling (#26176)Nik Klassen2023-11-24
| | | | | | | | | | | | | | | | | | ENOTSUP case is present in vim, but doesn't appear to have included here.
| * | | | | perf: remove redundant strlen in skipwhite (#26177)ii142023-11-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | skipwhite was iterating over the input twice and scanning for the null byte character with strlen. this is redundant, because it's already covered by ascii_iswhite that accepts only space or tab character. Co-authored-by: ii14 <ii14@users.noreply.github.com>
| * | | | | fix(column): reset decor state before starting from topLuuk van Baal2023-11-23
| | | | | |
| * | | | | test: remove the pipe created by new_pipename() (#26173)zeertzjq2023-11-23
| | | | | |
| * | | | | fix(column): apply numhl signs when 'signcolumn' is "no" (#26167)luukvbaal2023-11-23
| | | | | |
| * | | | | vim-patch:8750e3cf81f1 (#26163)zeertzjq2023-11-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | runtime(netrw): Fix handling of very long filename on longlist style (vim/vim#12150) If there is a file with a very long filename (longer than g:netrw_maxfilenamelen), and if g:netrw_liststyle is set to 1, no space is inserted between the filename and the filesize and the file cannot be opened because of this. E.g.: ``` $ echo hello > 12345678901234567890123456789012 # 32 bytes: OK $ echo hello > 123456789012345678901234567890123 # 33 bytes: not OK $ echo hello > 1234567890123456789012345678901234 # 34 bytes: not OK $ echo hello > こんにちは # multibyte filename $ LC_ALL=C.UTF-8 vim . --clean --cmd "set loadplugins" --cmd "let g:netrw_liststyle=1" ``` Then, it will be shown like this: ``` " ============================================================================ " Netrw Directory Listing (netrw v171) " /cygdrive/c/work/netrw-test " Sorted by name " Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\ " Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:special " ============================================================================== ../ 0 Mon Mar 13 19:25:16 2023 ./ 0 Mon Mar 13 19:44:58 2023 12345678901234567890123456789012 6 Mon Mar 13 19:29:43 2023 12345678901234567890123456789012346 Mon Mar 13 19:32:40 2023 1234567890123456789012345678901236 Mon Mar 13 19:29:49 2023 こんにちは 6 Mon Mar 13 19:30:41 2023 ``` If the length of the filename is 32 bytes, there is a space between the filename and the filesize. However, when it is longer than 32 bytes, no space is shown. Also, you may find that the filesize of the multibyte named file is not aligned. After this patch is applied, the filelist will be shown like this: ``` " ============================================================================ " Netrw Directory Listing (netrw v171) " /cygdrive/c/work/netrw-test " Sorted by name " Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\ " Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:special " ============================================================================== ../ 0 Mon Mar 13 20:49:22 2023 ./ 0 Mon Mar 13 21:12:14 2023 1234567890123456789012345678901 10000 Mon Mar 13 20:57:55 2023 12345678901234567890123456789012 6 Mon Mar 13 19:29:43 2023 123456789012345678901234567890123 6 Mon Mar 13 19:29:49 2023 1234567890123456789012345678901234 6 Mon Mar 13 19:32:40 2023 1234567890123456789012345678901234567 10000 Mon Mar 13 21:03:23 2023 1234567890123456789012345678901234567890 10000 Mon Mar 13 21:03:36 2023 123456789012345678901234567890123456789012 10000 Mon Mar 13 21:03:59 2023 1234567890123456789012345678901234567890123 10000 Mon Mar 13 21:03:45 2023 1234567890123456789012345678901234567890123456 5 Mon Mar 13 21:08:15 2023 12345678901234567890123456789012345678901234567 10 Mon Mar 13 21:05:21 2023 こんにちは 6 Mon Mar 13 19:30:41 2023 ``` Now we have 32 + 2 + 15 = 49 characters for filename and filesize. It tries to align the filesize as much as possible. The last line that has multibyte filename is also aligned. Also fixed the issue that the file list is not shown correctly when g:netrw_sort_by is set to 'size' and g:netrw_sizestyle is set to 'h' or 'H'. https://github.com/vim/vim/commit/8750e3cf81f12132e7b4141501feba586b1ae11d Co-authored-by: K.Takata <kentkt@csc.jp>
| * | | | | Merge pull request #26162 from zeertzjq/vim-9.0.2121zeertzjq2023-11-23
| |\ \ \ \ \ | | | | | | | | | | | | | | vim-patch:8.2.2784,9.0.2121
| | * | | | | vim-patch:9.0.2121: [security]: use-after-free in ex_substitutezeertzjq2023-11-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: [security]: use-after-free in ex_substitute Solution: always allocate memory closes: vim/vim#13552 A recursive :substitute command could cause a heap-use-after free in Vim (CVE-2023-48706). The whole reproducible test is a bit tricky, I can only reproduce this reliably when no previous substitution command has been used yet (which is the reason, the test needs to run as first one in the test_substitute.vim file) and as a combination of the `:~` command together with a :s command that contains the special substitution atom `~\=` which will make use of a sub-replace special atom and calls a vim script function. There was a comment in the existing :s code, that already makes the `sub` variable allocate memory so that a recursive :s call won't be able to cause any issues here, so this was known as a potential problem already. But for the current test-case that one does not work, because the substitution does not start with `\=` but with `~\=` (and since there does not yet exist a previous substitution atom, Vim will simply increment the `sub` pointer (which then was not allocated dynamically) and later one happily use a sub-replace special expression (which could then free the `sub` var). The following commit fixes this, by making the sub var always using allocated memory, which also means we need to free the pointer whenever we leave the function. Since sub is now always an allocated variable, we also do no longer need the sub_copy variable anymore, since this one was used to indicated when sub pointed to allocated memory (and had therefore to be freed on exit) and when not. Github Security Advisory: https://github.com/vim/vim/security/advisories/GHSA-c8qm-x72m-q53q https://github.com/vim/vim/commit/26c11c56888d01e298cd8044caf860f3c26f57bb Co-authored-by: Christian Brabandt <cb@256bit.org>
| | * | | | | vim-patch:8.2.2784: Vim9: cannot use \=expr in :substitutezeertzjq2023-11-23
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Vim9: cannot use \=expr in :substitute. Solution: Compile the expression into instructions and execute them when invoked. https://github.com/vim/vim/commit/4c13721482d7786f92f5a56e43b0f5c499264b7e Vim9 script is N/A, including substitute_instr. Co-authored-by: Bram Moolenaar <Bram@vim.org>
| * | | | | Merge pull request #26105 from luukvbaal/signmergebfredl2023-11-22
| |\ \ \ \ \ | | | | | | | | | | | | | | feat(extmarks): add sign name to extmark "details" array
| | * | | | | feat(extmarks): add sign name to extmark "details" arrayLuuk van Baal2023-11-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Unable to identify legacy signs when fetching extmarks with `nvim_buf_get_extmarks()`. Solution: Add "sign_name" to the extmark detail array. Add some misc. changes as follow-up to #25724
| * | | | | | build: reorder compiler option settingdundargoc2023-11-22
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The most general conditions should come before more specific conditions. For example, `UNIX` options needs to be specified before any distro-specific options. This way distro specific options takes priority over the general case in case there's a conflict.
| * | | | | Merge pull request #26151 from bfredl/signcountbfredl2023-11-22
| |\ \ \ \ \ | | | | | | | | | | | | | | fix(decorations): fix imbalanced sign count
| | * | | | | fix(decorations): fix imbalanced sign countbfredl2023-11-22
| |/ / / / /
| * | | | | Merge pull request #25826 from bfredl/art_decobfredl2023-11-22
| |\ \ \ \ \ | | | | | | | | | | | | | | refactor(decorations): break up Decoration struct into smaller pieces
| | * | | | | refactor(decorations): break up Decoration struct into smaller piecesbfredl2023-11-22
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove the monolithic Decoration struct. Before this change, each extmark could either represent just a hl_id + priority value as a inline decoration, or it would take a pointer to this monolitic 112 byte struct which has to be allocated. This change separates the decorations into two pieces: DecorSignHighlight for signs, highlights and simple set-flag decorations (like spell, ui-watched), and DecorVirtText for virtual text and lines. The main separation here is whether they are expected to allocate more memory. Currently this is not really true as sign text has to be an allocated string, but the plan is to get rid of this eventually (it can just be an array of two schar_T:s). Further refactors are expected to improve the representation of each decoration kind individually. The goal of this particular PR is to get things started by cutting the Gordian knot which was the monolithic struct Decoration. Now, each extmark can either contain chained indicies/pointers to these kinds of objects, or it can fit a subset of DecorSignHighlight inline. The point of this change is not only to make decorations smaller in memory. In fact, the main motivation is to later allow them to grow _larger_, but on a dynamic, on demand fashion. As a simple example, it would be possible to augment highlights to take a list of multiple `hl_group`:s, which then would trivially map to a chain of multiple DecorSignHighlight entries. One small feature improvement included with this refactor itself, is that the restriction that extmarks cannot be removed inside a decoration provider has been lifted. These are instead safely lifetime extended on a "to free" list until the current iteration of screen drawing is done. NB: flags is a mess. but DecorLevel is useless, this slightly less so
| * | | | | vim-patch:9.0.2117: [security] use-after-free in qf_free_items (#26148)zeertzjq2023-11-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: [security] use-after-free in qf_free_items Solution: only access qfpnext, if it hasn't been freed Coverity discovered a possible use-after-free in qf_free_items. When freeing the qfline items, we may access freed memory, when qfp == qfpnext. So only access qfpnext, when it hasn't been freed. https://github.com/vim/vim/commit/567cae2630a51efddc07eacff3b38a295e1f5671 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | | | | vim-patch:cb0c113ddc01 (#26147)zeertzjq2023-11-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | runtime(netrw): expand $COMSPEC without applying 'wildignore' (vim/vim#13542) When expanding $COMSPEC and a user has set :set wildignore=*.exe netrw won't be able to properly cmd.exe, because it does not ignore the wildignore setting. So let's explicitly use expand() without applying the 'wildignore' and 'suffixes' settings to the result closes: vim/vim#13426 https://github.com/vim/vim/commit/cb0c113ddc0101b05a27c040774cb7106fc74cd4 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | | | | vim-patch:596a9f29c83a (#26146)zeertzjq2023-11-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | runtime(doc): Fix whitespace and formatting of some help files (vim/vim#13549) https://github.com/vim/vim/commit/596a9f29c83af85ace1a2702c88591851ad14df8 N/A patch: vim-patch:aabca259fa48 Co-authored-by: h_east <h.east.727@gmail.com>
| * | | | | fix(messages): :map output with ext_messages (#26126)Bara C. Tudor2023-11-22
| | | | | |
| * | | | | refactor: remove __clang_analyzer__ macrodundargoc2023-11-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is less intrusive to silence the warning with a comment instead of a macro if needed.
| * | | | | build: suppress bugprone-reserved-identifier warningsdundargoc2023-11-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These are only used when running `make lintc` with ENABLE_ASAN_UBSAN enabled, which is why it wasn't caught by CI.
| * | | | | build: reorganize cmake filesdundargoc2023-11-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also add _GNU_SOURCE compiler definition for all non MSVC compilers. Closes https://github.com/neovim/neovim/issues/26087.