Compare commits

..

1197 Commits

Author SHA1 Message Date
zeertzjq
deb2204bff patch 9.1.0186: cursor pos wrong on mouse click after eol with 'rl', 've' and conceal
Problem:  Wrong cursor position when clicking after end of line with
          'rightleft', 'virtualedit' and conceal.
Solution: Set values in ScreenCols[] also with SLF_RIGHTLEFT.  Also fix
          off-by-one cursor position with 'colorcolumn' (zeertzjq).

closes: #14218

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-17 19:44:30 +01:00
zeertzjq
f6272551bd patch 9.1.0185: 'wincolor' hl missing with 'rightleft', "below" virttext, 'nowrap'
Problem:  'wincolor' highlight missing with 'rightleft', "below" virtual
          text and 'nowrap'.
Solution: Handle 'rightleft' in draw_screen_line() (zeertzjq).

closes: #14216

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-17 10:01:47 +01:00
RestorerZ
8291e91c6b runtime(indent-test): MS-Windows: Add Makefile for running indent tests
A few more unrelated changes:
- fix Vim script style of indent test
- Change comments to complete sentences in Filelist

closes: #14198
2024-03-16 15:13:21 +01:00
zeertzjq
d0c1b7723f patch 9.1.0184: Cursor pos wrong when clicking with conceal and wrap
Problem:  Cursor position wrong when clicking with conceal and wrap.
Solution: Use the virtual column of the last char for ScreenCols[] in
          boguscols.  Remove use of MAXCOL in ScreenCols[].  Rename
          third argument of wlv_screen_line() to "clear_end" as that's
          clearer what it does (zeertzjq).

related: 14192
closes: #14200

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-16 15:03:33 +01:00
zeertzjq
9e7f1fc2f1 patch 9.1.0183: Wrong display or screenpos() result when toggling diff mode
Problem:  Wrong display or screenpos() result when toggling diff mode.
Solution: Reset w_skipcol when disabling 'wrap'.  Reset w_leftcol when
          enabling 'wrap' (zeertzjq).

fixes: #14210
closes: #14211

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-16 09:40:22 +01:00
zeertzjq
6a04bf5ee5 patch 9.1.0182: Can define function with invalid name inside 'formatexpr'
Problem:  Can define function with invalid name inside 'formatexpr'.
Solution: Use goto instead of checking for did_emsg later.
          (zeertzjq)

closes: #14209

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-16 09:39:06 +01:00
Restorer
20eaf8b78d tools/rename.bat uses 'mv' and "move" (#14201)
refactor tools/rename.bat and support both "mv" for Linux build environments
and "move" for Windows build environments

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-16 09:38:10 +01:00
zeertzjq
989faa4fce runtime(doc): make :h tag-! more consistent (#14208)
- Use "on" and "off" for 'winfixbuf' option values.
- Retab the table.

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-16 09:21:20 +01:00
dkearns
b4b3d7de24 runtime(vim): Update base-syntax, revert last change to vimUserFunc (#14202)
Fix highlighting of ":echo (expr)" (broken in commit 61887b3) by
re-enabling the original fix for #9987.

Addresses https://github.com/vim/vim/pull/14199#issuecomment-1999732062.

This will be fixed more generally when there is context-sensitive
matching for commands and functions.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-15 18:53:53 +01:00
dkearns
61887b3d6f runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Improve :echo and :execute highlighting.

- Add better line-continuation support for both commands.
- Improve the :execute command's expression argument matching.
- Remove the fix for issue #9987 as this is now handled by correctly
  matching the parens in :echo (...) as operator parens.


Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-15 12:45:48 +00:00
Christ van Willegen
c35fc03dbd patch 9.1.0181: no overflow check for string formatting
Problem:  no overflow check for string formatting
Solution: Check message formatting function for overflow.
          (Chris van Willegen)

closes: #13799

Signed-off-by: Christ van Willegen <cvwillegen@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-14 18:58:04 +01:00
zeertzjq
010e1539d6 patch 9.1.0180: Cursor pos wrong when double-width chars are concealed
Problem:  Cursor pos wrong when double-width chars are concealed.
Solution: Advance one more virtual column for a double-width char.
          Run some tests with both 'wrap' and 'nowrap' (zeertzjq).

closes: #14197

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-14 18:22:17 +01:00
zeertzjq
9352c28292 patch 9.1.0179: 'wincolor' highlight missing with "below" virtual text
Problem:  'wincolor' highlight missing with "below" virtual text.
Solution: Subtract n_attr_skip from n_attr.  Combine 'wincolor' with
          other highlights when 'nowrap' is set. (zeertzjq)

closes: #14196

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-14 18:16:56 +01:00
Christian Brabandt
45da32964d runtime(mswin): still another clipboard_working test
Commit 760f664213 missed to revert back
another test for `if has('clipboard_working')`

So change the remaining check around the inoremap <c-v> mappings.

fixes #14195

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-14 07:59:09 +01:00
Christian Brabandt
0a32b8854b patch 9.1.0178: E1513 might be confusing
Problem:  E1513 might be confusing
          (Christoph Thoma)
Solution: reword error message, fix test to not
          depend on the actual message

fixes: #14189

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-13 20:59:27 +01:00
zeertzjq
8c55d60658 patch 9.1.0177: Coverity reports dead code
Problem:  Coverity reports dead code.
Solution: Remove the dead code. Also fix a mistake in ml_get_pos_len()
          and update some comments (zeertzjq).

closes: #14189

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-13 20:42:26 +01:00
zeertzjq
253ff4dece patch 9.1.0176: Cursor column wrong with 'virtualedit' and conceal
Problem:  Cursor column wrong with 'virtualedit' and conceal.
Solution: Correct cursor column at end of line if never reached.
          (zeertzjq)

closes: #14190

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-13 20:38:26 +01:00
Sean Dewar
5866bc3a0f patch 9.1.0175: wrong window positions with 'winfix{width,height}'
Problem:  winframe functions incorrectly recompute window positions if
          the altframe wasn't adjacent to the closed frame, which is
          possible if adjacent windows had 'winfix{width,height}' set.

Solution: recompute for windows within the parent of the altframe and
          closed frame. Skip this (as before) if the altframe was
          top/left, but only if adjacent to the closed frame, as
          positions won't change in that case. Also correct the return
          value documentation for win_screenpos. (Sean Dewar)

The issue revealed itself after removing the win_comp_pos call below
winframe_restore in win_splitmove. Similarly, wrong positions could result from
windows closed in other tabpages, as win_free_mem uses winframe_remove (at least
until it is entered later, where enter_tabpage calls win_comp_pos).

NOTE: As win_comp_pos handles only curtab, it's possible via other means for
positions in non-current tabpages to be wrong (e.g: after changing 'laststatus',
'showtabline', etc.). Given enter_tabpage recomputes it, maybe it's intentional
as an optimization? Should probably be documented in win_screenpos then, but I
won't address that here.

closes: #14191

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-13 20:17:24 +01:00
zeertzjq
21b0a3df8c patch 9.1.0174: 'cursorline' and 'wincolor' hl missing with conceal and wrap
Problem:  'cursorline' and 'wincolor' highlight missing with concealed and
          wrapped lines.
Solution: Apply 'cursorline' and 'wincolor' highlight to boguscols.
          (zeertzjq)

Since 'cursorline' and 'wincolor' highlight apply after the end of the
line, it is more consistent to have them also apply to boguscols.

Assigning MAXCOL to values in ScreenCols[] make mouse click behave the
same with 'cursorline' and 'nocursorline', but such behavior may be
incorrect, as it puts the cursor on the next screen line.  That may be
fixed in a future PR.

closes: #14192

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-13 20:09:02 +01:00
Christian Brabandt
760f664213 runtime(mswin): revert back the check for clipboard_working support
Commit d9ebd46bd0 changed the condition to
check if the clipboard is available from:
```
has('clipboard')
```
to
```
has('clipboard_working')
```
Assuming that is the more accurate test because even when clipboard
support is enabled at compile time it may not be actually working (e.g.
if no X11 environment is available, or when working on a remote server).

However it seems that condition does not evaluate to true, when the GUI
has not been started up yet (and there was no X11 Connection yet possible).

So let's just revert back the check to `has('clipboard')`, since that
has been proven to be working well enough.

related: #13809

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-13 16:38:16 +01:00
RestorerZ
e498cafe74 patch 9.1.0173: msgfmt ver. 0.22 forcibly converts text to UTF-8
Problem:  msgfmt ver. 0.22 forcibly converts text to UTF-8
Solution: use '--no-convert' if msgfmt supports it. Add a configure
          check for the msgfmt version (RestorerZ).

closes: #14163

Co-authored-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-12 22:14:39 +01:00
Christian Brabandt
9a660d2883 runtime(doc): add reference to matchbufline() at :h search()
related: #14173

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-12 22:03:45 +01:00
zeertzjq
94b7c3233e patch 9.1.0172: More code can use ml_get_buf_len() instead of STRLEN()
Problem:  More code can use ml_get_buf_len() instead of STRLEN().
Solution: Change more STRLEN() calls to ml_get_buf_len().  Also do not
          set ml_line_textlen in ml_replace_len() if "has_props" is set,
          because "len_arg" also includes the size of text properties in
          that case. (zeertzjq)

closes: #14183

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-12 21:50:32 +01:00
Sean Dewar
5cac1a9bee patch 9.1.0171: Small split-move related improvements
Problem:  small improvements can be made to split-move related
          functions.
Solution: apply them (Sean Dewar):

- Improve some doc comments (frame_flatten should still work for non-current
  tabpages, despite the topframe check, which looks benign, though I'm unsure if
  it's still needed; see #2467).

- f_win_splitmove should check_split_disallowed on wp, not targetwin, as that's
  what win_splitmove checks (though it's probably unnecessary to check
  b_locked_split at all; see #14109, which I hope to get around to finishing at
  some point).

- Make winframe_restore restore window positions for the altframe, which
  winframe_remove changes. This doesn't affect the prior behaviour, as we called
  win_comp_pos after, but as win_comp_pos only works for curtab, and
  winframe_remove supports non-current tabpages, we should undo it. Regardless,
  this should mean we don't need win_comp_pos anymore; adjust tests to check
  that window positions remain unchanged.

  I'm not sure win_comp_pos is needed after last_status anyway if it doesn't
  steal rows from another frame to make room for a new statusline, which
  shouldn't be the case after winframe_remove? To be safe, I'll leave it as is.

closes: #14185

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-12 21:11:39 +01:00
Sean Dewar
d64801e913 patch 9.1.0170: Re-allow curwin == prevwin, but document it instead
Problem:  more places exist where curwin == prevwin, and it may even be
          expected in some cases.
Solution: revert v9.1.0001, but document that it's possible instead.
          (Sean Dewar)

I've had a change of heart for the following reasons:

- A quick 'n dirty [GitHub code
  search](https://github.com/search?q=%2F%28winnr%5C%28%5C%29%5Cs*%3D%3D%5Cs*winnr%5C%28%5B%27%22%5D%23%5B%27%22%5D%5C%29%7Cwinnr%5C%28%5B%27%22%5D%23%5B%27%22%5D%5C%29%5Cs*%3D%3D%5Cs*winnr%5C%28%5C%29%29%2F&type=code)
  reveals some cases where it's expected in the wild.

  Particularly, it made me aware `winnr() == winnr('#')` is possible when curwin
  is changed temporarily during the evaluation of a &statusline expression item
  (`%{...}`), and is used to show something different on the statusline
  belonging to the previous window; that behaviour wasn't changed in v9.1.0001,
  but it means curwin == prevwin makes sense in some cases.

- The definition and call sites of back_to_prevwin imply some expectation that
  prevwin == wp (== curwin) is possible, as it's used to skip entering the
  prevwin in that case.

- Prior to v9.1.0001, `:wincmd p` would not beep in the case that was patched in
  v9.1.0001, but now does. That resulted in #14047 being opened, as it affected
  the CtrlP plugin.

  I find it odd that `:wincmd p` had cases where it wouldn't beep despite doing
  nothing, but it may be preferable to keep things that way (or instead also
  beep if curwin == prevwin, if that's preferred).

- After more digging, I found cases in win_free_mem, enter_tabpage,
  aucmd_restbuf and qf_open_new_cwindow where curwin == prevwin is possible
  (many of them from autocommands). Others probably exist too, especially in
  places where curwin is changed temporarily.

fixes: #14047
closes: #14186

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-12 20:50:27 +01:00
Sean Dewar
e101028a5c patch 9.1.0169: current window number returned by tabpagewinnr may be outdated
Problem:  current window number returned by tabpagewinnr may be outdated
          when called from win_execute for the original tabpage.
Solution: update the original tabpage's tp_curwin in switch_win; use
          {un}use_tabpage instead. Don't do it in restore_win to ensure
          tp_curwin of the temporarily visited tabpage is unchanged from
          switch_win visiting it, as before. (Sean Dewar)

Maybe restore_win should only restore tp_curwin if
`curtab == switchwin->sw_curtab`, in case the user changed tabpages from within
win_execute, but not doing that is consistent with the old behaviour.

related: #14186

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-12 20:42:25 +01:00
John Marriott
bfcc895482 patch 9.1.0168: too many STRLEN() calls
Problem:  too many STRLEN() calls
Solution: Make use of ml_get_len() calls instead
          (John Marriott)

closes: #14123

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-11 22:04:45 +01:00
dkearns
5cd86c6cff runtime(vim): Update base-syntax, improve number matching (#14175)
- Limit blob literals to an even number of hexadecimal digits and
  correctly located dots.
- Match octal numbers.

The current version unsuccessfully attempts to match a leading '-' as
part of the float literal.  It's actually parsed as part of the literal
for all numbers but the syntax file hasn't matched it like that for a
long time and highlights negative numbers as UNARY-MINUS NUMBER.  This
will be fixed when better expression matching is implemented.


Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-11 21:40:58 +01:00
zeertzjq
49ffb6b428 patch 9.1.0167: Changing buffer in another window causes it to show matchparen
Problem:  Changing buffer in another window using win_execute() causes
          it to show matchparen (after 9.0.0969).
Solution: Delay highlighting with SafeState in BufWinEnter.
          (zeertzjq)

closes: #14177

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-11 21:38:58 +01:00
zeertzjq
5406eb8722 patch 9.1.0166: Internal error with blockwise getregion() in another buffer
Problem:  Internal error with blockwise getregion() in another buffer
Solution: Also change curwin->w_buffer when changing curbuf (zeertzjq)

closes: #14179

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-11 21:36:42 +01:00
Rimas Kudelis
cb942cc4ca translation(lt): Update Lithuanian translation of Vim tutor to v.1.7 (#14176)
Signed-off-by: Rimas Kudelis <rimas@kudelis.lt>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-11 15:15:04 +00:00
zeertzjq
0049a495c8 runtime(doc): improve 'winfixbuf' docs (#14180)
- Make it not sound like a buffer option.
- "!" is called a modifier, not an option.

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-11 15:13:16 +00:00
Christian Brabandt
675cbfb47f runtime(doc): Update Markdown syntax, add missing configs
fixes: #14168

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-10 19:34:32 +01:00
Yegappan Lakshmanan
fa63008727 patch 9.1.0165: Vim9: Importing an autoload imported script fails
Problem:  Vim9: Importing an autoload imported script fails
          (Song-Tianxiang)
Solution: Return the script ID in this case
          (Yegappan Lakshmanan)

fixes: #14171
closes: #14174

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-10 19:22:38 +01:00
zeertzjq
26dd09ad5e patch 9.1.0164: Internal error when passing invalid position to getregion()
Problem:  Internal error or crash when passing invalid position to
          getregion().
Solution: Give an error for invalid position (zeertzjq).

closes: #14172

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-10 15:46:58 +01:00
zeertzjq
82e079df81 patch 9.1.0163: Calling STRLEN() to compute ml_line_textlen when not needed
Problem:  Calling STRLEN() to compute ml_line_textlen when not needed.
Solution: Use 0 when STRLEN() will be required and call STRLEN() later.
          (zeertzjq)

closes: #14155

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-10 08:55:42 +01:00
Paul R. Tagliamonte
14759ded57 patch 9.1.0162: problem with writing extended attributes on failure
Problem:  problem with writing extended attributes on failure
Solution: Change return type to ssize_t and check listxattr's return
          value correctly on failure (Paul Tagliamonte)

The existing logic will return when the listxattr call returns with the
errno set to ENOTSUP (or a size of 0 bytes), without checking to see if
listxattr actually failed. listxattr can fail with at least E2BIG,
ENOTSUP, ERANGE, or anything that `stat(2)` can fail with (in my case;
ENOENT from stat).

The returned size is stored to a size_t, but the return type is a
ssize_t. On failure, listxattr returns -1, which will get translated to
size_t's MAX. If the listxattr call failed with anything other than
ENOTSUP, this triggers a request for size_t MAX bytes.

This means that, if the listxattr call fails with anything other than
ENOTSUP on save, vim will error with

`E342: Out of memory!  (allocating 18446744073709551615 bytes)`

(keen observers will note 18446744073709551615 is 0xffffffffffffffff)

In reality, this is likely masking a different (usually filesystem?)
error -- but at least it's an error being pushed to the user now, and we
don't try to allocate size_t MAX bytes.

I've opted to change the type that we store listxattr to from size_t to
ssize_t, to match listxattr(2)'s signature, and to check for the -1
return value. Additionally, I've removed the errno check -- if we get a
listxattr failure for any reason, we may as well bail without trying;
it's not like we can even recover.

closes: #14169

Signed-off-by: Paul Tagliamonte <paultag@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-10 08:53:33 +01:00
Rimas Kudelis
ca0e0d2708 translation(lt): Added Lithuanian translation of Tutor v. 1.4 by Laurynas Stančikas (#14118)
This translation has been available for free download from lietuvybe.org,
then lietuvybe.akl.lt, then lietuvybė.lt since at least 2006[1], but noone
ever bothered to contribute it upstream.

[1] https://web.archive.org/web/20060222162117/http://lietuvybe.org/files/vim-tutor-lt.txt

Co-authored-by: Laurynas Stančikas <lasas@gim.ktu.lt>
Signed-off-by: 	Rimas Kudelis <rimas@kudelis.lt>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-09 18:27:46 +01:00
Aliaksei Budavei
a2c65809da runtime(java): Recognise string templates (#14150)
As this is encouraged in the referenced JEPs, "to visually
distinguish a string template from a string literal, and
a text block template from a text block", the default
colours for java\%[Debug]StrTempl are made distinct from
java\%[Debug]String.

According to §3.2 Lexical Translations (JLS, c. 1996 or any
more recent version), line terminators, white space, and
comments are discarded before tokens are accepted. Since
a template expression comprises a template processor, a dot,
and a template, it may be visually appealing to break up
its head across a few lines whenever its tail already spans
multiple lines.  Curiously, no allowance for it is made in
the distributed tests for OpenJDK 21; the proposed regexp
patterns take in consideration a line terminator and white
space after a dot.

References:
https://openjdk.org/jeps/430 (Preview)
https://openjdk.org/jeps/459 (Second Preview)
https://openjdk.org/jeps/465

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-09 18:03:11 +01:00
dkearns
5d67aef306 runtime(vim): Update base-syntax, improve :map highlighting (#14141)
Improve :map command highlighting.

- Fix multiline RHS matching, allow continued lines and comments.
- Allow ^V-escaped whitespace in LHS.
- Handle map-bar properly and allow trailing commands.

Fixes issue #12672.


Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-09 18:01:22 +01:00
zeertzjq
13a014452a patch 9.1.0161: expand() removes slash after env variable that ends with colon
Problem:  expand() removes a slash after an environment variable that
          ends with a colon on Windows.
Solution: Check the correct char for a colon (zeertzjq)

closes: #14161

Note: Vim still removes the path-separator at the end, if another path separator
follows directly after it, e.g. on:

```
    echo $FOO='/usr/'
    echo expand('$FOO/bar') == '/usr/bar'
```

see:

,----[ misc1.c:1630 ]
|   // if var[] ends in a path separator and tail[] starts
|   // with it, skip a character
|   if (after_pathsep(dst, dst + c)
| #if defined(BACKSLASH_IN_FILENAME) || defined(AMIGA)
| 	  && (dst == save_dst || dst[-1] != ':')
| #endif
| 	  && vim_ispathsep(*tail))
|       ++tail;
`----

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-09 17:44:46 +01:00
dkearns
62b26040eb runtime(vim): Update base-syntax, improve :menu{,translate} highlighting (#14162)
Improve :menu and :menutranslate highlighting.

- Match args to :menutranslation and :popup.
- Only highlight special notation in {rhs} of :menu, like :map.
- Allow line continuations in {rhs} of :menu and between {english} and
  {mylang} of :menutranslation, matching common usage.
- Bug fixes.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-09 17:43:28 +01:00
Yegappan Lakshmanan
35b867b685 patch 9.1.0160: Vim9: Add support for using a class type of itself in an object method
Problem:  Add support for using a class type of itself in an object
          method (thinca)
Solution: Vim9: Add support for using a class type of itself in an
          object method (Yegappan Lakshmanan)

fixes: #12369
closes: #14165

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-09 15:44:19 +01:00
zeertzjq
b2ec0da080 patch 9.1.0159: Crash in WinClosed after BufUnload closes other windows
Problem:  Crash in WinClosed after BufUnload closes other windows
Solution: Don't trigger WinClosed if the buffer is NULL (zeertzjq)

Now win_close_othertab() doesn't trigger any autocommands if the buffer
is NULL, so remove the autocmd blocking above (which was added not long
ago in patch v9.0.0550) for consistency.

Also remove an unreachable close_last_window_tabpage() above:
- It is only reached if only_one_window() returns TRUE and last_window()
  returns FALSE.
- If only_one_window() returns TRUE, there is only one tabpage.
- If there is only one tabpage and last_window() returns FALSE, the
  one_window() in last_window() must return FALSE, and the ONE_WINDOW
  in close_last_window_tabpage() must also be FALSE.
- So close_last_window_tabpage() doesn't do anything and returns FALSE.

Then the curtab != prev_curtab check also doesn't make much sense, and
the only_one_window() can be replaced with a check for popup and a call
to last_window() since this is a stricter check than only_one_window().

closes: #14166

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-09 15:39:27 +01:00
zeertzjq
8a01744c56 patch 9.1.0158: 'shortmess' "F" flag doesn't work properly with 'autoread'
Problem:  'shortmess' "F" flag doesn't work properly with 'autoread'
          (after 9.1.0154)
Solution: Hide the file info message instead of the warning dialog
          (zeertzjq)

closes: #14159
closes: #14158

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-07 21:48:33 +01:00
zeertzjq
0df8f93bda patch 9.1.0157: Duplicate assignment in f_getregion()
Problem:  Duplicate assignment in f_getregion().
Solution: Remove the duplicate assignment.  Also improve getregion()
          docs wording and fix an unrelated typo (zeertzjq)

closes: #14154

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-07 21:43:21 +01:00
Sean Dewar
769eb2d0c3 patch 9.1.0156: Make 'wfb' failing to split still report E1513
Problem:  may not be clear why failing to split causes an ":Xdo" command
          to abort if 'wfb' is set.
Solution: do not return immediately if win_split fails, so E1513 is
          still given. Expect both errors in the test. Also fix tests to
          pass CI.
          (Sean Dewar)

closes: #14152

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-07 21:38:21 +01:00
Aliaksei Budavei
64de03a22b runtime(syntax-tests): remove executable bit from sh test file
related: #14138

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-07 21:33:51 +01:00
Shougo Matsushita
84bf6e658d patch 9.1.0155: can only get getregion() from current buffer
Problem:  can only call getregion() for current buffer
Solution: Allow to retrieve selections from different buffers
          (Shougo Matsushita)

closes: #14131

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-06 21:39:35 +01:00
Shougo Matsushita
9db39b0ec9 patch 9.1.0154: shm=F not respected when reloading buffer with 'autoread'
Problem:  shm=F not respected when reloading buffer with 'autoread'
Solution: Check SHM_FILEINFO in buf_check_timestamp()
          (Shougo Matsushita)

closes: #14144

Signed-off-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-06 20:58:41 +01:00
zeertzjq
7ac1145fbe patch 9.1.0153: Text properties corrupted with fo+=aw and backspace
Problem:  Text properties corrupted with fo+=aw and backspace
Solution: Allocate line and move text properties
          (zeertzjq)

closes: #14147

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-06 20:54:22 +01:00
Christos Longros
c62dacb7ed translation(gr): add translation of the installer (#14148)
Add greek translation of the installer

Signed-off-by: Christos Longros <98426896+chrislongros@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-06 20:53:02 +01:00
Antonio Giovanni Colombo
e3f2ef0eec translation(it): Update Italian translation for winfixbuf
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-06 20:44:10 +01:00
Christian Brabandt
af7ae81600 patch 9.1.0152: Coverity complains about ignoring return value
Problem:  Coverity complains about ignoring return value of win_split()
          (after v9.1.150)
Solution: Check if win_split() failed, add winfixbuf.res to Makefile
2024-03-06 20:43:05 +01:00
Christian Brabandt
a72d1be5a9 patch 9.1.0151: ml_get_buf_len() does not consider text properties
Problem:  ml_get_buf_len() does not consider text properties
          (zeertzj)
Solution: Store text length excluding text properties length
          in addition in the memline

related #14123
closes: #14133

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-05 20:43:25 +01:00
Sean Dewar
4bb505e28c patch 9.1.0150: Several minor 'winfixbuf' issues
Problem:  several minor 'winfixbuf' issues exist, mostly relating to the
          quickfix list
Solution: address them and adjust tests. Retab and reflow a few things too.
          (Sean Dewar)

Things touched include:

- Replace the semsgs with gettext'd emsgs.

- Handle window switching in ex_listdo properly, so curbuf and curwin
  are kept in-sync and trigger autocommands; handle those properly.

- Don't change the list entry index in qf_jump_edit_buffer if we fail
  due to 'wfb' (achieved by returning FAIL; QF_ABORT should only be used
  if the list was changed).

- Make qf_jump_edit_buffer actually switch to prevwin when using `:cXX`
  commands **outside** of the list window if 'wfb' is set in curwin.
  Handle autocommands properly in case they mess with the list.

  NOTE: previously, it seemed to split if 'wfb' was set, but do nothing
  and fail if prevwin is *valid*. This behaviour seemed strange, and maybe
  unintentional? Now it aligns more with what's described for the `:cXX`
  commands in the original PR description when used outside a list window,
  I think.

- In both functions, only consider prevwin if 'wfb' isn't set for it;
  fallback to splitting otherwise.

- Use win_split to split. Not sure if there was a specific reason for
  using ex_splitview. win_split is simpler and respects modifiers like
  :vertical that may have been used. Plus, its return value can be checked
  for setting opened_window in qf code (technically win_split_ins autocmds
  could immediately close it or change windows, in which the qf code might
  close some other window on failure; it's already the case elsewhere,
  though).

closes: #14142

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-05 20:39:07 +01:00
Ivan Pešić
e1051924c7 translation(sr): Update Serbian messages (#14143)
* translation(sr): Update Serbian messages
* Update serbian.nsi
* Update gvim.nsi

Add serbian language to the installer

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-05 20:34:00 +01:00
Wu Yongwei
63c39e4ef7 runtime(c): Recognize "__inline" (#14145)
`__inline` is recognized by GCC, and may even be preferred, as MSVC does
not recognize `__inline__`.

Signed-off-by: Wu Yongwei <wuyongwei@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-05 20:27:27 +01:00
dkearns
e5c9ba6015 runtime(vim): Update base-syntax, fix escaping :syn and :hi sub-groups (#14137)
* runtime(vim): Update base-syntax, fix escaping :syn and :hi sub-groups

- Remove contained :syntax and :highlight sub-groups from the function
  body cluster.  These should only match in the respective commands.
- Remove vimSynLine syntax group from several clusters.  The definition
  of vimSynLine was removed in Vim 5.3.

* runtime(vim): Update syntax generator, use standard Last Change date format

The de facto standard date format is YYYY MMM DD.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-04 19:15:42 +01:00
dkearns
1bdc9435c1 runtime(sh): Update syntax file, fix issue #962 (#14138)
Allow the opening parenthesis of a multiline array assignment, within an
if statement, to appear at EOL.

Fixes issue #962.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-04 19:14:08 +01:00
Sean Dewar
5131f224da patch 9.1.0149: null pointer member access when accessing 'winfixbuf' property
Problem:  qf_goto_win_with_qfl_file may check if prevwin has 'winfixbuf'
          set without checking if it's valid first.
Solution: Reverse the condition. Add a test, a modeline, and a missing
          CheckFeature. (Searn Dewar)

closes: #14140

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-04 19:09:26 +01:00
Jay Sitter
e84490311b runtime(css): update syntax script
Signed-off-by: Jay Sitter <jay@jaysitter.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-04 16:19:48 +01:00
dkearns
691aee8b07 runtime(vim): Update base-syntax, fix issue #14135 (#14136)
Fix incorrect error highlighting for function calls in :command
definitions.  vimFunctionError should be restricted to :function header
lines.

fixes: #14135

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-03 19:02:47 +01:00
Christian Brabandt
58f1e5c089 runtime(doc): Highlight the error message at *E1513*
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-03 16:47:47 +01:00
dkearns
c4aef9a97b runtime(vim): Update base-syntax, improve :augroup highlighting (#14125)
- Explicitly match the bang and group name in :aug! {name}.
- Allow any characters in a group name.
- Match default group switch marker, END.
- Match :aug without arguments (list command).

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-03 16:42:47 +01:00
Shixian Li
d9ebd46bd0 runtime(mswin): Use unnamed register when clipboard not working (#13813)
* Use unnamed register while clipboard not exist
* Do not need to specify the unnamed register explicitly
fixes: #13809

Signed-off-by: Shixian Li <lsx7@sina.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-03 16:41:46 +01:00
Yegappan Lakshmanan
d3eae7bc11 patch 9.1.0148: Vim9: can't call internal methods with objects
Problem:  Vim9: can't call internal methods with objects
Solution: Add support for empty(), len() and string() function
          calls for objects (Yegappan Lakshmanan)

closes: #14129

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-03 16:34:51 +01:00
Colin Kennedy
2157035637 patch 9.1.0147: Cannot keep a buffer focused in a window
Problem:  Cannot keep a buffer focused in a window
          (Amit Levy)
Solution: Add the 'winfixbuf' window-local option
          (Colin Kennedy)

fixes:  #6445
closes: #13903

Signed-off-by: Colin Kennedy <colinvfx@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-03 16:16:47 +01:00
Restorer
353faa373e translation(ru): Updated Russian installer translation (#14134)
* translation(ru): Updated Russian translation for NSIS
* update CODEOWNERS

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-03 15:52:37 +01:00
Aliaksei Budavei
b3030b653b runtime(java): Recognise text blocks (#14128)
Also, accept as valid the space escape sequence `\s`.

Also, consistently use the claimed `javaDebug` prefix for
syntax group definitions kept under `g:java_highlight_debug`.

Since `javaStringError` is commented out for its generality,
let's comment out `javaDebugStringError`, its copy, as well.

References:
https://openjdk.org/jeps/378
https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.10.7

Closes #10910.

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-03 15:51:01 +01:00
dkearns
e93afc2e61 runtime(r,rhelp,rmd,rnoweb,rrst): Update ftplugin, browsefilter labels (#14126)
Use the standard format for browsefilter labels:
  "File Description (*.ext1, *.ext2, *.ext3)"

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-02 19:27:47 +01:00
Aliaksei Budavei
100a665634 runtime(java): Improve the recognition of literals (#14120)
* Emend the Unicode and octal escape sequence patterns;
* Accept the (repeated) underscore separators in all
  numerical literals;
* Recognise hexadecimal floating-point literals.

(The space escape sequence '\s' will be introduced along
with text blocks in another PR.)

References:
https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.3
https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.10.1
https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.10.2
https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.10.7


Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-01 23:11:14 +01:00
zeertzjq
c27fcf4857 patch 9.1.0146: v:echospace wrong with invalid value of 'showcmdloc'
Problem:  v:echospace wrong after setting invalid value to 'showcmdloc'.
Solution: Only call comp_col() if value is valid.
          (zeertzjq)

closes: #14119

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-01 23:03:16 +01:00
zeertzjq
87410ab3f5 runtime(doc): some improvements to getregion() docs (#14122)
- Mention the default selection behavior
- Remove useless sentence
- Correct description about space padding

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-01 23:00:23 +01:00
Christian Brabandt
8fad5d5887 runtime(doc,netrw): update "Last Change header", remove trailing whitespace
Update Last-Change Header for netrw and doc/indent.txt, fix a trailing
whitespace in indent.txt and make CI happy.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-29 18:13:04 +01:00
Christian Brabandt
56b7da3c05 runtime(netrw): handle file/dir symlinks specifically in tree mode
fixes: #2386
related: #3609

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-29 17:48:14 +01:00
Sam-programs
062141b1a7 patch 9.1.0145: v:echospace not correct when 'showcmdloc' != last
Problem:  the amount of available space (v:echospace) on the command
          line is not correct when showcmdloc is drawn into the
          statusline or tabline.
Solution: only add SHOWCMD_COLS to the shown command column when
          'showcmdloc' is set to last (Sam-programs)

closes: #14108

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Sam-programs <130783534+Sam-programs@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-29 17:40:29 +01:00
Yegappan Lakshmanan
4d55c54e30 patch 9.1.0144: getregion() needs more tests
Problem:  getregion() needs more tests
Solution: Run the getregion() test in both the legacy and Vim9 contexts
          (Yegappan Lakshmanan)

closes: #14114

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-29 17:30:43 +01:00
Christian Brabandt
b4eb3f1e44 runtime(yaml): disable multiline_scalar detection by default
There have been many complaints about Yaml indenting too much, because
it considers values to be multi-line by default, which leads to
unintended indenting for (apparently most) users.

So let's hide this feature behind the new feature flag, keep it
simple and prefer single line value key pairs by default.

If you want the old behaviour, set the following value: >

  :let g:yaml_indent_multiline_scalar = 1

If not set, it will indent the same as the previous line.

closes #13845

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-29 17:28:07 +01:00
Christian Brabandt
55f8bba73b patch 9.1.0143: [security]: autocmd causes use-after-free in set_curbuf()
Problem:  [security]: autocmd cause use-after-free in set_curbuf()
          (kawarimidoll)
Solution: check side-effect of BufLeave autocommand, when the number
          of windows changed, close windows containing buffers that will
          be wiped, if curbuf changed unexpectedly make sure b_nwindows
          is decremented otherwise it cannot be wiped

set_curbuf() already makes some efforts to ensure the BufLeave
autocommands do not cause issues.  However there are still 2 issues
that are not taken care of:

1) If a BufLeave autocommand opens a new window containing the same
buffer as that is going got be closed in close_buffer() a bit later,
we suddenly have another window open, containing a free'd buffer.  So we
must check if the number of windows changed and if it does (and the
current buffer is going to be wiped (according to the 'bufhidden'
setting), let's immediately close all windows containing the current
buffer using close_windows()

2) If a BufLeave autocommand changes our current buffer (displays it in
the current window), buf->b_nwindow will be incremented. As part of
set_curbuf() we will however enter another buffer soon, which means, the
newly created curbuf will have b_nwindows still have set, even so the
buffer is no longer displayed in a window. This causes later problems,
because it will no longer be possible to wipe such a buffer. So just
before entering the final buffer, check if the curbuf changed when
calling the BufLeave autocommand and if it does (and curbuf is still
valid), decrement curbuf->b_nwindows.

Both issues can be verified using the provided test (however the second
issue only because such an impacted buffer won't be wiped, causing
futher issues in later tests).

fixes: #13839
closes: #14104

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-28 23:32:00 +01:00
Philip H
0fdd18596f CI: enable apt upgrade on github runners again to fix i386 build
This reverts commit 7f630e6f35 which
reverted 7349c5160a

Let's see how many more iterations of reverting a commit we can
achieve...

closes: #14113

Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-28 23:28:34 +01:00
Shougo Matsushita
19b718828d patch 9.1.0142: getregion() can be improved
Problem:  getregion() can be improved (after v9.1.120)
Solution: change getregion() implementation to use pos as lists and
          one optional {opt} dictionary (Shougo Matsushita)

Note: The following is a breaking change!

Currently, the getregion() function (included as of patch v9.1.120) takes
3 arguments: the first 2 arguments are strings, describing a position,
arg3 is the type string.

However, that is slightly inflexible, there is no way to specify
additional arguments. So let's instead change the function signature to:

getregion(pos1, pos2 [, {Dict}]) where both pos1 and pos2 are lists.
This is slightly cleaner, and gives us the flexibility to specify
additional arguments as key/value pairs to the optional Dict arg.

Now it supports the "type" key to specify the selection type
(characterwise, blockwise or linewise) and now in addition one can also
define the selection type, independently of what the 'selection' option
actually is.

Technically, this is a breaking change, but since the getregion()
Vimscript function is still quite new, this should be fine.

closes: #14090

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-28 22:49:03 +01:00
Christian Brabandt
d0d4adb609 runtime(Filelist): include runtime/syntax/testdir/ftplugin
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-28 21:53:26 +01:00
zeertzjq
4e141c66b9 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Problem:  Put in Visual mode wrong if it replaces fold marker.
Solution: Temporarily disable folding during put in Visual mode.
          (zeertzjq)

fixes: #14097
closes: #14100

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-28 21:49:51 +01:00
elig0n
b1289f19ef runtime(doc): Fix typo under *kitty-terminal* in term.txt
closes: #14106

Signed-off-by: elig0n <31196036+elig0n@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-28 21:46:15 +01:00
Ivan Pešić
97a35ae356 translation(sr): Update Serbian translation (#14107)
Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-28 21:41:27 +01:00
Aliaksei Budavei
9ecf02cd5f runtime(java): Recognise _when_ clauses in _switch_ blocks
Also:

- distinguish _yield_ when used as a contextual keyword from
  when used qualified as a method or a method reference (as
  can be seen in testdir/input/java_switch.java, variables
  and method declarations named _yield_ will be recognised
  as the namesake keyword--consider picking other names for
  variables, and defining g:java_highlight_functions to have
  method names painted; since _yield_ statements can have
  trailing parens, they must be recognised as statements,
  for only qualified _yield_ method calls are supported);

- recognise grouped _default_ _case_ labels;

- describe primitive types for _case_ labels (JLS, §14.11,
  §3.10.1);

- recognise some non-ASCII identifiers (see javaLambdaDef,
  javaUserLabel) (further improvement for better recognition
  of identifiers will be arranged in a separate PR).

Because the arrow '->' is used in two kinds of expressions,
lambda (abstractions) and _switch_, necessary changes were
made for the recognition of either (and further improvement
touching lambda expressions will be separately arranged).

Because 'default' is used for instance method declarations
in interfaces and in _switch_ labels, necessary changes were
made for the recognition of either (and further improvement
touching method declarations will be separately arranged).

Finally, it deemed appropriate to put 'yield' in the syntax
group of javaOperator rather than javaStatement, for its
member 'var' is also another contextual keyword (e.g., this
is valid syntax: "var var = var(test.var);").

References:
https://openjdk.org/jeps/361 (Switch Expressions)
https://openjdk.org/jeps/440 (Record Patterns)
https://openjdk.org/jeps/441 (Pattern Matching for switch)

Also, add a Java specific filetype plugin for the syntax
test, so that no soft-wrapping of long indented lines occur.

Otherwise the syntax scripts would miss a few lines during
scrolling and verification of the screen dumps.

closes: #14105

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-28 21:33:45 +01:00
Christian Brabandt
56824430c0 runtime(syntax-tests): simplify code and allow filetype options
The whole testdir/runtest.vim is a bit of a mess. So this is an attempt
to improving the current state. First of all, let's move most of the
code into a single RunTest() function so that it's easier to run this
manually.

Then, let's add the possibility to customize filetype specific tests by
applying filetype specific options. We will make use of it in the next
commit, where the provided java file uses tabs, which cause line
wrapping which will then cause the scrolling to miss some lines when
redrawing (see #14105)

related: #14105

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-28 21:24:25 +01:00
Antonio Giovanni Colombo
0c98a71236 translation(it): Update Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-27 22:41:22 +01:00
Dylan Thacker-Smith
da0c9137d1 patch 9.1.0140: cursor on wrong row after 1 char 'below' virtual text when EOL is shown
Problem:  The cursor screen row was incorrectly being calculated when the
          cursor follows a 1 character text_align 'below' virtual text line,
          resulting in the cursor being shown on the wrong line.
          This was caused by a cell size of 2 instead of 1 being used for the EOL
          character, which propagated to the calculation of space for putting the
          'below' virtual text on its own line. (rickhowe)
Solution: Fix the size used for the EOL character in calculating the
          cursor's screen position (Dylan Thacker-Smith)

fixes: #11959
related: #12028
closes: #14096

Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-27 20:25:10 +01:00
dkearns
e84d2d4432 runtime(sh): Update ftplugin, fix #14101 (#14102)
Add the 'b' flag to 'comments', so that the shebang line is not detected as comment.

Fixes #14101.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-27 20:00:32 +01:00
dkearns
b1427b46f5 runtime(vim): Update base-syntax, improve :echo highlighting (#14103)
- Normalise behaviour of :echo commands and improve expression matching.
- Allow continued argument lines.
- Refine string interpolation groups.
- Remove duplicated :menu and :map generated commands that are handled
  specially later in the file.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-27 19:59:30 +01:00
James McCoy
c7ddc9b735 runtime(debian): update Debian syntax files (#14098)
* debversions.vim: Move lunar to unsupported release
* debsources: Add word boundaries around keyword match patterns

Co-authored-by: James Addison <jay@jp-hosting.net>
Signed-off-by: James Addison <jay@jp-hosting.net>
Signed-off-by: James McCoy <jamessan@jamessan.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-27 06:34:45 +00:00
Erik S. V. Jansson
2f02638aa8 patch 9.1.0139: MS-Windows: ligatures map cleared on startup
Problem:  MS-Windows: ligatures map cleared on startup
Solution: Don't clear the ligatures_map, if the guiligatures
          option has already been set (Erik S. V. Jansson)

If guiligatures is set from a .vimrc it's possible
that it will be cleared on start-up (e.g. in Win32
that's what happens).

So don't clear the ligatures map if gui_set_ligatures()
has already been called (e.g. after setting 'ligatures'
from .vimrc)

closes: #14094

Signed-off-by: Erik S. V. Jansson <caffeineviking@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-26 22:23:05 +01:00
John Marriott
02d7a6c6cf patch 9.1.0138: too many STRLEN calls when getting a memline
Problem:  too many STRLEN calls when getting a memline
Solution: Optimize calls to STRLEN(), add a few functions in memline.c
          that return the byte length instead of relying on STRLEN()
          (John Marriott)

closes: #14052

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-26 21:25:03 +01:00
dkearns
2c51e15b66 runtime(vim): Update syntax file, improve :substitute matching (#14093)
- Differentiate between :substitute and substitute(), fixes #13883.
- Match all allowed :substitute delimiters.
- Remove leading context from :substitute matches.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-26 21:10:18 +01:00
zeertzjq
ff2b79d239 patch 9.1.0137: <Del> in cmdline mode doesn't delete composing chars
Problem:  <Del> in cmdline mode doesn't delete composing chars
Solution: Use mb_head_off() and mb_ptr2len() (zeertzjq)

closes: #14095

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-26 20:38:36 +01:00
Doug Kearns
db7622ea82 runtime(doc): Fix typo in usr_41.txt
closes: #14092

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-25 15:23:02 +01:00
zeertzjq
d086b8f646 runtime(doc): fix inconsistent indent (#14089)
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-25 08:42:52 +01:00
Yegappan Lakshmanan
a2ebb6e917 patch 9.1.0136: Vim9: need more test for exists()
methods

Problem:  Vim9: need more test for exists()
Solution: Add test for exists() with class/objct variables and methods
          (Yegappan Lakshmanan)

closes: #14088

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-25 08:40:10 +01:00
Matt Ellis
374e26aba2 runtime(doc): clarify ':set[l] {option}<' behaviour
closes: #14062

Signed-off-by: Matt Ellis <m.t.ellis@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-24 17:04:07 +01:00
zeertzjq
cd3a13e774 patch 9.1.0135: Insufficient testing for 'delcombine'
Problem:  Insufficient testing for 'delcombine'.
Solution: Add test for both Normal and Insert modes without Arabic.
          (zeertzjq)

closes: #14086

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-24 16:51:32 +01:00
Christian Brabandt
6a46c19b25 patch 9.1.0134: CI: Test_term_gettitle() is flaky on MacOS 14
Problem:  Test_term_gettitle() is flaky on MacOS 14 and Github runners
Solution: Skip the test on Github CI

closes: #14085

It fails with this: '^\\[No Name\\] - VIM\\d*$' does not match 'e] - VIM'
It is not clear why term_gettitle() only get's the last part of the
expected title (perhaps there is a Carriage return in there or the
terminal window is too small?)

So let's just skip this test for now.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-24 15:58:04 +01:00
Erik S. V. Jansson
8b1e749ca6 patch 9.1.0133: MS-Windows: ligatures not rendering correctly
Problem:  font ligatures don't render correctly in the Win32 GUI-version
          of gvim even when set rop=type:directx is used. Setting
          guiligatures also doesn't make any difference. This leads to
          broken font ligatures when the cursor passes through them. It
          does not recover from this, and they remain broken until you
          re-render the whole buffer (e.g. by using Ctrl+L).

Solution: the problem is that we only re-draw the current and previous
          character in gui_undraw_cursor() and only have the special case
          for GTK when it comes to rendering ligatures. So let's enable
          gui_adjust_undraw_cursor_for_ligatures() to also happen for
          Win32 GUI if guiligatures is setup correctly (all this does is
          expand the range of gui_undraw_cursor() with ligature characters).

related: #9181
related: #12901
closes: #14084

Signed-off-by: Erik S. V. Jansson <caffeineviking@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-24 14:26:52 +01:00
zeertzjq
048761bcd4 patch 9.1.0132: "C" doesn't include composing chars with 'virtualedit'
Problem:  using "C" and 've=all' set, doesn't include composing chars
          when changing a line, keeps the composing chars for whatever
          is typed afterwards.
Solution: Use mb_head_off() and mb_ptr2len() instead of mb_tail_off().
          (zeertzjq)

closes: #14083

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-24 14:21:39 +01:00
Christian Brabandt
0dc0bff000 patch 9.1.0131: buffer-completion may not always find all matches
Problem:  buffer-completion code too complicated and does not always
          find all matches (irisjae)
Solution: do not try to anchor pattern to beginning of line or
          directory-separator, always return all matches

Note: we are considering the non-fuzzy buffer-matching here.

Currently, the buffer-completion code makes 2 attempts to match a
pattern against the list of available patterns. First try is to match
the pattern and anchor it to either the beginning of the file name or
at a directory-separator (// or \\).

When a match is found, Vim returns the matching buffers and does not try
to find a match anywhere within a buffer name. So if you have opened two
buffers like /tmp/Foobar.c and /tmp/MyFoobar.c using `:b Foo` will only
complete to the first filename, but not the second (the same happens
with `getcompletion('Foo', 'buffer')`).

It may make sense, that completion priorities buffer names at directory
boundaries, but it inconsistent, may cause confusion why a certain
buffer name is not completed when typing `:b Foo<C-D>` which returns
only a single file name and then pressing Enter (to switch to that
buffer), Vim will error with 'E93: More than one match for Foo').
Similar things may happen when wiping the /tmp/Foobar.c pattern and
afterwards the completion starts completing other buffers.

So let's simplify the code and always match the pattern anywhere in the
buffer name, do not try to favor matches at directory boundaries. This
is also simplifies the code a bit, we do not need to run over the list
of buffers several times, but only twice.

fixes #13894
closes: #14082

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-24 14:17:33 +01:00
Sean Dewar
abf7030a5c patch 9.1.0130: [security]: UAF if win_split_ins autocommands delete "wp"
Problem:  heap-use-after-free in win_splitmove if Enter/Leave
          autocommands from win_split_ins immediately closes "wp".
Solution: check that "wp" is valid after win_split_ins.
          (Sean Dewar)

closes: #14078

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-24 10:20:24 +01:00
Dylan Thacker-Smith
f548ae7b63 patch 9.1.0129: Fix truncation of text_wrap 'wrap' virt text after EOL list char
Problem:  Virtual text with text_wrap 'wrap' was effectively being
          truncated by a break conditional on the EOL list character
          being added to the screen line. (BigPeet)
Solution: Remove the condition that was leading to the early break and
          instead fix a similar but incorrectly written outer condition
          that checks if there is more to add at the end of the screen
          line. (Dylan Thacker-Smith)

Also, related:
- update comment in win_line()
- remove no longer necessary at_end_str variable in win_line()

fixes: #12725
closes: #14079

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-24 10:17:11 +01:00
Yegappan Lakshmanan
a35235e824 runtime(doc) Update help text for matchbufline() and matchstrlist()
closes: #14080

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-24 10:09:43 +01:00
dragonish
aa31346da4 runtime(tutor): small fixes to the zh tutor (#14081)
dragonish <no.web.developer@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-24 10:08:19 +01:00
Petr Pisar
315cd1fbcb runtime(spec): Recognize SourceLicense tag name in RPM spec syntax (#14046)
rpm-4.19.0 added a new SourceLicense tag. It is used at the same place
as License tag.

This patch adds the new tag name into a Vim syntax file to be
highligted the same way as the License tag. Note that it has to be
defined in the syntax file before Source\d* regexp. Otherwise it's not
recognized by Vim.

Signed-off-by: Petr Písař <ppisar@redhat.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-22 20:39:09 +01:00
Sean Dewar
2a65e73944 patch 9.1.0128: win_gotoid() may abort even when not switching a window
Problem:  win_gotoid() checks for textlock and other things when switching
          to a window that is already current (after v9.1.0119)
Solution: return early with success when attempting to switch to curwin
          (Sean Dewar)

Other potential causes of E565 from win_gotoid after v9.1.0119 should be
correct. Plugins can consider using win_execute() instead if they wish to
temporarily switch windows during textlock.

fixes: #14073
closes: #14074

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-22 19:53:33 +01:00
zeertzjq
5e3674b42d patch 9.1.0127: Naming a non-pointer variable "oap" is strange
Problem:  Naming a non-pointer variable "oap" is strange.
Solution: Rename it to "oa". Also prevent using freed memory in case of
          memory allocation failure. (zeertzjq)

closes: #14075

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-22 19:51:34 +01:00
zeertzjq
421b597470 patch 9.1.0126: Internal error when using upper-case mark in getregion()
Problem:  Internal error when passing mark in another buffer to
          getregion().
Solution: Don't allow marks in another buffer (zeertzjq)

closes: #14076

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Internal error when passing mark in another buffer to getregion()
2024-02-22 19:48:06 +01:00
dkearns
1624970d32 runtime(vim): Update base-syntax, fix :unabbrev highlighting (#14077)
Fixes issue #7876

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-22 19:45:05 +01:00
Nick Hanley
20d61e1b94 runtime(java): add syntax support for Java switch expressions (#9124)
Signed-off-by: Nick Hanley <nicholasjhanley@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-22 15:06:19 +01:00
Dylan Thacker-Smith
83925be1e6 patch 9.1.0125: unused init of text_prop_idxs in win_line()
Problem:  unused init of text_prop_idxs in win_line
Solution: Remove it, fix typo
          (Dylan Thacker-Smith)

Later use of text_prop_idxs treats it as empty, incrementing
text_props_active as new elements are added to this array, so remove
this unused conditional initialization when text_props_active is 0.

closes: #14063

Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-21 21:03:10 +01:00
Dylan Thacker-Smith
8055721c2d patch 9.1.0124: display of below/right virtual text with non-virtual text overlap
Problem:  Virtual text with text_align 'right'/'below' wasn't being
          used when a non-virtual text property overlaps with the end of
          the line. This was because the non-virtual text property had a
          higher priority, preventing the virtual text from being used.
Solution: Fix the sorting of text properties so virtual text properties
          have a higher priority than non-virtual text properties.
          (Dylan Thacker-Smith)

related: #14063

Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-21 21:00:59 +01:00
Christian Brabandt
ec9c32637f runtime(doc): clarify expand() for :terminal windows
While adding to the documentation, also mention the rolled-back key-translation
strategy in version9.txt

closes: #14069

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-21 20:42:16 +01:00
GuyBrush
52ecc76c7f patch 9.1.0123: MS-Windows: system() may deadlock
Problem:  MS-Windows: system() may deadlock when calling binaries that
          expect stdin
Solution: Ignore the SHELL_EXPAND flag
          (GuyBrush)

This happens on binaries that expect stdin. For example:

:echo system("xxd")

will cause a deadlock.

SHELL_EXPAND is a flag devoted to support the linux implementation of
the backtick-expansion mechanism.

On linux backtic-expansion relies in the function mch_expand_wildchars()
(os_unix.c) that delegates on each specific shell (bash, sh, csh, zsh)
the expansion. Basically it composes a shell command that does the
expansion and redirects the output to a file and call_shell() it. On
windows backtick-expansion is performed by Vim itself.

On linux SHELL_EXPAND modifies how mch_call_shell_fork() (os_unix.c)
works. This function:

- relies on posix fork() to spawn a child process to execute a
  external command.
- Child and parent process communicate using pipes (or pseudoterminal
  if available).
  User input (type ahead content) is processed in a loop only if
  !(SHELL_EXPAND || SHELL_COOKED).
  Though signals are used to detect Ctrl-C in all cases (the input
  loop is not necessary to interrupt the function).
  In the backtick-expansion the external command is the shell command
  that provides the expansion. For the child redirection:
  -  SHELL_EXPAND replaces stdin, stdout & stderr to /dev/null. This is
     why the shell command composed includes redirection (otherwise
     output would be lost).

  -  !SHELL_EXPAND replaces stdin, stdout & stderr with the parent
     created pipes (or pseudoterminal).
     Note that the use of SIGINT signal prevents mch_call_shell_fork()
     from hanging vim.

On Windows mch_system_piped() (os_win32.c) (which is only used when the
GUI is running) mimics mch_call_shell_fork() (os_unix.c).
Win32 lacks fork() and relies on CreateProcessW() and only has pipe
support (not pseudoterminal) which makes the implementation much
different.

But, the key idea is that windows lacks signals, the OS provides support
for console apps but gvim is not one. The only way of detecting a Ctrl-C
is actually processing user input (type ahead content). By ignoring the
user input under SHELL_EXPAND the function can hang gvim.

Ignoring SHELL_EXPAND flag has no consequence in Windows because as
mentioned above it is only meaningful in linux.

closes: #13988

Signed-off-by: GuyBrush <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-21 20:16:38 +01:00
Maxim Kim
9ca335aad2 patch 9.1.0122: Some minor issues with the getregion() function
Problem:  Some minor issues with the getregion() function
Solution: Fix examples in the help, use OP_NOP op_type and MBLOCK
          as motion_type in f_getreg(), update vim syntax to
          for getregion() (Maxim Kim)

```
:xnoremap <CR>
\ <Cmd>echow getregion('v', '.', mode())<CR>
```
`echo` while in visual mode has no visible effect, thus people trying
example might be frustrated as it looks like nothing happens.

So the option is to change it to `echow` or `echom`.
With `echom` it is again has no visible effect but one can at least inspect `:messages`.
On the other hand `echow` showes selected text in a popup window.

```
Can also be used as a |method|: >
'.'->getregion("'a', 'v')
```

Here is the typo, which makes example invalid, should be `("'a", ...`

closes: #14064

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-21 19:53:02 +01:00
Eric Pruitt
e8f6af6091 runtime(tmux): Update tmux syntax (#14065)
Signed-off-by: Eric Pruitt <eric.pruitt@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-21 19:46:47 +01:00
Sean Dewar
02fcae02a9 patch 9.1.0121: Infinite loop or signed overflow with 'smoothscroll'
Problem:  infinite loop in win_update with 'smoothscroll' set when
          window width is equal to textoff, or signed integer overflow
          if smaller.
Solution: don't revalidate wp->w_skipcol in that case, as no buffer text
          is being shown. (Sean Dewar)

Don't instead reset w_skipcol; that would lose the scroll position
within the line, which may be undesirable if the window is made wider
later.

Also include changes from the splitmove PR #14042 that I (in my infinite
Git wisdom) forgot to commit. This includes a change to
Test_window_split_no_room to ensure it doesn't fail for some screen
sizes.

Move Test_smoothscroll_in_zero_width_window to test_scroll_opt.vim, as
that file feels more appropriate.

closes: #14068

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-21 19:40:44 +01:00
Shougo Matsushita
3f905ab3c4 patch 9.1.0120: hard to get visual region using Vim script
Problem:  hard to get visual region using Vim script
Solution: Add getregion() Vim script function
          (Shougo Matsushita, Jakub Łuczyński)

closes: #13998
closes: #11579

Co-authored-by: =?UTF-8?q?Jakub=20=C5=81uczy=C5=84ski?= <doubleloop@o2.pl>
Co-authored-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
Signed-off-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-21 00:02:45 +01:00
Sean Dewar
f865895c87 patch 9.1.0119: can move away from cmdwin using win_splitmove()
Problem:  can switch windows while textlocked via f_win_gotoid and
          f_win_splitmove (which also allows switching in the cmdwin).
Solution: Check text_or_buf_locked in f_win_splitmove()
          (Sean Dewar)

While at it, call text_or_buf_locked() in f_win_gotoid() instead of
testing for cmdwin_type() (which text_buf_locked() does and
in addition will also verify that the buffer is not locked).

closes: #14042

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-20 22:05:10 +01:00
Sean Dewar
704966c254 patch 9.1.0118: Use different restoration strategy in win_splitmove
Problem:  saving and restoring all frames to split-move is overkill now
          that WinNewPre is not fired when split-moving.
Solution: defer the flattening of frames until win_split_ins begins
          reorganising them, and attempt to restore the layout by
          undoing our changes. (Sean Dewar)

This also means we no longer must allocate.

related: #14042

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-20 22:00:33 +01:00
Sean Dewar
96cc4aef3d patch 9.1.0117: Stop split-moving from firing WinNew and WinNewPre autocommands
Problem:  win_splitmove fires WinNewPre and possibly WinNew when moving
          windows, even though no new windows are created.
Solution: don't fire WinNew and WinNewPre when inserting an existing
          window, even if it isn't the current window. Improve the
          accuracy of related documentation. (Sean Dewar)

Likewise, before this patch, WinClosed was not fired anyway (even for :wincmd
H/J/K/L, which also didn't fire WinNew, but did still fire WinNewPre), despite
documentation saying windows are "closed". Note that :wincmd T actually indeed
works by creating a new window (and closing the old one), unlike the others.

This also fixes issues where WinNewPre is fired when split-moving while curwin
doesn't yet have a frame or entry in the window list, causing many things to not
work (it's not considered valid at that point). This was guaranteed when using
:wincmd H/J/K/L.

Because WinNewPre is no longer fired when split-moving, this makes restoring the
previous window layout on failure easier, as we can be sure that frames are not
resized from WinNewPre autocommands if win_split_ins fails. This allows us to
use a different strategy in the following commit.

--

In my opinion, this leaves questions about the current usefulness of WinNewPre.
A motivation described in #10635 states how creating a new window can steal room
from other windows, and how WinNewPre will be useful for detecting that, but
this is also true when inserting an existing window, which now doesn't fire it.
Maybe the autocommand should be changed to have a better name?

There are also other issues I found with the current implementation of WinNewPre
that need addressing:

- it allows switching windows and tabpages, which can cause incorrect windows to
  be split/moved, and big problems when switching tabpages.

- it fires before win_split_ins checks for room, before it makes any changes to
  window sizes or before it considers allocating a new window. This should be
  changed or documented.

I hope to address some of this stuff in a different PR, if possible.

related: #14038

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-20 21:52:31 +01:00
Sean Dewar
0fd44a5ad8 patch 9.1.0116: win_split_ins may not check available room
Problem:  win_split_ins has no check for E36 when moving an existing
          window
Solution: check for room and fix the issues in f_win_splitmove()
          (Sean Dewar)

win_split_ins has no check for E36 when moving an existing window,
allowing for layouts with many overlapping zero-sized windows to be
created (which may also cause drawing issues with tablines and such).
f_win_splitmove also has some bugs.

So check for room and fix the issues in f_win_splitmove. Handle failure
in the two relevant win_split_ins callers by restoring the original
layout, and factor the common logic into win_splitmove.

Don't check for room when opening an autocommand window, as it's a
temporary window that's rarely interacted with or drawn anyhow, and is
rather important for some autocommands.

Issues fixed in f_win_splitmove:
- Error if splitting is disallowed.
- Fix heap-use-after-frees if autocommands fired from switching to "targetwin"
  close "wp" or "oldwin".
- Fix splitting the wrong window if autocommands fired from switching to
  "targetwin" switch to a different window.
- Ensure -1 is returned for all errors.

Also handle allocation failure a bit earlier in make_snapshot (callers,
except win_splitmove, don't really care if a snapshot can't be made, so
just ignore the return value).

Note: Test_smoothscroll_in_zero_width_window failed after these changes with
E36, as it was using the previous behaviour to create a zero-width window.
I've fixed the test such that it fails with UBSAN as expected when v9.0.1367 is
reverted (and simplified it too).

related: #14042

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-20 20:35:41 +01:00
Yegappan Lakshmanan
15935e7f54 runtime(doc): Add a place holder section for version 9.2 (#14060)
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-20 19:48:22 +01:00
dkearns
ef387c062b runtime(filetype): Modula-2 files with priority not detected (#14055)
Problem:  Modula-2 files with a specified priority are not detected.
Solution: Match the priority syntax in module header lines when
          performing heuristic content detection.

Disable the :defcompile debug line.  This was accidentally left enabled
in commit 68a8947.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-19 20:58:30 +01:00
Linda_pp
72a1f45e93 CI: install gnudiff and enable Test_diffmode on macos-14 runner again (#14056)
Signed-off-by: rhysd <lin90162@yahoo.co.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-19 20:55:55 +01:00
Christian Brabandt
f9ca139e3a runtime(misc): announce adoption of various runtime files
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-19 20:46:49 +01:00
Aliaksei Budavei
dfcef890cb runtime(vim): Distinguish Vim9 constructor definitions from the :new ex command (#14050)
With the arrival of Vim9 classes, the syntax must allow for
_new_ constructors; multiple constructor definitions are
supported for a class, provided distinct suffix-names are
used.  Currently, the defined constructors match either
vimCommand or vimFunctionError (for any newBar).

For example:
------------------------------------------------------------
vim9script

class Foo
    def new()
    enddef

    def newBar()
    enddef
endclass
------------------------------------------------------------

Since every constructor is required to bear a lower-cased
_new_ prefix name, it should suffice to distinguish them
from functions, and so there are no new highlight or syntax
groups introduced.


Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: h-east <h.east.727@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-18 19:02:14 +01:00
zeertzjq
c86bff1771 patch 9.1.0115: Using freed memory with full tag stack and user data
Problem:  Using freed memory with full tag stack and user data
          (Konstantin Khlebnikov)
Solution: Clear the user data pointer of the newest entry.
          (zeertzjq, Konstantin Khlebnikov)

fixes: neovim/neovim#27498
closes: #14053

Co-authored-by: Konstantin Khlebnikov koct9i@gmail.com
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Konstantin Khlebnikov koct9i@gmail.com
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-18 18:57:07 +01:00
h_east
026b17404a runtime(doc): Fix typo in testing.txt (#14054)
Signed-off-by: h-east <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-18 18:51:46 +01:00
zeertzjq
fcaed6a70f patch 9.1.0114: Setting some options may change curswant
Problem:  Setting some options changes curswant unnecessarily.
Solution: Add a P_HLONLY flag that prevents changing curswant.
          (zeertzjq)

closes: #14044

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-18 09:33:54 +01:00
Christian Brabandt
79230f027a runtime(less): update "Last Change:" header
Commit 103f1dfb7d forgot to update the
"Last Change:" header. So update it now.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-15 22:15:58 +01:00
Christian Brabandt
103f1dfb7d runtime(less): reset readonly setting when disabling less mode
While at it, also do the unmap only if a specific key has been mapped.
There are some keys that are only selectively mapped and it would cause
an error if we are trying to unmap such a key (e.g. z when your
foldmethod is not manual).

fixes: #14040

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-15 21:44:05 +01:00
Christian Brabandt
9071ed8107 patch 9.1.0113: duplicate code when cleaning undo stack
Problem:  duplicate code when cleaning undo stack
Solution: refactor undo cleanup into a single public function

related: #13928

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-15 20:17:37 +01:00
Christian Brabandt
f0d3d4a426 patch 9.1.0112: Remove undo information, when cleaning quickfix buffer
Problem:  When the quickfix buffer has been modified an autocommand
          may invalidate the undo stack (kawarimidoll)
Solution: When clearing the quickfix buffer, also wipe the undo stack

fixes: #13905
closes: #13928

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-15 20:15:04 +01:00
Brandon Maier
d00fb4b3a2 patch 9.1.0111: filetype: no support for bats files
The '*.bats' file type is for Bash Automated Testing System (BATS)
scripts. BATS scripts are Bash with a special '@test' extension but they
otherwise work with Vim's bash filetype.

See https://github.com/bats-core/bats-core

closes: #14039

Signed-off-by: Brandon Maier <brandon.maier@collins.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-15 00:17:05 +01:00
Brandon Maier
5f20f050ef patch 9.1.0110: filetype: add 'Config.in' filetype detection
The 'Config.in' file type is for Buildroot configuration files.
Buildroot Config.in files use the same Kconfig backend as the Linux
kernel's Kconfig files.

Buildroot also has other filename variants that follow "Config.in.*",
they are used to distinguish multiple Config.in files in the same
directory.

See https://buildroot.org/downloads/manual/manual.html#_literal_config_in_literal_file

closes: #14038

Signed-off-by: Brandon Maier <brandon.maier@collins.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-14 22:30:06 +01:00
Luca Saccarola
1da0e85816 runtime(asciidoc): include basic ftplugin
closes: #13873

Signed-off-by: Luca Saccarola <github.e41mv@aleeas.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-14 22:26:43 +01:00
Brandon Maier
cf1d65e060 patch 9.1.0109: filetype: no support for its files
Problem:  filetype: no support for its files
Solution: Add detection for *.its files as dts file type
          (Brandon Maier)

The '*.its' file type is for U-Boot Flattened Image Trees (FIT) which
use the flattened devicetree format.

See https://github.com/u-boot/u-boot/blob/master/doc/usage/fit/source_file_format.rst#terminology

closes: #14037

Signed-off-by: Brandon Maier <brandon.maier@collins.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-14 21:33:40 +01:00
Doug Kearns
1633de8c35 runtime(vim): Update base-syntax, remove unused vimString region
These were included with the initial release of the syntax file for Vim
5 and were probably intended to allow for syn-region start/skip/end
patterns with a '!' or '+' delimiter.  However, these cases are
currently handled by the vimSynRegPat group.

The removed patterns never match anywhere in the distributed runtime
files and it is believed that this is generally true.

closes: #14035

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-14 21:28:44 +01:00
Doug Kearns
fe6d5b0ae4 runtime(vim): Update base-syntax, fix :behave highlighting
closes: #14036

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-14 21:17:43 +01:00
h-east
5c3855bcab runtime(vim): update Vim Syntax generator
- Add missing "Last Change:" line.
- The date on this line in vim.vim is updated by update_date.vim at
  Make time. (I made a mistake in the file path)
- Remove unnecessary "b:loaded_syntax_vim_ex".
- Remove "Base File Date:" line in vim.vim.base
- Add Doug Kearns as Maintainer

closes: #14031

Signed-off-by: h-east <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-14 21:00:01 +01:00
Markus Schneider-Pargmann
b1700fb33f patch 9.1.0108: filetype: no support for dtso files
Problem:  filetype: no support for dtso files
Solution: Add detection for *.dtso files as dts file type
          (Markus Schneider-Pargmann)

*.dtso files are devicetree overlay files which have the same syntax as dts or dtsi files.

closes: #14026

Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-14 20:44:28 +01:00
Yee Cheng Chin
49f2ba6d41 patch 9.1.0107: CI: Fix MacOS-14 tests
Problem:  CI: Fix MacOS-14 tests (after 9.1.0070)
Solution: Re-enable sound tests by granting Mic access,
          disable Test_diff_screen because of buggy MacOS diff
          (non GNU version), re-enable Test_term_gettitle()
          (Yee Cheng Chin)

macos-14 runner was turned on in #13943, but it had to turn off a few
tests in order for CI to run. Re-enable them and fix the underlying
issues.

* `Test_diff_screen`: The test failure is due to a bug in Apple's diff
  utility. Apple introduced a new diff tool based on FreeBSD in macOS 13
  and it has buggy behaviors when using unified diff (`-U0`) and the
  diff is on the first line of the file. Simply disable this test for
  now if we detect Apple diff (instead of the old GNU diff). Can
  re-enable this in the future if Apple fixes the issue.
* `Test_play_event` / `Test_play_silent`: GitHub Actions currently has
  an issue with playing sound in CI in macos-14 runners. It for some
  reason triggers a microphone permission dialog popup which blocks the
  CI action (see https://github.com/actions/runner-images/issues/9330).
  To fix this, add a temporary step in macos-14 to manually allow
  microphone permissions in the runner.
* `Test_term_gettitle`: I could not reproduce the failure, so I just
  turned it on and it seems to run just fine. Maybe it's a timing issue
  and whatnot but either way that should be fixed when we can reproduce
  the issue.

closes: #14032

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-14 20:34:58 +01:00
Maxim Kim
34e4a05d02 patch 9.1.0106: Visual highlight hard to read with 'termguicolors'
Problem:  Visual highlight hard to read with 'termguicolors'
          (Maxim Kim)
Solution: Set Visual GUI foreground to black (with background=light)
          and lightgrey (with background=dark)
          (Maxim Kim)

fixes: #14024
closes: #14025

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-14 20:28:17 +01:00
h-east
9b53c052d5 runtime(vim): include Vim Syntax generator
fixes: #13939
closes: #14021
related: vim-jp/syntax-vim-ex#28

Signed-off-by: h-east <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-13 21:11:22 +01:00
zeertzjq
e71022082d patch 9.1.0105: Style: typos found
Problem:  Style: typos found
Solution: correct them
          (zeertzjq)

closes: #14023

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-13 20:32:04 +01:00
Christian Brabandt
2f9aef42af patch 9.1.0104: Linking fails with -lto because of PERL_CFLAGS
Problem:  Linking fails with -lto because of PERL_CFLAGS
          (Zoltan Toth)
Solution: Filter out -flto argument from Perl CFLAGS.

fixes: #14012

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-12 23:14:19 +01:00
zeertzjq
f0a9d65e0a patch 9.1.0103: 'breakindentopt' "min" not correct with 'signcolumn'
Problem:  'breakindentopt' "min" works incorrectly with 'signcolumn'.
Solution: Use win_col_off() and win_col_off2().
          (zeertzjq)

closes: #14014

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-12 22:53:20 +01:00
zeertzjq
b47fbb4083 patch 9.1.0102: settabvar() may change the last accessed tabpage
Problem:  settabvar() may change the last accessed tabpage.
Solution: Save and restore lastused_tabpage.
          (zeertzjq)

closes: #14017

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-12 22:50:26 +01:00
glepnir
bd1232a1fa patch 9.1.0101: upper-case of German sharp s should be U+1E9E
Problem:  upper-case of ß should be U+1E9E (CAPITAL LETTER SHARP S)
          (fenuks)
Solution: Make gU, ~ and g~ convert the U+00DF LATIN SMALL LETTER SHARP S (ß)
          to U+1E9E LATIN CAPITAL LETTER SHARP S (ẞ), update tests
          (glepnir)

This is part of Unicode 5.1.0 from April 2008, so should be fairly safe
to use now and since 2017 is part of the German standard orthography,
according to Wikipedia:
https://en.wikipedia.org/wiki/Capital_%E1%BA%9E#cite_note-auto-12

There is however one exception: UnicodeData.txt for U+00DF
LATIN SMALL LETTER SHARP S does NOT define U+1E9E LATIN CAPITAL LETTER
SHARP S as its upper case version. Therefore, toupper() won't be able
to convert from lower sharp s to upper case sharp s (the other way
around however works, since U+00DF is considered the lower case
character of U+1E9E and therefore tolower() works correctly for the
upper case version).

fixes: #5573
closes: #14018

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-12 22:39:40 +01:00
zeertzjq
f2d90a3511 patch 9.1.0100: Redrawing can be improved with undo and 'spell'
Problem:  When undoing with 'spell', redrawWinline() is called after
          changed_lines(), while later win_update() sets redraw type to
          UPD_NOT_VALID, even though w_redraw_top and w_redraw_bot are
          still valid.
Solution: Only set redraw type to UPD_NOT_VALID when inserting/deleting
          lines after parts of window has pending redraw, i.e., when
          changed_lines() is called after redrawWinline().
          (zeertzjq)

closes: #14019

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-12 20:28:01 +01:00
Yegappan Lakshmanan
a0010a186d patch 9.1.0099: Not able to use diff() with 'diffexpr'
Problem:  Not able to use diff() with 'diffexpr'
          (rickhowe, after v9.1.0096)
Solution: Use a default context length of 0, update diff() help text,
          add a test for using diff() with 'diffexpr'
          (Yegappan Lakshmanan)

closes: #14013

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-12 20:24:56 +01:00
Christian Brabandt
6d91227267 runtime(gpg): Mark dangerous use-embedded-filename with WarningMsg
The syntax highlighter is likely to encourage people to use the listed
commands.

But `use-embedded-filename` is a dangerous option that can cause GnuPG
to write arbitrary data to arbitrary files whenever GnuPG encounters
malicious data.

GnuPG upstream explicitly warns against using this option:

https://dev.gnupg.org/T4500
https://dev.gnupg.org/T6972

However, since this is a valid option, we cannot just drop it from the
syntax script. Instead, let's mark it with the WarningMsg highlighting
to make it obvious, that this option is different (and should not be
used for security reasons).

closes: #13961

Co-authored-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
Signed-off-by:  Christian Brabandt <cb@256bit.org>
2024-02-11 18:19:45 +01:00
glepnir
0d3c0a66a3 patch 9.1.0098: CompletionChanged not triggered when new leader added without matches
Problem:  CompletionChanged not triggered when new leader added causing
          no matching item in the completion menu
Solution: When completion is active but no items matched still trigger
          CompletChanged event
          (glepnir)

closes: #13982

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-11 17:52:40 +01:00
zeertzjq
efabd7c8d4 patch 9.1.0097: 'breakindent' behaves inconsistently with 'list' and splits
Problem:  'breakindent' behaves inconsistently with 'list' and splits.
Solution: Use 'listchars' from the correct window and handle caching
          properly. Move cheaper comparisons to the top.
          (zeertzjq)

closes: #14008

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-11 17:16:19 +01:00
dkearns
b614b284ee runtime(vim): Update syntax file (#14009)
- allow comments after :highight commands
- match the bang in a :highlight[!] command
- highlight the bang in :map[!], :menu[!] and :unlet[!] with vimOper
  like all other commands

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-11 17:13:34 +01:00
Yegappan Lakshmanan
be156a31c5 patch 9.1.0096: diff() function uses 'diffexpr'
Problem:  diff() function uses 'diffexpr'
          (rickhowe)
Solution: Make diff() always use internal diff(), add support for
          unified diff context length, sort diff() options in help
          (Yegappan Lakshmanan)

fixes: #13989
closes: #14010

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-11 17:08:29 +01:00
Christian Brabandt
52eb0b8677 patch 9.1.0095: tests: test_restricted() fails
Problem:  tests: test_restricted() fails
          (after: v9.1.0091)
Solution: Add a space before the pipecmd and the actual Vim command to
          run

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-10 13:50:54 +01:00
Goffredo Baroncelli
0022148773 patch 9.1.0094: xxd: buffer-overflow when writing color output
Problem:  xxd: buffer-overflow when writing color output
Solution: properly account for the color escape sequences and
          adjust LLEN macro
          (Goffredo Baroncelli)

xxd: crash with higer number of column

xxd writes the data into a buffer before printing. Unfortunately
the buffer doesn't consider the space consumed by the escape
sequences used to change the color of the character.

BEFORE:
$ xxd -Ralways -c 256 /etc/passwd
Segmentation fault (core dumped)

AFTER:
$ ./xxd -Ralways -c 256 /etc/passwd
00000000: 726f 6f74 3a78 3a30 3a30 3a72 6f6f 743a 2f72 [...]

To solve this issue I had to increase the size of the buffer
considering for each byte of data 11 further characters for the
color escape sequence.

closes: #14003

Signed-off-by: Goffredo Baroncelli <kreijack@libero.it>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-10 13:31:06 +01:00
zeertzjq
77078276bf patch 9.1.0093: Still a qsort() comparison function that returns result of subtraction
Problem:  Still a qsort() comparison function fuzzy_match_item_compare()
          that returns result of subtraction (after 9.1.0089).
Solution: Use an explicit comparison instead of subtraction.
          (zeertzjq)

closes: #14004

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-10 13:24:03 +01:00
Christian Brabandt
c908371aec patch 9.1.0092: Compiler warning for missing type in scroll_event()
Problem:  Compiler warning for missing type in scroll_event()
          (chdiza)
Solution: Declare display_type explicitly as integer

fixes: #14005

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-10 13:17:16 +01:00
Christian Brabandt
627c950e5b patch 9.1.0091: Syntax test fails when run with non C locale
Problem:  Syntax test fails when run with non C locale
Solution: Run syntax tests with C locale, clean up Xtestscript file,
          strip environment variables from GetVimCommand()
          (h-east)

closes: #14007

Co-authored-by: h-east <h.east.727@gmail.com>
Signed-off-by: h-east <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-10 13:02:17 +01:00
Maxim Kim
45932c5c4a patch 9.1.0090: Assigning wrong colors when parsing terminal OSC response
Problem:  Assigning wrong colors when parsing terminal OSC response
Solution: Correctly assign Green and Blue from the terminal response
          (Maxim Kim)

closes: #13981

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-09 23:11:54 +01:00
Andrew Radev
415a5a951b runtime(vim): Fix indent after line with literal dict
closes: #13966

Signed-off-by: Andrew Radev <andrey.radev@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-09 19:46:59 +01:00
Christian Brabandt
e06e437665 patch 9.1.0089: qsort() comparison functions should be transitive
Problem:  qsort() comparison functions should be transitive
Solution: Do not subtract values, but rather use explicit comparisons

Improve qsort() comparison functions

There has been a recent report on qsort() causing out-of-bounds read &
write in glibc for non transitive comparison functions
https://www.qualys.com/2024/01/30/qsort.txt

Even so the bug is in glibc's implementation of the qsort() algorithm,
it's bad style to just use substraction for the comparison functions,
which may cause overflow issues and as hinted at in OpenBSD's manual
page for qsort(): "It is almost always an error to use subtraction to
compute the return value of the comparison function."

So check the qsort() comparison functions and change them to be safe.

closes: #13980

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-09 19:39:14 +01:00
Christian Brabandt
c9e79e5284 patch 9.1.0088: TextChanged not triggered for :norm! commands
Problem:  TextChanged not triggered for :norm! commands
          (machakann, after v9.0.2031)
Solution: Only reset curbuf->b_last_changedtick if TextChangedI
          was triggered in insert mode (and not blocked)

Note: for unknown reasons, the test fails on Windows (but seems to work
fine when running interactively)

fixes: #13967
closes: #13984

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-09 19:34:36 +01:00
glepnir
2975a54f28 patch 9.1.0087: Restoring lastused_tabpage too early in do_arg_all()
Problem:  Restore lastused_tabpage too early in do_arg_all() function it
          will change later in the function.
Solution: Restore lastused_tabpage a bit later, when being done with
          tabpages (glepnir)

closes: #13992

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-09 19:30:26 +01:00
lilydjwg
725c7c31a4 patch 9.1.0086: Problem when scrolling using slow touchpads scroll event
Problem:  Problem when scrolling using slow touchpads scroll event
Solution: better ways to determine if a smooth scroll has ended (when
          available) (lilydjwg)

related: #13997

Signed-off-by: lilydjwg <lilydjwg@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-09 19:24:23 +01:00
lilydjwg
c4d4a1e041 patch 9.1.0085: X11 scroll size changes after accessing clipboard
Problem:  X11 scroll size changes after accessing clipboard
          (Ernie Rael)
Solution: use GDK_SCROLL_MASK for X11 and GDK_SMOOTH_SCROLL_MASK for
          Wayland (lilydjwg)

because GDK_SCROLL_SMOOTH events don't work well for x11 (see comments).

fixes #13994
closes: #13997

Signed-off-by: lilydjwg <lilydjwg@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-09 19:13:12 +01:00
K.Takata
bd2f45a6e5 CI: Add Codecov token (#13999)
codecov-action@4 requires a token.
Add it to the repository secrets.

See: https://github.com/vim/vim/pull/13978#issuecomment-1935336624

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-09 18:18:11 +01:00
zeertzjq
df23d7f4bd patch 9.1.0084: Visual hl wrong when it ends before multibyte 'showbreak'
Problem:  Visual hl wrong when it ends before multibyte 'showbreak'.
          (lacygoil)
Solution: Use vcol_sbr instead of adding n_extra.
          (zeertzjq)

fixes: #11272
closes: #13996

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-09 18:14:12 +01:00
zeertzjq
ae07ebc04b patch 9.1.0083: Redrawing can be improved when deleting lines with 'number'
Problem:  Redrawing can be improved when inserting/deleting lines with 'number'.
Solution: Only redraw the number column of lines below changed lines.
          Add a test as this wasn't previously tested.
          (zeertzjq)

closes: #13985

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-08 11:37:40 +01:00
zeertzjq
7ce34c9a94 patch 9.1.0082: Redrawing can be improved when deleting lines with 'cursorline'
Problem:  Redrawing can be improved when deleting lines with 'cursorline'.
Solution: Use smarter invalidation and adjustment.  Remove unnecessary
          UPD_VALID as it is already set at the top of the loop.  Make
          the test for #4862 fail without the fix.
          (zeertzjq)

closes: #13986

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-08 11:34:55 +01:00
zeertzjq
b8170143c8 runtime(doc): further improve docs about List/Blob += operator
closes: #13990

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-08 11:23:22 +01:00
lilydjwg
1efb1b08a1 patch 9.1.0081: X11 mouse-scrolling stutters
Problem:  X11 mouse-scrolling stutters
          (Ron Aaron, after 9.1.0064)
Solution: Handle GDK_SCROLL_SMOOTH fractional distance events
          (lilydjwg)

I don't know why, but with GDK_SMOOTH_SCROLL_MASK we get wheel events as
GDK_SCROLL_SMOOTH. What's more, one wheel scroll is counted as 1.5
distance in Wayland but 1.0 in X11.

I failed to find any docs on gtk.org about this.

fixes: #13987
closes: #13991

Signed-off-by: lilydjwg <lilydjwg@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-08 11:04:21 +01:00
qeatzy
c9c2e2d2ff runtime(doc): Clarify list-concatenation a bit more
Make doc list-concatenation more clear as for += and extend().

1. describe `+=` for list-concatenation more accurately
2. add `extend()` example for list-concatenation
3. Fix CI errors for missing helptags reference |+=|

closes: #13983

Signed-off-by: qeatzy <qeatzy@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-07 17:56:35 +01:00
Yegappan Lakshmanan
1af35631f8 patch 9.1.0080: unexpected error for modifying final list using +=
Problem:  unexpected error for modifying final list using += operator
          (Ernie Rael)
Solution: Allow List value modification of a final variable using +=
          operator
          (Yegappan Lakshmanan)

fixes: #13745
fixes: #13959
closes: #13962

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-06 11:03:36 +01:00
zeertzjq
ebfd856cfd patch 9.1.0079: LineNrAbove/Below highlighting wrong on wrapped lines
Problem:  LineNrAbove and LineNrBelow background wrong on wrapped lines.
Solution: Update number column also for wrapped part of a line.
          (zeertzjq)

closes: #13974

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-06 10:59:03 +01:00
Christian Brabandt
f7f33e3719 runtime(dosbatch): improve '::' comment highlighting
Added a syntax region for command blocks so that the highlighting of
`::` comments in them can be controlled.  The `dosbatch_colons_comment`
variable now controls if all `::` comments in a code block are
highlighted as comments or errors.  A `::` comment at the end of a
command block is always highlighted as an error.

This re-enables the highlighting of `::` comments in `.bat` files as
requested in #13666, while allowing control of highlighting them in
command blocks requested in #11778 and first attempted in #11980.

related: #11980
fixes: #13666

Co-authored-by: Mike Williams <mikew@globalgraphics.com>
Signed-off-by: Mike Williams <mikew@globalgraphics.com>
Signed-off-by: mevanlc <mevanlc@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-06 10:56:26 +01:00
lilydjwg
b1457d4cb9 patch 9.1.0078: GTK3: using wrong style for pre-edit area
Problem:  GTK3: using wrong style for pre-edit area
Solution: remove the widget name, adjust css
          (lilydjwg)

closes: #13972

Signed-off-by: lilydjwg <lilydjwg@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-06 10:49:14 +01:00
Philip H
7f630e6f35 CI: skip apt upgrade on github runners (#13975)
Revert: https://github.com/vim/vim/pull/13680
Fixed in: https://github.com/actions/runner-images/issues/9016

Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-06 10:47:49 +01:00
dependabot[bot]
ea7f2f29af CI: Bump codecov/codecov-action from 3 to 4 (#13978)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3 to 4.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-06 10:46:10 +01:00
zeertzjq
3f1b5312e0 patch 9.1.0077: Unnecessary call to redraw_for_cursorline() in nv_mousescroll()
Problem:  The call to redraw_for_cursorline() in nv_mousescroll() is
          unnecessary because redraw_for_cursorline() only sets redraw
          type to UPD_VALID, and all code paths in do_mousescroll()
          already set redraw type to at least UPD_VALID.
Solution: Remove call to redraw_for_cursorline() in nv_mousescroll().
          (zeertzjq)

closes: #13979

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-06 10:43:36 +01:00
Christian Brabandt
0f4054feb6 runtime(colors): color names in the v:colornames dict should be lower cased
Vim will lookup color names from the v:colornames dictionary by its
lower case color name. So when sourcing the v:colornames dictionary,
make sure to convert upper case color names to lower case.

Also, while at it, mention in the documentation, that the dictionary
should contain lower case names only.

fixes: #13976
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-05 10:34:26 +01:00
lopy
de7f5bde6c patch 9.1.0076: luau config file not detected
Problem:  luau config file not detected
          (lopy)
Solution: Detect it as jsonc
          (lopy)

fixes: #13960
closes: #13970

Signed-off-by: lopy <70210066+lopi-py@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-04 10:27:33 +01:00
dkearns
7c5aeaffa2 runtime(vim): Update syntax file (#13969)
Improve string interpolation highlighting.

Use the vimSep group to highlight interpolation braces as vimOperParen
has no highlighting of its own and employs vimSep via matchgroup.

Add vimNumber to the interpolation group's contained list.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-03 18:18:31 +01:00
glepnir
cbb46b4398 patch 9.1.0075: insert completion not correct when adding new leader
Problem:  insert completion not correct when adding new leader
Solution: Reset compl_curr_match to compl_shown_match
          (glepnir)

closes: #13957

Co-authored-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-03 18:11:13 +01:00
zeertzjq
eac3fdcfa0 patch 9.1.0074: did_set_breakat() should be in optionstr.c
Problem:  did_set_breakat() should be in optionstr.c as 'breakat' is a
          string option.
Solution: Move did_set_breakat() to optionstr.c.
          (zeertzjq)

closes: #13958

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-03 18:08:09 +01:00
zeertzjq
0c989e4a3a patch 9.1.0073: Looping over modifier_keys_table unnecessarily
Problem:  Looping over modifier_keys_table[] unnecessarily with only
          MOD_MASK_ALT or MOD_MASK_CMD, as modifier_keys_table[] only
          contains MOD_MASK_SHIFT and MOD_MASK_CTRL, and the loop won't
          do anything.
Solution: Remove MOD_MASK_ALT and MOD_MASK_CMD from the condition.
          (zeertzjq)

closes: #13963

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-03 18:05:38 +01:00
Yegappan Lakshmanan
609370392a patch 9.1.0072: Not able to build without FEAT_DIFF
Problem:  Not able to build without FEAT_DIFF
          (John Marriott, after 9.1.0071)
Solution: Adjust #ifdefs
          (Yegappan Lakshmanan)

closes: #13964

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-03 17:41:54 +01:00
Jordi Mas
2d205d0a95 translation(ca): Fixe typos in Catalan translation (#13968)
Signed-off-by: Jordi Mas <jmas@softcatala.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-03 17:40:03 +01:00
Yegappan Lakshmanan
fa37835b8c patch 9.1.0071: Need a diff() Vim script function
Problem:  Need a diff() Vim script function
Solution: Add the diff() Vim script function using the
          xdiff internal diff library, add support for
          "unified" and "indices" mode.
          (Yegappan Lakshmanan)

fixes: #4241
closes: #12321

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-01 22:05:27 +01:00
Restorer
1226b0584a translation(ru): Updated Russian translation of messages (#13947)
Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-01 21:45:32 +01:00
dkearns
e3e3934bb1 runtime(vim): Update syntax file (#13948)
Improve string escape sequence and special key matching.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-01 21:44:26 +01:00
Ajit-Thakkar
9204f39580 runtime(fortran): update syntax (#13953)
* runtime (Fortran) update syntax
* runtime (Fortran) small fix

Signed-off-by: Ajit-Thakkar <142174202+Ajit-Thakkar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-01 21:43:01 +01:00
rhysd
e93d5cadec patch 9.1.0070: CI: testsuite not run on M1 Mac
Problem:  CI: testsuite not run on M1 Mac
Solution: Make it run on gh runners for M1, disable failing tests for
          now, until we figure the problem with the failings tests out
          (rhysd)

closes: #13943

Signed-off-by: rhysd <lin90162@yahoo.co.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-01 21:22:14 +01:00
Olaf Seibert
fd472655a9 patch 9.1.0069: ScreenLines may not be correctly initialized, causing hang
Problem:  ScreenLines may not be correctly initialized, causing hang
          (Olaf Seibert, after 9.0.0220)
Solution: always initialize ScreneLines when allocating a screen
          (Olaf Seibert)

ScreenLines and related structures could be left uninitialized
causing a screen update to run into an infinite loop when using latin1
encoding.

Partly caused because by patch 9.0.0220, which makes mb_ptr2len return
zero for NUL

related: #12671
closes: #13946

Signed-off-by: Olaf Seibert <rhialto@falu.nl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-01 21:11:16 +01:00
Maxim Kim
59bafc8171 patch 9.1.0068: Visual highlighting can still be improved
Problem:  Visual highlighting can still be improved
Solution: Update Visual highlighting for 8 color terminals,
          use uniform grey highlighting for dark and light bg
          (Maxim Kim)

Update terminal Visual

1. Use `ctermbg=Grey ctermfg=Black` for both dark and light

This uniforms Visual highlighting between default dark and light colors
And should work for vim usually detecting light background for terminals
with black/dark background colors.

Previously used `ctermfg=White` leaks `cterm=bold` if available colors
are less than 16.

2. Use `term=reverse cterm=reverse ctermbg=NONE ctermfg=NONE`
   for terminals reporting less than 8 colors available

If the terminal has less than 8 colors, grey just doesn't work right

closes: #13940

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-01 21:07:51 +01:00
Christian Brabandt
e1cd1fda69 patch 9.1.0067: gcc still complains about use of uninitialized var
Problem:  gcc still complains about use of uninitialized var
          ((Tony Mechelynck, after 9.1.0064/9.1.0066))
Solution: This time init the correct variable

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-31 22:12:57 +01:00
D. Ben Knoble
83f627ff42 runtime(racket): add missing space to b:undo_indent var (#13945)
This copies commit 2a4862a (fixup! indent: only reset some options when
has vim9, 2024-01-31) from https://github.com/benknoble/vim-racket and
fixes 26b0176a9 (runtime(racket): undo some indent options only when
vim9script is available (#13935), 2024-01-30).

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-31 20:53:55 +01:00
Philip H
f430e7daeb runtime(Filelist): include README_vimlogo.txt (#13944)
Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-31 20:51:48 +01:00
Christian Brabandt
f2fb7dd3d3 patch 9.1.0066: gcc complains about use of uninitialized var
Problem:  gcc complains about use of uninitialized var
          (Tony Mechelynck, after 9.1.0064)
Solution: initialize button to silence gcc

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-31 20:29:07 +01:00
Shay Hill
ece7145689 runtime(vimlogo): Include and modernize vimlogo.svg
fix degenerate splines in vimlogo.svg

closes: #13941

Signed-off-by: Shay Hill <shay_public@hotmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-31 20:15:03 +01:00
MiguelBarro
c46c21b4ca runtime(netrw): fixing remote file removal via ssh (#13942)
Make pattern, which retrieves the path component from e.g. 
`scp://user@host//opt/program/file.ext` non-greedy.

Signed-off-by: GuyBrush <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-31 20:07:17 +01:00
Philip H
0a3d369687 CI: get rid of snap and speed up CI (#13938)
Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-31 20:04:22 +01:00
Philip H
28db30ddb1 CI: update clang to v18 (#13937)
Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-31 20:02:10 +01:00
Christian Brabandt
8fecb472c4 runtime(doc): correct Vim patch for Wayland support
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-30 23:37:41 +01:00
D. Ben Knoble
26b0176a98 runtime(racket): undo some indent options only when vim9script is available (#13935)
This copies commit 64edf95 (indent: only reset some options when has
vim9, 2024-01-30) from https://github.com/benknoble/vim-racket.

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-30 23:32:59 +01:00
Christian Brabandt
1b7fbe726a runtime(doc): Update help for Wayland support
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-30 20:41:53 +01:00
Christian Brabandt
fef6630166 patch 9.1.0065: Segfault with CompleteChanged autocommand
Problem:  Segfault with CompleteChanged autocommand
          (markonm )
Solution: Test match->cp_prev for being NULL before accessing it

closes: #13929

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-29 21:49:36 +01:00
lilydjwg
6e0a18f82b patch 9.1.0064: No Wayland support
Problem:  No Wayland support
Solution: Add Wayland UI support
          (lilydjwg)

closes: #9639

Signed-off-by: lilydjwg <lilydjwg@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-29 20:54:28 +01:00
lilydjwg
94ff09a093 patch 9.1.0063: GTK code can be improved
Problem:  GTK code can be improved
Solution: Improve GTK code for initial Wayland support
          (lilydjwg)

related: #9639

Signed-off-by: lilydjwg <lilydjwg@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-29 20:18:22 +01:00
zeertzjq
e99f068878 patch 9.1.0062: Internal error when :luado/perldo/pydo etc delete lines
Problem:  Internal error when :luado/perldo/pydo etc delete lines
Solution: Test that the line is still valid line number
          (zeertzjq)

closes: #13931

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-29 19:32:39 +01:00
Christian Brabandt
e6d8b4662d patch 9.1.0061: UX of visual highlighting can be improved
Problem:  UX of visual highlighting can be improved
Solution: Improve readibility of visual highlighting,
          by setting better foreground and background
          colors

The default visual highlighting currently is nice in that it overlays
the actual syntax highlighting by using a separate distinct background
color.

However, this can cause hard to read text, because the contrast
between the actual syntax element and the background color is way too
low. That is an issue, that has been bothering colorschemes authors for
quite some time so much, that they are defining the Visual highlighting
group to use a separate foreground and background color, so that the
syntax highlighting vanishes, but the text remains readable (ref:
vim/colorschemes#250)

So this is an attempt to perform the same fix for the default Visual
highlighting and just use a default foreground and background color
instead of using reverse.

I also removed the hard-coded changes to the Visual highlighting in
init_highlight. It's not quite clear to me, why those were there and not
added directly to the highlighting_init_<dark|light> struct.

closes: #13663
related: vim/colorschemes#250

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-28 23:38:28 +01:00
user202729
bdb9d9afba runtime(netrw): Use :exec norm! <leftmouse> before :call mapping in netrw (#12180)
fixes: #12143

Signed-off-by: user202729 <25191436+user202729@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-28 23:29:21 +01:00
zeertzjq
bf321806bf patch 9.1.0060: Recorded register cannot be translated using keytrans()
Problem:  Recorded register cannot be translated using keytrans() when
          it involves character search (iddqd505)
Solution: Record a K_IGNORE instead of a K_NOP (zeertzjq)

related: #13916
closes: #13925

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-28 19:03:00 +01:00
thinca
cf8695d48c runtime(vim): Highlight string interpolation
closes: #13923

Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-28 18:58:14 +01:00
dkearns
21ce159e05 runtime(vim): Update syntax and ftplugin files (#13924)
Improve matching of line-continuations and interspersed comments.

These are now also matched in multiline syntax command patterns,
dictionary literals, and parenthesised expressions and argument lists.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-28 18:54:08 +01:00
dkearns
0cc6108fea runtime(ant): Update syntax file (#13926)
Remove invalid display option from syn-keyword commands.

Take over maintenance of this file.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-27 18:20:46 +01:00
Melker Ulander
772f8f5425 runtime(hurl): add hurl filetype plugin(#13921)
Signed-off-by: Melker Ulander <melker.ulander@pm.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-27 11:26:14 +01:00
dkearns
b418a51933 runtime(vim): Update syntax file (#13919)
Add foreach() function.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-27 11:24:45 +01:00
h_east
4d49643c3c runtime(doc): style fixes in vim9.txt (#13918)
Remove backticks and a few other style fixes

Signed-off-by: h-east <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-27 11:22:28 +01:00
Sergey Vlasov
1f47db75fd patch 9.1.0059: No event triggered before creating a window
Problem:  No event is triggered before creating a window.
          (Sergey Vlasov)
Solution: Add the WinNewPre event (Sergey Vlasov)

fixes: #10635
closes: #12761

Signed-off-by: Sergey Vlasov <sergey@vlasov.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-25 23:07:00 +01:00
Casey Tucker
92e90a1e10 patch 9.1.0058: Cannot map Super Keys in GTK UI
Problem:  Cannot map Super Keys in GTK UI
          (Casey Tucker)
Solution: Enable Super Key mappings in GTK using <D-Key>
          (Casey Tucker)

As a developer who works in both Mac and Linux using the same keyboard,
it can be frustrating having to remember different key combinations or
having to rely on system utilities to remap keys.

This change allows `<D-z>` `<D-x>` `<D-c>` `<D-v>` etc. to be recognized
by the `map` commands, along with the `<D-S-...>` shifted variants.

```vimrc
if has('gui_gtk')
	nnoremap  <D-z>    u
	nnoremap  <D-S-Z>  <C-r>
	vnoremap  <D-x>    "+d
	vnoremap  <D-c>    "+y
	cnoremap  <D-v>    <C-R>+
	inoremap  <D-v>    <C-o>"+gP
	nnoremap  <D-v>    "+P
	vnoremap  <D-v>    "-d"+P
	nnoremap  <D-s>    :w<CR>
	inoremap  <D-s>    <C-o>:w<CR>
	nnoremap  <D-w>    :q<CR>
	nnoremap  <D-q>    :qa<CR>
	nnoremap  <D-t>    :tabe<CR>
	nnoremap  <D-S-T>  :vs#<CR><C-w>T
	nnoremap  <D-a>    ggVG
	vnoremap  <D-a>    <ESC>ggVG
	inoremap  <D-a>    <ESC>ggVG
	nnoremap  <D-f>    /
	nnoremap  <D-g>    n
	nnoremap  <D-S-G>  N
	vnoremap  <D-x>    "+x
endif
```

closes: #12698

Signed-off-by: Casey Tucker <dctucker@hotmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-25 22:44:00 +01:00
Christian Brabandt
6a02eb073e patch 9.1.0057: MS-Windows: Key event test still fails
Problem:  MS-Windows: Key event test still fails
Solution: Skip testing CTRL-C, since it causes an Interrupt
          which causes a test failure (after 9.1.0053)

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-25 22:28:37 +01:00
VanaIgr
6638ec8afa patch 9.1.0056: wrong number of trailing spaces inserted after blockwise put
Problem:  Incorrect number of trailing spaces inserted for multibyte
	  characters when pasting a blockwise register in blockwise visual
          mode (VanaIgr)
Solution: Skip over trailing UTF-8 bytes when computing the number of trailing
          spaces (VanaIgr)

When pasting in blockwise visual mode, and the register type is <CTRL-V>, Vim
aligns the text after the replaced area by inserting spaces after pasted
lines that are shorter than the longest line. When a shorter line contains
multibyte characters, each trailing UTF-8 byte's width is counted in addition
to the width of the character itself. Each trailing byte counts as being 4
cells wide (since it would be displayed as <xx>).

closes: #13909

Signed-off-by: VanaIgr <vanaigranov@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-25 21:58:33 +01:00
kawaii-Code
78019df645 patch 9.1.0055: formatting long lines is slow
Problem:  formatting long lines is slow
          (kawaii-Code)
Solution: optimize gq (internal_format) for long
          lines (kawaii-Code)

Implemented two workarounds that significantly reduce
the amount of pointless calls. Ideally the algorithm
would be rewritten not to be n^2, but it's too complicated
with too many corner cases.

closes: #13914

Signed-off-by: kawaii-Code <nia.personal.0@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-25 21:40:05 +01:00
zeertzjq
703f9bc943 patch 9.1.0054: 'linebreak' may still apply to leading whitespace
Problem:  'linebreak' may still apply to leading whitespace
          (VanaIgr)
Solution: Compare pointers instead of virtual columns.
          (zeertzjq)

related: neovim/neovim#27180
closes: #13915

Co-authored-by: VanaIgr <vanaigranov@gmail.com>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-25 21:28:56 +01:00
Christian Brabandt
12b9277672 patch 9.1.0053: MS-Windows: Key event test still fails
Problem:  MS-Windows: Key event test still fails
Solution: Catch more interrupts
          (after 9.1.0051)

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-25 21:23:22 +01:00
Christian Brabandt
fa8c971558 patch 9.1.0052: Patch 9.1.0041 causes regressions for users
Problem:  Patch 9.1.0041 causes regressions for users
          (Gleb Fotengauer-Malinovskiy)
Solution: Revert 9.1.0041 and restore old behaviour

Revert "patch 9.1.0041: xxd -i may generate incorrect C statements"

This reverts commit 7062be1312.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-25 20:50:49 +01:00
Christian Brabandt
f6ebaa7ae6 patch 9.1.0051: MS-Windows: Key event test fail
Problem:  MS-Windows: Key event test fail
          (after 9.1.0050)
Solution: Catch Interrupt and return Ctrl-C

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-25 20:44:49 +01:00
gi1242
046a0f75d0 runtime(mail): fix #13913 (#13917)
switch to the DFA engine for the emoji collaction range

Co-authored-by: GI <gi1242+vim@gmail.com>
Signed-off-by: GI <gi1242@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-25 19:52:47 +01:00
K.Takata
a262d3f41b runtime(netrw): Don't change global options (#13910)
Originally reported at: https://github.com/vim-jp/issues/issues/1428
'isk' was unintentionally changed by netrw, regression
introduced in Commit: 71badf9547

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-24 20:10:19 +01:00
Ajit-Thakkar
e1ddc2d587 runtime(fortran): update syntax and documentation (#13912)
* runtime (doc): update Fortran section
* runtime(syntax): Complete support for Fortran 2023.
   Minor improvements.

Signed-off-by: Ajit-Thakkar <142174202+Ajit-Thakkar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-24 20:08:34 +01:00
Anton Sharonov
68d9472c65 patch 9.1.0050: Win32 Keyboard handling is sub-optimal
Problem:  Win32 Keyboard handling is sub-optimal and has
          many issues with international keyboards
          (risa2000) (after v8.2.4807)
Solution: soft-rollback the change, allow the user to select
          a suitable key-translation strategy
          (Anton Sharonov)

Read about the details in the help:
    :h w32-experimental-keycode-trans-strategy

fixes: #10615
fixes: #12595
closes: #12752

Signed-off-by: Anton Sharonov <anton.sharonov@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 23:19:02 +01:00
Sean Dewar
1fb4103206 patch 9.1.0049: Make "[Command Line]" a special buffer name
Problem:  E95 is possible if a buffer called "[Command Line]" already
          exists when opening the cmdwin. This can also happen if the
          cmdwin's buffer could not be deleted when closing.

Solution: Un-name the cmdwin buffer, and give it a special name instead,
          similar to what's done for quickfix buffers and for unnamed
          prompt and scratch buffers. As a result, BufFilePre/Post are
          no longer fired when opening the cmdwin. Add a "command" key
          to the dictionary returned by getbufinfo() to differentiate
          the cmdwin buffer instead. (Sean Dewar)

NOTE: This is technically a breaking change... maybe this needs a different
solution? (Or maybe this issue can be ignored...)

A GitHub search reveals some plugins expect the old behaviour. However, many of
those plugins also do not seem to account for the string being translated, so
they are subtly broken anyway (not withstanding the fact that you can call any
old buffer "[Command Line]" too...)

closes: #12819

Signed-off-by: Sean Dewar <seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 22:37:39 +01:00
Sean Dewar
43b395ec2e patch 9.1.0048: Abort opening cmdwin if autocmds screw things up
Problem:  Autocmds triggered from opening the cmdwin (in win_split and
          do_ecmd) can cause issues such as E199, as the current checks
          are insufficient.

Solution: Commands executed from the cmdwin apply to the old curwin/buf,
          so they should be kept in a "suspended" state; abort if
          they've changed. Also abort if cmdwin/buf was tampered with,
          and check that curwin is correct. Try to clean up the cmdwin
          buffer (only if hidden and non-current to simplify things; the
          same approach is used when closing cmdwin normally), and add a
          beep. (Sean Dewar)

It'd be nice to also check that curwin was *really* created by win_split, as
autocommands can change curwin before it returns (so it can't be assumed to be
that of the split); for now, this means that the cmdwin may not be the botwin in
that case, which is probably OK.

closes: #12819

Signed-off-by: Sean Dewar <seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 22:35:05 +01:00
Sean Dewar
988f74311c patch 9.1.0047: issues with temp curwin/buf while cmdwin is open
Problem:  Things that temporarily change/restore curwin/buf (e.g:
          win_execute, some autocmds) may break assumptions that
          curwin/buf is the cmdwin when "cmdwin_type != 0", causing
          issues.

Solution: Expose the cmdwin's real win/buf and check that instead. Also
          try to ensure these variables are NULL if "cmdwin_type == 0",
          allowing them to be used directly in most cases without
          checking cmdwin_type. (Sean Dewar)

Alternatively, we could ban win_execute in the cmdwin and audit all places that
temporarily change/restore curwin/buf, but I didn't notice any problems arising
from allowing this (standard cmdwin restrictions still apply, so things that may
actually break the cmdwin are still forbidden).

closes: #12819

Signed-off-by: Sean Dewar <seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 22:31:55 +01:00
Christian Brabandt
4927110a43 CI: regenerate helptags to fix CI job
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 22:29:47 +01:00
Luca Saccarola
ca0e9823a1 runtime(c): Highlight user defined functions
closes: #13763

Signed-off-by: Luca Saccarola <github.e41mv@aleeas.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 21:34:09 +01:00
Rocco Mao
f96dc8d07f patch 9.1.0046: :drop does not re-use empty buffer
Problem:  :drop does not re-use empty buffer
          (Rocco Mao)
Solution: Make :drop re-use an empty buffer
          (Rocco Mao)

fixes: #13851
closes: #13881

Signed-off-by: Rocco Mao <dapeng.mao@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 21:27:19 +01:00
Christian Brabandt
cc979b49dc patch 9.1.0045: --remote-* does not ignore wilidignore
Problem:  --remote-silent applies the wildignore option
          to each argument, which may result in "E479: No match"
          (hebaronson)
Solution: temporarily reset 'wildignore' setting when building
          the :drop command

closes: #13835

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 21:16:54 +01:00
zeertzjq
e13b665a6e runtime(doc): change "VIsual mode" to "Visual mode" in :h SafeState (#13901)
"Visual mode" is used everywhere else in the help when not referring to
something in the source code.

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 20:39:04 +01:00
Zoltan Arpadffy
4231ad0852 translation(hu): use correct encoding in header of hu po file (#13902)
closes: #13900 

Signed-off-by: Zoltan Arpadffy <zoltan.arpadffy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 20:38:07 +01:00
dkearns
9c5b90db03 runtime(vim): Update syntax file (#13906)
Highlight :2match and :3match and add these to :help ex-cmd-index.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 20:34:28 +01:00
dkearns
50dbe16cd8 runtime(qml): Use shiftwidth() in indent plugin (#13908)
Fixes #13907

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 20:33:32 +01:00
Antonio Giovanni Colombo
7de2b7c891 translation(it): Update Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 19:51:05 +01:00
GI
36e2c0f293 runtime(mail): updated syntax file
Signed-off-by: GI <gi1242@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-23 19:48:08 +01:00
Restorer
459867b631 runtime(doc): improve doc makefiles, add clean rule (#13855)
Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-22 20:42:44 +01:00
Restorer
e8ff5e6df4 runtime(lang): improve makefiles, add clean rule, fix typo (#13856)
Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-22 20:41:47 +01:00
RestorerZ
76ba724e1d patch 9.1.0044: po Makefiles can be improved
Problem:  po Makefiles can be improved
Solution: Improve the style of the Makefiles, update
          Makefile variables, update documentation
          (RestorerZ)

closes: #13858
closes: #13857

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-22 20:38:38 +01:00
Restorer
91155eb31f runtime(tutor): simplify tutor makefiles (#13859)
Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-22 20:25:43 +01:00
Johnothan King
add31baeda runtime(sh): Add handling for ksh93 shared-state comsubs and mksh valsubs (#13884)
This commit adds support for ksh93 shared-state command
substitutions (syntax: ${ command; }) and mksh's value
substitutions (syntax: ${|command;}) in the sh syntax script.

Also add a syntax test for ksh subshares with dumps included
to make sure it doesn't regress.

fixes: #9514

Signed-off-by: Johnothan King <johnothanking@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-22 20:19:54 +01:00
Christian Brabandt
7c71db3a58 patch 9.1.0043: ml_get: invalid lnum when :s replaces visual selection
Problem:  ml_get: invalid lnum when :s replaces visual selection
          (@ropery)
Solution: substitute may decrement the number of lines in a buffer,
          so validate, that the bottom lines of the visual selection
          stays within the max buffer line

fixes: #13890
closes: #13892

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-22 20:12:34 +01:00
Andrea C from The App
3b2c27415d runtime(chuck): include ChucK syntax file (#13895)
Co-authored-by: gacallea <gacallea@users.noreply.github.com>
Signed-off-by: gacallea <gacallea@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-22 20:10:42 +01:00
Billie Cleek
ea9a93e5b0 runtime(go): update Go syntax file (#13896)
Update the Go syntax file with some recent changes made to vim-go.

Signed-off-by: Billie Cleek <bhcleek@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-22 20:08:44 +01:00
dependabot[bot]
1cee50904e CI: Bump actions/cache from 3 to 4 (#13897)
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-22 20:06:01 +01:00
Christian Brabandt
c1884c94c5 patch 9.1.0042: Missing test for Chuck Filetype
Problem:  Missing test for Chuck filetype
          after commit 27a4632af6
          (Christian Clason)
Solution: Add a filetype test

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-21 09:40:22 +01:00
Ivan Pešić
d08e437802 translation(sr): Update Serbian messages translation (#13889)
Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-19 23:31:39 +01:00
Christian Brabandt
27a4632af6 runtime(filetype): detect *.ck files as Chuck filetype (#13888)
closes #13886

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-19 23:30:34 +01:00
Kuratius
7062be1312 patch 9.1.0041: xxd -i may generate incorrect C statements
Problem:  xxd -i may generate incorrect C statements
          (Kuratius)
Solution: xxd: Make size type returned by -i option compatible
          with C standard by using type size_t instead of
          unsigned int (Kuratius)

Also change affected tests to now correctly expect size_t's

fixes: #13876
closes: #13880

Signed-off-by: Kuratius <Kuratius@gmx.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-17 22:34:51 +01:00
Christian Brabandt
f942db2557 runtime(man): man on AIX does not understand -l
fixes: #13847

Co-authored-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-17 21:55:41 +01:00
James Eapen
46d67d22b9 runtime(swayconfig): add focus_follows_mouse and smart_qaps syntax keywords
See:
0aceff7469/sway/sway.5.scd (L680)
`focus_follows_mouse yes|no|always`
0aceff7469/sway/sway.5.scd (L770)

closes: #13797

Signed-off-by: James Eapen <james.eapen@vai.org><author>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-17 21:43:31 +01:00
James Eapen
a39af02904 runtime(i3config): remove always from focus_follows_mouse
The always option does not exist in i3, only sway.

From https://i3wm.org/docs/userguide.html:
`focus_follows_mouse yes|no`

Version number incremented by 2 because the last commit did not
increment the version.

Signed-off-by: James Eapen <james.eapen@vai.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-17 21:43:12 +01:00
MiguelBarro
6e5a6c9965 runtime(netrw): minor changes to fix move cmd on windows (#13823)
Signed-off-by: GuyBrush <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-17 21:35:36 +01:00
zeertzjq
f267847017 patch 9.1.0040: issue with prompt buffer and hidden buffer
Problem:  Modifying a hidden buffer still interferes with prompt buffer
          mode changes.
Solution: Save and restore b_prompt_insert.
          (zeertzjq)

closes: #13875

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Modifying hidden buffer still interferes with prompt buffer mode changes
2024-01-17 21:22:59 +01:00
zeertzjq
6a8d2e1634 patch 9.1.0039: too vague errors for 'listchars'/'fillchars'
Problem:  too vague errors for 'listchars'/'fillchars'
Solution: Include the field name in error message.
          (zeertzjq)

related: neovim/neovim#27050
closes: #13877

Co-authored-by: Cole Frankenhoff <cole.nhf@gmail.com>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-17 21:07:08 +01:00
zeertzjq
4ea37f88e8 patch 9.1.0038: Unnecessary loop in getvcol()
Problem:  Unnecessary loop in getvcol().
Solution: Compare next char position with pos->col directly.
          (zeertzjq)

The loop below already handles end of line before checking for posptr,
and the next char is after pos->col whether pos->col is at the start or
in the middle of the char in question, so neither the NUL check nor the
mb_head_off() are needed when comparing the position of the next char
with pos->col directly.

closes: #13878

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-17 20:52:13 +01:00
zeertzjq
5b0722b864 patch 9.1.0037: Calling get_breakindent_win() repeatedly when computing virtcol
Problem:  Calling get_breakindent_win() repeatedly when computing
          virtual column, and get_breakindent_win() does a STRCMP() on
          the whole line since patch 9.0.0016.
Solution: Cache the result, since the line doesn't change.
          (zeertzjq)

closes: #13879

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-17 20:42:53 +01:00
John Marriott
73e16c7406 patch 9.1.0036: MS-Windows: Warning about unused variable
Problem:  MS-Windows: Warning about unused variable
          (after 9.1.0030, John Marriott)
Solution: Adjust #ifdef and test for HAVE_TGETENT
          (John Marriott)

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-17 20:19:10 +01:00
Maxim Kim
211211052d runtime(odin): include ftplugin, syntax and indent script (#13867)
Note for Neovim Contributors: this is bundled as Vim9 Script. If you want to use this on Neovim, you need to convert the Vim9 scripts to Vim Script or Lua or leave it out.

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-16 17:33:51 +01:00
altermo
7d711fe209 patch 9.1.0035: i_CTRL-] triggers InsertCharPre
Problem:  i_CTRL-] triggers InsertCharPre
Solution: Return if CTRL-] is received. InsertCharPre
          is supposed to be only used for chars to be inserted
          but i_CTRL-] triggers expansion and is not inserted
          into the buffer (altermo)

closes: #13853
closes: #13864

Signed-off-by: altermo
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-16 17:25:17 +01:00
Christian Brabandt
ac4cffc6d9 patch 9.1.0034: Window scrolls unexpectedly when 'scrollbind' is set
Problem:  Window may unexpectedly scroll when 'scrollbind' is set
          and setting a buffer-local option using setbufvar()
          (Boris Staletic)
Solution: Save and restore the windows topline before opening the
          popup window.

fixes: #13863
closes: #13869

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-16 17:22:38 +01:00
zeertzjq
96958366ad patch 9.1.0033: Insert mode not stopped if closing prompt buffer modifies hidden buffer
Problem:  Insert mode not stopped if an autocommand modifies a hidden
          buffer while closing a prompt buffer.
Solution: Don't set b_prompt_insert if stop_insert_mode is already set.
          (zeertzjq)

closes: #13872

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-16 17:21:04 +01:00
Ken Takata
1a9aba8ad4 patch 9.1.0032: MS-Windows installer misses keymaps
Problem:  MS-Windows installer misses keymaps
          (Maxim Kim)
Solution: Include keymaps in the installer archive
          (Ken Takata)

fixes: vim/vim-win32-installer#331
closes: #13871

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-16 17:14:29 +01:00
Christian Brabandt
4afda3307d patch 9.1.0031: Link Error on Windows
Problem:  Link Error on Windows
Solution: Add ifdef HAVE_TGETENT for term_strings_not_set()

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-15 22:52:49 +01:00
Ajit-Thakkar
ef79c57837 runtime(fortran): update fortran syntax (#13870)
Support most remaining features of Fortran 2018/2023
Small improvements to folding etc,
Code cleanup: use \? instead of mix of \= and \?

Signed-off-by: Ajit-Thakkar <142174202+Ajit-Thakkar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-15 22:42:03 +01:00
Christian Brabandt
9c58191b34 CI: regenerate helptags, fix ci help tags job failing
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-15 22:39:54 +01:00
PMunch
a606f3ac03 patch 9.1.0030: Cannot use terminal alternate font
Problem:  Cannot use terminal alternate fonts (PMunch)
Solution: Support terminal alternate fonts using
          CSI SGR 10-20 and t_CF code (PMunch)

Add support for alternate font highlighting

This adds support for alternate font highlighting using CSI SGR 10-20.
Few terminals currently support this, but with added tool support this
should improve over time. The change here is more or less taken from how
colors are configured and applied, but there might be some parts I
missed while implementing it. Changing fonts is done through the new
`:hi ctermfont` attribute which takes a number, 0 is the normal font, and
the numbers 1-9 select an "alternative" font. Which fonts are in use is
up to the terminal.

fixes: #13513
closes: #13537

Signed-off-by: PMunch <peterme@peterme.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-15 22:27:35 +01:00
Yegappan Lakshmanan
eb3475df0d runtime(doc): Replace non-breaking space with normal space (#13868)
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-15 20:08:25 +01:00
Doug Kearns
93197fde0f runtime(ftplugin): Use "*" browsefilter pattern to match "All Files"
Problem:  The "*.*" browsefilter pattern only matches all files on
	  Windows (Daryl Lee)
Solution: Use "*" to filter on all platforms but keep "*.*" as the label
	  text on Windows. (Fixes #12685, Doug Kearns)

The *.* browsefilter pattern used to match "All Files" on Windows is a
legacy of the DOS 8.3 filename wildcard matching algorithm.  For reasons
of backward compatibility this still works on Windows to match all
files, even those without an extension.

However, this pattern only matches filenames containing a dot on other
platforms.  This often makes files without an extension difficult to
access from the file dialog, e.g., "Makefile"

On Windows it is still standard practice to use "*.*" for the filter
label so ftplugins should use "All Files (*.*)" on Windows and "All
Files (*)" on other platforms.  This matches Vim's default browsefilter
values.

This commit also normalises the browsefilter conditional test to check
for the Win32 and GTK GUI features and an unset b:browsefilter.

closes: #12759

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-14 21:02:54 +01:00
Danek Duvall
d7d560374b patch 9.1.0029: Cannot act on various terminal response codes
Problem:  Cannot act on various terminal response codes
Solution: Add the TerminalResponseAll autocommand
          (Danek Duvall)

closes: #13829

Signed-off-by: Danek Duvall <duvall@comfychair.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-14 20:19:59 +01:00
GuyBrush
1f13fcc934 patch 9.1.0028: win32: Ctrl-D cannot be used to close a pipe
Problem:  win32: Ctrl-D cannot be used to close a pipe
Solution: Properly detect Ctrl-D when reading from a pipe
          (GuyBrush)

Enabling Ctrl-D for gvim pipeline input
and apply defensive programming on account of PR #12752
so that once PR 12752 is merged, CTRL-D will keep on working

closes: #13849

Signed-off-by: GuyBrush <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-14 20:08:40 +01:00
Christian Brabandt
8102a4c463 CI: Check help tags for errors (duplicates, missing, etc) (#13865)
- Run the doc make html awk script, which also checks, that all
  referenced help tags exists.
- Run the doc maketags awk script, which checks for duplicates
- in case of any error in the previous two steps, exit the CI with
  an error and show the errors.log file, that is generated by the
  previous 2 steps

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-14 19:24:05 +01:00
errael
c92b8bed1f runtime(help): delete duplicate help tag E741 (#13861)
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-14 19:11:07 +01:00
Ernie Rael
e79e207760 patch 9.1.0027: Vim is missing a foreach() func
Problem:  Vim is missing a foreach() func
Solution: Implement foreach({expr1}, {expr2}) function,
          which applies {expr2} for each item in {expr1}
          without changing it (Ernie Rael)

closes: #12166

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-13 11:47:33 +01:00
Ken Takata
d8cb1ddab7 patch 9.1.0026: win32: Windows default font lacking
Problem:  win32: Windows default font lacking (@clach04)
Solution: Improve default font (Ken Takata)

win32: Improve default font

Currently, Fixedsys is the default font on Windows.
It is not suitable for recent High DPI environments.

* Change the default font to Consolas.
* Allow to change the default font by the translation message. E.g.:
  ```
  msgid "DefaultFontNameForWindows"
  msgstr "Courier New"
  ```

fixes: #12919
closes: #13266

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-12 18:12:04 +01:00
dundargoc
dc4c37b9d5 patch 9.1.0025: A few typos in tests and justify.vim
Problem:  A few typos in tests and justify.vim
Solution: fix them

closes: #13848

Signed-off-by: dundargoc <gocdundar@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-12 18:02:10 +01:00
Igor Todorovski
497e5282b6 patch 9.1.0024: z/OS (MVS) support can be improved
Problem:  z/OS (MVS) support can be improved
Solution: set UTF-8 as the default encoding for z/OS

closes: #13821

Signed-off-by: Igor Todorovski <itodorov@ca.ibm.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-12 17:59:18 +01:00
Igor Todorovski
48a75f3dfb patch 9.1.0023: xxd: few problems with EBCDIC for z/OS (MVS)
Problem:  xxd: few problems with EBCDIC for z/OS (MVS)
Solution: Fix xxd build and support ASCII and UTF-8 on z/OS (MVS)
          natively, add MVS guard checks with __CHARSET_LIB,
          support $LIBS in the Makefile
          (Igor Todorovski)

related: #13821

Signed-off-by: Igor Todorovski <itodorov@ca.ibm.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-12 17:53:18 +01:00
Christian Brabandt
49471963fe patch 9.1.0022: Coverity complains about improper use of negative value
Problem:  Coverity complains about improper use of negative value
Solution: Add a condition to validate that keytyped is larger or equal
          to 0

Apparently patch 9.1.0006 made it more explicit for Coverity, that the
TOLOWER_LOC() macros do not handle negative values properly. However,
that condition has always been there even before that, so add a
condition to verify that keytyped is indeed at least 0

closes: #13824

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-12 17:48:08 +01:00
zeertzjq
424ec1f235 patch 9.1.0021: i_CTRL-R- doesn't work for multibyte chars in Replace mode
Problem:  i_CTRL-R- doesn't work for multibyte chars in Replace mode,
          Coverity complains missing return value for u_save_cursor()
Solution: Use mb_charlen() and del_chars() instead, handle failure mode
          for u_save_cursor() correctly (@zeertzjq)

closes: #13846

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-12 17:43:05 +01:00
Yegappan Lakshmanan
4f32c83a77 patch 9.1.0020: Vim9: cannot compile all methods in a class
Problem:  Vim9: cannot compile all methods in a class
Solution: Support compiling all the methods in a class using :defcompile
          (Yegappan Lakshmanan)

closes: #13844

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-12 17:41:09 +01:00
Christian Brabandt
8610f74382 patch 9.1.0019: cmdline may disappear when changing 'cmdheight'
Problem:  cmdline may disappear when changing 'cmdheight'
          (after Patch 9.0.0190, @markonm)
Solution: always re-calculate the old_p_ch value, not only
          when cmdline_row was higher than expected

fixes: #13822
closes: #13826

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-12 17:34:40 +01:00
Ken Takata
b52600d561 patch 9.1.0018: use of #if instead of #ifdef
Problem:  use of #if instead of #ifdef
Solution: use correct form of #ifdef

`#if FEAT_GUI_HAIKU` was used mistakenly. Use the correct form
`#ifdef FEAT_GUI_HAIKU` instead.

closes: #13843

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-12 17:31:07 +01:00
K.Takata
2357765304 runtime(netrw): Decode multibyte percent-encoding filename correctly (#13842)
Use `printf("%c")` instead of `nr2char()` to handle '%xx' as a byte.

Close #13787

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-12 17:30:01 +01:00
Yegappan Lakshmanan
28d71b566a patch 9.1.0017: [security]: use-after-free in eval1_emsg()
Problem:  use-after-free in eval1_emsg() when an empty
          line follows a lambda (by @yu3s)
Solution: only set evalarg->eval_using_cmdline = FALSE when
          the *arg pointer is not null

fixes: #13833
closes: #13841

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-12 17:27:02 +01:00
K.Takata
71d0ba07a3 runtime(netrw): Sync with netrw 174b (#13836)
* Import netrw v174b
* Revert unwanted changes
* Fix indent
* Revert some changes
* Update tags
* Break long line

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-09 19:21:05 +01:00
Maxim Kim
5f4cc8ea65 runtime(colorschemes): Add initial support for Added/Removed/Changed highlight groups (#13830)
For some of the colorschemes where diffAdded and diffRemoved were explicitly set up.

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-08 20:14:04 +01:00
Christian Brabandt
3a5b3df776 runtime(tar): fix a few problems with the tar plugin
From: #138331:
  - Updating .tar.zst files was broken. Fixes #12639.
  - Extracting files from .tar.zst / .tzs files was also broken and
    works now.
From: #12637:
  - Fixes variable assignment and typo
From: #8109:
  - Rename .tzs to the more standard .tzst

fixes: #12639
fixes: #8105
closes: #8109
closes: #12637
closes: #13831

Co-authored-by: Martin Rys <martin@rys.pw>
Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Co-authored-by: Carlo Teubner <carlo@cteubner.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-08 20:02:14 +01:00
Maxim Kim
ceed36873e runtime(vim): accept dot in completionList for Vim9 syntax (#13832)
if you have autoloaded command complete function in vim9script, it shouldn't be highlighted as Error:

```
import autoload "share.vim"
command! -range=% -nargs=? -complete=custom,share.Complete Share share.Paste(<q-args>, <line1>, <line2>)
```

`share.Complete` is a valid complete function.

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-08 19:42:02 +01:00
Romain Lafourcade
124371c5a1 patch 9.1.0016: default diff highlighting is too noisy
Problem:  default diff highlighting is too noisy
Solution: Link diff highlighting groups to new
          Added/Removed/Changed, revert previous change
          (Romain Lafourcade)

Remove diff* links added in #13776 and doc added in commit b1392be

The links added in #13776 are way too noisy for the contexts in which
the `diff` syntax is applied (git commits, patches, etc.).

This commit:

- removes those links
- adds new default highlighting groups Added, Changed and
  Removed
- links the diff highlighting groups to those new defaults
- removes the doc changes
- adjusts the syntax_completion test for those newly added group
  names

Note: Changes to the default color schemes will be handled separately,
by adding links to those newly created Added/Removed/Changed
highlighting groups.

related: #13776
closes #13825

Signed-off-by: Romain Lafourcade <romain.lafourcade@razorfish.fr>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-07 23:32:19 +01:00
Aliaksei Budavei
b21499537f runtime(doc): Improve the documentation for Vim9 classes (#13828)
* Emend textual typos
* Emend syntactic errors in examples
* Acknowledge no support for abstract static methods
* Acknowledge the non-ubiquity of instance qualification

"This" was never allowed in method declarations, e.g.:
    class A
        def this.M()
        enddef
    endclass

and, since patch 9.0.2167, "this" can no longer be used in field
declarations, e.g.:
    class B
        var this.f: string
    endclass

* Recognise abstract child classes
* Reword an ambiguous turn of phrase

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-07 15:52:10 +01:00
Christian Brabandt
5d5cbb2b9a patch 9.1.0015: i_CTRL-R- no longer works in replace mode
Problem:  i_CTRL-R- no longer works in replace mode
Solution: delete characters in replace mode before putting, add a test,
          add a bit warning into the documentation, that i_CTRL-R-P/O
          is not supported in Replace mode for now

fixes: #13792
closes: #13816

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-05 18:19:52 +01:00
zeertzjq
b1ed7ec9f7 patch 9.1.0014: incorrect use of W_WINROW in edit.c
Problem:  incorrect use of W_WINROW in edit.c
Solution: compare against curwin->w_height instead

Remove incorrect use of W_WINROW

In structs.h it is mentioned that w_wrow is relative to w_winrow, so
using W_WINROW doesn't make sense when comparing with window height.

This change won't lead to any observable behavior change:

The condition intends to check if there are 'scrolloff' lines between
the current cursor when the bottom of the window. When W_WINROW(curwin)
is added to curwin->w_height - 1 - get_scrolloff_value(), the condition
is instead satisfied when the cursor is on some screen line below that
position. However,
- If 'scrolloff' is smaller than half the window height, this condition
  can only be satisfied when W_WINROW(curwin) == 0. And if it is not
  satisfied, update_topline() does the actual scrolling.
- If 'scrolloff' is larger than half the window height, update_topline()
  will put the cursor at the center of the window soon afterwards
  anyway, because set_topline() now unsets VALID_TOPLINE flag starting
  from 7db7bb45b0.

To put it in another way, 7db7bb45b0
makes the update_topline() just below correct the mistakes made in this
block, so this incorrect use of W_WINROW() no longer affects observable
behavior.

closes: #12331

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-05 18:11:43 +01:00
Doug Kearns
68a8947069 patch 9.1.0013: Modula2 filetype support lacking
Problem:  Modula2 filetype support lacking
Solution: Improve the Modula-2 runtime support, add additional modula2
          dialects, add compiler plugin, update syntax highlighting,
          include syntax tests, update Makefiles (Doug Kearns)

closes: #6796
closes: #8115

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Benjamin Kowarsch <trijezdci@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-05 17:59:04 +01:00
Maxim Kim
3779516988 patch 9.1.0012: regression with empty inner blocks introduced
Problem:  regression with empty inner blocks introduced
          (after v9.1.0007)
Solution: Set correct cursor position, Check for visual mode
          being active (Maxim Kim)

relates: #13514
closes: #13819

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-05 17:52:49 +01:00
K.Takata
7b7672d5ca runtime(doc): Fix typos in version9.txt (#13817)
Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-05 17:47:01 +01:00
Lifepillar
963fd7d6e5 runtime(doc): Fix typos in reltime() help. (#13818)
Signed-off-by: Lifepillar <lifepillar@lifepillar.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-05 17:44:57 +01:00
dkearns
c79646dfb1 runtime(vim): Update syntax file (#13671)
Support multiline :syntax commands.

Match :syn-cchar option in :syn-{keyword,region}.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-04 22:58:48 +01:00
Christian Brabandt
d2cc51f9a1 patch 9.1.0011: regexp cannot match combining chars in collection
Problem:  regexp cannot match combining chars in collection
Solution: Check for combining characters in regex collections for the
          NFA and BT Regex Engine

Also, while at it, make debug mode work again.

fixes #10286
closes: #12871

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-04 22:54:08 +01:00
Doug Kearns
81642d9d6f patch 9.1.0010: Keymap completion is not available
Problem:  Keymap completion is not available
Solution: Add keymap completion (Doug Kearns)

Add keymap completion to the 'keymap' option, user commands and builtin
completion functions.

closes: #13692

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-04 22:37:44 +01:00
Yegappan Lakshmanan
f93b1c881a patch 9.1.0009: Cannot easily get the list of matches
Problem:  Cannot easily get the list of matches
Solution: Add the matchstrlist() and matchbufline() Vim script
          functions (Yegappan Lakshmanan)

closes: #13766

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-04 22:28:46 +01:00
Christian Brabandt
30994d686c patch 9.1.0008: NSIS installer includes syntax testdir
Problem:  NSIS installer includes syntax test dumps
          (Yegappan Lakshmanan)
Solution: Exclude syntax/testdir when creating the NSIS installer

fixes: vim/vim-win32-installer#328
closes: #13814

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-04 22:14:28 +01:00
Christian Brabandt
ad4d7f446d patch 9.1.0007: can select empty inner text blocks
Problem:  can select empty inner text blocks
          (laurentalacoque)
Solution: make selecting empty inner text blocks an error

textobjects: Make selecting inner empty blocks an error

fixes: #13514
closes: #13523

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-04 22:11:33 +01:00
Keith Thompson
184f71cc68 patch 9.1.0006: is*() and to*() function may be unsafe
Problem:  is*() and to*() function may be unsafe
Solution: Add SAFE_* macros and start using those instead
          (Keith Thompson)

Use SAFE_() macros for is*() and to*() functions

The standard is*() and to*() functions declared in <ctype.h> have
undefined behavior for negative arguments other than EOF.  If plain char
is signed, passing an unchecked value from argv for from user input
to one of these functions has undefined behavior.

Solution: Add SAFE_*() macros that cast the argument to unsigned char.

Most implementations behave sanely for negative arguments, and most
character values in practice are non-negative, but it's still best
to avoid undefined behavior.

The change from #13347 has been omitted, as this has already been
separately fixed in commit ac709e2fc0
(v9.0.2054)

fixes: #13332
closes: #13347

Signed-off-by: Keith Thompson <Keith.S.Thompson@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-04 21:19:04 +01:00
Zoltan Arpadffy
4d8cb683b1 patch 9.1.0005: OpenVMS does not support python3 and xterm_save
Problem:  OpenVMS build does not support python3 and xterm_save
Solution: Enable python3 + xterm_save feature, fix style issues
          (Zoltan Arpadffy)

closes: #13812

Signed-off-by: Zoltan Arpadffy <zoltan.arpadffy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-04 21:05:18 +01:00
Ajit-Thakkar
d94ca966ca runtime(fortran): syntax and documentation updates (#13811)
closes: #13802

Signed-off-by: Ajit-Thakkar <142174202+Ajit-Thakkar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-03 19:58:21 +01:00
Gregory Anders
83ad2726ff patch 9.1.0004: reloading colorscheme when not changing 'background'
Problem:  reloading colorscheme when not changing 'background'
Solution: Check, if the background option value actually changed,
          if not, return early.

Only reload colorscheme when bg is changed

Currently the highlight groups are re-initialized and the colorscheme
(if any) is reloaded anytime 'background' is set, even if it is not
changed. This is unnecessary, because if the value was not changed then
there is no need to change highlight groups or do anything with the
colorscheme. Instead, only reload the colorscheme if the value of
'background' was actually changed.

closes: #13700

Signed-off-by: Gregory Anders <greg@gpanders.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-03 19:53:59 +01:00
Isao Sato
443657b32b patch 9.1.0003: Cannot build against Ruby 33 dynamically
Problem:  Cannot build against Ruby 33 dynamically
Solution: Ruby 33 removed transient heap, so do not use
          rb_ary_transient anymore, NoMethodError format changed,
          so update test for expected error message
          (Isao Sato)

- ruby-3.3 removed transient heap for ruby/dyn

when +ruby/dyn with ruby-3.3 do command :ruby, E448 occur.
ruby-3.3 has no transient heap anymore, so disable rb_ary_transient etc.

$ LC_ALL=C VIMRUNTIME=runtime ./src/vim -u NONE -c 'ruby puts RUBY_VERSION'
"=> Error detected while processing command line:
"=> E448: Could not load library function rb_ary_detransient
"=> E266: Sorry, this command is disabled, the Ruby library could not be
    loaded.

- ruby-3.3 changed NoMethodError format:

$ rvm 3.2.2, 3.3.0-rc1 do ruby -e 'begin; nil.name; rescue => e; puts "%s : %s"%[RUBY_VERSION, e.message]; end '
=> 3.2.2 : undefined method `name' for nil:NilClass
=> 3.3.0 : undefined method `name' for nil

so loose pattern in Test_ruby_Vim_buffer_get()

closes: #13741

Signed-off-by: Isao Sato <svardew@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-03 19:46:42 +01:00
Shota Nozaki
0689b87059 patch 9.1.0002: a closing fold expr, may start a new fold
Problem:  a closing fold expression may unexpectedly start a new fold
          when it should end a fold
          (reported by Shota Nozaki)
Solution: if a fold hasn't started yet, do not immediately
          start a new fold with level 1
          (Shota Nozaki)

fixes: #12768
closes: #13748

Signed-off-by: Shota Nozaki <emonkak@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-03 19:18:43 +01:00
Sean Dewar
bf44b69d1f patch 9.1.0001: when closing window, wincmd p may fail
Avoid `prevwin == curwin` when closing `curwin`

Problem:  When closing the current window (or when moving it to a tabpage), the
          previous window may refer to the new current window
          (`winnr() == winnr('#')`) if that window is selected as the
          new current window.

Solution: Set `prevwin = NULL` when switching away from an invalid `curwin` and
          the target window was the `prevwin`.
          (Sean Dewar)

related: #4537
closes: #13762

Signed-off-by: Sean Dewar <seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-03 19:07:21 +01:00
Hugo van de Vliert
b5352931b3 runtime(vim): add jumpoptions to syntax file (#13808)
* Add jumpoptions and jop to vim syntax file
* Clean up some whitespace

Signed-off-by: Hugo van de Vliert <hugo.vandevliert@floryn.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-03 18:03:29 +01:00
Christian Brabandt
b1392bee70 runtime(doc): document that the diff filetype uses Diff hl groups
related: #13776

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-03 18:01:45 +01:00
dezza
80beeef0c6 runtime(vim): Add support for <ScriptCmd> syntax (#10686)
Adding `<ScriptCmd>` to list of angle-bracket notation syntax, just like `<Cmd>`

`<Cmd>` is already highlighted.
```vim
nnoremap <leader>o <Cmd>Oldfiles()<CR>
```

`<ScriptCmd>` is not.

Signed-off-by: dezza <402927+dezza@users.noreply.github.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-03 16:20:22 +01:00
Brad King
d4634a26cd runtime(vim): Add support for syntax foldlevel command (#6182)
Signed-off-by: Brad King <brad.king@kitware.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-03 16:17:24 +01:00
Christian Brabandt
b4ddc6c11e patch 9.1.0000: Vim 9.1 release
Problem:  Need a new release
Solution: Release Vim 9.1

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-02 16:51:11 +01:00
Christian Brabandt
6c1afa3d0b runtime(doc): add missing help tags
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-01 20:50:51 +01:00
Christian Brabandt
34d15155fc runtime(menu): regenerate synmenu
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-01 20:28:12 +01:00
Christian Brabandt
6a950da86d patch 9.0.2190: proto files need update
Problem:  proto files need update
Solution: re-generate them

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-01 20:19:09 +01:00
Christian Brabandt
10b4f75d4c runtime(dist/ft): improve filetype detection for *.v (V/Verilog/Coq)
Patch provided by Dan Alt

closes: #13793

Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-01 19:19:20 +01:00
Lucien Grondin
b16fc98055 runtime(sh): Update sh syntax and add local keyword for bash (#13806)
add `local` in shStatement

Signed-off-by: Lucien Grondin <grondilu@yahoo.fr>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-01 19:00:41 +01:00
dkearns
d08059ab48 runtime(ruby): Update ftplugin and omni-complete (#13805)
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-01 18:58:57 +01:00
Christian Brabandt
0ede5e361f runtime(doc): Update Version9.txt for release 9.1 (#13804)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-01 18:56:52 +01:00
Yegappan Lakshmanan
74512e0ad0 runtime(doc): Add help tags to items in version9.txt (#13801)
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-30 10:40:25 +01:00
Christian Brabandt
d36f590d41 translation(de): Updated German translation (#13796)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-29 16:34:04 +01:00
Emir SARI
5528a72937 translation(tr): Improve Turkish documentation (#13800)
Signed-off-by: Emir SARI <emir_sari@icloud.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-29 16:30:40 +01:00
Ajit-Thakkar
d96f25bd69 runtime(fortran): update syntax and documentation (#13784)
* Update Fortran section of indent.txt
* Small addition to fortran syntax

Signed-off-by: Ajit-Thakkar <142174202+Ajit-Thakkar@users.noreply.github.com>
Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>

* Update Fortran section of syntax.txt

* Runtime (Fortran)

Fix regression

* Combine two expressions
2023-12-29 16:29:43 +01:00
zeertzjq
7e4f62a257 patch 9.0.2189: Wrong display with 'briopt=sbr' and 'nobreakindent'
Problem:  Wrong display when 'breakindentopt' contains "sbr" and
          'showbreak' and 'nobreakindent' are set.
Solution: Always reset wlv->need_showbreak regardless of the values of
          'breakindent' and 'showbreak', as they aren't checked when
          setting wlv->need_showbreak (zeertzjq)

closes: #13785

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-28 23:19:52 +01:00
Tim Pope
715a805889 runtime(cucumber): Updates to indent and syntax 2023-12-28 23:17:54 +01:00
Tim Pope
244f01658f runtime(markdown): Fix folding of code blocks 2023-12-28 23:17:54 +01:00
Tim Pope
a907c91992 runtime(sass): Provide sass_recommended_style option 2023-12-28 23:17:54 +01:00
Tim Pope
fda02d03c0 runtime(gitcommit): Updates to ftplugin and syntax 2023-12-28 23:17:54 +01:00
Tim Pope
757714c0cb runtime(git): Make diffs foldable 2023-12-28 23:17:54 +01:00
Tim Pope
48ddc6a6f8 runtime(git): Add small ftplugin 2023-12-28 23:17:54 +01:00
Zoltan Arpadffy
0efa58184b translation(hu): add Hungarian translation (#13782)
* add Hungarian translation
* Add hu.po to the Make_all file

Signed-off-by: Zoltan Arpadffy <zoltan.arpadffy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-28 23:15:19 +01:00
Restorer
9f239f169a translation(ru): Updated Russian translation (#13788)
Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-28 23:13:10 +01:00
Restorer
53860eb9ce runtime(Filelist): remove coveralls, move runtime/lang/Make_mvc.mak (#13790)
- File coveralls.yml removed from $(SRC_ALL),  in patch 9.0.1752 (#12851)
- runtime/lang/Make_mvc.mak moved from $(LANG_DOS) to $(RT_DOS)

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-28 23:11:48 +01:00
Aliaksei Budavei
0aed99abf7 runtime(doc): correct the :public example (#13795)
The current example is no longer supported (E1331), as of
patch 9.0.2167.

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-28 23:08:24 +01:00
Restorer
86fcada95b translation(ru): adjust tutor/README.ru.utf-8.txt (#13789)
Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-28 23:06:38 +01:00
Antonio Giovanni Colombo
7d0abf2cb6 translation(it): Update Italian translations
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-27 19:45:02 +01:00
Christian Brabandt
d1cea03646 runtime(elixir): missing undo_ftplugin for indentkeys
fixup after #13771

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-27 19:30:41 +01:00
Gary Johnson
9e6549d2fb patch 9.0.2188: cursor wrong after { in single line buffer
Problem:  cursor wrong after { in single line buffer
          (Edwin Chan)
Solution: do not place the cursor at the end for a single
          line buffer when moving backwards
          (Gary Johnson)

closes: #13780
closes: #13783

Signed-off-by: Gary Johnson <garyjohn@spocom.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-27 19:12:43 +01:00
zeertzjq
23627722d3 patch 9.0.2187: Visual not drawn with 'breakindent' when line doesn't fit
Problem:  Visual selection isn't drawn with 'breakindent' when the line
          doesn't fit in the window (Jaehwang Jung)
Solution: Adjust wlv->fromcol also for 'breakindent' (zeertzjq)

closes: #13767
closes: #13768

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-27 19:08:53 +01:00
errael
92feeaffc2 runtime(doc): add help tag multiple-constructors. (#13772)
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-27 19:07:09 +01:00
George Guimarães
7e27411007 runtime(elixir): fix indentation (#13771)
Signed-off-by: George Guimarães <george.guimaraes@gmail.com>
Signed-off-by: Mitchell Hanberg <mitch@mitchellhanberg.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-27 19:06:05 +01:00
KSR-Yasuda
a03647acc3 runtime(mermaid): Syntax fix (#13774)
* runtime(mermaid): Fix arrow syntax
* runtime(mermaid): Disable syntax for identifier to avoid false match
* runtime(mermaid): Add some C++ type syntax highlight
* runtime(mermaid): Update last change time in header

Signed-off-by: yasuda <yasuda@kyoto-sr.co.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-27 19:02:35 +01:00
Saleem Abdulrasool
38bea30f53 patch 9.0.2186: LTCG compile error ARM64 for write_chars
Problem:  LTCG compile error on Win/ARM64 for `write_chars()`
Solution: Explicitly initialise the storage to use data rather than BSS
          (Saleem Abdulrasool)

win32: add a workaround for a LTCG issue on Windows ARM64

It appears that the implicit initialisation which would push `g_coords`
into BSS causes an aliasing issue with LTCG on ARM64.  By explicitly
initialising the value, we use usual data storage but prevent the
aliasing.  This allows the console version of VIM to run on Windows
ARM64 again.

fixes:  #13453
closes: #13775

Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-27 18:57:12 +01:00
Christian Brabandt
65672ae118 runtime(doc): clarify behaviour of ]m and ]M motions
In particular remove the sentence, that a missing '{'
(for ]m) or '}' (for ]M) after the cursor is an error, since
currently this is not treated as an error.

fixes: #13777

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-27 18:55:53 +01:00
Evgeni Chasnovski
00b470052b runtime(diff): Update default links (#13776)
Problem: Current default links for `diffAdded`, `diffChanged`, and
              `diffRemoved` do not address the diff nature of the filetype.
Solution: Use `DiffAdd`, `DiffChange`, and `DiffDelete`.

closes: #13759

Signed-off-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-27 18:51:43 +01:00
Lifepillar
0bca4a0018 runtime(context): update ConTeXt keywords and other minor fixes (#13778)
Update to the ConTeXt runtime files. Changes:

1. shared syntax files updated with `mtxrun --script interface --vim`
   using the latest ConTeXt LMTX.

2. fixed reference to `make` tag in the help file.

3. added `keepend` to mitigate issues with embedded Lua syntax (see
   below).

4. the latest revision date of each ConTeXt runtime file has been
   updated to the date of this commit.

The issue about embedded Lua was reported by a user:

>Take the following valid ConTeXt file:

>   \starttext
>   \ctxlua{context("Text generated from Lua.")}
>   \ctxlua{context("Another text generated from Lua.")}
>   \stoptext

>On my Vim installation (including when I start Vim with `--clean`), the
>closing bracket and curly braces on line 2 are highlighted red and the
>syntax highlighting after that is off.

>I was trying to dig a little bit into what was going on, using the
>`synID()` and `synIDattr()` functions. It appears that the closing
>bracket on line 2 is matched as a `luaParentError` instead of the end
>of the `luaParen` region. Therefore, the `luaParen` region continues
>all the way to the end of the file. The closing curly brace on line
>2 is matched as a `luaError`, the 2nd `\ctxlua` on line 3 as
>`luaParen`, etc.

>This issue doesn't occur in a plain Lua file, where the closing bracket
>is correctly matched as the end of the `luaParen` region. So it seems
>that something goes wrong when the Lua syntax file is included in the
>ConTeXt one.

By adding `keepend`, the right parenthesis for some reason is still
highlighted as a `luaParenError`, but at least the right curly brace
should correctly end the Lua block.

From what I've seen, I think it is very difficult to embed Lua syntax
properly without help from the Lua syntax file (that is, without
patching it). It has global rules such as:

   syn match  luaParenError ")"
   syn match  luaError "}"

which make it difficult, if not impossible, to contain Lua syntax
without `keepend` (and its limitations).


Signed-off-by: Lifepillar <lifepillar@lifepillar.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-27 18:49:50 +01:00
errael
cea3dac76e runtime(doc): Add variable categories and null related documentation(#13750)
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-25 10:31:23 +01:00
Jakson Alves de Aquino
9042bd8b09 runtime(r): Update R runtime files and docs (#13757)
* Update R runtime files
- Fix indentation issue with ggplot().
- Setlocal autoindent in indent/r.vim.
- New syntax option: rmd_include_latex.
- Clear syn iskeyword to recognize _ as keyword.
- Document some options.
- remove the test has("patch-7.4.1142")
- Update changed date of doc files

Signed-off-by: Jakson Alves de Aquino <jalvesaq@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org
2023-12-25 10:22:27 +01:00
Anatolii Sakhnik
377372ed5b translation(ua): Update Ukrainian translation (#13760)
Signed-off-by: Anatolii Sakhnik <sakhnik@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-25 10:19:25 +01:00
Christian Brabandt
6b9492e299 patch 9.0.2185: Coverity complains about not checking return value
Problem:  Coverity complains about not checking return value
          in compare_isn_not_values (after 9.0.2184)
Solution: cast return value to "(void)" to make intention clear

closes: #13751

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-24 11:14:37 +01:00
Ernie Rael
4e28631f91 runtime(doc): Clarify that new() is not static
closes: #13756

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-24 11:03:31 +01:00
Yegappan Lakshmanan
49cdd629a3 runtime(doc): list of new/changed features in version9.txt
closes: #13753

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-24 11:03:06 +01:00
Ajit-Thakkar
ea9964a36f Runtime(fortran): updates to indent, syntax and ftplugin (#13752)
* runtime update fortran.vim

Add folding for newer features of Fortran

* Runtime Update fortran.vim

Add indent support for newer features of Fortran

* Runtime Update fortran.vim

Add newer features of Fortran to matchit patterns

Signed-off-by: Ajit-Thakkar <142174202+Ajit-Thakkar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-23 11:31:38 +01:00
James McCoy
ec97edcbb9 runtime(debcontrol): Add loong64 arch (#13754)
Co-authored-by: zhangjialing@loongson.cn <zhangjialing@loongson.cn>
Signed-off-by: James McCoy <jamessan@jamessan.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-23 11:23:39 +01:00
errael
1d4fcfe551 runtime(doc): add some error codes to :help vim9class (#13747)
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-21 17:34:15 +01:00
Ernie Rael
e75fde6b04 patch 9.0.2184: Vim9: inconsistent :type/:class messages
Problem:  Vim9: inconsistent :type/:class messages
Solution: Update the Messages (Ernie Rael)

closes: #13706

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-21 17:18:54 +01:00
Csaba Hoch
18ab6c3392 runtime(erlang): add support for matchit plugin (#13713)
This commit updates the Erlang runtime files to be in sync with the
`vim-erlang-runtime` repository. In particular, it adds the following
commit (with some cleanup and simplification afterwards):
6ea8b85bc9

Signed-off-by: Csaba Hoch <csaba.hoch@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-21 17:16:28 +01:00
Wu Yongwei
3746887997 runtime(masm): add variants of opcodes (#13734)
that can actually be generated by compilers

Signed-off-by: Wu Yongwei <wuyongwei@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-21 17:12:34 +01:00
Yegappan Lakshmanan
59df9ad68b runtime(doc): Include Vim9 class features in version9.txt
closes: #13735

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-21 17:09:15 +01:00
zeertzjq
fe583b1e59 patch 9.0.2183: Maximum callback depth is not configurable
Problem:  Maximum callback depth is not configurable.
Solution: Revert patch 9.0.2103.  Set 'maxfuncdepth' in test.
          (zeertzjq)

fixes: #13732
closes: #13736

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-21 17:03:31 +01:00
Ivan Pešić
632b38b45f translation(sr): Update Serbian messages translation (#13737)
Updated with newly added E1411

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-21 16:58:33 +01:00
Christian Brabandt
0630080bbd runtime(doc): reformat and align :h ft-c-syntax (#13738)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-21 16:57:09 +01:00
dkearns
21064ebcd6 runtime(vim): Update syntax file (#13739)
Match all ex commands after ":" and the "|" command separator.

Exceptions are not handled yet and :insert/:change/:append are still not
matched after the command separator bar.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-21 16:56:06 +01:00
Yegappan Lakshmanan
ff6f0d5c38 patch 9.0.2182: Vim9: need a way to reserve future extension
Problem:  Vim9: need a way to reserve future extension
Solution: reserve double underscore prefix for future use
          (Yegappan Lakshmanan)

related: #13238
closes: #13742

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-21 16:46:18 +01:00
Danek Duvall
cc944b1452 runtime(json5): Add TODO support to syntax script (#13743)
Signed-off-by: Danek Duvall <duvall@comfychair.org>
Signed-off-by: Mazunki Hoksaas <rolferen@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-21 16:44:19 +01:00
Ernie Rael
5e13315778 patch 9.0.2181: Vim9: missing error messages
Problem:  Vim9: missing error messages
Solution: Add one more error message

closes: #13729

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 22:15:27 +01:00
Christian Brabandt
cb69dc3510 runtime(doc): update helptags
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 21:59:14 +01:00
Zoltan Arpadffy
6fdb628082 patch 9.0.2180: POSIX function name in exarg causes issues
Problem:  POSIX function name in exarg struct causes issues
          on OpenVMS
Solution: Rename getline member in exarg struct to ea_getline,
          remove isinf() workaround for VMS

There are compilers that do not treat well POSIX functions - like
getline - usage in the structs.

Older VMS compilers could digest this... but the newer OpenVMS compilers
( like VSI C x86-64 X7.4-843 (GEM 50XB9) ) cannot deal with these
structs. This could be limited to getline() that is defined via
getdelim() and might not affect all POSIX functions in general - but
avoiding POSIX function names usage in the structs is a "safe side"
practice without compromising the functionality or the code readability.

The previous OpenVMS X86 port used a workaround limiting the compiler
capabilities using __CRTL_VER_OVERRIDE=80400000
In order to make the OpenVMS port future proof, this pull request
proposes a possible solution.

closes: #13704

Signed-off-by: Zoltan Arpadffy <zoltan.arpadffy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:53:07 +01:00
Mazunki Hoksaas
63210c214a patch 9.0.2179: no filetype detection for execline scripts
Problem:  no filetype detection for execline scripts
Solution: Add filetype detection for execline

as a prior to adding syntax support for execline (see
https://github.com/djpohly/vim-execline/issues/2), i went ahead and made
the filetype detection for execline scripts.

closes: #13689

Signed-Off-By: Mazunki Hoksaas <rolferen@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:44:41 +01:00
zeertzjq
615202bd0e patch 9.0.2178: reg_executing() wrong for :normal with range
Problem:  reg_executing() returns wrong result in :normal with range
          when 'showcmd' is set (after 8.2.4705).
Solution: Reset "pending_end_reg_executing" when executing a register.

closes: #13707

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:35:40 +01:00
zeertzjq
ec14924368 patch 9.0.2177: Wrong cursor position when dragging out of window
Problem:  Wrong cursor position when dragging out of window.
Solution: Don't use ScreenCols[] when mouse is not in current window.

closes: #13717

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:28:31 +01:00
Ivan Pešić
f01bee1bc0 translation(sr): Update Serbian messages translation (#13719)
Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:24:30 +01:00
Christian Brabandt
fbd72d2d47 runtime(netrw): prevent E11 on FocusGained autocommand (#13718)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:22:18 +01:00
K.Takata
ef07a7651e translation(ja): Update Japanese translation (#13723)
ref: https://github.com/vim-jp/lang-ja/releases/tag/20231219

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:21:40 +01:00
ronaaron
379df7c1db runtime(8th): updated 8th syntax (#13720)
* updated 8th.vim
* removed obsolete code

Signed-off-by: Ron Aaron <ron@aaron-tech.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:20:14 +01:00
zeertzjq
3ffc5bc6b8 CI: change dependabot prefix to "CI" (#13724)
The default prefix of dependabot is "build(deps)".  Change it to "CI".

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:17:08 +01:00
K.Takata
955652f6df runtime(doc): Update change.txt (#13725)
Fix-up and clarify commit  e06f2b498c

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:15:47 +01:00
Ken Takata
18d0d29b42 patch 9.0.2175: Compile error with Motif UI + mouse support
Problem:  Compile error with Motif UI + mouse support (after v9.0.1262)
Solution: Use correct oldval option pointer

Fix compilation error introduced by 9.0.1262 and found in #13704.

closes: #13726

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:12:29 +01:00
Christian Brabandt
5872bcb6e8 runtime(doc): Create Changelog until v9.0.2175 (#13728)
Patch list created using:
```
git log --grep='^patch' --reverse --pretty='format:%D%gs%n%b' "v9.0.0000~1"..master  |sed -e '/^Signed-off-by:.*/d' -e '/^\(closes\|fixes\)/d' -e 's/^tag: v/Patch /'
```

and then post-processed using vim.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-19 20:10:43 +01:00
Antonio Giovanni Colombo
2afe381a35 translation(it): Update Italian translations
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-18 09:09:54 +01:00
Eric Pruitt
b42703a662 runtime(tmux): Update tmux syntax rules (#13708)
Signed-off-by: Eric Pruitt <eric.pruitt@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-18 09:03:40 +01:00
Emir SARI
2f05ad162e translation(tr): Update Turkish translations (#13710)
Signed-off-by: Emir SARI <emir_sari@icloud.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-18 09:02:04 +01:00
Yegappan Lakshmanan
38ce1a7ac8 patch 9.0.2175: Compiler warning for uninitialized var
Problem:  Compiler warning for uninitialized var
Solution: initialize variable to NULL

closes: #13711

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-18 08:58:29 +01:00
Ajit-Thakkar
71cbe8e17a runtime(fortan): update fortran syntax rules and doc notes
Update to the Fortran 2023 standard. Reorganize some code to reflect the
dropping of dialect support in the previous commit. Minor improvements.

closes: #13712

Signed-off-by: Ajit-Thakkar <142174202+Ajit-Thakkar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-18 08:55:44 +01:00
Ernie Rael
b501108986 patch 9.0.2174: Vim9: segfault when assigning to type
Problem:  Vim9: segfault when assigning to type
Solution: do not clear typeval, add missing patch number

closes: #13714
closes: #13715

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-18 08:34:41 +01:00
dependabot[bot]
ec497574fc CI: bump github/codeql-action from 2 to 3 (#13716)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-18 07:30:50 +00:00
dundargoc
82f19734bf runtime(doc): remove deprecation warning for gdefault
Deprecated can be misunderstood as being slated for removal; slightly
change wording to be clearer.

Signed-off-by: dundargoc <gocdundar@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-16 14:56:06 +01:00
Yegappan Lakshmanan
062bb6b909 patch 9.0.2173: Vim9: crash when compiling for statement and non-existing type
Problem:  Vim9: Vim crashes when compiling a for statement with a
          non-existing type
Solution: Error out when  lhs_type is not null

closes: #13703

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-16 14:46:40 +01:00
Yegappan Lakshmanan
a185a31fc0 patch 9.0.2172: Vim9: compiling :defer may fail
Problem:  Vim9: compiling :defer may fail
Solution: compile defer, when ctx_skip is not SKIP_YES

compiling defer fails in an if statement with false condition,
so check the ctx_skip value when compiling :defer

fixes:  #13698
closes: #13702

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-16 14:36:08 +01:00
Kevin Scannell
535e8f5941 translation(ie): Updated Irish translation (#13699)
Signed-off-by: Kevin Scannell <kscanne@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-16 14:30:12 +01:00
Paulo Moura
0f61943eb7 runtime(logtalk): Update Logtalk runtime files for the latest language spec (#13697)
Signed-off-by: Paulo Moura <pmoura@logtalk.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-16 14:27:09 +01:00
D. Ben Knoble
5eb9cb53d6 runtime(racket): update Racket runtime files (#13693)
This brings the included Racket runtime files to commit 43bfc87 (update
headers, 2023-12-15) of https://github.com/benknoble/vim-racket. Note
that not all files from that repository are included. (In particular,
the ftdetect script is omitted for now.)

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-16 14:24:15 +01:00
Maxim Kim
0378f07fba runtime(colorschemes): Update colorschemes (#13691)
Minor changes:

- Regenerated using colortemplate 2.2.3
- Removed reversed gui-cursor for some of the colorschemes (retrobox, wildcharm, lunaperche)
- Change MatchParen for some of colorschemes.

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-16 14:22:44 +01:00
zeertzjq
ffba4e952b patch 9.0.2171: The options[] array is still not sorted alphabetically
Problem:  The options[] array is still not sorted alphabetically
          (after: v9.0.2154), causing test failures
Solution: Sort the remaining items

This causes an failure for the vim/vim-win32-installer builds, so make
sure it is completely sorted.

closes: #13690

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-16 14:14:36 +01:00
Yegappan Lakshmanan
e5437c5427 patch 9.0.2170: Vim9: no support for const/final class/objects vars
Problem:  Vim9: no support for const/final class/objects vars
Solution: Support final and const object and class variables

closes: #13655

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-16 14:11:19 +01:00
Ernie Rael
d8bf87c9fb patch 9.0.2169: Vim9: builtin funcs may accept a non-value
Problem:  Vim9: builtin funcs may accept a non-value
Solution: Restrict builtin functions that accept `type`

This PR finishes off detection and prevention of using a type as a
value. It takes care of builtin functions. However there are some
builtin functions, that need to be able to handle types as well as
non-args: instanceof(), type(), typename(), string().

A "bit", FE_X, is added to funcentry_T; when set, the builtin function
can handle a type (class or type-alias) in addition to a value.

Noteworthy change: Discovered that in compile_call() the builtin add()
is compiled inline instead of calling the builtin. Had to add a check
there.

closes: #13688

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-16 14:03:33 +01:00
Christian Brabandt
df12e39b8b patch 9.0.2168: Moving tabpages on :drop may cause an endless loop
Problem:  Moving tabpages on :drop may cause an endless loop
Solution: Disallow moving tabpages on :drop when cleaning up the arglist
          first

Moving tabpages during drop command may cause an endless loop

When executing a :tab drop command, Vim will close all windows not in
the argument list. This triggers various autocommands. If a user has
created an 'au Tabenter * :tabmove -' autocommand, this can cause Vim to
end up in an endless loop, when trying to iterate over all tabs (which
would trigger the tabmove autocommand, which will change the tpnext
pointer, etc).

So instead of blocking all autocommands before we actually try to edit
the given file, lets simply disallow to move tabpages around. Otherwise,
we may change the expected number of events triggered during a :drop
command, which users may rely on (there is actually a test, that expects
various TabLeave/TabEnter autocommands) and would therefore be a
backwards incompatible change.

Don't make this an error, as this could trigger several times during the
drop command, but silently ignore the :tabmove command in this case (and
it should in fact finally trigger successfully when loading the given
file in a new tab). So let's just be quiet here instead.

fixes:  #13676
closes: #13686

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-16 13:55:32 +01:00
Eisuke Kawashima
3afc9f2556 runtime(cmake): sync runtime files with upstream (#13597)
Signed-off-by: e-kwsm@users.noreply.github.com
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-14 20:38:29 +01:00
Dominique Pellé
17dca3cb97 runtime(doc): grammar & typo fixes
closes: #13654
2023-12-14 20:36:32 +01:00
iam28th
323dda1484 runtime(termdebug): add Tbreak command
closes: #13656

Signed-off-by: iam28th <artyom28th@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-14 20:33:43 +01:00
Doug Kearns
74da0ee0a2 patch 9.0.2167: Vim9: not consistently using :var for declarations
Problem:  Vim9-script object/class variable declarations use syntax
	  that is inconsistent with the rest of the language.
Solution: Use :var to declare object and class variables.

closes: #13670

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-14 20:26:26 +01:00
Zdenek Dohnal
549f8c0b4e patch 9.0.2166: Memory leak in Configure Script when checking GTK
Problem:  Memory leak in Configure Script when checking GTK
Solution: Free the allocated memory

If the memory is not freed, GTK GUI VIM cannot be build with address
sanitizer for debugging purposes - configure script will report missing
GTK, because the testing file compilation fails due reported memory
leak.

closes: #13672

Signed-off-by: Zdenek Dohnal <zdohnal@redhat.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-14 20:22:49 +01:00
Ernie Rael
a8f7f92b56 patch 9.0.2165: Vim9: can simplify arg type checking code
Problem:  Vim9: can simplify arg type checking code
Solution: In `f_argcheck` array use `arg_any`, instead of NULL

closes: #13674

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-14 20:19:54 +01:00
Ernie Rael
b077b58809 patch 9.0.2164: Vim9: can use type a func arg/return value
Problem:  Vim9: can use type a func arg/return value
Solution: Check if using type as function argument or return value

closes: #13675

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-14 20:14:13 +01:00
Christian Brabandt
9a775b4a2a runtime(netrw): escape curdir in BrowseUpDir (#13681)
fixes #13678

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-14 20:09:07 +01:00
Ernie Rael
fa831102c3 patch 9.0.2163: Vim9: type can be assigned to list/dict
Problem:  Vim9: type can be assigned to list/dict
Solution: Prevent assigning a `type` to a `list` or `dict`

closes: #13683

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-14 20:06:39 +01:00
Yegappan Lakshmanan
2a71b54d35 patch 9.0.2162: Vim9: type documentation out-dated
Problem:  Vim9: type documentation out-dated
Solution: Update documentation, fix typo in type alias
          definition

closes: #13684

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-14 20:03:03 +01:00
Yegappan Lakshmanan
d2e1c83962 patch 9.0.2161: Vim9: not able to use imported interfaces and classes
Problem:  Vim9: not able to use imported interfaces and classes
Solution: Detect imported class/interfaces names correclty

fixes:  #13661
closes: #13685

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-14 19:59:45 +01:00
K.Takata
7349c5160a CI: Fix i386 build (#13680)
Fix the following error:
```
The following packages have unmet dependencies:
 binutils : Conflicts: binutils:i386 but 2.38-4ubuntu2.4 is to be installed
 binutils:i386 : Conflicts: binutils but 2.38-4ubuntu2.3 is to be installed
 binutils-common : Breaks: binutils-common:i386 (!= 2.38-4ubuntu2.3) but 2.38-4ubuntu2.4 is to be installed
 binutils-common:i386 : Breaks: binutils-common (!= 2.38-4ubuntu2.4) but 2.38-4ubuntu2.3 is to be installed
 libbinutils : Breaks: libbinutils:i386 (!= 2.38-4ubuntu2.3) but 2.38-4ubuntu2.4 is to be installed
 libbinutils:i386 : Breaks: libbinutils (!= 2.38-4ubuntu2.4) but 2.38-4ubuntu2.3 is to be installed
 libctf0 : Breaks: libctf0:i386 (!= 2.38-4ubuntu2.3) but 2.38-4ubuntu2.4 is to be installed
 libctf0:i386 : Breaks: libctf0 (!= 2.38-4ubuntu2.4) but 2.38-4ubuntu2.3 is to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
```

Run `apt-get upgrade` before installing additional packages.

Signed-off-by: K.Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-14 06:58:48 +00:00
K.Takata
a02fe3480f CI: Fix labeler.yml (#13677)
* CI: Fix labeler.yml

Use `any-glob-to-any-file` instead of `any-glob-to-all-files` in most
places.

* Adjust indentation
2023-12-13 18:45:57 +09:00
Philip H
1760331ae3 CI: label.yml: fixup for v5 (#13673)
* label.yml: sync-labels true

* fixup: remove unused lines

Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: K.Takata <kentkt@csc.jp>
2023-12-13 16:50:35 +09:00
Ernie Rael
2025af165e patch 9.0.2160: instanceof() should use varargs as second arg
Problem:  instanceof() should use varargs as second arg
Solution: Modify `instanceof()` to use varargs instead of list

Modify `instanceof()` to use varargs instead of list
Valid `instanceof()` arguments are `type`s. A `type` is not a value;
it cannot be added to a list.

This change is non-compatible with the current usage of instanceof;
but instanceof is relatively new and it's a trivial change.

fixes: #13421
closes: #13644

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-12 16:58:00 +01:00
dependabot[bot]
c1c3b83816 CI: bump actions/labeler from 4 to 5 (#13658)
Bumps [actions/labeler](https://github.com/actions/labeler) from 4 to 5.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/v4...v5)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-12 16:51:32 +01:00
dkearns
1c97b5c0c0 runtime(vim): Update syntax file, fix missing for highlight (#13668)
Fix highlighting of :for command.  Link the vimFor syntax group to the
vimCommand highlight group.

Error introduced in commit f686921

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-12 16:47:43 +01:00
zeertzjq
ec54af4e26 patch 9.0.2159: screenpos() may crash with neg. column
Problem:  screenpos() may crash with neg. column
Solution: validate and correct column

closes: #13669

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-12 16:43:44 +01:00
Philip H
a40e1687e7 CI: labeler.yml: update to v5 (#13664)
Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-11 18:35:52 +01:00
Christian Brabandt
0f28791b21 patch 9.0.2158: [security]: use-after-free in check_argument_type
Problem:  [security]: use-after-free in check_argument_type
Solution: Reset function type pointer when freeing the function type
          list

function pointer fp->uf_func_type may point to the same memory, that was
allocated for fp->uf_type_list. However, when cleaning up a function
definition (e.g. because it was invalid), fp->uf_type_list will be
freed, but fp->uf_func_type may still point to the same (now) invalid
memory address.

So when freeing the fp->uf_type_list, check if fp->func_type points to
any of those types and if it does, reset the fp->uf_func_type pointer to
the t_func_any (default) type pointer

closes: #13652

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-11 17:53:25 +01:00
Christian Brabandt
e4a450a87b patch 9.0.2157: Vim9: incorrectly parses :def func definitions
Problem:  Vim9: incorrectly parses :def func definitions
Solution: check for more context when parsing function args

Signed-off-by: Christian Brabandt <cb@256bit.org>
Incorrectly parses def function definitions

Vim currently allows to define the following vim9 function:
  def Func(f=
  )
  enddef

It currently thinks a Lambda is following the `=` but it doesn't check,
that there is actually an expression following. So when such a think is
encountered, remember that an expression should be following.

If no expression is coming in the next few lines, fail parsing the
function arguments, which will Vim no longer accept such a function.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-11 17:50:08 +01:00
Ernie Rael
9ed53752df patch 9.0.2156: Vim9: can use typealias in assignment
Problem:  Vim9: can use typealias in an assignment
Solution: Generate errors when class/typealias involved in the rhs of an
          assignment

closes: #13637

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Generate errors when class/typealias involved in assignment.
2023-12-11 17:40:46 +01:00
shane.xb.qian
fa920da283 runtime(filetype): ft detection maybe wrong if 'fic' set for *.[CH]
So only set the filetype to cpp for *.C and *.H files, if
'fileignorecase' option is not set.

Signed-off-by: shane.xb.qian <shane.qian@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-11 17:34:36 +01:00
Christian Brabandt
1ec115c92c runtime(doc): re-generate helptags
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-11 17:32:09 +01:00
Karl Yngve Lervåg
5a68cdf149 runtime(sbt): do not set b:did_ftplugin before sourcing scala ftplugin(#13657)
The `b:did_ftplugin` guard was set and prevented us from actually sourcing `ftplugin/scala.vim`. Since the latter script also sets the guard properly, we can simply remove the guard here.

Signed-off-by: =?UTF-8?q?Karl=20Yngve=20Lerv=C3=A5g?= <karl.yngve+git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-11 17:17:20 +01:00
KSR-Yasuda
b52e7ac7c6 runtime(netrw): Fix w:netrw_bannercnt ref error with netrw_fastbrowse=2 (#13659)
* NetRW: Fix `w:netrw_bannercnt` ref error with `netrw_fastbrowse=2`
* NetRW: Fix wrong `w:netrw_bannercnt` setting

closes: #13640 

Signed-off-by: yasuda <yasuda@kyoto-sr.co.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-11 17:11:43 +01:00
Maxim Kim
34b9a15c37 runtime(json): fix examples in comments for JSON formatting (#13660)
Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-11 17:09:38 +01:00
Maxim Kim
ca7c9b1b59 runtime(json): Add json formating plugin (Issue #11426) (#11506)
related: #11426

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-10 15:57:41 +01:00
dkearns
f6869212c9 runtime(vim): Update syntax file (#13653)
Improve variable highlighting in :let, :unlet, :const and :for commands.

Match registers and local, global and terminal option variables.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-10 15:53:24 +01:00
zeertzjq
61e984e212 runtime(doc): link cmdline completion to to |wildcards| and fix typos (#13636)
The docs for cmdline completion doesn't mention that [abc] is considered
a wildcard, and |wildcards| contains more detailed information, so just
link to it.

Also fix some typos in other help files.

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-09 07:18:33 +00:00
K.Takata
c23fc36476 runtime(doc): Update eval.txt (#13645)
expr5 is also expr6 itself.

Signed-off-by:  K.Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-08 20:51:04 +00:00
Yegappan Lakshmanan
d33518522a patch 9.0.2155: Vim9: type not kept when assigning vars
Problem:  Vim9: type not kept when assigning vars
Solution: When assigning a List or a Dict value to a variable of type
          'any', keep the type

closes: #13639
closes: #13646

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-08 21:47:22 +01:00
zeertzjq
f48558e10a patch 9.0.2154: The option[] array is not sorted
Problem:  The options[] array is not sorted alphabetically.
Solution: Sort it alphabetically.  Add a test.  Avoid unnecessary loop
          iterations in findoption().

closes: #13648

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-08 21:36:55 +01:00
laburnumT
ff0baca865 runtime(syntax): unlet b:filetype_in_cpp_family for cpp & squirrel
Update runtime/syntax/cpp.vim and runtime/syntax/squirrel.vim to unlet
b:filetype_in_cpp_family as it remains set even after updating the ft of
a file manually or through a modeline, not allowing c specific keywords
to be highlighted.

Since the variable b:filetype_in_cpp_family is only used by the c.vim
syntax script, unlet it directly after sourcing the c.vim runtime file
instead of at the end of the script.

Also update the last Change Header for both files.

closes: #13650

Signed-off-by: laburnumT <laburnumtec@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-08 21:28:44 +01:00
Christian Brabandt
e06f2b498c runtime(doc): fix typo in change.txt
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-08 21:22:38 +01:00
Ajit-Thakkar
6863084d3b runtime(fortran): update syntax and ftplugins
closes: #13629

Signed-off-by: Ajit-Thakkar <142174202+Ajit-Thakkar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-05 23:08:59 +01:00
dkearns
4e043b1fc7 runtime(vim): Update syntax file and syntax test (#13632)
Add missing assignment operators (:let*=, :let/= and :let%=).

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-05 22:58:40 +01:00
laburnumT
3f7855a612 runtime(doc): Sort options.txt alphabetically
Related to: vim/vim#13630

1. Sort section 3 (option-summary) of runtime/doc/options.txt in
   alphabetical order.
2. Remove double newlines in section 3 (option-summary).

I did not alphabetically sort ttimeout and ttimeoutlen because they seem
to belong with timeout and timeoutlen respectively, but I would like
some input on that decision.

Signed-off-by: laburnumT <laburnumtec@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-05 22:52:13 +01:00
Yegappan Lakshmanan
563e6440bf runtime(doc): update todo items (#13631)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-05 17:19:06 +01:00
Teppei Taguchi
0280c0b9af runtime(doc): sort option-list alphabetically (#13630)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-05 16:37:32 +01:00
Zoltan Arpadffy
1c8e233cb8 patch 9.0.2153: no support to build on OpenVMS
Problem:  no support to build on OpenVMS
Solution: Add OpenVMS X86_64 platform port

closes: #13623

Co-authored-by: errael <errael@raelity.com>
Co-authored-by: K.Takata <kentkt@csc.jp>
Signed-off-by: Zoltan Arpadffy <zoltan.arpadffy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-05 16:04:23 +01:00
Yegappan Lakshmanan
668971958c patch 9.0.2152: Using type unknown for List/Dict containers
Problem:  Using type unknown for List/Dict containers
Solution: Use 'any' instead

fixes: #13582
closes: #13625

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-05 15:51:50 +01:00
zeertzjq
588f20dece patch 9.0.2151: 'breakindent' is not drawn after diff filler lines
Problem:  'breakindent' is not drawn after diff filler lines.
Solution: Correct check for whether 'breakindent' should be drawn.

closes: #13624

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-05 15:49:47 +01:00
Roy Orbitson
2103a56eab runtime(doc): remove non-existent parameter in shift-command (#13626)
The variant with the {count} parameter is explained in the next item.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-05 15:44:33 +01:00
Mike Williams
620f011694 patch 9.0.2150: Using int for errbuflen in option funcs
Problem:  Using int for errbuflen in option funcs
Solution: Use size_t for errbuflen in string option functions

Use size_t for errbuflen in string option functions

This started as size_t to int warning on Windows in
do_set_option_string().  Other option setting functions are using size_t
for errbuflen so I changed the type in the argument list and then chased
further compiler warnings into the string option functions in
optionstr.c changing ints to size_t as I went.

I also changed the type of os_errbuflen in optset_T to size_t and
updated related argument lists in optionstr.c, as well as updating
set_string_option() to also use size_t for errbuflen for consistency
with other string option setting functions.

closes: #13628

Signed-off-by: Mike Williams <mikew@globalgraphics.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-05 15:38:33 +01:00
Christian Brabandt
5dd41d4b63 patch 9.0.2149: [security]: use-after-free in exec_instructions()
Problem:  [security]: use-after-free in exec_instructions()
Solution: get tv pointer again

[security]: use-after-free in exec_instructions()

exec_instructions may access freed memory, if the GA_GROWS_FAILS()
re-allocates memory. When this happens, the typval tv may still point to
now already freed memory. So let's get that pointer again and compare it
with tv. If those two pointers differ, tv is now invalid and we have to
refresh the tv pointer.

closes: #13621

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-04 22:54:43 +01:00
Ronan Pigott
1e5d66408e patch 9.0.2148: Vim does not detect pacman.log file
Problem:  Vim does not detect pacman.log file
Solution: Detect pacmanlogs and add syntax highlighting

pacman.log is a filetype common to Arch Liux and related distributions.
Add some simple syntax highlighting for the pacmanlog filetype.

closes: #13618

Signed-off-by: Ronan Pigott <ronan@rjp.ie>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-04 20:46:15 +01:00
Christian Brabandt
ca2eca7c79 runtime(doc): reference 'go-!' inside os_win32.txt for !start
closes: #13583

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-04 20:41:47 +01:00
Yegappan Lakshmanan
3ee25965e4 patch 9.0.2147: Type check tests fail without the channel feature
Problem:  Type check tests fail without the channel feature
Solution: only run tests, when Vim was build with +channel

fixes: #13617
closes: #13619

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-04 20:31:14 +01:00
Christian Brabandt
0d0b3b1951 patch 9.0.2146: text-property without type errors when joining
Problem:  text-property without type errors when joining
Solution: count all text-properties, with or without type
          before joining lines

Error when joining lines with text properties without a proper type

When joining lines, we need to consider all text properties that are
attached to a line, even when those text properties are invalid and do
not have a type attached to them.

However, since patch v9.0.0993
(commit: 89469d157a)
those text properties won't be counted when joining lines and therefore
this will cause the adjustment for text properties on joining to go
wrong (and may later cause SIGABRT with an invalid free pointer)

I am not sure, why the condition to not count text properties with a
valid type was added in patch v9.0.993, because no test fails if those
condition is removed. So let's just remove this condition and add a test
that verifies, that we are able to join lines, even when the text
properties attached to it do not have a valid type.

fixes: #13609
closes: #13614

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-03 17:56:43 +01:00
zeertzjq
5b4d1fcbf0 patch 9.0.2145: wrong scrolling in insert mode with smoothscroll
Problem:  Wrong scrolling in Insert mode with 'smoothscroll' at the
          bottom of the window.
Solution: Don't use set_topline() when 'smoothscroll' is set.

fixes: #13612
closes: #13613

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-03 17:54:10 +01:00
zeertzjq
4e26a9aab6 patch 9.0.2144: Text properties causes wrong line wrapping
Problem:  Text properties causes wrong line wrapping to be drawn.
Solution: Find the index of the last text property that inserts text.

closes: #13611

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-03 17:50:47 +01:00
Christian Brabandt
c089c3816b CI: disable the test_terminal_resize2() test for GH CI in gui mode (#13615)
becaues it tends to time-out CI for unknown reasons.

related: #13566

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-03 17:48:29 +01:00
Christian Brabandt
abfa13ebe9 patch 9.0.2143: [security]: buffer-overflow in ex_substitute
Problem:  [security]: buffer-overflow in ex_substitute
Solution: clear memory after allocating

When allocating the new_start pointer in ex_substitute() the memory
pointer points to some garbage that the following for loop in
ex_cmds.c:4743 confuses and causes it to accessing the new_start pointer
beyond it's size, leading to a buffer-overlow.

So fix this by using alloc_clear() instead of alloc(), which will
clear the memory by NUL and therefore cause the loop to terminate
correctly.

Reported by @henices, thanks!

closes: #13596
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-01 18:58:51 +01:00
Christian Brabandt
b39b240c38 patch 9.0.2142: [security]: stack-buffer-overflow in option callback functions
Problem:  [security]: stack-buffer-overflow in option callback functions
Solution: pass size of errbuf down the call stack, use snprintf()
          instead of sprintf()

We pass the error buffer down to the option callback functions, but in
some parts of the code, we simply use sprintf(buf) to write into the error
buffer, which can overflow.

So let's pass down the length of the error buffer and use sprintf(buf, size)
instead.

Reported by @henices, thanks!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-01 18:58:51 +01:00
Christian Brabandt
0fb375aae6 patch 9.0.2141: [security]: buffer-overflow in suggest_trie_walk
Problem:  [security]: buffer-overflow in suggest_trie_walk
Solution: Check n before using it as index into byts array

Basically, n as an index into the byts array, can point to beyond the byts
array. So let's double check, that n is within the expected range after
incrementing it from sp->ts_curi and bail out if it would be invalid.

Reported by @henices, thanks!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-01 18:58:50 +01:00
Christian Brabandt
eec0c2b3a4 patch 9.0.2140: [security]: use-after-free in win-enter
Problem:  [security]: use-after-free in win-enter
Solution: validate window pointer before calling win_enter()

win_goto() may stop visual mode, if it is active. However, this may in
turn trigger the ModeChanged autocommand, which could potentially free
the wp pointer which was valid before now became stale and points to now
freed memory.

So before calling win_enter(), let's verify one more time, that the
wp pointer still points to a valid window structure.

Reported by @henices, thanks!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-01 18:58:50 +01:00
Peter Simonyi
9cc95aa0d8 CI: check that all files are listed in Filelist (#13601)
Sometimes patches add files that should be included in tarballs for
distribution, but are not added to Filelist (used by Makefile to build
the tar archive).  This can break the build, or it can be silently
ignored as runtime files are simply not included in the distribution.

Add a CI check to ensure all files tracked in the repository are
assigned to a variable in Filelist.  A few files were not listed because
they do not need to be included in builds and tarballs, so add an IGNORE
variable for these exceptions.

Co-authored-by: Peter Simonyi <pts@petersimonyi.ca>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-01 18:07:42 +01:00
Christian Brabandt
4f3480c943 patch 9.0.2139: html.angular ft is problematic
Problem:  html.angular ft is problematic
Solution: partly revert v9.0.2137

The html.angular filetype causes issues and does not trigger FileType
autocommands for the html or angular filetypes.

So let's roll back that particular change and detect this only as html
file

related: https://github.com/vim/vim/pull/13594#issuecomment-1834465890

closes: #13604

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-01 18:01:17 +01:00
Christian Brabandt
926c3f45a2 CI: disable the test_terminal_resize() test for GH CI in GUI (#13603)
fixes: #13566

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-01 17:59:32 +01:00
Ernie Rael
fda700cb04 patch 9.0.2138: Overflow logic requires long long
Problem:  Overflow logic requires long long
Solution: Define vimlong_T data type to make life easier
          for porters

closes: #13598

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-30 18:20:00 +01:00
Peter Simonyi
72314bb85f runtime(Filelist): include several missing files (#13600)
These files were discovered to be missing from Filelist, and thus
distribution tarballs:
- editorconfig plugin
- extra files for Rust support
- readme for Haiku OS builds

Co-authored-by: Peter Simonyi <pts@petersimonyi.ca>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-30 17:46:55 +01:00
ObserverOfTime
7bed263c34 patch 9.0.2137: Can't detect angular & mustache filetypes
Problem:  Can't detect angular & mustache filetypes
Solution: Detect *.mustache as Mustache filetype;
          detect *.component.html as html.angular filetype

closes: #13594

Signed-off-by: ObserverOfTime <chronobserver@disroot.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-30 17:41:19 +01:00
Christian Brabandt
110dd905dd runtime(syntax-test): ci fails, disable html test for now
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-30 17:33:32 +01:00
Shawn Hatori
8ceb99001b patch 9.0.2136: MSVC errorformat can be improved
Problem:  MSVC errorformat can be improved
Solution: parse error type and column number in MSVC errorformat

closes: #13587

Signed-off-by: Shawn Hatori <shawn.hatori@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-28 20:51:07 +01:00
zeertzjq
fcaeb3d42b patch 9.0.2135: No test for mode() when executing Ex commands
Problem:  No test for mode() when executing Ex commands
Solution: Add some test cases and simplify several other test cases.
          Also add a few more test cases for ModeChanged.

closes: #13588

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-28 20:46:29 +01:00
K.Takata
ffd6d31cb2 runtime(lang): Revise Makefile (#13589)
* Revise runtime/lang/Makefile
* Use predefined variables (`$@`, `$<`) instead of the actual file names.
  (Adding new rules should become easier.)
* Adjust spacing.
* Regenerate converted menu files

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-28 20:44:28 +01:00
dkearns
a9058440b7 runtime(html): Update syntax file (#13591)
Add missing search element and update ARIA attribute list.

Add a very basic test file to check all elements are matched.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-28 20:41:41 +01:00
Christian Brabandt
c4ffeddfe5 patch 9.0.2134: ml_get error when scrolling
Problem:  ml_get error when scrolling after delete
Solution: mark topline to be validated in main_loop
          if it is larger than current buffers line
          count

reset_lnums() is called after e.g. TextChanged autocommands and it may
accidentally cause curwin->w_topline to become invalid, e.g. if the
autocommand has deleted some lines.

So verify that curwin->w_topline points to a valid line and if not, mark
the window to have w_topline recalculated in main_loop() in
update_topline() after reset_lnums() returns.

fixes: #13568
fixes: #13578

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-27 23:25:03 +01:00
Sam-programs
d1c3ef1f47 patch 9.0.2133: Cannot detect overstrike mode in Cmdline mode
Problem:  Cannot detect overstrike mode in Cmdline mode
Solution: Make mode() return "cr" for overstrike

closes: #13569

Signed-off-by: Sam-programs <None>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-27 22:22:51 +01:00
Christian Brabandt
5c23343770 patch 9.0.2132: Duplicate Netbeans Error Message
Problem:  Duplicate Netbeans Error Message
Solution: Remove duplicate message

We have 2 error Messages used for the Netbeans interface:

- EXTERN char e_invalid_buffer_identifier_in_close[]
  INIT(= N_("E648: Invalid buffer identifier in close"));
- EXTERN char e_invalid_buffer_identifier_in_close_2[]
  INIT(= N_("E649: Invalid buffer identifier in close"));

Since the error message is exactly the same, get rid of the  second
message.

closes: #13584

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-27 20:04:24 +01:00
Daniel Buch Hansen
b9efc72c24 patch 9.0.2131: not all nushell files detected
Problem:  not all nushell files detected
Solution: use *.nu to detect nushell files

closes: #13586

Signed-off-by: Daniel Buch Hansen <boogiewasthere@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-27 20:00:56 +01:00
Christian Brabandt
c6754de5dd translation(de): Updated German translations (#13585)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-27 19:59:15 +01:00
Chris Aumann
cf40409e7d runtime(nginx): add additional nginx keywords (#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

Co-authored-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-26 15:06:27 +01:00
Restorer
64c6bfd8ee runtime(tutor): add Make_mvc.mak file for tutor (#13580)
* Added Make_mvc.mak file for tutor

* updated Filelist

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-26 15:01:56 +01:00
Restorer
2bad26fe2c translation(ru): updated Russian translations for tutorials (#13579)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-26 10:14:11 +01:00
Antonio Giovanni Colombo
4e7727dd88 translation(it): updated Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-26 10:11:54 +01:00
Ken Takata
075ad70474 patch 9.0.2130: some errors with translation Makefiles
Problem:  some errors with translation Makefiles
Solution: fix issues

Update src/po/ makefiles after 9.0.2127

* Change how to check `%LANGUAGE%`.
  Check it only when needed.
* Add double quotes to where `GETTEXT_PATH` is used.
  Before 9.0.2127, this worked: `nmake -f Make_mvc.mak GETTEXT_PATH="\"C:\Program Files\Git\usr\bin\""` (which was a bit tricky.)
  9.0.2127 broke this and syntax error occurred.
  This doesn't work either in 9.0.2127: `nmake -f Make_mvc.mak GETTEXT_PATH="C:\Program Files\Git\usr\bin"`
  With this Commit, this works: `nmake -f Make_mvc.mak GETTEXT_PATH="C:\Program Files\Git\usr\bin"`
* Better error report for the `check` target.
  Show the line number of the error. (Imported from vim-jp/lang-ja.)

closes: #13567

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-25 15:51:00 +01:00
mityu
a555069b7d patch 9.0.2129: [security]: use-after-free in call_dfunc()
Problem:  [security]: use-after-free in call_dfunc()
Solution: Refresh dfunc pointer

closes: #13571

This Commit fixes a SEGV caused by a use-after-free bug in call_dfunc().
When calling check_ufunc_arg_types() from the call_dfunc() it may cause
def functions to be re-compiled and if there are too many def functions,
the def_functions array will be re-allocated.  Which means, that the
dfunc pointer in call_dfunc() now starts pointing to freed memory.

So we need to reset the dfunc pointer after calling
check_ufunc_arg_types().

Let's also add a test, to ensure we do not regress.

Signed-off-by: mityu <mityu.mail@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-25 15:41:20 +01:00
Restorer
8c14e79737 runtime(doc): Update doc Makefiles with comments from #13567 (#13577)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-25 15:39:51 +01:00
Jōshin
813a538bb3 runtime(tsx): add indentation plugin (fixes #13574) (#13576)
for now, let's just use the typescript indent file.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-25 15:38:09 +01:00
Julien Marrec
2e31065a65 patch 9.0.2128: runtime(swig): add syntax and filetype plugins
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 #1247 (which I found after writing this).

closes: #13562

Co-authored-by: Matěj Cepl <mcepl@cepl.eu>
Co-authored-by: Julien Marrec <julien.marrec@gmail.com>
Signed-off-by: Julien Marrec <julien.marrec@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-25 15:30:46 +01:00
RestorerZ
e214692718 patch 9.0.2127: translation Makefiles can be improved
Problem:  translation Makefiles can be improved
Solution: Modified and extended po-related Makefiles and
          related files

closes: #13518

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-23 20:58:32 +01:00
zeertzjq
00624a2fa0 patch 9.0.2126: unused assignments when checking 'listchars'
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: #13559

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-23 20:47:16 +01:00
zeertzjq
40ed6711bd patch 9.0.2125: File info disappears when 'cmdheight' has decreased
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: #13560
closes: #13561

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-23 20:37:01 +01:00
Ernie Rael
2b0882fa65 patch 9.0.2124: INT overflow detection logic can be simplified
Problem:  INT overflow logic can be simplified
Solution: introduce trim_to_int() function

closes: #13556

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-23 20:33:05 +01:00
Christian Brabandt
df63da98d8 patch 9.0.2123: Problem with initializing the length of range() lists
Problem:  Problem with initializing the length of range() lists
Solution: Set length explicitly when it shouldn't contain any items

range() may cause a wrong calculation of list length, which may later
then cause a segfault in list_find().  This is usually not a problem,
because range_list_materialize() calculates the length, when it
materializes the list.

In addition, in list_find() when the length of the range was wrongly
initialized, it may seem to be valid, so the check for list index
out-of-bounds will not be true, because it is called before the list is
actually materialized. And so we may eventually try to access a null
pointer, causing a segfault.

So this patch does 3 things:

- In f_range(), when we know that the list should be empty, explicitly
  set the list->lv_len value to zero. This should happen, when
  start is larger than end (in case the stride is positive) or
  end is larger than start when the stride is negative.
  This should fix the underlying issue properly. However,

- as a safety measure, let's check that the requested index is not
  out of range one more time, after the list has been materialized
  and return NULL in case it suddenly is.

- add a few more tests to verify the behaviour.

fixes: #13557
closes: #13563

Co-authored-by: Tim Pope <tpope@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-23 20:14:28 +01:00
Christian Brabandt
3770574e4a patch 9.0.2122: [security]: prevent overflow in indenting
Problem:  [security]: prevent overflow in indenting
Solution: use long long and remove cast to (int)

The shiftwidth option values are defined as being long. However, when
calculating the actual amount of indent, we cast down to (int), which
may cause the shiftwidth value to become negative and later it may even
cause Vim to try to allocate a huge amount of memory.

We already use long and long long variable types to calculate the indent
(and detect possible overflows), so the cast to (int) seems superfluous
and can be safely removed. So let's just remove the (int) cast and
calculate the indent using longs.

Additionally, the 'shiftwidth' option value is also used when determining
the actual 'cino' options. There it can again cause another overflow, so
make sure it is safe in parse_cino() as well.

fixes: #13554
closes: #13555

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-22 22:18:35 +01:00
Christian Brabandt
26c11c5688 patch 9.0.2121: [security]: use-after-free in ex_substitute
Problem:  [security]: use-after-free in ex_substitute
Solution: always allocate memory

closes: #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

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-22 21:52:45 +01:00
K.Takata
8750e3cf81 runtime(netrw): Fix handling of very long filename on longlist style (#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'.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-22 10:20:01 +01:00
Christian Brabandt
4e5c3cf07b patch 9.0.2120: un-used assignment in do_source_buffer_init
Problem:  un-used assignment in do_source_buffer_init
Solution: Remove it

Coverity warns about assigning NULL to line in scriptfile.c:1408,
because right after that assignment, in the next iteration of the loop,
line will be overwritten by the next value from vim_strsave().

And in case this was the last iteration, the line variable is no longer
used until the function returns. So we can safely remove that assignment.

closes: #13547

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-21 19:59:54 +01:00
Christian Brabandt
6b36645f07 patch 9.0.2119: remove dead-condition in ex_class
Problem:  remove dead-condition in ex_class()
Solution: remove the extra condition

The variable is_class must be true once we reach the

,----
| else if (has_static)
`----

in line 1750, because we break out earlier if is_class is false in line
1598 of vim9class.c. And once 'has_static = TRUE', we must be in a
class and there fore is_class is true.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-21 19:57:05 +01:00
Christian Brabandt
a5218a7330 patch 9.0.2118: [security]: avoid double-free in get_style_font_variants
Problem:  [security]: avoid double-free
Solution: Only fee plain_font, when it is not the same as bold_font

When plain_font == bold_font and bold_font is not NULL, we may end up
trying to free bold_font again, which already has been freed a few lines
above.

So only free bold_font, when the condition gui.font_can_bold is true,
which means that bold_font is not pointing to plain_font (so it needs to
be freed separately).

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-21 19:54:12 +01:00
Christian Brabandt
567cae2630 patch 9.0.2117: [security] use-after-free in qf_free_items
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.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-21 19:52:12 +01:00
Christian Brabandt
cb0c113ddc runtime(netrw): expand $COMSPEC without applying 'wildignore' (#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: #13426

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-21 19:48:16 +01:00
dkearns
69866449dd runtime(vim): Improve keymap file highlighting (#13550)
- Match :loadkeymap to EOF as a region and contain only allowed items.
- Add highlighting for <Char- notation.
- add basic syntax highlighting tests

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-21 19:43:40 +01:00
zdohnal
d2c977bb7c runtime(Filelist): include new doc-Makefiles (#13551)
Tags for help files disappeared with the latest Vim update in Fedora,
which is caused by silent error (it didn't stop the build) about missing
file. I use 'make unixall' in Fedora to get the latest patchlevels and
the new files were missing from Filelist file which is used for
generating the tarball.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-21 19:42:56 +01:00
h_east
596a9f29c8 runtime(doc): Fix whitespace and formatting of some help files (#13549)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-21 12:24:23 +00:00
njohnston
aabca259fa runtime(doc): minor typo fixes (#13548)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-20 00:18:57 +01:00
Luuk van Baal
e670d17342 patch 9.0.2116: No test for defining sign without attribute
Problem:  No test for defining sign without attribute
Solution: Add test for defining sign without attributes

closes: #13544

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-19 10:57:02 +01:00
Christian Brabandt
6701abfb52 patch 9.0.2115: crash when callback function aborts because of recursiveness
Problem:  crash when callback function aborts because of recursiveness
Solution: correctly initialize rettv

Initialize rettv in invoke_popup_callback()

Since v9.0.2030, call_callback may exit early when the callback recurses
too much.  This meant that call_func, which would set rettv->v_type =
VAR_UNKNOWN, was not being called.

Without rettv->v_type being explicitly set, it still contained whatever
garbage was used to initialize the stack value in invoke_popup_callback.
This would lead to possible crashes when calling clear_tv(&rettv).

Rather than rely on action at a distance, explicitly initialize rettv's
type to VAR_UNKNOWN so clear_tv can tell nothing needs to be done.

closes: #13495
closes: #13545
Signed-off-by: James McCoy <jamessan@jamessan.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-19 10:52:50 +01:00
Christian Brabandt
22cbc8a4e1 patch 9.0.2114: overflow detection not accurate when adding digits
Problem:  overflow detection not accurate when adding digits
Solution: Use a helper function

Use a helper function to better detect overflows before adding integer
digits to a long or an integer variable respectively. Signal the
overflow to the caller function.

closes: #13539

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Michael Henry <vim@drmikehenry.com>
Signed-off-by: Ernie Rael <errael@raelity.com>
2023-11-19 10:47:21 +01:00
Christian Brabandt
22a97fc241 patch 9.0.2113: Coverity warns for another overflow in shift_line()
Problem:  Coverity warns for another overflow in shift_line()
Solution: Test for INT_MAX after the if condition, cast integer values
          to (long long) before multiplying.

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Michael Henry <vim@drmikehenry.com>
Signed-off-by: Ernie Rael <errael@raelity.com>
2023-11-19 10:45:24 +01:00
Restorer
ab4f27e2a8 runtime(doc): Refactor doc-Makefiles (#13519)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-18 17:12:20 +01:00
Christian Brabandt
6ffe084e6e runtime(doc): document proper notation of gVim, document vim-security list
Also, while at it, document the vim-security mailing list.

closes: #13429

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-18 10:13:13 +01:00
Ivan Pešić
cc6be3e755 translation(sr): Update Serbian messages translation (#13538)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-17 12:54:10 +01:00
Christian Brabandt
6bf131888a patch 9.0.2112: [security]: overflow in shift_line
Problem:  [security]: overflow in shift_line
Solution: allow a max indent of INT_MAX

[security]: overflow in shift_line

When shifting lines in operator pending mode and using a very large
value, we may overflow the size of integer. Fix this by using a long
variable, testing if the result would be larger than INT_MAX and if so,
indent by INT_MAX value.

Special case: We cannot use long here, since on 32bit architectures (or
on Windows?), it typically cannot take larger values than a plain int,
so we have to use long long count, decide whether the resulting
multiplication of the shiftwidth value * amount is larger than INT_MAX
and if so, we will store INT_MAX as possible larges value in the long
long count variable.

Then we can safely cast it back to int when calling the functions to set
the indent (set_indent() or change_indent()). So this should be safe.

Add a test that when using a huge value in operator pending mode for
shifting, we will shift by INT_MAX

closes: #13535

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-16 22:04:38 +01:00
Christian Brabandt
73b2d3790c patch 9.0.2111: [security]: overflow in get_number
Problem:  [security]: overflow in get_number
Solution: Return 0 when the count gets too large

[security]: overflow in get_number

When using the z= command, we may overflow the count with values larger
than MAX_INT. So verify that we do not overflow and in case when an
overflow is detected, simply return 0

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-16 22:04:38 +01:00
Christian Brabandt
060623e4a3 patch 9.0.2110: [security]: overflow in ex address parsing
Problem:  [security]: overflow in ex address parsing
Solution: Verify that lnum is positive, before substracting from
          LONG_MAX

[security]: overflow in ex address parsing

When parsing relative ex addresses one may unintentionally cause an
overflow (because LONG_MAX - lnum will overflow for negative addresses).

So verify that lnum is actually positive before doing the overflow
check.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-16 22:04:38 +01:00
Christian Brabandt
58f9befca1 patch 9.0.2109: [security]: overflow in nv_z_get_count
Problem:  [security]: overflow in nv_z_get_count
Solution: break out, if count is too large

When getting the count for a normal z command, it may overflow for large
counts given. So verify, that we can safely store the result in a long.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-16 22:04:37 +01:00
Christian Brabandt
ac63787734 patch 9.0.2108: [security]: overflow with count for :s command
Problem:  [security]: overflow with count for :s command
Solution: Abort the :s command if the count is too large

If the count after the :s command is larger than what fits into a
(signed) long variable, abort with e_value_too_large.

Adds a test with INT_MAX as count and verify it correctly fails.

It seems the return value on Windows using mingw compiler wraps around,
so the initial test using :s/./b/9999999999999999999999999990 doesn't
fail there, since the count is wrapping around several times and finally
is no longer larger than 2147483647. So let's just use 2147483647 in the
test, which hopefully will always cause a failure

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-16 22:04:37 +01:00
Christian Brabandt
cb0b99f067 patch 9.0.2107: [security]: FPE in adjust_plines_for_skipcol
Problem:  [security]: FPE in adjust_plines_for_skipcol
Solution: don't divide by zero, return zero

Prevent a floating point exception when calculating w_skipcol (which can
happen with a small window when the number option is set and cpo+=n).

Add a test to verify

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-16 22:04:37 +01:00
Christian Brabandt
25aabc2b8e patch 9.0.2106: [security]: Use-after-free in win_close()
Problem:  [security]: Use-after-free in win_close()
Solution: Check window is valid, before accessing it

If the current window structure is no longer valid (because a previous
autocommand has already freed this window), fail and return before
attempting to set win->w_closing variable.

Add a test to trigger ASAN in CI

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-16 22:04:00 +01:00
Christian Brabandt
67abf1592c runtime(tar): comment out strange error condition check
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-14 17:17:12 +01:00
Luuk van Baal
bb800a7907 patch 9.0.2105: skipcol not reset when topline changed
Problem:  Skipcol is not reset when topline changed scrolling cursor to top
Solution: reset skipcol

closes: #13528
closes: #13532

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-14 17:05:18 +01:00
rhysd
bc8f79d36a patch 9.0.2104: wast filetype should be replaced by wat filetype
Problem:  wast filetype should be replaced by wat filetype
Solution: start using the official wat filetype name

runtime: rename `wast` filetype to `wat` (Wasm text format)

The problem is the name of the current filetype wast. When the plugin
was initially created, the file extension for Wasm text format was not
fixed and .wast was more popular.

However, recently .wat became the official file extension for
WebAssembly text (WAT) format and .wast is now a file extension for the
unofficial WAST format, which is a superset of .wat for the convenience
to describe the Wasm specification conformance tests.

https://webassembly.js.org/docs/contrib-wat-vs-wast.html

However for now, let's keep using the `wat` filetype even for the .wast
extension, so that we at least do not lose the filetype settings and
syntax highlighting. This can be adjusted later, if it turns out to have
a separate need for.

closes: #13533

Signed-off-by: rhysd <lin90162@yahoo.co.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-14 16:46:07 +01:00
Christian Brabandt
30c762d99a runtime(doc): fix typo in pi_gzip.txt
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-14 16:44:37 +01:00
Christian Brabandt
2076463e38 patch 9.0.2103: recursive callback may cause issues on some archs
Problem:  recursive callback may cause issues on some archs
Solution: Decrease the limit drastically to 20

Recursive callback limit causes problems on some architectures

Since commit 47510f3d65 we have a test
that causes a recursive popup callback function to be executed. However
it seems the current limit of 'maxfuncdepth' option value is still too
recursive for some 32bit architectures (e.g. 32bit ARM).

So instead of allowing a default limit of 100 (default value for
'maxfuncdepth'), let's reduce this limit to 20. I don't think there is a
use case where one would need such a high recursive callback limit and a
limit of 20 seems reasonable (although it is currently hard-coded).

closes: #13495
closes: #13502

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-12 16:59:29 +01:00
Christian Brabandt
9588666360 patch 9.0.2102: matchparen highlight not cleared in completion mode
Problem:  matchparen highlight not cleared in completion mode
Solution: Clear matchparen highlighting in completion mode

Remove hard-coded hack in insexpand.c to clear the :3match before
displaying the completion menu.

Add a test for matchparen highlighting. While at it, move all test tests
related to the matchparen plugin into a separate test file.

closes: #13493
closes: #13524

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-12 16:55:01 +01:00
Shane-XB-Qian
2dd613f57b runtime(termdebug): improve the breakpoint sign label (#13525)
// related #12589
// that should be the last chat (I) with Bram, r.i.p

Signed-off-by: shane.xb.qian <shane.qian@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-12 16:53:39 +01:00
shane.xb.qian
4ae16d721a Improve CONTRIBUTING.md
closes: #13521

Signed-off-by: shane.xb.qian <shane.qian@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-12 16:49:07 +01:00
shane.xb.qian
fdbadea4b6 patch 9.0.2101: CI: test_termdebug may still fail
Problem:  CI: test_termdebug may still fail
Solution: use term_wait() to make it more robust

closes: #13529

Signed-off-by: shane.xb.qian <shane.qian@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-12 09:42:12 +01:00
Restorer
424da590e4 runtime(doc): Renamed "makefile_*.mak" for Vim documentation (#13517)
* Rename makefile_all.mak and makefile_mvc.mak

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 19:26:00 +01:00
dkearns
2c133f6c1a runtime(lynx): Update for Lynx 2.8.9 (#13510)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 19:06:56 +01:00
dkearns
9358b8d993 runtime(vim): Improve :let-heredoc syntax highlighting (#12923)
"trim" and "eval" are allowed in any order and whitespace is not
required after "=<<".

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 19:06:01 +01:00
Christian Brabandt
305127f9f2 patch 9.0.2100: CI: test_termdebug fails
Problem:  CI: test_termdebug fails
Solution: only test for a changed winlayout, if the window
          width actually changed

Also, include an unrelated comment (which doesn't warrant its own patch
number)

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 18:59:33 +01:00
Christian Brabandt
1b08d2cd07 runtime(doc): clarify when formatoptions applies
closes: #13503

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 15:51:19 +01:00
Ivan Grimaldi
5994329667 runtime(i3config): Update for i3 4.23 (#13522)
Co-authored-by: Ivan Grimaldi <grimaldi.ivam@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 13:09:26 +01:00
Nir Lichtman
6cd2d1df92 patch 9.0.2099: win32: terminal codes clear the terminal
Problem:  Terminal control codes¹ are sent even when silent
          mode is on, causing the terminal to clear up
Solution: Block any terminal codes when silent mode is on

¹https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences

fixes: #12822
closes: #13521

Signed-off-by: Nir Lichtman <nir@lichtman.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 11:33:43 +01:00
ccn
2c5240ec8b runtime(doc): Update usr_51.txt to be more inclusive (#13496)
use their instead of his as the user may not be male


Co-authored-by: K.Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 09:35:50 +01:00
dkearns
521fb7e143 runtime(doc): Add missing null_<type> help tags (#13498)
Problem:  Not all null_<type> values have a help tag
Solution: Add missing help tags

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 09:33:43 +01:00
Philip H
f1952d9fa8 CI: labeler.yml use all instead of any for doc detection (#13507)
fixup: https://github.com/vim/vim/pull/13506#pullrequestreview-1722013761

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 09:14:48 +01:00
ObserverOfTime
4f9074b96c patch 9.0.2098: No filetype support for xcompose files
Problem:  No filetype support for xcompose files
Solution: Add filetype detection

closes: #13508

Signed-off-by: ObserverOfTime <chronobserver@disroot.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 09:12:27 +01:00
Ernie Rael
bee966d3fe runtime(doc): clarify :help inclusion section
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 09:10:24 +01:00
K.Takata
cb5e7a2026 CI: labeler.yml: Add some more component detection rules (#13511)
Add rules for `installer`, `platform-mac`, `platform-windows`, `xxd`.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 09:04:31 +01:00
Gerrit Meier
8f0fe20ff1 patch 9.0.2097: No support for cypher files
Problem:  No support for cypher files
Solution: Add cypher filetype detection

Cypher query language support to work with (mostly) graph databases.

Already existing lsp support in Neovim's nvim-lspconfig:
https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#cypher_ls

closes: #13516

Signed-off-by: Gerrit Meier <meistermeier@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 08:58:26 +01:00
Ernie Rael
03042a2753 patch 9.0.2096: Vim9: confusing usage of private
Problem:  Vim9: confusing usage of private
Solution: clarify and use protected keyword instead

[vim9class] document `_` as protected instead of private

fixes #13504
closes: #13520

Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-11 08:53:32 +01:00
Philip H
4b0018feca CI: labeler.yml: add documentation label (#13506)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-09 08:51:03 +00:00
zeertzjq
20a94f44b3 runtime(doc): fix grammar in termdebug doc, remove trailing spaces (#13505)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-09 07:21:58 +00:00
shane.xb.qian
ca48202b6f runtime(termdebug): improve window handling, shorten var types
closes #13474

Signed-off-by: shane.xb.qian <shane.qian@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-08 22:03:26 +01:00
shane.xb.qian
7fbbd7fdc6 runtime(termdebug): handle buffer-local mappings properly
closes: #13475

Signed-off-by: shane.xb.qian <shane.qian@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-08 21:46:30 +01:00
Christian Brabandt
6a650bf696 patch 9.0.2095: statusline may look different than expected
Problem:  statusline may look different than expected
Solution: do not check for highlighting of stl and stlnc characters

statusline fillchar may be different than expected

If the highlighting group for the statusline for the current window
|hl-StatusLine| or the non-current window |hl-StatusLineNC| are cleared
(or do not differ from each other), than Vim will use the hard-coded
fallback values '^' (for the non-current windows) or '=' (for the
current window).  I believe this was done, to make sure the statusline
will always be visible and be distinguishable from the rest of the
window.

However, this may be unexpected, if a user explicitly defined those
fillchar characters just to notice that those values are then not used
by Vim.

So, let's assume users know what they are doing and just always return
the configured stl and stlnc values.  And if they want the statusline to
be non-distinguishable from the rest of the window space, so be it.  It
is their responsibility and Vim shall not know better what to use.

fixes: #13366
closes: #13488

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-08 21:23:29 +01:00
Yegappan Lakshmanan
1fc47c2c9b patch 9.0.2094: Vim9: need more assignment tests
Problem:  Vim9: need more assignment tests
Solution: Add test for using different types in assignment, function
          arguments and return values

closes: #13491

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-08 21:10:11 +01:00
dkearns
d56f15caf6 runtime(wget): Update for Wget2 2.1.0 (#13497)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-08 20:53:20 +01:00
zeertzjq
4d62a2f443 patch 9.0.2093: Unsupported option causes skipping of modeline test
Problem:  Unsupported option causes rest of modeline test to be skipped.
Solution: Revert the change from patch 8.2.1432.

closes: #13499
closes: #13500

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-08 20:51:02 +01:00
Christian Brabandt
2a94e98792 patch 9.0.2092: tests: failure in test_arabic
Problem:  tests: failure in test_arabic
Solution: adjust the test for the changed arabic keymap

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-05 19:18:52 +01:00
avidseeker
caee7956a2 runtime(keymap): Switch Hindu-Arabic to Arabic numerals in arabic keymap (#13430)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-05 17:59:20 +01:00
Restorer
3570631dc6 translation(ru): Update the translation of Russian messages to Vim 9.0.2091 (#13490)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-05 17:56:14 +01:00
Christian Brabandt
3d37231437 runtime(tar): improve the error detection
Do not rely on the fact, that the last line matches warning, error,
inappropriate or unrecognized to determine if an error occurred. It
could also be a file, contains such a keyword.

So make the error detection slightly more strict and only assume an
error occured, if in addition to those 4 keywords, also a space matches
(this assumes the error message contains a space), which luckily on Unix
not many files match by default.

The whole if condition seems however slightly dubious.  In case an error
happened, this would probably already be caught in the previous if
statement, since this checks for the return code of the tar program.

There may however be tar implementations, that do not set the exit code
for some kind of error (but print an error message)? But let's keep this
check for now, not many people have noticed this behaviour until now, so
it seems to work reasonably well anyhow.

related: #6425
fixes: #13489
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-05 17:51:09 +01:00
Christian Brabandt
da4e433dc3 runtime(doc): document vim-script library function
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-05 10:45:49 +01:00
Sean Dewar
b2a4c110a5 runtime(dist): Make dist/vim.vim work properly when lacking vim9script support (#13487)
`:return` cannot be used outside of `:function` (or `:def`) in older Vims
lacking Vim9script support or in Neovim, even when evaluation is being skipped
in the dead `:else` branch.

Instead, use the pattern described in `:h vim9-mix`, which uses `:finish` to end
script processing before it reaches the vim9script stuff.

Signed-off-by: Sean Dewar <seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-05 10:11:37 +01:00
Yegappan Lakshmanan
6709816f78 patch 9.0.2091: Vim9: cannot convert list to string using +=
Problem:  Vim9: cannot convert list to string using +=
          (after 9.0.2072)
Solution: convert dict index to string later in compile_member()

fixes: #13485
closes: #13486

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-05 10:07:03 +01:00
Christian Brabandt
4f174f0de9 runtime(dist): add legacy version for central vim library
Also, enable the zip and gzip plugins by default, unless those variables
were not explicitly set by the user.

related: #13413

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-04 11:19:28 +01:00
D. Ben Knoble
cd8a3eaf53 runtime(dist): centralize safe executable check and add vim library (#13413)
Follow up to 816fbcc26 (patch 9.0.1833: [security] runtime file fixes,
2023-08-31) and f7ac0ef50 (runtime: don't execute external commands when
loading ftplugins, 2023-09-06).

This puts the logic for safe executable checks in a single place, by introducing
a central vim library, so all filetypes benefit from consistency.

Notable changes:
- dist#vim because the (autoload) namespace for a new runtime support
  library. Supporting functions should get documentation. It might make
  life easier for NeoVim devs to make the documentation a new file
  rather than cram it into existing files, though we may want
  cross-references to it somewhere…
- The gzip and zip plugins need to be opted into by enabling execution
  of those programs (or the global plugin_exec). This needs
  documentation or discussion.
- This fixes a bug in the zig plugin: code setting s:tmp_cwd was removed
  in f7ac0ef50 (runtime: don't execute external commands when loading
  ftplugins, 2023-09-06), but the variable was still referenced. Since
  the new function takes care of that automatically, the variable is no
  longer needed.

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-04 10:11:17 +01:00
Christian Brabandt
08b1c61e8b runtime(doc): clarify terminal capabilities for focus reporting
closes: #13440

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-04 10:03:52 +01:00
Christian Brabandt
57f9ce1a09 patch 9.0.2090: complete_info() skips entries with 'noselect'
Problem:  complete_info() skips entries with 'noselect'
Solution: Check, if first entry is at original text state

Unfortunately, Commit daef8c7437
introduced a regression, that when ':set completeopt+=noselect' is set
and no completion item has been selected yet, it did not fill the
complete_info['items'] list.

This happened, because the current match item did not have the
CP_ORIGINAL_TEXT flag set and then the cp->prev pointer did point to the
original flag item, which caused the following while loop to not being
run but being skipped instead.

So when the 'noselect' is set, only start with to the previous selection
item, if the initial completion item has the CP_ORIGINAL_TEXT flag set,
else use the 2nd previous item instead.

fixes: #13451
closes: #13452

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-04 09:58:14 +01:00
Restorer
b23c1fc596 runtime(doc): Add Makefile for the Vim documentation on Windows (#13467)
* Makefile for the Vim documentation on Windows

* Corrected comments

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-04 09:57:09 +01:00
GuyBrush
15d270019e patch 9.0.2089: sound_playfile() fails when using powershell
Problem:  sound_playfile() fails when using powershell
Solution: quote filename using doublequotes, don't escape filename,
          because it doesn't use the shell

Avoiding powershell escaping because mci open command doesn't support
single quoted filenames: open 'C:\whatever\sound.wav' is not valid.

closes: #13471

Signed-off-by: GuyBrush <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-04 09:54:00 +01:00
Yegappan Lakshmanan
5a53925a6e patch 9.0.2088: Vim9: still allows abstract static methods
Problem:  Vim9: still allows abstract static methods
          (after v9.0.2084, v9.0.2085 and v9.0.2087)
Solution: Disallow abstract static methods

closes: #13479

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-04 09:42:46 +01:00
Lucien Grondin
ce3b0136c6 runtime(sh): Update sh syntax and add shDerefOffset to shDerefVarArray for bash (#13480)
Add shDerefOffset to shDerefVarArray.

Example code:

```bash
declare -a a=({a..z})

echo "${a[@]:1:3}"
```


Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-04 09:41:37 +01:00
Jiri Slaby
2f54c13292 runtime(script.vim): make strace ft check less strict (#13482)
Strace output, depending on parameters (-ttf this time), can dump both
times and pid:
  1038  07:14:20.959262 execve("./e.py", ["./e.py"], 0x7ffca1422840 /* 51 vars */) = 0 <0.000150>

So loose the regexp matching this, so that the above is matched too.

Fixes #13481.

Co-authored-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-04 09:39:54 +01:00
Christian Brabandt
33c1da7ff4 patch 9.0.2087: build-failure in vim9class
Problem:  build-failure in vim9class
Solution: reference correct error message,
          disable non-failing test

closes: #13476
closes: #13477

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-02 22:45:12 +01:00
zeertzjq
deba02ddd4 patch 9.0.2086: code cleanup for option callbacks needed
Problem:  code cleanup for option callbacks needed
Solution: remove flag os_doskip, it's not necessary, as we can check,
          whether an error message was returned

Remove unnecessary field os_doskip

Callback functions for boolean options set os_doskip immediately before
returning an error message, so os_doskip isn't actually needed.

closes: #13461

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-02 21:01:19 +01:00
Yegappan Lakshmanan
2b358adde0 patch 9.0.2085: Vim9: abstract can be used in interface
Problem:  Vim9: abstract can be used in interface
Solution: Disallow the use of abstract in an interface

fixes: #13456
closes: #13464

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-02 20:58:58 +01:00
Yegappan Lakshmanan
ef9e3f8924 patch 9.0.2084: Vim9: abstract static methods are possible
Problem:  Vim9: abstract static methods are possible
Solution: Disallow abstract static methods

fixes: #13462
closes: #13466

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-02 20:43:57 +01:00
Lucien Grondin
1858e2b22a runtime(sh) Update sh syntax and add shDblParen to shCaseList (#13469)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-02 20:33:56 +01:00
Zdenek Dohnal
1b1c9f272d patch 9.0.2083: Perl: xsubpp may be in non-standard location
Problem:  Perl: xsubpp may be in non-standard location
Solution: Add --with-subpp configure option

configure.ac: Add --with-xsubpp configure option

Some environments (such as flatpaks) cannot count on xsubpp being
in the common Perl directory, so a configure option should be used for
clean solution.

closes: #13470

Signed-off-by: Zdenek Dohnal <zdohnal@redhat.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-02 20:19:06 +01:00
James McCoy
2b89afd5eb runtime(debversions): Add noble (24.04 LTS) as Ubuntu release name (#13472)
Signed-off-by: James McCoy <jamessan@debian.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-02 20:12:29 +01:00
James McCoy
43cb8e1c3b patch 9.0.2082: test_channel may fail because of IPv6 config issue
Problem:  test_channel may fail because of IPv6 config issues
Solution: Catch and skip the test, if getaddrinfo() fails with
          'Address family not supported'

Mark tests as skipped when ch_open encounters E901

On some of the Debian build systems, the IPv6 channel tests fail because
`ch_open('[::1]:<port>', ...)` raises the error "E901: getaddrinfo() in
channel_open(): Address family for hostname not supported".

This appears to happen because getaddrinfo() can't perform the reverse
lookup for the ::1, which is a config issue on that system.  Therefore,
instead of reporting a test failure, mark the test as skipped due to the
bad network config

closes: #13473

Signed-off-by: James McCoy <jamessan@jamessan.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-02 20:05:38 +01:00
Luuk van Baal
1bf1bf569b patch 9.0.2081: smoothscroll may result in wrong cursor position
Problem:  With 'smoothscroll' set, "w_skipcol" is not reset when unsetting 'wrap'.
          Resulting in incorrect calculation of the cursor position.
Solution: Reset "w_skipcol" when unsetting 'wrap'.

fixes:  #12970
closes: #13439

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-28 21:43:31 +02:00
Lucien Grondin
a390e984db runtime(sh): add shDblParen to shLoopList for bash (#13445)
add shDblParen to shLoopList to correctly highlight
arithmetic expressions for Bash and Ksh

This should allow code such as:

```bash
declare -i i j
for i in foo bar
do ((j = 1 << j))
done
```

Signed-off-by: Lucien Grondin <grondilu@yahoo.fr>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-28 21:40:48 +02:00
Yegappan Lakshmanan
171c50e0b0 patch 9.0.2080: vim9_script test too large
Problem:  vim9_script test too large
Solution: split vim9 type alias test into
          separate test file

Move type alias tests to a separate test file

closes: #13447

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-28 21:31:53 +02:00
dkearns
8ebdbc9e6d runtime(doc): all secure options should note this restriction in the documentation (#13448)
Problem:  Not all secure options document their status
Solution: Describe secure context :set restrictions in each help entry

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-28 21:26:19 +02:00
Doug Kearns
c1c177a47b patch 9.0.2079: Not all Dart files detected
Problem:  Not all Dart files detected
Solution: Add shebang filetype detection for Dart

closes: #13449

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-28 21:21:49 +02:00
Yegappan Lakshmanan
feaccd2395 patch 9.0.2078: several problems with type aliases
Problem:  several problems with type aliases
Solution: Check for more error conditions, add tests,
          fix issues

Check for more error conditions and add additional tests

fixes  #13434
fixes  #13437
fixes  #13438
closes #13441

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-28 15:53:55 +02:00
Christian Brabandt
87ca5e86fa patch 9.0.2077: CI fails because of trailing whitespace in test
Problem:  CI fails because of trailing whitespace in test
Solution: Remove it

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-27 19:48:38 +02:00
Yegappan Lakshmanan
ec3cebbd2b patch 9.0.2076: Vim9: No support for type aliases
Problem:  Vim9: No support for type aliases
Solution: Implement :type command

A type definition is giving a name to a type specification.  This also known
type alias.

	:type ListOfStrings = list<string>

The type alias can be used wherever a built-in type can be used.  The type
alias name must start with an upper case character.

closes: #13407

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-27 19:35:26 +02:00
Christian Brabandt
4bca4897a1 patch 9.0.2075: TextChangedI may not always trigger
Problem:  TextChangedI may not always trigger
Solution: trigger it in more cases: for insert/
          append/change operations, and when
          opening a new line,

fixes: #13367
closes: #13375

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
2023-10-27 19:26:49 +02:00
Christian Brabandt
daef8c7437 patch 9.0.2074: Completion menu may be wrong
Problem:  Completion menu may be wrong
Solution: Check for the original direction of the completion menu,
          add more tests, make it work with 'noselect'

completion: move in right direction when  filling completion_info()

When moving through the insert completion menu and switching directions,
we need to make sure we start at the correct position in the list and
move correctly forward/backwards through it, so that we do not skip
entries and the selected item points to the correct entry in the list
of completion entries generated by the completion_info() function.

The general case is this:

1) CTRL-X CTRL-N, we will traverse the list starting from
   compl_first_match and then go forwards (using the cp->next pointer)
   through the list (skipping the very first entry, which has the
   CP_ORIGINAL_TEXT flag set (since that is the empty/non-selected entry

2) CTRL-X CTRL-P, we will traverse the list starting from
   compl_first_match (which now points to the last entry). The previous
   entry will have the CP_ORIGINAL_TEXT flag set, so we need to start
   traversing the list from the second prev pointer.

There are in fact 2 special cases after starting the completion menu
with CTRL-X:

3)  CTRL-N and then going backwards by pressing CTRL-P again.
    compl_first_match will point to the same entry as in step 1 above,
    but since compl_dir_foward() has been switched by pressing CTRL-P
    to backwards we need to pretend to be in still in case 1 and still
    traverse the list in forward direction using the cp_next pointer

4)  CTRL-P and then going forwards by pressing CTRL-N again.
    compl_first_match will point to the same entry as in step 2 above,
    but since compl_dir_foward() has been switched by pressing CTRL-N
    to forwards we need to pretend to be in still in case 2 and still
    traverse the list in backward direction using the cp_prev pointer

For the 'noselect' case however, this is slightly different again. When
going backwards, we only need to go one cp_prev pointer back. And
resting of the direction works again slightly different. So we need to
take the noselect option into account when deciding in which direction
to iterate through the list of matches.

related: #13402
related: #12971
closes: #13408

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-27 19:16:26 +02:00
nwounkn
650dcfc8d1 runtime(netrw): don't echo empty lines (#13431)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-27 19:07:38 +02:00
zeertzjq
b0221819f3 patch 9.0.2073: typo in quickfix.c comments
Problem:  typo in quickfix.c comments
Solution: fix them

closes: #13422

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-10-26 23:15:44 +02:00
James McCoy
7b7cda67a1 runtime(debian): update debian related runtime files (#13423)
* Update Debian runtime files

Add mantic as a supported Ubuntu release and move buster/kinetic to
unsupported.

Add syntax highlighting for deb822sources filetype.

Add debsources ftplugin to set relevant comment options.

Move common version information to shared/debversions.vim

Closes #11934

Co-authored-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Co-authored-by: James Addison <jay@jp-hosting.net>
Co-authored-by: Viktor Szépe <viktor@szepe.net>
Signed-off-by: James McCoy <jamessan@jamessan.com>

* Add myself as codeowner for Debian-related runtime files

Signed-off-by: James McCoy <jamessan@jamessan.com>

---------

Signed-off-by: James McCoy <jamessan@jamessan.com>
Co-authored-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Co-authored-by: James Addison <jay@jp-hosting.net>
Co-authored-by: Viktor Szépe <viktor@szepe.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-26 23:14:30 +02:00
Yegappan Lakshmanan
c229a6ac07 patch 9.0.2072: Vim9: no nr2str conversion in list-unpack
Problem:  Vim9: no nr2str conversion in list-unpack
Solution: Generate 2STRING instruction to convert dict index to string

Generate instruction to convert dict index to a string

fixes:  #13417
closes: #13424

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-26 23:05:07 +02:00
Colin Kennedy
10407df7a9 patch 9.0.2071: objdump files not recognized
Problem:  objdump files not recognized
Solution: detect *.objdump files, add a filetype plugin

Added the objdump file/text format

closes: #13425

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Colin Kennedy <colinvfx@gmail.com>
2023-10-26 23:03:15 +02:00
Christian Brabandt
6b89dd6a72 patch 9.0.2070: [security] disallow setting env in restricted mode
Problem:  [security] disallow setting env in restricted mode
Solution: Setting environment variables in restricted mode could
          potentially be used to execute shell commands. Disallow this.

restricted mode: disable allow setting of environment variables

Setting environment variables in restricted mode, may have some unwanted
consequences. So, for example by setting $GCONV_PATH in restricted mode
and then calling the iconv() function, one may be able to execute some
unwanted payload, because the `iconv_open()` function internally uses
the `$GCONV_PATH` variable to find its conversion data.

So let's disable setting environment variables, even so this is no
complete protection, since we are not clearing the existing environment.
I tried a few ways but wasn't successful :(

One could also argue to disable the iconv() function completely in
restricted mode, but who knows what other API functions can be
influenced by setting some other unrelated environment variables.
So let's leave it as it is currently.

closes: #13394
See: https://huntr.com/bounties/b0a2eda1-459c-4e36-98e6-0cc7d7faccfe/

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-26 22:24:17 +02:00
David Leadbeater
67ec655383 patch 9.0.2069: possible to escape bracketed paste mode with Ctrl-C
Problem:  possible to escape bracketed paste mode with Ctrl-C
Solution: Do not handle Ctrl-C specially when key_protocol
          is in use, makes bracketed paste mode more robust

When a key protocol is in use Ctrl-C will be sent as an escape sequence,
but a raw Ctrl-C can be sent when pasting data. Pass this through, so
that a Ctrl-C can be pasted and won't result in exiting insert mode
(where the rest of the pasted keys can cause all kind of nasty
side-effects).

Many terminals will strip control characters in paste data (and xterm
will strip ^C since version 388), but this provides some defense in
depth if users change settings like xterm's allowPasteControls.

closes: #13398

Signed-off-by: David Leadbeater <dgl@dgl.cx>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-26 22:08:41 +02:00
Christian Brabandt
9198c1f2b1 patch 9.0.2068: [security] overflow in :history
Problem:  [security] overflow in :history
Solution: Check that value fits into int

The get_list_range() function, used to parse numbers for the :history
and :clist command internally uses long variables to store the numbers.
However function arguments are integer pointers, which can then
overflow.

Check that the return value from the vim_str2nr() function is not larger
than INT_MAX and if yes, bail out with an error. I guess nobody uses a
cmdline/clist history that needs so many entries... (famous last words).

It is only a moderate vulnerability, so impact should be low.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-q22m-h7m2-9mgm

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-26 21:29:32 +02:00
Christian Brabandt
5f5131d775 runtime(doc): clarify bracketed paste mode
related: #13398

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-25 21:53:09 +02:00
Christian Brabandt
a56f02d824 runtime(doc): missing code formatting in if_pyth.txt
fixes: #13418

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-25 21:21:56 +02:00
Ken Takata
c4a4038603 patch 9.0.2067: xxd: coloring was disabled on Cygwin
Problem:  xxd: coloring was disabled on Cygwin
Solution: don't include WIN32

xxd: Fix that color was disabled on Cygwin

"windows.h" was unintentionally included on Cygwin since 9.0.1834.
This accidentally disabled coloring on Cygwin.
Stop including "windows.h" on Cygwin.

closes: #13414

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-25 21:17:35 +02:00
OldWorldOrdr
1c14030aff patch 9.0.2066: xxd: corrupting files when reversing bit dumps
Problem:  xxd: corrupting files when reversing bit dumps
Solution: handle reversing bit dump slightly differently

fixes:  #13410
closes: #13415

Co-authored-by: OldWorldOrdr <joey.t.reinhart@gmail.com>
Co-authored-by: K.Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: K.Takata <kentkt@csc.jp>
Signed-off-by: tristhaus <tristhaus@yahoo.de>
2023-10-25 20:57:30 +02:00
Doug Kearns
3932072ab4 patch 9.0.2065: EXPAND flag set for filetype option
Problem:  EXPAND flag set for filetype option
Solution: Remove P_EXPAND flag from the 'filetype' option

Remove P_EXPAND flag from the 'filetype' option

Problem:  P_EXPAND flag is erroneously set for 'filetype' option
Solution: Remove the P_EXPAND flag

This flag is used by string options that accept file path values.  See
:help set_env.

This appears to have been included in d5e8c92 and resulted from an
incorrect implementation of 'filetype' completion.

See #12900 for a small discussion.

related: #12900
closes: #13416

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-10-25 20:54:00 +02:00
Yegappan Lakshmanan
b731800522 patch 9.0.2064: cannot use buffer-number for errorformat
Problem:  cannot use buffer-number for errorformat
Solution: add support for parsing a buffer number using '%b' in
          'errorformat'

closes: #13419

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-25 20:50:28 +02:00
h_east
5985879e3c runtime(doc): Fix typos in several documents (#13420)
* Fix typos in several documents
* Update runtime/doc/terminal.txt

Co-authored-by: K.Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-25 14:47:05 +01:00
Christian Brabandt
50f3ec2898 please report security issues to the vim-security list
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-23 19:59:22 +02:00
Guido Cella
7d254dbc2d patch 9.0.2063: pacman hooks are detected as conf filetype
Problem:  pacman hooks are detected as conf filetype
Solution: make it consistent to pacman.conf and detect those
          hooks as confini

Because confini has much better syntax highlighting than conf.

For reference, I identified pacman.conf and pacman hooks as dosini in
https://github.com/vim/vim/pull/6335, then
https://github.com/vim/vim/pull/10213 changed them to conf, then
https://github.com/vim/vim/pull/10518 changed pacman.conf to confini but
forgot to change hooks.

closes: #13399

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Guido Cella <guido@guidocella.xyz>
2023-10-23 19:27:06 +02:00
Doug Kearns
c038427d2a patch 9.0.2062: Janet files are not recognised
Problem:  Janet files are not recognised
Solution: Add filename and shebang detection (without
          adding an extra filetype plugin)

Those are used by the Janet language:
http://www.janet-lang.org

closes: #13400

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-10-23 19:24:05 +02:00
Guido Cella
ae9021a840 patch 9.0.2061: not able to detect xkb filetypes
Problem:  not able to detect xkb filetypes
Solution: Detect files below /u/s/X11/xkb as xkb files (without adding
          an extra filetype)

Those files are used from the X11 xkb extension

closes: #13401

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Guido Cella <guido@guidocella.xyz>
2023-10-23 19:19:46 +02:00
Amaan Qureshi
84394f2be4 patch 9.0.2060: *.{gn,gni} files are not recognized
Problem:  *.{gn,gni} files are not recognized
Solution: Detect some as gn filetype (without adding an extra filetype)

Those come from: https://gn.googlesource.com/gn/

closes: #13405

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Amaan Qureshi <amaanq12@gmail.com>
2023-10-23 19:16:14 +02:00
Ernie Rael
a5a1534753 runtime(doc): small updates to the documentation for varargs
- update and correct the documentation for varargs for Vim9 and make
  sure to mention that a <list> type is required.
- mention that 3match is used the matchparen plugin before 9.0.2054
  (actually this is not correct, but before that patch, Vim used the
  hardcoded id 3)

closes: #13403
closes: #13409

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-23 19:13:16 +02:00
dkearns
fea96c00e5 runtime(vim): Update ftplugin - comment motions (#13412)
Fix the pattern used by comment-motion mappings to match the start of a
block comment.

Block-comment start lines were being ignored if the previous line
contained a double-quote character anywhere in the line.  Line comments
should only be ignored if the previous line is a full-line comment and,
therefore, part of the current block comment.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-23 18:16:44 +02:00
Yegappan Lakshmanan
0ab500dede patch 9.0.2059: outstanding exceptions may be skipped
Problem:  outstanding exceptions may be skipped
Solution: When restoring exception state, process remaining outstanding
          exceptions

closes: #13386

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-21 11:59:42 +02:00
zeertzjq
a36acb7ac4 patch 9.0.2058: tests: avoid error when no swap files exist
Problem:  tests: avoid error when no swap files exist
Solution: use unlet! so that no error message is reported
          in case the variable does not exists

When s:GetSwapFileList() does not find any swapfiles, it will return an
empty list []. This means, that the variable 'name' will not be
declared, cause the following unlet command to fail and causing a 1 sec
delay on running the tests.

So let's instead use the :unlet! command which simply skips reporting an
error when the variable given as parameter does not exists.

closes: #13396

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-10-21 11:50:26 +02:00
Ernie Rael
3ec6c1fe3b patch 9.0.2057: Vim9: no strict type checks for funcrefs varargs
Problem:  Vim9: no strict type checks for funcrefs varargs
Solution: Perform strict type checking when declaring funcrefs
          with vararg declaration, add tests

closes: #13397

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-21 11:45:38 +02:00
Christian Brabandt
d3e277f279 matchparen: do not use hard-coded match id (#13393)
* matchparen: do not use hard-coded match id

Instead of using the hard-coded match id 3, which may also be used by
other plugins, let the matchparen plugin use whatever ids are
automatically returned when calling matchaddpos().

For backwards-compatibility, keep the `:3match` call, which will still
use the hard-coded id 3 (as mentioned in :h :3match).

closes: #13381

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-21 11:06:50 +02:00
Jonathan Wright
47416d1a74 patch 9.0.2056: no digraph for quadruple prime
Problem:  no digraph for quadruple prime
Solution: add quadruple prime digraph using 4'

closes: #13380

Signed-off-by: Jonathan Wright <quaggy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Jonathan Wright <quaggy@gmail.com>
2023-10-20 12:08:09 +02:00
Ernie Rael
d4802ec485 patch 9.0.2055: Vim9: non-consistent error messages
Problem:  Vim9: non-consistent error messages
Solution: make error messages more consistent with common structure

Adjust vim9class messages to follow common pattern.
[Variable|Method] "var-or-meth-name" ... class "class-name"

closes: #13391

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-20 11:59:00 +02:00
Ken Takata
ac709e2fc0 patch 9.0.2054: win32: iscygpty needs update
Problem:  win32: iscygpty needs update
Solution: Update iscygpty to the latest version, make use iswascii()
          API function

Import the latest version from https://github.com/k-takata/ptycheck.
This addresses #13332 for iscygpty()

closes: #13392

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-20 11:57:08 +02:00
dkearns
d5dc58aeed runtime(json5): Add new ftplugin (#13385)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-19 20:00:12 +02:00
Gregory Anders
a8c664a042 patch 9.0.2053: zig filetype detection test wrong
Problem:  zig filetype detection test wrong
Solution: Remove .zir pattern, add new test for .zon pattern

closes: #13389

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Gregory Anders <greg@gpanders.com>
2023-10-19 19:57:57 +02:00
Ken Takata
c6944913f0 patch 9.0.2052: win32: using deprecated wsock32 api
Problem:  win32: using deprecated wsock32 api
Solution: Use winsock2 (ws2_32) consistently

win32: Stop using wsock32

We have already used ws2_32 (winsock2) and already dropped support for
Windows 95 and NT4.  So, we don't need to care about wsock32.

Use ws2_32 consistently.

closes: #13383

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-19 17:24:02 +02:00
Yegappan Lakshmanan
00b55370b3 patch 9.0.2051: Vim9: wrong error for non-existing object var
Problem:  Vim9: wrong error for non-existing object var
Solution: mention object or class depending on whether
          the var is an object or class variable.

closes: #13384
closes: #13387

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-19 17:18:28 +02:00
Gregory Anders
e08bfef88b runtime(zig): Update Zig runtime files (#13388)
Update runtime files from upstream (https://github.com/zig/zig.vim) at
commit 54c216e5306a5c3878a60596aacb94dca8652ab9.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-19 17:16:59 +02:00
Christian Brabandt
198734897e Remove mention of huntr.dev since they do no longer support us
They do no longer support us, since they are shifting away to AI/ML
projects only. So remove any mentioned of using huntr.dev
https://huntr.com/new-huntr-faq/

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-19 17:12:19 +02:00
Christian Brabandt
ba75507c62 Patch 9.0.2050v2: Missing change to version.c
Problem:  v9.0.2050 missed the change to version.c
Solution: include the version.c change

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-19 17:04:04 +02:00
Yegappan Lakshmanan
c59c1e0d88 patch 9.0.2050: Vim9: crash with deferred function call and exception
Problem:  Vim9: crash with deferred function call and exception
Solution: Save and restore exception state

Crash when a deferred function is called after an exception and another
exception is thrown

closes: #13376
closes: #13377

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-19 10:52:34 +02:00
Yegappan Lakshmanan
d7b616d0ad patch 9.0.2049: Vim9: not recognizing qualified class vars for infix ops
Problem:  Vim9: not recognizing qualified class vars for infix ops
Solution: Drop the class type from the stack before generating the
          CLASSMEMBER instruction

closes: #13378
closes: #13379

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-19 10:47:53 +02:00
Ken Takata
982ef16059 patch 9.0.2048: python: uninitialized warning
Problem:  python: uninitialized warning
Solution: initialize 'minor' always

win32,py3: Fix uninitialized warning

Fix the following warning:
```
if_python3.c: In function 'py3_get_system_libname':
if_python3.c:879:16: warning: 'minor' may be used uninitialized [-Wmaybe-uninitialized]
  879 |             if (minor == PY_MINOR_VERSION)
      |                ^
if_python3.c:839:24: note: 'minor' was declared here
  839 |         long    major, minor;
      |                        ^~~~~
```

closes: #13368

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-18 12:03:41 +02:00
Ken Takata
2b126a6892 patch 9.0.2047: perl: warning about inconsistent dll linkage
Problem:  perl: warning about inconsistent dll linkage
Solution: suppress warning

Suppress warning C4273 (inconsistent DLL linkage).

Also adjust inconsistent use of const.

closes: #13369

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-18 11:59:44 +02:00
Ken Takata
436f39390f patch 9.0.2046: win32,python: warning that MS_WIN64 got re-defined
Problem:  win32,python: warning that MS_WIN64 got re-defined
Solution: Do not define MS_WIN64, as it is no longer used

Suppress the following warning:
```
In file included from C:/Python312-64/include/Python.h:12,
                 from if_python3.c:79:
C:/Python312-64/include/pyconfig.h:240: warning: "MS_WIN64" redefined
  240 | #define MS_WIN64
      |
<command-line>: note: this is the location of the previous definition
```

`MS_WIN64` is not defined in `Make_mvc.mak` either.
This should be able to be safely removed.

closes: #13370

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-18 11:53:30 +02:00
zeertzjq
a0e1f06f04 patch 9.0.2045: tests: checking for swap files takes time
Problem:  tests: checking for swap files takes time
Solution: don't check for swap files  when test has been skipped

Check for swap files takes a considerable about of time, so don't do
that for skipped tests to avoid wasting time.

closes: #13371

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-10-18 11:50:37 +02:00
Yegappan Lakshmanan
0672595fd5 patch 9.0.2044: Vim9: exceptions confuse defered functions
Problem:  Vim9: exceptions confuse defered functions
Solution: save and restore exception state when calling defered
          functions

closes: #13364
closes: #13372

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-18 11:47:37 +02:00
Enno
5036e69852 runtime(systemd): allow for overriding systemd ftplugin settings (#13373)
closes: #13357

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-18 11:38:19 +02:00
Ernie Rael
96952b2e98 patch 9.0.2043: Vim9: issue with funcref assignmentand varargs
Problem:  Vim9: issue with funcref assignmentand varargs
Solution: Fix funcref type checking

closes: #13351

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-17 18:15:01 +02:00
Christian Brabandt
c290009e99 patch 9.0.2042: Test_cq_zero_exmode fails without channel feature
Problem:  Test_cq_zero_exmode fails without channel feature
Solution: Make the test check the channel feature

closes: #13365

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-17 18:10:13 +02:00
Illia Bobyr
8079917447 patch 9.0.2041: trim(): hard to use default mask
Problem:  trim(): hard to use default mask (partly revert v9.0.2040)
Solution: use default mask when it is empty

The default 'mask' value is pretty complex, as it includes many
characters.  Yet, if one needs to specify the trimming direction, the
third argument, 'trim()' currently requires the 'mask' value to be
provided explicitly.

Currently, an empty 'mask' will make 'trim()' call return 'text' value
that is passed in unmodified.  It is unlikely that someone is using it,
so the chances of scripts being broken by this change are low.

Also, this reverts commit 9.0.2040 (which uses v:none for the default
and requires to use an empty string instead).

closes: #13358

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Illia Bobyr <illia.bobyr@gmail.com>
2023-10-17 18:06:00 +02:00
Rolf Vidar Mazunki Hoksaas
5a33ce2a66 runtime(json5): include syntax script for json5 (#13356)
Merging syntax file from gutenye/json5.vim, modified to include proper
vim header.

See: https://github.com/vim/vim/issues/8499

Signed-off-by: Mazunki Hoksaas <rolferen@gmail.com>
Co-authored-by: Guten Ye <ywzhaifei@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-17 11:13:06 +02:00
Illia Bobyr
6e6386716f patch 9.0.2040: trim(): hard to use default mask
Problem:  trim(): hard to use default mask
Solution: Use default 'mask' when it is v:none

The default 'mask' value is pretty complex, as it includes many
characters.  Yet, if one needs to specify the trimming direction, the
third argument, 'trim()' currently requires the 'mask' value to be
provided explicitly.

'v:none' is already used to mean "use the default argument value" in
user defined functions.  See |none-function_argument| in help.

closes: #13363

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Illia Bobyr <illia.bobyr@gmail.com>
2023-10-17 11:09:45 +02:00
nwounkn
2e3cd52fa0 patch 9.0.2039: completion shows current word after completion restart
Problem:  completion shows current word after completion restart
Solution: remove the word being completed after completion restart

The word being completed is shown in a completion list after completion
restart, because it isn't removed from the current buffer before
searching for matches.

Also adjust `Test_complete_add_onechar` to match the new behavior.

closes: #13349

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: nwounkn <nwounkn@gmail.com>
2023-10-17 11:05:38 +02:00
Yegappan Lakshmanan
f3eac695bf patch 9.0.2038: Vim9: object method funcref not cleaned up after use
Problem:  Vim9: object method funcref not cleaned up after use
Solution: Clean up type stack after using object method funcref,
          remove now longer used ISN_DEFEROBJ instrunction

closes: #13360

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-17 11:00:45 +02:00
Yee Cheng Chin
209ec90b9b patch 9.0.2037: A few remaining cmdline completion issues with C-E/Y
Problem:  A few remaining cmdline completion issues with C-E/Y
Solution: Fix cmdline completion fuzzy/Ctrl-E/Ctrl-Y/options when not
          used at the end

Fix cmdline completion fuzzy/Ctrl-E/Ctrl-Y/options when not used at the end

A few places in the cmdline completion code only works properly when the
user hits Tab (or 'wildchar') at the end of the cmdline, even though
it's supposed to work even in the middle of the line.

For fuzzy search, `:e ++ff`, and `:set hl=`, fix completion code to make
sure to use `xp_pattern_len` instead of assuming the entire `xp_pattern`
is the search pattern (since it contains texts after the cursor).

Fix Ctrl-E / Ctrl-Y to not jump to the end when canceling/accepting a
wildmenu completion. Also, make them work even when not using
`set wildoptions+=pum` as there is no drawback to doing so.
(Related issue where this was brought up: #13331)

closes: #13362

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-10-17 10:56:25 +02:00
Yee Cheng Chin
396058acd0 patch 9.0.2036: if_python: rework python3.12 build dependency
Problem:  if_python: rework python3.12 build dependency
          (after 9.0.1996)
Solution: use PyTuple_Size instead of inlining the Py_SIZE
          into the Vim code base

Use a simpler fix for Python 3.12 build issues

Python 3.12 introduced link dependencies to their `Py_SIZE()` inline
function, which #13290 fixed by copying the inline function to Vim's
Python binding code. This works but it's fragile, as a future update may
change the implementation of `Py_SIZE` and there is no way for us to
know.

The reason we need `Py_SIZE` to begin with is that we use
`PyTuple_GET_SIZE()` which calls that. Just fix it by mapping that to
(confusingly similarly named) `PyTuple_Size()`, which we already do in
the stable ABI implementation. There's a minor performance cost in that
it's not inlined and it does error checking but that's fine as we only
call this function rarely (in an error handler).

related: #13290
closes: #13359

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-10-17 10:38:11 +02:00
Yee Cheng Chin
8f4fb007e4 patch 9.0.2035: [security] use-after-free with wildmenu
Problem:  [security] use-after-free with wildmenu
Solution: properly clean up the wildmenu when exiting

Fix wildchar/wildmenu/pum memory corruption with special wildchar's

Currently, using `wildchar=<Esc>` or `wildchar=<C-\>` can lead to a
memory corruption if using wildmenu+pum, or wrong states if only using
wildmenu. This is due to the code only using one single place inside the
cmdline process loop to perform wild menu clean up (by checking
`end_wildmenu`) but there are other odd situations where the loop could
have exited and we need a post-loop clean up just to be sure. If the
clean up was not done you would have a stale popup menu referring to
invalid memory, or if not using popup menu, incorrect status line (if
`laststatus=0`).

For example, if you hit `<Esc>` two times when it's wildchar, there's a
hard-coded behavior to exit command-line as a failsafe for user, and if
you hit `<C-\><C-\><C-N>` it will also exit command-line, but the clean
up code would not have hit because of specialized `<C-\>` handling.

Fix Ctrl-E / Ctrl-Y to not cancel/accept wildmenu if they are also
used for 'wildchar'/'wildcharm'. Currently they don't behave properly,
and also have potentially memory unsafe behavior as the logic is
currently not accounting for this situation and try to do both.
(Previous patch that addressed this: #11677)

Also, correctly document Escape key behavior (double-hit it to escape)
in wildchar docs as it's previously undocumented.

In addition, block known invalid chars to be set in `wildchar` option,
such as Ctrl-C and `<CR>`. This is just to make it clear to the user
they shouldn't be set, and is not required for this bug fix.

closes: #13361

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-10-17 10:06:56 +02:00
Christian Brabandt
5a679b2263 patch 9.0.2034: don't try to copy SMACK attribute, when none exist
Problem:  don't try to copy SMACK attribute, when none exist
Solution: return early if SMACK extended attributes do not exist or
          if they are not supported

closes: #1711
closes: #13348

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-16 10:17:13 +02:00
Ken Takata
215c3261a2 patch 9.0.2033: gcc overflow-warning for f_resolve
Problem:  gcc overflow-warning for f_resolve
Solution: use pointer p instead of pointer q[-1]

Suppress the following warning:
```
filepath.c: In function ‘f_resolve’:
filepath.c:2162:27: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
 2162 |                     q[-1] = NUL;
```

Closes: #13352
closes: #13353

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-16 09:57:43 +02:00
Viktor Szépe
dbf749bd5a runtime: Fix more typos (#13354)
* Fix more typos

* Fix typos in ignored runtime/ directory

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-16 09:53:37 +02:00
zeertzjq
f5a94d5165 patch 9.0.2032: cannot get mouse click pos for tab or virt text
Problem:  Cannot accurately get mouse clicking position when clicking on
          a TAB or with virtual text.
Solution: Add a "coladd" field to getmousepos() result.

closes: #13335

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-10-15 10:03:30 +02:00
zeertzjq
3c81f47a05 runtime(doc): correct <PageUp>/<PageDown> behavior in 'wildmenu' (#13336)
"but don't insert it" is wrong.
Also move them just below <Up> <Down> as they are more similar.
2023-10-15 10:02:08 +02:00
Evgeni Chasnovski
d7ae263af8 patch 9.0.2031: TextChangedI may be triggered by non-insert mode change
Problem:  `TextChangedI` can trigger on entering Insert mode if there
          was previously a change not in Insert mode.
Solution: Make it trigger only when text is actually changed in Insert
          mode.

closes: #13265
closes: #13338

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
2023-10-15 09:59:00 +02:00
Christian Brabandt
47510f3d65 patch 9.0.2030: no max callback recursion limit
Problem:  no max callback recursion limit
Solution: bail out, if max call recursion for callback functions
          has been reached.

This checks the 'maxfuncdepth' setting and throws E169 when a callback
function recursively calls itself.

closes: #13337
closes: #13339

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-15 09:56:16 +02:00
Yegappan Lakshmanan
1ace49fb98 patch 9.0.2029: Vim9: no support for partials using call()
Problem:  Vim9: no support for partials using call()
Solution: Add support

closes: #13341

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-15 09:53:41 +02:00
Yee Cheng Chin
5d03525cde patch 9.0.2028: confusing build dependencies
Problem:  confusing build dependencies
Solution: clean them up, make them parallelizable

Separate vim binary and unittest dependencies, make them parallelizable

Clean up make dependencies so Vim and unit test binaries only depend on
the object files they need. This fixes an existing issue where after
running unit tests, the Vim binary would be invalidated, which results
in it having to be linked again when running script tests, even though
Vim was already previously built.

Make link.sh (script we use to link those binaries) generate namespaced
temporary files for each app to avoid them colliding with each other.
This allows `unittesttargets` to be built in parallel.

These fixes are useful when using link-time-optimization as the link
phase could now take minutes rather than a few seconds.

closes: #13344

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-10-15 09:50:53 +02:00
Yegappan Lakshmanan
de3295dd0c patch 9.0.2027: Vim9: no support for bitwise operators in lambda funcs
Problem:  Vim9: no support for bitwise operators in lambda funcs
Solution: move "evaluate" assignment a bit up in order to decide
          to perform bitwise operations

closes: #13342
closes: #13345

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-15 09:44:50 +02:00
Ken Takata
ae3cfa47d3 patch 9.0.2026: win32: python3 dll loading can be improved
Problem:  win32: python3 dll loading can be improved
Solution: Load DLL from registry path

Support loading python3.dll and/or python3xx.dll from the path written
in the registry.  To support Stable ABI's forwarder DLL (python3.dll),
use the `LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR` flag for `LoadLibraryExW()`
because python3xx.dll is placed in the same directory of python3.dll.

If Stable ABI is used, search the latest version from the registry (both
from HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE).  If Stable ABI is not
used, search only the matching version.

closes: #13315

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-14 11:49:09 +02:00
Yee Cheng Chin
989426be6e patch 9.0.2025: no cmdline completion for ++opt args
Problem:  no cmdline completion for ++opt args
Solution: Add cmdline completion for :e ++opt=arg and :terminal
          [++options]

closes: #13319

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-10-14 11:46:51 +02:00
James McCoy
bd734c3bea patch 9.0.2024: no filetype detection for Debian sources
Problem:  no filetype detection for Debian sources
Solution: Add new deb822sources filetype

closes: #13320

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: James McCoy <jamessan@jamessan.com>
2023-10-14 11:41:34 +02:00
Christian Brabandt
ba9aed4497 patch 9.0.2023: need more tests for :cq
Problem:  need more tests for :cq
Solution: Add more tests, including wraparound on linux

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-14 11:39:40 +02:00
zeertzjq
b583eda703 patch 9.0.2022: getmousepos() returns wrong index for TAB char
Problem:  When clicking in the middle of a TAB, getmousepos() returns
          the column of the next char instead of the TAB.
Solution: Break out of the loop when the vcol to find is inside current
          char. Fix invalid memory access when calling virtcol2col() on
          an empty line.

closes: #13321

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-10-14 11:32:28 +02:00
Christian Brabandt
cd6ee69358 patch 9.0.2021: Coverity complains about change in charset
Problem:  Coverity complains about change in charset (after v9.0.2017)
Solution: check pointer t at index 0

closes: #13322

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-14 11:29:28 +02:00
Ivan Pešić
5ae6f9985e translation(sr): Update Serbian messages translation (#13324)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-14 11:28:05 +02:00
dkearns
7687238e1b runtime(tcsh): Update ftplugin (#13327)
Fix b:browsefilter deletion error when calling b:undo_ftplugin.

Fixes #13167

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-14 11:27:27 +02:00
Ernie Rael
0f058d1320 patch 9.0.2020: Vim9: islocked() needs more work
Problem:  Vim9: islocked() needs more work
Solution: rework islocked() and remove sync_root
          from get_lval()

closes: #13329

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-14 11:25:04 +02:00
Yee Cheng Chin
2bbd0d30ee runtime(doc): Improve command-line completion docs (#13331)
* Improve command-line completion docs

Add more details about 'ignorecase' and its effect on cmdline
completion.

Make sure keys used in wildmenu are properly documented and linked in the
keys' documentation entries, and in `:h index` for proper
cross-referencing, as wildmenu popup is slightly different from
insert-mode popup menu.

* Fix docs typos

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-14 11:23:45 +02:00
Yegappan Lakshmanan
29bb67f1be patch 9.0.2019: Vim9: no support for funcrefs
Problem:  Vim9: no support for funcrefs
Solution: Add support for object/class funcref members

closes: #11981 #12417 #12960 #12324 #13333

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-14 11:18:50 +02:00
LemonBoy
69fb5afb3b patch 9.0.2018: complete_info() returns wrong index
Problem:  complete_info() returns wrong index
Solution: Make order of 'info' in completion_info consistent

Start the iteration from the same point and follow the same direction as
done when assigning the completion numbers. This way we remove the
dependence on the completion direction and make the order of 'info'
consistent.

closes: #12230
closes: #12971

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
2023-10-11 21:55:56 +02:00
Christian Brabandt
dd75fcfbdf patch 9.0.2017: linebreak applies for leading whitespace
Problem:  linebreak applies for leading whitespace
Solution: only apply linebreak, once we have found non-breakat chars in
          the line

closes: #13228
closes: #13243

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-11 21:53:52 +02:00
Yegappan Lakshmanan
1ea428883f patch 9.0.2016: Vim9: assignment operators don't work for class vars
Problem:  Vim9: assignment operators don't work for class vars
Solution: implement it

closes: #13306

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-11 21:43:52 +02:00
Ernie Rael
4c8da025ef patch 9.0.2015: Vim9: does not handle islocked() from a method correctly
Problem:  Vim9: does not handle islocked() from a method correctly
Solution: Handle islocked() builtin from a method.

- Setup `lval_root` from `f_islocked()`.
- Add function `fill_exec_lval_root()` to get info about executing method.
- `sync_root` added in get_lval to handle method member access.
- Conservative approach to reference counting.

closes: #13309

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-11 21:38:24 +02:00
Ken Takata
c97b3febc8 patch 9.0.2013: confusing ifdefs in if_<lang>.c
Problem:  confusing ifdefs in if_<lang>.c
Solution: refactor ifndefs to #ifdefs

if_x: Avoid using #ifndef - #else - #endif

Using #ifndef - #else - #endif is sometimes confusing.
Use #ifdef - #else - #endif instead.

closes: #13310

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-11 21:27:06 +02:00
Christian Brabandt
a634b92b96 patch 9.0.2013: Unicode tables outdated
Problem: Unicode tables outdated
Solution: Update Unicode tables to v15.1 (released 23.09.2023)

closes: #13311

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-11 21:24:49 +02:00
Ernie Rael
f8da324619 patch 9.0.2012: Vim9: error message can be more accurate
Problem:  Vim9: error message can be more accurate
Solution: Fix the error messages

Fix message for some single use error messages.

closes: #13312

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-11 21:22:12 +02:00
Martin Tournoij
4a82bdfaa8 patch 9.0.2011: INI files not detected
Problem:  INI files not detected
Solution: detect uppercase .INI as dosini files

It previo~1 only worked for lower-case .ini files, but upperc~1 .INI is
also somewhat common on account of DOS' old 8.3 upperc~2 only filena~1.

closes: #13316

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Martin Tournoij <martin@arp242.net>
2023-10-11 21:20:06 +02:00
Christian Brabandt
41e6f7d6ba patch 9.0.2010: [security] use-after-free from buf_contents_changed()
Problem:  [security] use-after-free from buf_contents_changed()
Solution: block autocommands

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-11 21:09:53 +02:00
Yee Cheng Chin
54844857fd patch 9.0.2009: cmdline-completion for comma-separated options wrong
Problem:  cmdline-completion for comma-separated options wrong
Solution: Fix command-line expansions for options with filenames with
          commas

Fix command-line expansions for options with filenames with commas

Cmdline expansion for option values that take a comma-separated list
of file names is currently not handling file names with commas as the
commas are not escaped. For such options, the commas in file names need
to be escaped (to differentiate from a comma that delimit the list
items). The escaped comma is unescaped in `copy_option_part()` during
option parsing.

Fix as follows:
- Cmdline completion for option values with comma-separated file/folder
  names will not start a new match when seeing `\\,` and will instead
  consider it as one value.
- File/folder regex matching will strip the `\\` when seeing `\\,` to
  make sure it can match the correct files/folders.
- The expanded value will escape `,` with `\\,`, similar to how spaces
  are escaped to make sure the option value is correct on the cmdline.

This fix also takes into account the fact that Win32 Vim handles file
name escaping differently. Typing '\,' for a file name results in it
being handled literally but in other platforms '\,' is interpreted as a
simple ',' and commas need to be escaped using '\\,' instead.

Also, make sure this new logic only applies to comma-separated options
like 'path'. Non-list options like 'set makeprg=<Tab>' and regular ex
commands like `:edit <Tab>` do not require escaping and will continue to
work.

Also fix up documentation to be clearer. The original docs are slightly
misleading in how it discusses triple slashes for 'tags'.

closes: #13303
related: #13301

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-10-09 18:12:31 +02:00
Dominique Pellé
b07b9dc4da patch 9.0.2008: test: undofile left behind
Problem:  test: undofile left behind
Solution: cleanup undofile

fix: tmp file not deleted when running make test_undo

Temporary file `.Xtestfile.txt.un~` was left running `make test_undo`
and vim was configured with:
```
./configure --with-features=normal --enable-gui=no --enable-terminal
```

closes: #13304

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Dominique Pellé <dominique.pelle@tomtom.com>
2023-10-09 18:09:20 +02:00
Yegappan Lakshmanan
e467189022 patch 9.0.2007: Vim9: covariant parameter types allowed
Problem:  Vim9: covariant parameter types allowed when assigning
          functions
Solution: Enforce invariant type check for arguments and return value
          when assigning a funcref

closes: #13299
closes: #13305

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-09 18:01:06 +02:00
Yegappan Lakshmanan
f4ee1cb74b patch 9.0.2006: Vim9: need more tests
Problem:  Vim9: need more tests
Solution: add additional disassembly tests

closes: #13305

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-09 17:57:27 +02:00
Christian Brabandt
b56cef0be0 patch 9.0.2005: partially revert patch v9.0.1997
Problem:  partially revert patch v9.0.1997
Solution: add a comment, to make clear it's not used

related: #13288

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-09 17:55:02 +02:00
Christian Brabandt
d4afbdd071 patch 9.0.2004: Missing test file
Problem:  Missing test file
Solution: git-add the file to the repo

closes: #13305

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-09 08:15:00 +02:00
Christian Brabandt
7879bc5c13 patch 9.0.2003: xxd: compilation warning
Problem:  xxd: compilation warning
Solution: initialize variables

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-08 20:38:43 +02:00
Enno
1e33cd72b6 runtime: make command name for &iskeywordprg more unique (#13297)
See https://github.com/vim/vim/pull/13213/commits by @dkearns:
Rename 'keywordprg' user command to ShKeywordPrg as this is just a
leaking implementation detail.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-08 19:14:07 +02:00
Yegappan Lakshmanan
b852305dbf patch 9.0.2002: Vim9: need cleanup of class related interface code
Problem:  Vim9: need cleanup of class related interface code
Solution: Remove the unused class variable and class method related code
          for interfaces.

Remove unused class variable and class method related code for
interfaces.

Refactor the code.

Optimize the object/class member double lookup in compile_lhs().

Change unused global functions to static functions.

closes: #13302

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-08 19:07:39 +02:00
Antonio Giovanni Colombo
75b277d35c translation(it): updated translation of xxd manpage
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-08 19:05:02 +02:00
Ernie Rael
9771b2a67f patch 9.0.2001: Vim9: segfault with islocked()
Problem:  Vim9: segfault with islocked()
Solution: Check that the lval pointer is not null for objects and
          class variables

closes: #13295

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-07 22:10:26 +02:00
Yegappan Lakshmanan
1087b8c29a patch 9.0.2000: Vim9: use-after-free in deep call stack
Problem:  Vim9: use-after-free in deep call stack
Solution: Get the objct pointer from execution stack

closes: #13296

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-07 22:03:18 +02:00
dkearns
2a281ccca0 runtime(sh): Update ftplugin (#13213)
Rename 'keywordprg' user command to ShKeywordPrg as this is just a
leaking implementation detail.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-06 19:59:42 +02:00
Ernie Rael
e6c9aa5e6a patch 9.0.1999: Vim9: some error messages can be improved
Problem:  Vim9: some error messages can be improved
Solution: Mention the defining class for variable access error message

closes: #13272

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-06 19:55:52 +02:00
tristhaus
85f4521808 patch 9.0.1998: xxd: cannot reverse a bit dump
Problem:  xxd: cannot reverse a bit dump
Solution: implement reversing the bit dump using -b -r

closes: #13286

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: tristhaus <tristhaus@yahoo.de>
2023-10-06 19:51:13 +02:00
dundargoc
580c1fcb4a patch 9.0.1997: Some unused code in move.c and string.c
Problem:  Some unused code in move.c and string.c
Solution: Remove it

closes: #13288

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: dundargoc <gocdundar@gmail.com>
2023-10-06 19:41:14 +02:00
zeertzjq
27e12c7669 runtime(doc): remove E1520 tag (#13289)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-06 19:34:04 +02:00
Ken Takata
fa145f2009 patch 9.0.1996: Cannot build with python312
Problem:  Cannot build with python312
Solution: Define wrapper types and functions for python 3.12

Py_SIZE() uses PyLong_Type and PyBool_Type starting from Python 3.12.
We need to define our own Py_SIZE() to replace Py{Bool,Long}_Type with
py3_Py{Bool,Long}_Type.
We also need to redefine PyTuple_GET_SIZE() and PyList_GET_SIZE(), because
they use Py_SIZE().

closes: #13281
closes: #13290

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-06 19:27:13 +02:00
Yegappan Lakshmanan
26e8f7b0ab runtime(doc): Update vim9class help (#13292)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-06 19:24:10 +02:00
zeertzjq
a991ce9c08 patch 9.0.1995: Invalid memory access with empty 'foldexpr'
Problem:  Invalid memory access when 'foldexpr' returns empty string.
Solution: Check for NUL.

closes: #13293

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-10-06 19:18:12 +02:00
RestorerZ
ac9c6d5c78 patch 9.0.1994: inconsistent feature description
Problem:  inconsistent feature description
Solution: delete old mentioned feature sets small and big

The may however still be mentioned for historical reasons. e.g. The
last Amiga built version is for Vim6.2 and is still a big version.

closes: #13273

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: RestorerZ <restorer@mail2k.ru>
2023-10-05 22:25:12 +02:00
Christian Brabandt
9960ebcace patch 9.0.1993: warning about unused function definition
Problem:  warning about unused function definition
Solution: add ifdefs

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-05 22:17:09 +02:00
Christian Brabandt
20d161ace3 patch 9.0.1992: [security] segfault in exmode
Problem:  segfault in exmode when redrawing
Solution: skip gui_scroll when exmode_active

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-05 22:10:10 +02:00
Yee Cheng Chin
290b887e8c patch 9.0.1991: no cmdline completion for setting the font
Problem:  no cmdline completion for setting the font
Solution: enable it on Win32 and GTK builds

Add guifont cmdline completion (for Windows and GTK)

For Windows, auto-complete will only suggest monospace fonts as that's
the only types allowed. Will also suggest font options after the colon,
including suggesting the current font size for convenience, and misc
charset and quality options like `cANSI` and `qCLEARTYPE`.

For GTK, auto-complete will suggest only monospace fonts for `guifont`
but will include all fonts for `guifontwide`. The completion code
doesn't currently suggest the current font size, as the GTK guifont
format does not have a clear delimiter (':' for other platforms).

closes: #13264

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-10-05 20:54:21 +02:00
Christ van Willegen
ea746f9e86 patch 9.0.1990: strange error number
Problem:  strange error number
Solution: change error number,
          add doc tag for E1507

closes: #13270

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Christ van Willegen <cvwillegen@gmail.com>
2023-10-05 20:48:36 +02:00
KSR-Yasuda
0e95841004 runtime(netrw): diff (df) may open the wrong window (#13275)
closes: #11359

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-05 20:37:15 +02:00
KSR-Yasuda
f449825ae2 runtime(netrw): Update .netrwbook immediately on bookmark change (#13276)
closes: #9738

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-05 20:34:17 +02:00
K.Takata
9b259f520e translation(it): revert permission changes for xxd manpages again (#13277)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-05 20:30:08 +02:00
Ernie Rael
d615a3122a patch 9.0.1989: Vim9: double error message given
Problem:  Vim9: double error message given
Solution: Only give second error message, if ther
          wasn't one given before

closes: #13278

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-05 20:28:16 +02:00
Yegappan Lakshmanan
d2f4800099 patch 9.0.1988: Vim9: potential use-after-free for class members
Problem:  Vim9: potential use-after-free for class members
Solution: Use the class-related grow array for storing the
          member type instead of using a temporary type
          list grow array

Use the type list grow array associated with the class than using a
temporary type list grow array to allocate the class member type.

For simple types, a predefined type is used. For complex types, the type
is dynamically allocated from a grow array. For class variables, the
type grow array in the class should be used. So that the lifetime of the
type is same as the lifetime of the class.

closes: #13279

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-05 20:24:18 +02:00
Ken Takata
da5da654de patch 9.0.1987: win32: font-size calculation can be improved
Problem:  win32: font-size calculation can be improved
Solution: calculate font size before the window size

Support calculating the new size even if a bitmap font is used.
Calculate the new font size before actually change the Window size.

closes: #13280
related: #11812, #13252

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-05 20:20:58 +02:00
Ivan Pešić
c661e11e9c translation(sr): Update Serbian messages translation (#13282)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-05 20:17:28 +02:00
Yegappan Lakshmanan
b5a0719cb7 patch 9.0.1986: Vim9: accepting type-annotations
Problem:  Vim9: accepting type-annotations
Solution: Reject type annotations outside of declarations.

closes: #13267
closes: #13283

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-05 20:16:06 +02:00
dundargoc
b6d01f131c runtime(just): Correct filetype detection pattern and style (#13284)
See https://github.com/vim/vim/pull/13271#discussion_r1347279686 and
https://github.com/NoahTheDuke/vim-just/blob/main/ftdetect/just.vim.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-05 20:11:55 +02:00
dundargoc
9a00e7c7cf patch 9.0.1985: CI: codecov is intrusive
Problem:  CI: codecov is intrusive
Solution: disable codecov comments

The codecov report is incredibly intrusive, and getting a notification
for every PR to vim that codecov codecoved is annoying. If anyone is
interested in the report the information is readily available by
clicking on the job.

closes: #13285

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: dundargoc <gocdundar@gmail.com>
2023-10-05 20:07:11 +02:00
Christian Brabandt
85ff0c1912 patch 9.0.1984: CI: Test_open_delay*() fails on FreeBSD 14
Problem:  CI: Test_open_delay*() fails on FreeBSD 14
Solution: Skip it on BSD

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-04 21:58:24 +02:00
zeertzjq
8e5f26ec6a patch 9.0.1983: scrolling inactive window not possible with cursorbind
Problem:  Scrolling non-current window using mouse is inconsistent
          depending on 'scrollbind'/'scrolloff' and different from GUI
          vertical scrollbar when 'cursorbind' is set.
Solution: Don't move cursor in non-current windows for 'cursorbind' if
          cursor in the current window didn't move.

closes: #13219
closes: #13210

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-10-04 21:45:33 +02:00
yasuda
4dbb2669e9 runtime(netrw): error when trying to :bd unloaded buffer
closes: #13215
closes: #13082

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-04 20:52:44 +02:00
Ernie Rael
64885645e7 patch 9.0.1982: vim9: clean up from v9.0.1955
Problem:  vim9: clean up from v9.0.1955
Solution: Fix a few remaining issues, improve error message

- Use `cl_exec`, the executing class, to check permissions in `get_lval()`.
- Handle lockvar of script variable from class.
- Add 'in class "Xxx"' to e_cannot_access_private_variable_str.

closes: #13222

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-04 20:16:22 +02:00
zeertzjq
0583491277 patch 9.0.1981: not being able to scroll up in diff mode
Problem:  Cannot scroll up in diff mode with many filler lines and zero
          'scrolloff'.
Solution: Invalidate w_cline_row before calling comp_botline().

closes: #13256

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-10-04 20:12:37 +02:00
Ken Takata
119fdd9293 patch 9.0.1980: win32: issues with stable python ABI
Problem:  win32: issues with stable python ABI
Solution: if_python3,win32: Fix Python3 stable ABI

There were some issues in current stable ABI implementation on Windows:
* Python DLL name should be `python3.dll` instead of `python311.dll` and
  so on. (See: https://docs.python.org/3/c-api/stable.html)
* Some non-stable API functions were used:
  - `_PyObject_NextNotImplemented`
  - `PyStdPrinter_Type`
* `reset_stdin()` and `hook_py_exit()` didn't work with `python3.dll`.
  `python3.dll` is a special type of DLL called forwarder DLL.
  It just forwards the functions to other DLL (e.g. `python311.dll`).
  There were two issues regarding these functions:
  - `python3.dll` doesn't have import tables. This caused a crash in
    `get_imported_func_info()`. Add a check whether the specified DLL
    has an import table.
  - `reset_stdin()` and `hook_py_exit()` should be applied to the
    forwarded DLL (e.g. `python311.dll`), not to `python3.dll`.
    Check the export directory of `python3.dll` to find the forwarded
    DLL and apply the functions to it.

closes: #13260

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-04 20:05:05 +02:00
zeertzjq
317468aace patch 9.0.1979: Cirrus CI disabled
Problem:  Cirrus CI disabled
Solution: re-enable Cirrus CI

Ref patch 9.0.1912:

> Perhaps at the beginning of the next month we can revisit and enable
> just a build without testing it.  Hopefully this is won't take too
> many credits and we can at least verify that building works.

Actually enabling testing should be fine. In the last month there were
three Cirrus CI jobs and credits ran out on Sep 15, but now there is
only one Cirrus CI job, so credits shouldn't run out.

closes: #13261

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-10-04 19:57:35 +02:00
dundargoc
3d90f71b76 patch 9.0.1978: No filetype detection for just files
Problem:  No filetype detection for just files
Solution: Detect just files (*.just, justfile, etc)

closes: #13271

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: dundargoc <gocdundar@gmail.com>
2023-10-04 19:52:54 +02:00
Yegappan Lakshmanan
fe7b20a1a3 patch 9.0.1977: Vim9: object members can change type
Problem:  Vim9: object members can change type
Solution: Check type during assignment to object/class var

closes: #13127
closes: #13262

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-04 19:47:52 +02:00
Antonio Giovanni Colombo
b9a974df9e translation(it): update translation of xxd manpage
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-04 18:30:25 +02:00
Christian Brabandt
b74ebfc6bf runtime(doc): update xxd manpage and mention $NO_COLOR env
also regenerate the xxd.man document page.

fixes: #13257

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-03 16:58:55 +02:00
Aliaksei Budavei
b043ff34c1 runtime(doc): fix two typos in vim9.txt and options.txt (#13258)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-03 16:39:53 +02:00
zeertzjq
2dfc22908e runtime(doc): remove E1507 help tag, which is no longer used (#13254)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-03 08:12:56 +02:00
Christian Brabandt
3f168ec8ae patch 9.0.1976: style: space before tab in optionstr.c
Problem:  style: space before tab in optionstr.c
Solution: remove the space

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-02 23:21:11 +02:00
Gene C
993b17569b patch 9.0.1975: xattr: permission-denied errors on write
Problem:  xattr: permission-denied errors on write
Solution: ignore those errors

closes: #13246

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Gene C <arch@sapience.com>
2023-10-02 22:44:12 +02:00
Restorer
12a0d999b1 translation(ru): Update Russian message translation to Vim 9.0.1968 (#13239)
* Updated to Vim 9.0.1968. Several refinements and corrections
* typo fixed

Co-authored-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-02 21:53:27 +02:00
Yegappan Lakshmanan
cd39b69b02 runtime(doc): add missing error numbers in the help. (#13241)
closes: #13240

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-02 21:50:45 +02:00
dundargoc
20f48d5b2d runtime(doc): mention how to disable folding in diff mode (#13242)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-02 21:49:23 +02:00
h_east
ba77bbb5c7 runtime(doc): fix typos.
* Fix typo in document (Related: #12516)
* Fix E1363 duplication
* Fix one more typo.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-02 21:47:13 +02:00
Yegappan Lakshmanan
b32064fedb patch 9.0.1974: vim9: using contra-variant type-checks
Problem:  vim9: using contra-variant type-checks (after v9.0.1959)
Solution: Use invariant type checking instead

closes: #13248

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-02 21:43:58 +02:00
Yee Cheng Chin
6d11347260 patch 9.0.1973: Clean up cmdline option completion code
Problem:  Clean up cmdline option completion code
Solution: Fix various minor problems

- Fix manual array size calculations to just use `ARRAY_LENGTH()`.
- Fix unintentional typo in comments due to copy-paste error.
- Fix assert_equal() usages to pass the expected value to first
  parameter instead of 2nd one to avoid confusion.
- Fix signed vs unsigned warnings
- Correct misplaced comments about set_op_T and set_prefix_T
  and fix a typo in another comment

closes: #13249
closes: #13237

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-10-02 21:38:39 +02:00
Ken Takata
4a1ad55564 patch 9.0.1972: win32: missing '**' expansion test
Problem:  win32: missing '**' expansion test (after v9.0.1947)
Solution: Add test for MS-Windows

win32: Add "**" test

Vim supports "**" on MS-Windows. However, it is not tested by
`Test_glob_extended_bash`.

Unlike Unix, it doesn't use 'shell' and doesn't support {,} expansion.
So, I added as a separate test.

related: #13205
closes: #13250

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-02 21:33:42 +02:00
Yee Cheng Chin
f59cbefd0a patch 9.0.1971: macOS: FEAT_SOUND guard too restrictive
Problem:  macOS: FEAT_SOUND guard too restrictive
Solution: check for older macOS support properly

Fix macOS FEAT_SOUND guards to be less restrictive

This allows +sound to work on older macOS platforms again. The +sound
implementation uses APIs available in 10.6, but the code itself uses
generics with type parameters which was only added in Xcode 7 / clang 7,
which was released for macOS 10.11. This means as long as Vim is
compiled under 10.11+, and using a deployment target >= 10.6, the
feature will work.

closes: #13251

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-10-02 21:28:50 +02:00
Ken Takata
7086b3e76a patch 9.0.1970: win32: high-dpi support can be improved
Problem:  win32: high-dpi support can be improved
Solution: implement WM_GETDPISCALEDSIZE

win32: Better support of Per-Monitor V2 High DPI

Implement WM_GETDPISCALEDSIZE.
It is not so easy to calculate the new size without actually changing
the size. So, this returns an approximate size.

This doesn't work well when a bitmap font (e.g. FixedSys) is selected,
but I think this is acceptable.

closes: #11812
closes: #13252

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-10-02 21:26:03 +02:00
Christian Brabandt
3bd7fa12e1 patch 9.0.1969: [security] buffer-overflow in trunc_string()
Problem:  buffer-overflow in trunc_string()
Solution: Add NULL at end of buffer

Currently trunc_string() assumes that when the string is too long,
buf[e-1] will always be writeable. But that assumption may not always be
true. The condition currently looks like this

    else if (e + 3 < buflen)
    [...]
    else
    {
	// can't fit in the "...", just truncate it
	buf[e - 1] = NUL;
    }

but this means, we may run into the last else clause with e still being
larger than buflen. So a buffer overflow occurs.

So instead of using `buf[e - 1]`, let's just always
truncate at `buf[buflen - 1]` which should always be writable.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-10-02 20:59:47 +02:00
Yee Cheng Chin
6ee7b521fa patch 9.0.1968: cmdline completion should consider key option
Problem:  cmdline completion should consider key option
Solution: Disable cmdline completion for key option, slightly
          refactor how P_NO_CMD_EXPAND is handled

Harden crypto 'key' option: turn off cmdline completion, disable set-=

"set-=" can be used maliciously with a crypto key, as it allows an
attacker (who either has access to the computer or a plugin author) to
guess a substring by observing the modified state. Simply turn off
set+=/-=/^= for this option as there is no good reason for them to be
used.

Update docs to make that clear as well.

Also, don't allow cmdline completion for 'key' as it just shows *****
which is not useful and confusing to the user what it means (if the user
accidentally hits enter they will have replaced their key with "*****"
instead).

Move logic to better location, don't use above 32-bit for flags

Move P_NO_CMD_EXPAND to use the unused 0x20 instead of going above
32-bits, as currently the flags parameter is only 32-bits on some
systems. Left a comment to warn that future additions will need to
change how the flags work either by making it 64-bit or split into two
member vars.

Also, move the logic for detecting P_NO_CMD_EXPAND earlier so it's not
up to each handler to decide, and you won't see the temporary "..." that
Vim shows while waiting for completion handler to complete.

closes: #13224

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-10-01 09:19:18 +02:00
zeertzjq
7ece036d72 patch 9.0.1967: xattr errors not translated
Problem:  xattr errors not translated
Solution: mark for translation, consistently capitalize
          first letter.

closes: #13236

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-10-01 09:07:14 +02:00
Illia Bobyr
e379e21ddc patch 9.0.1966: configure prints stray 6 when checking libruby
Problem:  configure prints stray 6 when checking libruby
Solution: redirect stdout to dev/null

configure: Do not print "6" when checking for libruby

`expr` will print the matched string length to the standard output.
Current `configure` output looks like this:

```
checking Ruby header files...  /usr/include/ruby-3.1.0
6
```

The script really only cares about `expr` exit code.

closes: #13234

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Illia Bobyr <illia.bobyr@gmail.com>
2023-09-30 22:59:27 +02:00
Illia Bobyr
8c358e024f patch 9.0.1965: wrong auto/configure script
Problem:  wrong auto/configure script
Solution: regenerate with autoconf 2.71

configure: sys/xattr.hs: Regenerate with autoconf 2.71

It seems that `auto/configure` update in

  commit 6de4e58cf2 (tag: v9.0.1963)
  Author: zeertzjq <zeertzjq@outlook.com>
  Date:   Sat Sep 30 14:19:14 2023 +0200

      patch 9.0.1963: Configure script may not detect xattr

      Problem:  Configure script may not detect xattr correctly
      Solution: include sys/xattr instead of attr/xattr,
                make Test_write_with_xattr_support() test
                xattr feature correctly

      This also applies to the Smack security feature, so change the include
      and configure script for it as well.

      closes: #13229

      Signed-off-by: Christian Brabandt <cb@256bit.org>
      Co-authored-by: zeertzjq <zeertzjq@outlook.com>

was done manually, and missed an update to the generated variable name.

closes: #13235

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Illia Bobyr <illia.bobyr@gmail.com>
2023-09-30 22:57:19 +02:00
Christian Brabandt
a4dfbfed89 patch 9.0.1964: xattr support fails to build on MacOS X
Problem:  xattr support fails to build on MacOS X
Solution: Disable xattr support for MacOS X

MacOS X uses the same headers and functions sys/xattr.h but the function
signatures for xattr support are much different, so building fails.

So let's for now disable xattr support there.

closes: #13230
closes: #13232

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-30 18:51:36 +02:00
zeertzjq
6de4e58cf2 patch 9.0.1963: Configure script may not detect xattr
Problem:  Configure script may not detect xattr correctly
Solution: include sys/xattr instead of attr/xattr,
          make Test_write_with_xattr_support() test
          xattr feature correctly

This also applies to the Smack security feature, so change the include
and configure script for it as well.

closes: #13229

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-30 14:22:07 +02:00
Christian Brabandt
e085dfda5d patch 9.0.1962: No support for writing extended attributes
Problem:  No support for writing extended attributes
Solution: Add extended attribute support for linux

It's been a long standing issue, that if you write a file with extended
attributes and backupcopy is set to no, the file will loose the extended
attributes.

So this patch adds support for retrieving the extended attributes and
copying it to the new file. It currently only works on linux, mainly
because I don't know the different APIs for other systems (BSD, MacOSX and
Solaris).  On linux, this should be supported since Kernel 2.4 or
something, so this should be pretty safe to use now.

Enable the extended attribute support with normal builds.

I also added it explicitly to the :version output as well as make it
able to check using `:echo has("xattr")`, to have users easily check
that this is available.

In contrast to the similar support for SELINUX and SMACK support (which
also internally uses extended attributes), I have made this a FEAT_XATTR
define, instead of the similar HAVE_XATTR.

Add a test and change CI to include relevant packages so that CI can
test that extended attributes are correctly written.

closes: #306
closes: #13203

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-30 12:49:18 +02:00
zeertzjq
1f025b01e2 patch 9.0.1961: 'listchars' completion misses "multispace" and "leadmultispace"
Problem:  Cmdline completion for 'listchars' fields doesn't include
          "multispace" and "leadmultispace" (after 9.0.1958).
Solution: Include "multispace" and "leadmultispace" in lcstab.

closes: #13225

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-30 12:43:07 +02:00
Yee Cheng Chin
f7f746b167 patch 9.0.1960: Make CI checks more strict
Problem:  Make CI checks more strict
Solution: Add -Wstrict-prototypes -Wmissing-prototypes to CI,
          fix uncovered problems

Add -Wstrict-prototypes -Wmissing-prototypes warnings check to CI

Add two new warnings to CI, silence some Perl related build-warnings:

- `strict-prototypes` helps prevent declaring a function with an empty
  argument list, e.g. `int func()`. In C++, that's equivalent to `int
  func(void)`, but in C, that means a function that can take any number
  of arguments which is rarely what we want.

- `missing-prototypes` makes sure we use `static` for file-only internal
  functions. Non-static functions should have been declared on a
  prototype file.

- Add `no-compound-token-split-by-macro` to the perl cflags, since it
  throws out a bunch of perl-related warnings that make the CI log
  unnecessary verbose and hard to read. This seems to happen only with
  clang 12 and above.

When applying those changes, it already uncovered a few warnings, so fix
up the code as well (fix prototypes, make the code static, remove
shadowed var declaration)

GTK header needs to have #pragma warning suppressiong because GTK2
headers will warn on `-Wstrict-prototypes`, and it's included by gui.h
and so we can't just turn off the warning in a couple files.

closes: #13223
closes: #13226

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-09-30 12:32:37 +02:00
Yegappan Lakshmanan
f3b68d4759 patch 9.0.1959: Vim9: methods parameters and types are covariant
Problem:  Vim9: methods parameters and types are covariant
Solution: Support contra-variant type check for object method arguments
          (similar to Dart).

closes: #12965
closes: #13221

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-29 22:50:02 +02:00
Yee Cheng Chin
900894b09a patch 9.0.1958: cannot complete option values
Problem:  cannot complete option values
Solution: Add completion functions for several options

Add cmdline tab-completion for setting string options

Add tab-completion for setting string options on the cmdline using
`:set=` (along with `:set+=` and `:set-=`).

The existing tab completion for setting options currently only works
when nothing is typed yet, and it only fills in with the existing value,
e.g. when the user does `:set diffopt=<Tab>` it will be completed to
`set diffopt=internal,filler,closeoff` and nothing else. This isn't too
useful as a user usually wants auto-complete to suggest all the possible
values, such as 'iblank', or 'algorithm:patience'.

For set= and set+=, this adds a new optional callback function for each
option that can be invoked when doing completion. This allows for each
option to have control over how completion works. For example, in
'diffopt', it will suggest the default enumeration, but if `algorithm:`
is selected, it will further suggest different algorithm types like
'meyers' and 'patience'. When using set=, the existing option value will
be filled in as the first choice to preserve the existing behavior. When
using set+= this won't happen as it doesn't make sense.

For flag list options (e.g. 'mouse' and 'guioptions'), completion will
take into account existing typed values (and in the case of set+=, the
existing option value) to make sure it doesn't suggest duplicates.

For set-=, there is a new `ExpandSettingSubtract` function which will
handle flag list and comma-separated options smartly, by only suggesting
values that currently exist in the option.

Note that Vim has some existing code that adds special handling for
'filetype', 'syntax', and misc dir options like 'backupdir'. This change
preserves them as they already work, instead of converting to the new
callback API for each option.

closes: #13182

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-09-29 20:42:32 +02:00
Gregory Anders
3695d0e41b patch 9.0.1957: termcap options should change when setting keyprotocol
Problem:  termcap options should change on keyprotocol setting
Solution: Apply termcap entries when 'keyprotocol' changes

When the 'keyprotocol' option was set after startup (including in a
user's .vimrc) the termcap entries associated with the matching protocol
were not applied. Thus, setting the option has no affect.

When 'keyprotocol' is changed it should also update the termcap entries.

closes: #13211

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Gregory Anders <greg@gpanders.com>
2023-09-29 20:17:20 +02:00
zeertzjq
28a23602e8 patch 9.0.1956: Custom completion skips orig cmdline if it invokes glob()
Problem:  Custom cmdline completion skips original cmdline when pressing
          Ctrl-P at first match if completion function invokes glob().
Solution: Move orig_save into struct expand_T.

closes: #13216

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-29 19:58:35 +02:00
Ernie Rael
ee865f37ac patch 9.0.1955: Vim9: lockvar issues with objects/classes
Problem:  Vim9: lockvar issues with objects/classes
Solution: fix `get_lhs()` object/class access and avoid `SEGV`,
          make error messages more accurate.

- `get_lval()` detects/returns object/class access
- `compile_lock_unlock()` generate code for bare static and obj_arg access
- `do_lock_var()` check lval for `ll_object`/`ll_class` and fail if so.

Details:
- Add `ll_object`/`ll_class`/`ll_oi` to `lval_T`.
- Add `lockunlock_T` to `isn_T` for `is_arg` to specify handling of `lval_root` in `get_lval()`.
- In `get_lval()`, fill in `ll_object`/`ll_class`/`ll_oi` as needed; when no `[idx] or .key`, check lval_root on the way out.
- In `do_lock_var()` check for `ll_object`/`ll_class`; also bullet proof ll_dict case
  and give `Dictionay required` if problem. (not needed to avoid lockvar crash anymore)
- In `compile_lock_unlock()` compile for the class variable and func arg cases.

closes: #13174

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-09-29 19:53:55 +02:00
Ken Takata
112431f217 patch 9.0.1954: CI: change netrw label in labeller bot
Problem:  CI: change netrw label in labeller bot
Solution: Rename it to 'plugin-netrw'

closes: #13217

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-09-29 19:48:09 +02:00
Ken Takata
789b8854d2 patch 9.0.1953: Misplaced comment in errors.h
Problem:  Misplaced comment in errors.h
Solution: Move it up

closes: #13218

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-09-29 19:45:42 +02:00
Yegappan Lakshmanan
5a05d374d3 patch 9.0.1952: Vim9: unused static field
Problem:  Vim9: unused static field
Solution: remove it and simplify code

closes: #13220

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-29 19:44:25 +02:00
Christian Brabandt
02902b547b runtime(doc): text-objects: document how escaped delimiters are handled
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-29 00:10:04 +02:00
Yegappan Lakshmanan
b90e3bc491 patch 9.0.1951: Vim9: hard to debug vim9_class errors from CI
Problem:  Vim9: hard to debug vim9_class errors from CI
Solution: Include the line number in assert_xxx() calls.  Include the
          entire error message in the tests.  Fix the indentation in the
          test file.  Add tags for new error codes.

closes: #13206

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-28 23:16:35 +02:00
Yegappan Lakshmanan
413f83990f patch 9.0.1950: Vim9: error codes spread out
Problem:  Vim9: error codes spread out
Solution: group them together and reserve 100
          more for future use

Reserve 100 error codes for future enhancements to the Vim9 class
support

closes: #13207

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-28 22:46:37 +02:00
Yegappan Lakshmanan
f057aca1cc patch 9.0.1949: Vim9: allows reserved keywords as members
Problem:  Vim9: allows reserved keywords as members
Solution: Disallow reserved keywords, disallow
          duplicate object and class variables

closes: #13209

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-28 22:28:15 +02:00
h-east
db38552dcd patch 9.0.1948: Vim9: object variable "this." should only be used in constructor
Problem:  Vim9: object variable "this." should only be used in
          constructor
Solution: Disallow to this in normal object methods (other than
          constructors)

closes: #13152
closes: #13212

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: h-east <h.east.727@gmail.com>
2023-09-28 22:18:19 +02:00
Ken Takata
03ca4002c1 patch 9.0.1947: Bash Expansion test fails on Windows/MacOS
Problem:  Bash Expansion test fails on Windows/MacOS
Solution: Disable Test_glob_extended_bash for now

This test doesn't work on Windows even if bash can be executed, since
the globstar functionality has only been enabled in Unix builds of Vim
(Commit 9eb1ce5315, patch 9.0.1946).

closes: #13205

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-09-28 21:59:58 +02:00
Christian Brabandt
e845b38dab runtime(doc): regenerate xxd manpage
Commit f6fc255e8d (v9.0.1834) updated xxd.1 but the xxd.man
page wasn't re-generated. So let's just regenerate it now.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-27 23:33:39 +02:00
Christian Brabandt
9eb1ce5315 patch 9.0.1946: filename expansion using ** in bash may fail
Problem:  filename expansion using ** in bash may fail
Solution: Try to enable the globstar setting

Starting with bash 4.0 it supports extended globbing using the globstar
shell option. This makes matching recursively below a certain directory
using the ** pattern work as expected nowadays.  However, we need to
explicitly enable this using the 'shopt -s globstar' bash command.

So let's check the bash environment variable $BASH_VERSINFO (which is
supported since bash 3.0 and conditionally enable the globstar option,
if the major version is at least 4. For older bashs, this at least
shouldn't cause errors (unless one is using really ancient bash 2.X or
something).

closes: #13002
closes: #13144

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-27 19:08:25 +02:00
Yegappan Lakshmanan
2dede3dbfa patch 9.0.1945: Vim9: missing support for ro-vars in interface
Problem:  Vim9: missing support for ro-vars in interface
Solution: Support only read-only object variables in an interface,
          add additional checks when parsing class definitions.

closes: #13183
cloess: #13184
cloess: #13185.
closes: #13188

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-27 19:02:01 +02:00
zeertzjq
5277cfaf8a runtime(doc): mention mouse scrolling in scrollbind-quickadj (#13190)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-27 19:00:12 +02:00
Josef Litoš
54f70cf078 runtime(swayconfig): Update syntax file (#13192)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-27 18:58:15 +02:00
Josef Litoš
02774f99ce runtime(i3config): update i3config syntax (#13191)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-27 18:57:24 +02:00
Jakson Alves de Aquino
3474594239 runtime(rmd) Update ftplugin and syntax files (#13193)
ftplugin/rmd.vim:

  - Set 'commentstring' dynamically according to code region.

syntax/rmd.vim:

  - Include syntax highlighting of fenced languages dynamically.
  - Add conceal char for line break.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-27 18:56:02 +02:00
Yegappan Lakshmanan
a76fbe6e00 patch 9.0.1944: Vim9: function instruction pointer invalidated
Problem:  Vim9: function instruction pointer invalidated
Solution: Use the funcref index instead of the instruction pointer

closes: #13178
closes: #13196

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-27 18:53:10 +02:00
Ivan Pešić
91adcbdcc1 translation(sr): Update Serbian messages translation
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-27 18:48:42 +02:00
Philip H
f109bf93c9 patch 9.0.1943: CI not run with clang-17
Problem:  CI not run with clang-17
Solution: Update CI to use clang-17

closes: #12745

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Philip H <47042125+pheiduck@users.noreply.github.com>
2023-09-25 21:05:00 +02:00
Yegappan Lakshmanan
c1946267f2 patch 9.0.1942: Vim9: execution stack invalidated with null object
Problem:  Vim9: execution stack invalidated with null object
Solution: Check for a null object before adjusting the execution stack

closes: #13186

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-25 21:00:46 +02:00
Eisuke Kawashima
54e1f56cf2 runtime(sh): only invoke bash help in ftplugin if it has been detected to be bash (#13171)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-25 19:40:45 +01:00
Yegappan Lakshmanan
3aa114463f patch 9.0.1941: Memory leak detected
Problem:  Memory leak detected (after 9.0.1928)
Solution: Free arg_objm in get_lambda_tv()

closes: #13181

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-25 12:13:17 +02:00
Yegappan Lakshmanan
e1b95f5252 runtime(doc): Update help tags (#13180)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-25 08:19:48 +01:00
Christian Brabandt
ec8deb092c patch 9.0.1940: wrong upstream version in libvterm README
Problem:  wrong upstream version in libvterm README
Solution: correct version to 839

related: #12746

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-24 23:43:38 +02:00
Yegappan Lakshmanan
b80ae6cec3 patch 9.0.1939: still a problem when processing LSP RPC requests
Problem:  still a problem when processing LSP RPC requests
Solution: When processing async LSP RPC requests, compare sequence
          numbers only in response messages

A LSP request message can be sent to the language server either
synchronously (ch_evalexpr) or asynchronously (ch_sendexpr). In both
cases, when looking for response messages by using the sequence number,
LSP requests messages from the language server with the same sequence
number should not be used. Patch 9.0.1927 fixed this issue for
synchronous requests. This PR fixes the issue for asynchronous requests
and adds additional tests.

closes: #13158

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-24 23:38:46 +02:00
Yegappan Lakshmanan
ceffca683b runtime(todo): Update Vim9 class items (#13148)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-24 23:36:56 +02:00
Yegappan Lakshmanan
c3b315f496 runtime(doc): Vim9: Consistenly use class/object variable and class/object method in help (#13149)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-24 23:36:17 +02:00
zeertzjq
abc808112e patch 9.0.1938: multispace wrong when scrolling horizontally
Problem:  multispace wrong when scrolling horizontally
Solution: Update position in "multispace" or "leadmultispace" also in
          skipped chars. Reorder conditions to be more consistent.

closes: #13145
closes: #13147

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-24 23:32:18 +02:00
zeertzjq
46a0582ffa patch 9.0.1937: missing test for mouse click + 'virtedit'
Problem:  missing test for mouse click + 'virtedit'
Solution: Add test for clicking after eol with 'virtualedit' and wrapped
          line

closes: #13157

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-24 23:30:03 +02:00
Isao Sato
e6fca0e822 patch 9.0.1936: test: using wrong expected message in test_crypt
Problem:  test: using wrong expected message in test_crypt
Solution: make use of single quotes

closes: #13151

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Isao Sato <svardew@gmail.com>
2023-09-24 23:27:25 +02:00
RestorerZ
7fe8f43f49 patch 9.0.1935: Vim9: not consistent error messages
Problem:  Vim9: not consistent error messages
Solution: Make error messages more consistent. Use "variable" for
          (object/class) member

closes: #13155

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: RestorerZ <restorer@mail2k.ru>
2023-09-24 23:21:24 +02:00
zeertzjq
46bdae036a patch 9.0.1934: :bwipe fails after switching window from aucmd_win.
Problem:  :bwipe fails after switching window from aucmd_win.
Solution: Decrement b_nwindows after switching back to aucmd_win.

closes: #13160

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-24 23:17:14 +02:00
zeertzjq
edcba96c00 patch 9.0.1933: Can change the type of a v: variable using if_lua
Problem:  Can change the type of a v: variable using if_lua.
Solution: Add additional handling of v: variables like :let.

closes: #13161

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-24 23:13:51 +02:00
Yegappan Lakshmanan
7398f367d5 patch 9.0.1932: Vim9: error when using null object constructor
Problem:  Vim9: error when using null object constructor
Solution: Check for a null object only when calling an object method

closes: #13154
closes: #13163

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-24 23:09:10 +02:00
Dominique Pellé
960822a11f runtime(doc): grammar fixes in doc (#13164)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-24 23:07:39 +02:00
Yegappan Lakshmanan
7c948644fb runtime(doc): Update the version9.txt with a template for version 9.1 enhancements (#13165)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-24 23:07:03 +02:00
a5ob7r
790f9a890c runtime(doc): Add a missing '<' to the help of strutf16len() (#13168)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-24 23:05:47 +02:00
Dominique Pellé
ca0ffc0d63 patch 9.0.1931: make test_compilers fails on ubuntu
Problem:  make test_compilers fails on ubuntu
Solution: set LC_ALL=C

fix: make test_compiler failed on xubuntu 22.04.3

Problem: 'make test_compiler' failed on Linux xubuntu 22.04.3 but
         succeeded on e.g. macOS. To reproduce:
```
$ ./configure --with-features=huge --enable-gui=no --enable-perlinterp=yes
$ make -j12
$ cd vim/src/testdir
$ make test_compiler
...snip...
Found errors in Test_compiler():
command line..script /home/dope/sb/vim/src/testdir/runtest.vim[601]..function RunTheTest[54]..Test_compiler line 24: command did not fail: clist
command line..script /home/dope/sb/vim/src/testdir/runtest.vim[601]..function RunTheTest[54]..Test_compiler line 30: Pattern '\\n \\d\\+ Xfoo.pl:3: Global symbol "$foo" requires explicit package name' does not match '\n19 Xfoo.pl:3: Global symbol "$foo" requires explicit package name (did you forget to declare "my $foo"?)'
make: *** [Makefile:70: test_compiler] Error 1
```
Solution: set `LC_ALL` to "C" in `Test_compiler()`

closes: #13173

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Dominique Pellé <dominique.pelle@tomtom.com>
2023-09-24 22:57:41 +02:00
Remy Bos
8ffcb47a43 runtime(tutor): fix typo in tutor.nl (#13175)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-24 22:54:30 +02:00
Dominique Pellé
4927bc7d27 patch 9.0.1930: compiler warnings with clang-17
Problem:  compiler warnings with clang-17
Solution: Fix function prototypes and function pointer

fix: clang compilation warnings with -Wstrict-prototypes

Change fixes this kind of compilation warnings with clang:
```
proto/if_python3.pro:13:20: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
   13 | int python3_version();
      |                    ^
      |                     void
```

closes: #13166

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Dominique Pellé <dominique.pelle@tomtom.com>
2023-09-24 16:16:06 +02:00
Dominique Pellé
99c3849a92 patch 9.0.1929: runtime tests fail with tiny vim
Problem:  runtime tests fail with tiny vim
Solution: check for tiny vim, run runtime tests in CI
          even for tiny version

closes: #13169
closes: #13170

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Dominique Pellé <dominique.pelle@tomtom.com>
2023-09-24 16:09:31 +02:00
h-east
b895b0fabc patch 9.0.1928: Vim9: constructor type checking bug
Problem:  Vim9: constructor type checking bug
Solution: Fix class constructor regression

closes: #13102
closes: #13113

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: h-east <h.east.727@gmail.com>
2023-09-24 15:46:31 +02:00
Christian Brabandt
ceee7a808c patch 9.0.1927: patch 1916 (fixed terminal size) not optimal
Problem:  patch 1916 (fixed terminal size) not optimal
Solution: Add defines to make it easier changeable later

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-21 16:57:42 +02:00
Ernie Rael
696270bcae patch 9.0.1926: Vim9: not enough info in error message
Problem:  Vim9: not enough info in error message
Solution: Add class name, change member to variable, quote names

closes: #13136

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-09-21 16:42:28 +02:00
Yee Cheng Chin
02c51b1dd8 patch 9.0.1925: if_python: still undefined behaviour with function pointer
Problem:  if_python: still undefined behaviour with function pointer
Solution: fix remaining problems

Fix remaining issues in the if_python code in casting incompatible
function pointers leading to Clang 17 giving runtime errors during
UBSAN.

closes: #13140

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-09-21 16:40:12 +02:00
Yegappan Lakshmanan
1926ae4184 patch 9.0.1924: LSP server message still wrongly handled (after 9.0.1922)
Problem:  LSP server message still wrongly handled (after 9.0.1922)
Solution: Handle 'method' messages properly, don't discard them, add
          tests.

closes: #13141

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-21 16:36:28 +02:00
zeertzjq
db54e989b5 patch 9.0.1923: curswant wrong on click with 've' and 'wrap' set
Problem:  curswant wrong on click with 've' and 'wrap' set
Solution: Add w_leftcol to mouse click column.

closes: #13142

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-21 16:33:09 +02:00
zeertzjq
a7aba6ca50 runtime(doc): format jumplist examples more consistently (#13137)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-21 07:22:57 +01:00
Yegappan Lakshmanan
78c5a5abc6 patch 9.0.1922: LSP server request message is misinterpreted as a response message
Problem:  LSP server request message is misinterpreted as a response message
Solution: Check that the message does not have the "message" field

closes: #13133

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-20 20:32:55 +02:00
Yegappan Lakshmanan
87018255e3 patch 9.0.1921: not possible to use the jumplist like a stack
Problem:  not possible to use the jumplist like a stack
Solution: Add the 'jumpoptions' setting to make the jumplist
          a stack.

Add an option for using jumplist like tag stack

related: #7738
closes: #13134

ported from NeoVim:

- https://neovim.io/doc/user/motion.html#jumplist-stack
- neovim/neovim@39094b3
- neovim/neovim#11530
- https://vi.stackexchange.com/questions/18344/how-to-change-jumplist-behavior

Based on the feedback in the previous PR, it looks like many people like
this option.

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Co-authored-by: butwerenotthereyet <58348703+butwerenotthereyet@users.noreply.github.com>
2023-09-20 20:25:17 +02:00
Ernie Rael
98e68c07ce patch 9.0.1920: Vim9: cannot write public var in nested object
Problem:  Vim9: cannot write public var in nested object
Solution: Write variable in nested read-only object reference.
          Also test write fails.

closes: #13130
closes: #13131

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-09-20 20:13:06 +02:00
zeertzjq
03cd697d63 patch 9.0.1919: Wrong curswant when clicking on empty line or with vsplits
Problem:  Wrong curswant when clicking on empty line or with vsplits.
Solution: Don't check for ScreenCols[] before the start of the window
          and handle empty line properly.

closes: #13132

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-20 20:08:40 +02:00
Matt Polzin
5790a54166 patch 9.0.1918: No filetype detection for Authzed filetypes
Problem:  No filetype detection for Authzed filetypes
Solution: Detect the *.zed file extension as authzed filetype

closes: #13129

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Matt Polzin <mpolzin@workwithopal.com>
2023-09-20 20:03:52 +02:00
Yee Cheng Chin
d606fccf6f patch 9.0.1917: undefined behaviour with python function pointer
Problem:  undefined behaviour with python function pointer
Solution: correctly cast function pointers from void

Fix more undefined behaviors in if_python

Fix remaining UBSAN errors from Clang 17 in if_python in casting
function pointers.

Also fix a mistake where `PyMem_Free()` should be returning void, by the
dynamic build is mistakenly casting it as a function that returns an
int.

closes: #13128

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-09-20 19:59:47 +02:00
Christian Brabandt
aa64ba1587 patch 9.0.1916: Crash when allocating large terminal screen
Problem:  Crash when allocating large terminal screen
Solution: Don't allow values > 1000 for terminal
          screen columns and rows

closes: #13126

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-19 21:16:52 +02:00
Christian Brabandt
476733f3d0 patch 9.0.1915: r_CTRL-C works differently in visual mode
Problem:  r_CTRL-C works differently in visual mode
Solution: Make r_CTRL-C behave consistent in visual mode
          in terminal and Windows GUI

in visual mode, r CTRL-C behaves strange in Unix like environments. It
seems to end visual mode, but still is waiting for few more chars,
however it never seems to replace it by any characters and eventually
just returns back into normal mode.

In contrast in Windows GUI mode, r_CTRL-C replaces in the selected area
all characters by a literal CTRL-C.

Not sure why it behaves like this. It seems in the Windows GUI, got_int
is not set and therefore behaves as if any other normal character has
been pressed.

So remove the special casing of what happens when got_int is set and
make it always behave like in Windows GUI mode. Add a test to verify it
always behaves like replacing in the selected area each selected
character by a literal CTRL-C.

closes: #13091
closes: #13112

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-19 20:45:07 +02:00
Yegappan Lakshmanan
1db1514365 patch 9.0.1914: Vim9: few issues when accessing object members
Problem:  Vim9: few issues when accessing object members
Solution: When calling an object method, check for null object.
          Accessing a Dict object member doesn't work.

closes: #13119
closes: #13123
closes: #13124

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-19 20:36:02 +02:00
Yee Cheng Chin
2ce070c27a patch 9.0.1913: if_python: undefined behaviour for function pointers
Problem:  if_python: undefined behaviour for function pointers
Solution: Fix if_python undefined behavior for function pointer casts

Identified by clang 17 UBSAN (see #12745). Make sure to cast function
pointers with the same signature only.

closes: #13122

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-09-19 20:30:22 +02:00
Christian Brabandt
6f00d17e8d patch 9.0.1912: Cirrus-CI running out of credits
Problem:  Cirrus-CI running out of credits
Solution: disable Cirrus-CI for now

We are running out of credits for Cirrus CI already at the middle of the
month and unfortunately this means our CI now consistently fails. This
all hapens because cirrus ci is not enforcing the free-tier limits (see also
https://cirrus-ci.org/blog/2023/07/17/limiting-free-usage-of-cirrus-ci/).

Perhaps at the beginning of the next month we can revisit and
enable just a build without testing it.  Hopefully this is won't take
too many credits and we can at least verify that building works.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-19 20:19:08 +02:00
Ernie Rael
3da696db6a patch 9.0.1911: Vim9: segfault with null object and instanceof()
Problem:  Vim9: segfault with null object and instanceof()
Solution: return early

closes: #13121

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-09-19 20:14:18 +02:00
Christian Brabandt
346ac1429c runtime(doc): add help tag describing object-selection
closes: #13114

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-18 20:12:22 +02:00
Sevan Janiyan
063c562a37 patch 9.0.1910: Mac OS X: missing sound support on older versions
Problem:  Mac OS X: missing sound support on older versions
Solution: Check Macro MAC_OS_X_VERSION_MIN_REQUIRED

Extend guard for sound support on OS X

Fixes build on legacy versions where required coreaudio functionality
may not be available. NSSoundDelegate apparently was introduced in Snow
Leopard yet the build breaks on it. Guarding off enabling sound support
to El Capitan as that's the next version I had access to for testing (it
may work on earlier versions)
https://developer.apple.com/documentation/appkit/nssounddelegate Vim
builds on OS X Tiger 10.4 and newer with this change.

closes: #13115

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Sevan Janiyan <venture37@geeklan.co.uk>
2023-09-18 20:04:32 +02:00
Yegappan Lakshmanan
00cd18222e patch 9.0.1909: Vim9: problem calling class method from other class
Problem:  Vim9: problem calling class method from other class
Solution: Fix this problem, fix readonly object access, update error
          messages.

Calling a class method from another method without the class name prefix
doesn't work properly.

A readonly object variable is modifiable outside the class using a
nested object assignment.

Remove the unused E1338 error message.

Update error messages.

closes: #13116

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-18 19:56:49 +02:00
Yee Cheng Chin
d25021cf03 patch 9.0.1908: undefined behaviour upper/lower function ptrs
Problem:  undefined behaviour upper/lower function ptrs
Solution: Fix UBSAN error in regexp and simplify upper/lowercase
          modifier code

The implementation of \u / \U / \l / \L modifiers in the substitute
command relies on remembering the state by setting function pointers on
func_all/func_one in the code. The code signature of `fptr_T` is
supposed to return void* (due to C function signatures not being able to
return itself due to type recursion), and the definition of the
functions (e.g. to_Upper) didn't follow this rule, and so the code tries
to cast functions of different signatures, resulting in undefined
behavior error under UBSAN in Clang 17. See #12745.

We could just fix `do_Upper`/etc to just return void*, which would fix
the problem. However, these functions actually do not need to return
anything at all. It used to be the case that there was only one pointer
"func" to store the pointer, which is why the function needs to either
return itself or NULL to indicate whether it's a one time or ongoing
modification. However, c2c355df6f
(7.3.873) already made that obsolete by introducing `func_one` and
`func_all` to store one-time and ongoing operations separately, so these
functions don't actually need to return anything anymore because it's
implicit whether it's a one-time or ongoing operation. Simplify the code
to reflect that.

closes: #13117

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-09-18 19:51:56 +02:00
Christian Brabandt
d8b86c937a runtime(netrw): fix filetype detection for remote editing files
closes: #12990
closes: #12992

this partially reverses commit 71badf9 by commenting out the line that
intentionally sets the filetype to an empty string.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-17 18:52:56 +02:00
dkearns
e30d8e4ce0 runtime(kotlin): Add Kotlin runtime files (#13110)
Closes udalov/kotlin-vim#39

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-17 18:51:22 +02:00
Romain Beauxis
6b5efcdd8e patch 9.0.1907: No support for liquidsoap filetypes
Problem:  No support for liquidsoap filetypes
Solution: Add liquidsoap filetype detection code

closes: #13111

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Romain Beauxis <toots@rastageeks.org>
2023-09-17 18:49:20 +02:00
Yegappan Lakshmanan
92d9ee5f4c patch 9.0.1906: Vim9: Interfaces should not support class methods and variables
Problem:  Vim9: Interfaces should not support class methods and
          variables
Solution: Make sure interface follow the interface specification

Vim9 interface changes to follow the new interface specification:

1) An interface can have only read-only and read-write instance
   variables.
2) An interface can have only public instance methods.
3) An interface cannot have class variables and class methods.
4) An interface cannot have private instance variables and private
   instance methods.
5) A interface can extend another interface using "extends". The
   sub-interface gets all the variables and methods in the super
   interface.

That means:
- Interfaces should not support class methods and variables.
- Adjust error numbers and add additional tests.
- Interface methods can be defined in one of the super classes.
- Interface variables can be defined in one of the super classes.
  and instance variables can be repeated in sub interfaces.
- Check the class variable types with the type in interface.

closes: #13100

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-17 17:03:19 +02:00
dundargoc
0483e49f90 patch 9.0.1905: FEAT_FLOAT no longer defined
Problem:  FEAT_FLOAT no longer defined
Solution: Remove last existing FEAT_FLOAT ifdefs in
          message_test

Remove FEAT_FLOAT as that should always be true

FEAT_FLOAT has been removed in v9.0.0491 (73e28dcc61) but
unfortunately, it was forgotten to remove it from message_test.c. So
let's remove the last mentioned ifdefs which are now unused.

closes: #13106

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: dundargoc <gocdundar@gmail.com>
2023-09-17 16:58:22 +02:00
dundargoc
e6059c321b patch 9.0.1904: Cirrus-CI fails because we have used all credits
Problem:  Cirrus-CI fails because we have used all credits
Solution: Remove FreeBSD 13.1 and MacOS M1

Cirrus CI has started introducing monthly limits. Vim has exceeded the
monthly limit which means our CI unfortunately starts to fail. So let's
remove some CI tasks, so that in the future we won't run out of credits
so fast.

closes: #13108

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: dundargoc <gocdundar@gmail.com>
2023-09-17 16:53:18 +02:00
Christian Brabandt
177437cc6f doc(INSTALLpc): mention additional packages for msys2
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-17 16:36:33 +02:00
Christian Brabandt
a66feb5fb5 patch 9.0.1903: CI fails because snd-dummy modules missing
Problem:  Github Actions fails because snd-dummy modules missing
          in current runner images
Solution: ignore modprobe error

related: actions/runner-images#8295

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-16 18:29:42 +02:00
Yee Cheng Chin
249a208803 runtime(man): Man plugin does not respect 'gdefault'
Fix the issue introduced by #12557. `:substitute` commands in plugins
need to take into account whether `gdefault` is set or not because
that depends on the user.

closes: #13097

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-16 18:12:14 +02:00
Yegappan Lakshmanan
e2deb7e598 patch 9.0.1902: Vim9: Coverity complains about dead code
Problem:  Vim9: Coverity complains about dead code
Solution: Copy only object methods from the super class
          to a subclass when extending a class.  Fix
          Coverity warning.

closes: #13103

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-16 18:05:07 +02:00
Ken Takata
ad29f6af0a patch 9.0.1901: win32: not correctly freeing environment
Problem:  win32: not correctly freeing environment
Solution: After we call GetEnvironmentStringsW, we should call
          FreeEnvironmentStringsW

closes: #13096
closes: #13094

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken Takata <kentkt@csc.jp>
2023-09-16 13:56:02 +02:00
Yee Cheng Chin
e7d79eb98a patch 9.0.1900: Configure script uses non-portable == comparison
Problem:  Configure script uses non-portable == comparison
Solution: Use the standard and portable "=" instead

closes: #13095
closes: #13099

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-09-16 13:38:26 +02:00
Christian Brabandt
ffb13674d1 patch 9.0.1899: potential buffer overflow in PBYTE macro
Problem:  potential buffer overflow in PBYTE macro
Solution: Check returned memline length

closes: #13083

the PBYTE macro is used to put byte c at a position lp of the returned
memline. However, in case of unexpected errors ml_get_buf() may return
either "???" or an empty line in which case it is quite likely that we
are causing a buffer overrun.

Therefore, switch the macro PBYTE (which is only used in ops.c anyhow)
to a function, that verifies that we will only try to access within the
given length of the buffer.

Also, since the macro is only used in ops.c, move the definition from
macros.h to ops.c

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-15 20:22:02 +02:00
Yegappan Lakshmanan
c30a90d9b2 patch 9.0.1898: Vim9: restrict access to static vars
Problem:  Vim9: restrict access to static vars and methods
Solution: Class members are accesible only from the class where they are
          defined.

Based on the #13004 discussion, the following changes are made:

    1) Static variables and methods are accessible only using the class
       name and inside the class where they are defined.
    2) Static variables and methods can be used without the class name in
       the class where they are defined.
    3) Static variables of a super class are not copied to the sub class.
    4) A sub class can declare a class variable with the same name as the
       super class.
    5) When a method or member is found during compilation, use more
       specific error messages.

This aligns the Vim9 class variable/method implementation with the Dart
implementation.

Also while at it, ignore duplicate class and object methods.

The access level of an object method can however be changed in a
subclass.

For the tests, use the new CheckSourceFailure() function instead of the
CheckScriptFailure() function in the tests.

closes: #13086

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-15 20:14:55 +02:00
dkearns
35928ee8f8 runtime(vim): Highlight all :loadkeymap abbreviations in vim syntax (#13092)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-15 20:12:50 +02:00
dkearns
c1f8bb37c6 runtime(forth): Fix :unlet error in ftplugin (#13090)
Fixes #13089.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-15 15:47:06 +01:00
Christian Brabandt
6ffcc58be3 runtime(help): Updated documentation on editorconfig
Add a small section about the distributed Editorconfig plugin at :h
usr_05.txt just below the matchit plugin.  While editing that help
document, also add a bit of more documentation about standard plugins
and local help file additions.

Regenerate $VIMRUNTIME/doc/tags file with all the new tags from the rust
runtime files.

While at it, update the Editorconfig help page (and re-generate the
helptags file).

closes: #13078

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-12 21:08:54 +02:00
Josef Litoš
8b2457a381 runtime(swayconfig): improve syntax highlighting (#13060)
* syntax(swayconfig): improved highlighting
* syntax(swayconfig): adapt to i3config structure

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-12 20:24:47 +02:00
Gregory Anders
fc93594d56 runtime(rust): sync rust runtime files with upstream (#13075)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-12 20:23:38 +02:00
Josef Litoš
f5356bf675 runtime(i3config): syntax structure cleanup (#13080)
* syntax(i3config): improved i3config highlighting
* syntax(i3config): refactor structure

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-12 20:20:25 +02:00
Christian Brabandt
596ad66d1d runtime(doc): documentation updates
This is a collection of various improvements to the help pages

closes #12790

Co-authored-by: Houl <anwoku@yahoo.de>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Co-authored-by: Adri Verhoef <a3@a3.xs4all.nl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-11 20:23:11 +02:00
Josef Litoš
62145db91b syntax(i3config): improved i3config highlighting (#13054)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-11 20:12:48 +02:00
Christian Brabandt
504543f98b patch 9.0.1897: Vim9: confusing error with .= in compiled functions
Problem:  Vim9: confusing error with .= in compiled functions
Solution: Check in error condition, if .= was attempted and in that case
          give a different error message.

closes: #12972
closes: #13066

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-11 20:08:50 +02:00
zeertzjq
6b9c202549 patch 9.0.1896: "below" virtual text doesn't work with 'rightleft'
Problem:  "below" virtual text doesn't work with 'rightleft'.
Solution: Use column from right border with 'rightleft'.

closes: #13071

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-11 20:01:17 +02:00
Ernie Rael
4d00b835c4 patch 9.0.1895: Vim9: finding object method/member is inefficient
Problem:  Vim9: finding method/member is inefficient
Solution: Use lookups

closes: #13073

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-09-11 19:57:52 +02:00
Doug Kearns
f787ee8451 runtime(doc): Add g:c_syntax_for_h to filetype-overrule docs
closes: #13074

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-11 19:50:09 +02:00
dependabot[bot]
213c323184 CI: Bump actions/checkout from 3 to 4 (#13072)
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>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-11 19:43:33 +02:00
Christian Brabandt
e5f7cd0a60 patch 9.0.1894: CI: trailing whitespace in tests
Problem:  CI: trailing white space in tests
Solution: clean up the trailing white space

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-10 19:26:47 +02:00
Christian Brabandt
983d808674 patch 9.0.1893: CI: strptime test fails on BSD14
Problem:  CI: strptime test fails on BSD14
Solution: Skip the test

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-10 19:06:09 +02:00
Philip H
24a95f42b8 patch 9.0.1892: CI: no FreeBSD 14 support
Problem:  CI: no FreeBSD 14 support
Solution: Drop support for FreeBSD 12, add FreeBSD 14

closes: #13059

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Philip H <47042125+pheiduck@users.noreply.github.com>
2023-09-10 18:31:51 +02:00
Wu Yongwei
e7833e7347 runtime(masm): add support for AVX-2 and AVX-512 (#13061)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-10 18:27:31 +02:00
Mahmoud Abduljawad
0ce2c594d0 patch 9.0.1891: No runtime support for Mojo
Problem:  No runtime support for Mojo
Solution: Add basic filetype and syntax plugins

closes: #13062
closes: #13063

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Co-authored-by: Mahmoud Abduljawad <mahmoud@masaar.com>
2023-09-10 18:23:04 +02:00
Yegappan Lakshmanan
f36bbcd402 patch 9.0.1890: Vim9: lookup code for class/object repaeated
Problem:  Vim9: lookup code for class/object repaeated
Solution: Refactor and make use of lookup functions

closes: #13067

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-10 18:19:06 +02:00
Emil Ejbyfeldt
0661033075 runtime(scala): Fix Scala highlighting string literal as type param (#13070)
Since https://docs.scala-lang.org/sips/42.type.html which is implemented
in Scala 2.13 and in Scala 3 it possible to use string literals as
singleton types. So code like
```
someFunc["abc"]
```
is valid. Currently this code is not hightlighted correctly and worse if
there is an unclosed `(` in the string it breaks the formating in the
rest of the file.

I also submitted this patch to the mentioned project for this runtime
file: https://github.com/derekwyatt/vim-scala/pull/173 But there are no
commits there over the last 2 years and no response in the week since I
created it. Also the last change to the Scala syntax file:
https://github.com/vim/vim/pull/9594 is yet to be backported to that
repo. Therefore I am opening this PR as well to get some feedback on how
to proceed to get this fixed.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-10 18:16:51 +02:00
Yegappan Lakshmanan
0405405536 patch 9.0.1889: Vim9 static tests fail
Problem:  Vim9 static tests fail
Solution: Fix tests, make CI happy ;)

closes: #13064

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-10 18:12:56 +02:00
Andrii Sokolov
733bbcde77 runtime(nasm): updated syntax file
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-09 12:00:09 +02:00
Yegappan Lakshmanan
342f4f626e patch 9.0.1888: Vim9: Problem trying to invoke class method
Problem:  Vim9: Problem trying to invoke class method
Solution: Lookup the class method insider other classes

closes: #13055

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-09 11:37:23 +02:00
Yegappan Lakshmanan
23c92d93c1 patch 9.0.1887: Vim9: class members are accessible via object
Problem:  Vim9: class members are accessible via object
Solution: Disable class member variable access using an object

Class methods can be accessed only using the class name and cannot be
accessed using an object. To be consistent with this, do the same for
class member variables also. They can be accessed only using the class
name and not using an object.

closes: #13057

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-09 11:33:29 +02:00
Christian Brabandt
ee17b6f70d patch 9.0.1886: Various Typos
Problem:  Various Typos
Solution: Fix Typos

This is a collection of typo related commits.

closes: #12753
closes: #13016

Co-authored-by: Adri Verhoef <a3@a3.xs4all.nl>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Viktor Szépe <viktor@szepe.net>
Co-authored-by: nuid64 <lvkuzvesov@proton.me>
Co-authored-by: Meng Xiangzhuo <aumo@foxmail.com>
Co-authored-by: Dominique Pellé <dominique.pelle@gmail.com>

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-09 11:31:38 +02:00
Yegappan Lakshmanan
7bcd25cad3 patch 9.0.1885: Vim9: no support for abstract methods
Problem:  Vim9: no support for abstract methods
Solution: Add support for defining abstract methods in an abstract class

closes: #13044
closes: #13046

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-08 19:29:31 +02:00
fritzophrenic
86cfb39030 runtime(tohtml): Update TOhtml to version 9.0v2 (#13050)
Modified behavior:
  - Change default value of g:html_use_input_for_pc from "fallback" to
    "none". This means with default settings, only the standards-based
    method to make special text unselectable is used. The old method
    relying on unspecified browser behavior for <input> tags is now only
    used if a user specifically enables it.
  - Officially deprecate g:use_xhtml option (in favor of
    g:html_use_xhtml) by issuing a warning message when used.

Bugfixes:
  - Fix issue #8547: LineNr and other special highlight groups did not
    get proper style rules defined when using "hi link".
  - Fix that diff filler was not properly added for deleted lines at the
    end of a buffer.

Other:
  - Refactored function definitions from long lists of strings to use
    :let-heredoc variable assignment instead.
  - Corrected deprecated "." string concatenation operator to ".."
    operator in more places.


Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-08 19:20:01 +02:00
Christ van Willegen
1bd2cb1169 patch 9.0.1884: Wrong order of arguments for error messages
Problem:  Wrong order of arguments for error messages
Solution: Reverse order or arguments for e_aptypes_is_null_nr_str

closes: #13051

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Christ van Willegen <cvwillegen@gmail.com>
2023-09-08 19:18:58 +02:00
dkearns
4e554d282c runtime(perl): Update ftplugin and indent files (#13052)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-08 19:16:03 +02:00
Yegappan Lakshmanan
cc0bcf4c9f patch 9.0.1883: Vim9: Calling an interface method using a child object fails
Problem:  Vim9: Calling an interface method using a child object fails
Solution: Search methods of parent class

When a class implementing an interface is extended by another class and
a child class instance is passed to a function that accepts the
interface, calling an interface method doesn't work properly.

closes: #13053

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-08 19:12:03 +02:00
Christian Brabandt
11d2aeeca4 runtime(doc): update help tags file
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-06 16:39:14 +02:00
Christian Brabandt
da200c2f78 patch 9.0.1882: Trailing white space in tests
Problem:  Trailing white space in tests
Solution: Delete it

This causes test_codestyle to fail, so we need to remove it again.
Hopefully that makes the CI green again.

Note: I will start using annotated tags from now on.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-06 21:12:24 +02:00
Christian Brabandt
5856b07795 patch 9.0.1881: Test_crash fails on Mac
Problem:  Test_crash fails on Mac
Solution: Skip test on Mac

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-06 20:53:46 +02:00
Ernie Rael
cf138d4ea5 patch 9.0.1880: Vim9: Need more tests for inheritance
Problem:  Vim9: Need more tests for inheritance
Solution: Add access tests and fixes.

`inside_class` fix from yegappan. `object_index_from_itf_index` fix
access of member on class extending class implementing interface.

Based on tests from Vim9: Class/Object member variable access control #12979

closes: #13032
related: #12979

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-06 20:45:03 +02:00
Christian Brabandt
f7ac0ef509 runtime: don't execute external commands when loading ftplugins
This is a followup to 816fbcc262 (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: #13034

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Tim Pope <vim@tpope.org>
2023-09-06 20:41:25 +02:00
Yegappan Lakshmanan
1689e847ff patch 9.0.1879: Vim9: incorrect duplicate class member detection
Problem:  Vim9: incorrect duplicate class member detection
Solution: Incorrect duplicate class member detection when variable names
          have the same prefix.  Not able to access class member variables
          using an object. Fix coding style issues

closes: #13042

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-06 20:23:23 +02:00
Philip H
1690ec64ff patch 9.0.1878: tests running sh have problems
Problem:  tests running sh have problems
Solution: Check that dash is installed

closes: #13040

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Philip H <47042125+pheiduck@users.noreply.github.com>
Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-09-06 20:20:07 +02:00
Christian Brabandt
18d2709aa1 patch 9.0.1877: missing test for patch 9.0.1873
Problem:  missing test for patch 9.0.1873
Solution: add a test trying to exchange windows

Add a test, making sure that switching windows is not allowed when
textlock is active, e.g. when running `:s/<pat>/\=func()/`

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-06 20:02:27 +02:00
Anton Sharonov
67c951df4c 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: #13027

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-05 21:04:44 +02:00
zdohnal
9b04c50319 Filelist: Add missing directory crash (#13036)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-05 20:55:47 +02:00
Christian Brabandt
00cb247465 patch 9.0.1876: Vim9: parsing commands with newlines wrong
Problem:  Vim9: parsing commands with newlines wrong
Solution: Accept a '\n' for parsing lists and command arguments

closes: #13015
closes: #13020

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-05 20:53:46 +02:00
Yegappan Lakshmanan
28a60f898d patch 9.0.1875: Vim9: improve test for disassemble + static
Problem:  Vim9: improve test for disassemble + static
Solution: Add a Vim9 script disassemble test for an interface with
          static members
closes: #13037

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-05 20:44:32 +02:00
Christian Brabandt
1c7397f3f1 patch 9.0.1874: CI may fail in test_recover_empty_swap
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: #13038

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-05 20:40:25 +02:00
Christian Brabandt
f6d28fe2c9 patch 9.0.1873: [security] heap-buffer-overflow in vim_regsub_both
Problem:  heap-buffer-overflow in vim_regsub_both
Solution: Disallow exchanging windows when textlock is active

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-05 20:18:06 +02:00
Christian Brabandt
d2a08ba0fa patch 9.0.1872: CI: test_crash() fails on CI
Problem:  CI: test_crash() fails on CI
Solution: Skip test on BSD

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-05 07:45:04 +02:00
James McCoy
a4245a10ea patch 9.0.1871: Github CI does not run i386 job
Problem:  Github CI does not run i386 job
Solution: Add a i386 architecture

Add CI testing for i386

message_test recently failed on i386, which exposed a gap in the CI
testing.  Convert the shadowdir job to one that runs on i386 so we get
32-bit test coverage.

Since the GHA runners are x86_64, we can enable the i386 architecture
in dpkg and install i386 packages for the i386 CI jobs.  However, this
can't currently be done with features=huge since that would require
installing python3-dev:i386, which breaks the CI environment.

closes: #12975

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: James McCoy <jamessan@jamessan.com>
2023-09-05 07:41:23 +02:00
Ernie Rael
00df69e62b patch 9.0.1870: Vim9: disassamble does not show static
Problem:  Vim9: disassamble does not show static
Solution: Show static flag

Fix disassemble for instructions with optional static:
ISN_GET_OBJ_MEMBER and ISN_GET_ITF_MEMBER

closes: #13030

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-09-05 07:39:14 +02:00
Yee Cheng Chin
c2a37013bd runtime(menu): Fix "Open &Tab..." CJK translations to have shortcut key (#13031)
Previous PR (#12993) fixed localization files to point to "Open &Tab..."
but they didn't add the shortcut key to the translated names. This adds
the shortcut keys to the CJK translations in the form of "(&T)".

Note that this doesn't add the shortcut to latin script languages like
Czech. These types of translated names tend to also localize the
shortcut keys for them to make sense to the user and it's up to each
translator to decide how to do so. CJK translations tend to just take
the English key directly since it doesn't make sense to have a localized
shortcut key in general.


Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-05 07:36:07 +02:00
Ernie Rael
86eda07805 patch 9.0.1869: Coverity warns about unitialized var
Problem:  Coverity warns about unitialized var
Solution: initialize it

closes: #13029

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-09-05 07:33:48 +02:00
Christian Brabandt
59adcb4c20 patch 9.0.1868: test_crash still fails for circle ci
Problem:  test_crash still fails for circle ci
Solution: give even more time to complete

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-04 22:42:55 +02:00
Ivan Pešić
e4ba5df7c7 runtime(sr): Update Serbian messages translation
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-04 22:37:03 +02:00
Ernie Rael
18143d3111 patch 9.0.1867: Vim9: access to interface statics possible
Problem:  Vim9: access to interface statics possible
Solution: Prevent direct access to interface statics

closes: #13007

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-09-04 22:30:41 +02:00
zeertzjq
dccc29c228 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: #13022
closes: #13024

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-04 22:25:07 +02:00
John Wellesz
3170342af3 runtime(php): Update the php indent script to the 1.75 (from 1.70) (#13025)
Changes:

1.75:
- Fix 2072/PHP-Indenting-for-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-VIm#86: Add support for `match` expression.

1.73:
- Fix 2072/PHP-Indenting-for-VIm#77 where multi line strings and true/false keywords at beginning of a
  line would cause indentation failures.

1.72:
- Fix vim/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-VIm#75 where the indent script would hang on some multi-line quoted strings.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-04 22:22:19 +02:00
Anton Sharonov (ant0sha)
282a94be99 runtime: Fix problem of checking wrong cwd for ruby ftplugin (#13026)
Co-authored-by: Anton Sharonov <anton.sharonov@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-04 22:21:00 +02:00
Yegappan Lakshmanan
544be0d893 patch 9.0.1865: Vim9: garbage collection may cause crash
Problem:  Vim9: garbage collection may cause crash
Solution: validate that class members typeval is not null

closes: #13028

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-04 22:14:28 +02:00
Christian Brabandt
623ba31821 patch 9.0.1864: still crash with bt_quickfix1_poc
Problem:  crash with bt_quickfix1_poc when cleaning up
          and EXITFREE is defined
Solution: Test if buffer is valid in a window, else close
          window directly, don't try to access buffer properties

While at it, increase the crash timeout slightly, so that CI has a
chance to finish processing the test_crash() test.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-04 22:09:12 +02:00
Christian Brabandt
e073a8b79f translation(it): revert permission changes for xxd manpages
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-04 07:58:39 +02:00
zeertzjq
7db89bdc23 patch 9.0.1863: wrong format specifiers in e_aptypes_is_null_str_nr
Problem:  wrong format specifiers in e_aptypes_is_null_str_nr
Solution: Fix the wrong format specifier

closes: #13020

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-04 07:54:02 +02:00
Yegappan Lakshmanan
e651e110c1 patch 9.0.1862: Vim9 Garbage Collection issues
Problem:  Vim9 Garbage Collection issues
Solution: Class members are garbage collected early leading to
          use-after-free problems.  Handle the garbage
          collection of classes properly.

closes: #13019

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-04 07:51:01 +02:00
K.Takata
233f956bd4 patch 9.0.1861: xxd: issue when -R is specified several times
Problem:  xxd: issue when -R is specified several times
Solution: Fix command line parsing

See: https://github.com/vim/vim/pull/12986#issuecomment-1704375892

closes: #13021

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: K.Takata <kentkt@csc.jp>
Co-authored-by: Aapo Rantalainen <aapo.rantalainen@gmail.com>
2023-09-04 07:46:59 +02:00
Christian Brabandt
f44cbe96fa patch 9.0.1860: CI: test_crash1() is flaky
Problem:  CI: test_crash1() is flaky
Solution: Wait a bit longer

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-04 07:42:27 +02:00
Christian Brabandt
6e60cf444a patch 9.0.1859: heap-use-after-free in bt_normal()
Problem:  heap-use-after-free in bt_normal()
Solution: check that buffer is still valid

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-03 21:43:46 +02:00
Christian Brabandt
ee9166eb3b patch 9.0.1858: [security] heap use after free in ins_compl_get_exp()
Problem:  heap use after free in ins_compl_get_exp()
Solution: validate buffer before accessing it

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-03 21:24:33 +02:00
Christian Brabandt
fc68299d43 patch 9.0.1857: [security] heap-use-after-free in is_qf_win()
Problem:  heap-use-after-free in is_qf_win()
Solution: Check buffer is valid before accessing it

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-03 20:20:52 +02:00
Christ van Willegen
aa90d4f031 patch 9.0.1856: issues with formatting positional arguments
Problem:  issues with formatting positional arguments
Solution: fix them, add tests and documentation

closes: #12140
closes: #12985

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Christ van Willegen <cvwillegen@gmail.com>
Tentatively fix message_test. Check NULL ptr.
2023-09-03 17:22:37 +02:00
h-east
71ebf3baca patch 9.0.1855: mode() doesn't indicate command line for terminal
Problem:  mode() doesn't indicate command line for terminal
Solution: make it return 'ct' for command-line from Terminal mode

closes: #6265
closes: #13017
closes: #13018

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: h-east <h.east.727@gmail.com>
2023-09-03 17:12:55 +02:00
Christian Brabandt
db510ca805 patch 9.0.1854: test_crash1() fails on CI
Problem:  test_crash1() fails on CI
Solution: don't run Screendump test, verify that it doesn't crash
          by running it through a shell command line, testing
          the exit value and concatenating success cmd using '&&'

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-03 09:30:09 +02:00
Christian Brabandt
15cbaae313 patch 9.0.1853: CI error on different signedness in regexp.c
Problem:  CI error on different signedness in regexp.c
          (after patch 9.0.1848)
Solution: Cast strlen() call to int

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 22:08:43 +02:00
pierreganty
d69aecf141 patch 9.0.1852: i_CTRL-O does not reset Select Mode
Problem:  i_CTRL-O does not reset Select Mode
Solution: Reset select mode on CTRL-O in insert mode

closes: #13001
closes: #12115

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-09-02 21:59:52 +02:00
zeertzjq
3c3cf1d689 patch 9.0.1851: breakindent missing by virt text
Problem:  Virtual text at a column causes 'breakindent' and 'showbreak'
          to be missing (after patch 9.0.1124).
Solution: Add check for "tp_col" in another place where TP_FLAG_WRAP is
          checked.

closes: #12769
closes: #13008
closes: #13010

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-02 21:55:00 +02:00
LemonBoy
32f3461465 patch 9.0.1850: Vim9: wrong line number where options set
Problem:  Vim9: wrong line number where options set
Solution: Set source line number earlier

closes: #13006
closes: #13013

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
2023-09-02 21:52:05 +02:00
Christian Brabandt
c8a034210f patch 9.0.1849: CI error on different signedness in ex_cmds.c
Problem:  CI error on different signedness
Solution: cast unsigned to int

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 21:50:10 +02:00
Christian Brabandt
ced2c7394a patch 9.0.1848: [security] buffer-overflow in vim_regsub_both()
Problem:  buffer-overflow in vim_regsub_both()
Solution: Check remaining space

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 21:37:04 +02:00
Christian Brabandt
889f6af371 patch 9.0.1847: [security] potential oob write in do_addsub()
Problem:  potential oob write in do_addsub()
Solution: don't overflow buf2, check size in for loop()

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 19:43:33 +02:00
Christian Brabandt
4c6fe2e2ea patch 9.0.1846: [security] crash in fullcommand
Problem:  crash in fullcommand
Solution: Check for typeval correctly

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 19:30:03 +02:00
Christian Brabandt
e0bfb7d301 patch 9.0.1845: xxd: Test_xxd_color start failing
Problem:  xxd: Test_xxd_color start failing
Solution: Revert changes to dump file

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 19:13:45 +02:00
Yee Cheng Chin
8b20203141 patch 9.0.1844: doc helptags may not be up to date
Problem:  doc helptags may not be up to date
Solution: Add CI jobs to verify helptags are updated

Also, re-generate the tags file with updated list so it will pass CI.

closes: #13012

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 16:04:50 +02:00
Christian Brabandt
b2422f7540 patch 9.0.1843: xxd color test flaky
Problem:  xxd color test flaky
Solution: Filter unneeded lines

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 16:01:18 +02:00
Antonio Giovanni Colombo
67b0ecf754 translation(it): updated Italian xxd manpage
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 15:12:35 +02:00
Ernie Rael
21d3212361 patch 9.0.1842: Need more accurate profiling
Problem:  Need more accurate profiling
Solution: Improve profiling results

closes: #12192

Reduce overhead of checking if a function should be profiled,
by caching results of checking (which are done with regexp).

Cache uf_hash for uf_name in ufunc_T.

Cache cleared when regexps are changed.

Break at first match for has_profiling lookup.

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-09-02 15:09:18 +02:00
Christian Brabandt
9d093fd056 patch 9.0.1841: style: trailing whitespace in ex_cmds.c
Problem:  style: trailing whitespace in ex_cmds.c
Solution: remove it

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 15:08:09 +02:00
Mike Williams
397e356d7b translation(en_GB): Update UK English translation (#13011)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 15:04:51 +02:00
Christian Brabandt
e1dc9a6275 patch 9.0.1840: [security] use-after-free in do_ecmd
Problem:  use-after-free in do_ecmd
Solution: Verify oldwin pointer after reset_VIsual()

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-02 14:44:47 +02:00
Dominique Pellé
acb91d3905 runtime(zserio): add zserio syntax (#13005)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-01 23:10:26 +02:00
Christian Brabandt
738ce77aa9 patch 9.0.1839: No Makefile rule to build cscope database
Problem:  No Makefile rule to build cscope database
Solution: Add rule

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-01 22:38:26 +02:00
Antonio Giovanni Colombo
f3db141aed translation(it): updated Italian translation + xxd manpage
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-01 22:19:37 +02:00
Yegappan Lakshmanan
3775f777a6 patch 9.0.1838: Vim9: Cannot modify class member vars from def function
Problem:  Vim9: Cannot modify class member vars from def function
Solution: Add support for modifying class member variables from a def
          function

closes: #12995

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-09-01 22:05:45 +02:00
Christian Brabandt
b147d31489 tests: Improve the codestyle test (#12988)
Improve it by the following:

1) Also check xxd source
2) Test_source_files():
   don't stop on the first error found, continue until the
   end of the file and report all found errors like this:

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-01 18:58:35 +02:00
Ernie Rael
456ae556b4 patch 9.0.1837: Vim9: class_member_type() can be optimized
Problem:  Vim9: class_member_type() can be optimized
Solution: class_member_type() provides more information;
          safe an additional alloc()/free()

closes: #12989

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-09-01 18:57:09 +02:00
Yee Cheng Chin
c41b7a26fc Fix menu localization not updated for "Open Tab..." item (#12993)
THe menu item "Open Tab..." was changed to "Open &Tab..." in #12895 but
localization files were not updated. Update it here.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-01 18:53:30 +02:00
zeertzjq
ce53e3ea55 patch 9.0.1836: display wrong with virttext, linebreak and breakindent
Problem:  Wrong display with "above" virtual text and 'linebreak' or
          'breakindent' and 'showbreak'.
Solution: Exclude size of "above" virtual text when calculating them.

closes: #13000

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-01 18:49:30 +02:00
Yee Cheng Chin
7a9d1aa878 patch 9.0.1835: Perl interface has problems with load PL_current_context
Problem:  Perl interface has problems with load PL_current_context
Solution: Fix Perl interface to load PL_current_context from library

In #12914, in order to fix an issue with Perl 5.36 dynamic builds, (that
version introduced a thread-local `PL_current_context`), the file added
the variable manually so we can satisfy the linker. However, the
variable is a different one from the one in the library, so there could
be unpredictable behavior. Instead, just use `dlsym` to load the context
from the library. The fact that it's thread-local doesn't matter too
much to us because Vim's interface is single-threaded so it will work
properly.

closes: #12996

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-09-01 18:46:17 +02:00
K.Takata
f6fc255e8d patch 9.0.1834: Some problems with xxd coloring
Problem:  Some problems with xxd coloring
Solution: Fix the following problems:

* Support colored output on Windows.
  SetConsoleMode() is required to enable ANSI color sequences.
* Support "NO_COLOR" environment variable.
  If "NO_COLOR" is defined and not empty, colored output should be
  disabled.
  See https://no-color.org/
* "-R" should only accept "always", "never" or "auto" as the parameter.
* Adjust help and documentation. "-R" cannot omit the parameter. Remove
  surrounding brackets.

Related #12131
closes: #12997
closes: #12991
closes: #12986

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: K.Takata <kentkt@csc.jp>
2023-09-01 18:41:04 +02:00
Doug Kearns
da16a1b471 runtime(ruby): Update syntax, indent and ftplugin files
While making changes to the ruby ftplugin, slightly change the exepath()
conditional from patch 9.0.1833 and move it after the :cd invocation.

closes: 12981
closes: 12994

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Tim Pope <code@tpope.net>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-09-01 18:36:49 +02:00
Christian Brabandt
816fbcc262 patch 9.0.1833: [security] runtime file fixes
Problem:  runtime files may execute code in current dir
Solution: only execute, if not run from current directory

The perl, zig and ruby filetype plugins and the zip and gzip autoload
plugins may try to load malicious executable files from the current
working directory.  This is especially a problem on windows, where the
current directory is implicitly in your $PATH and windows may even run a
file with the extension `.bat` because of $PATHEXT.

So make sure that we are not trying to execute a file from the current
directory. If this would be the case, error out (for the zip and gzip)
plugins or silently do not run those commands (for the ftplugins).

This assumes, that only the current working directory is bad. For all
other directories, it is assumed that those directories were
intentionally set to the $PATH by the user.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-31 23:52:30 +02:00
Christian Brabandt
0ffa97e8fa patch 9.0.1832: xxd: reporting wrong version
Problem:  xxd: reporting wrong version (after 9.0.1827)
Solution: Update version string

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-31 21:04:52 +02:00
Gianmaria Bajo
6ad4a60a97 patch 9.0.1831: Vim9: failing null test
Problem:  Vim9: failing null test
Solution: Use required public keyword

closes: #12982

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Gianmaria Bajo <mg1979.git@gmail.com>
2023-08-31 20:55:35 +02:00
Gianmaria Bajo
d7085a0635 patch 9.0.1830: Vim9: crash when accessing a null object
Problem:  Vim9: crash when accessing a null object
Solution: Check accessing a NULL object in def function

An object is NULL when the variable is declared, but the constructor
isn't called. Accessing/setting a member on the object crashed Vim.

Note: this happens inside def functions, at script level things work
differently. Accessing a NULL object member results in E1360
(correctly), while setting a value on it results in E1012 (type
mismatch) so there's still something to fix.

closes: #12973

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Gianmaria Bajo <mg1979.git@gmail.com>
2023-08-31 18:15:26 +02:00
Yegappan Lakshmanan
eb91e24d5e patch 9.0.1829: Vim9 missing access-checks for private vars
Problem:  Vim9 missing access-checks for private vars
Solution: Use the proper check for private/readonly variable.  Access
          level for a member cannot be changed in a class implementing an
          interface.  Update the code indentation

closes: #12978

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-08-31 18:10:46 +02:00
zeertzjq
ac2d8815ae patch 9.0.1828: cursor wrong with virt text before double-width char
Problem:  Wrong cursor position with virtual text before double-width
          char at window edge.
Solution: Check for double-width char before adding virtual text size.

closes: #12977

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-31 18:07:48 +02:00
Antonio Giovanni Colombo
e102e44fc6 translation(it): updated Italian manpages
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-31 18:03:11 +02:00
Aapo Rantalainen
e2528ae111 patch 9.0.1827: xxd: no color support
Problem:  xxd: no color support
Solution: Add color support using xxd -R

Add some basic color support for xxd

The hex-value and value are both colored with the same color depending
on the hex-value, e.g.:

    0x00 = white
    0xff = blue
    printable = green
    non-printable = red
    tabs and linebreaks = yellow

Each character needs 11 more bytes to contain color. (Same color in a
row could contain only one overhead but the logic how xxd creates colums
must be then changed.) Size of colored output is increased by factor of
~6. Also grepping the output will break when colors is used.

Flag for color is "-R", because less uses "-R".

Color uses parameters auto,always,never same as less and grep (among
others).

E.g.

xxd -R always $FILE | less -R

Add some screen-tests (that currently on work on linux) to verify the
feature works as expected.

closes: #12131

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Aapo Rantalainen <aapo.rantalainen@gmail.com>
2023-08-31 17:58:13 +02:00
xrandomname
0b8b145bf8 runtime(optwin): Fix for 'splitkeep' option (#12974)
'spk' was used as a boolean, rather than a string option.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-31 08:18:40 +02:00
dkearns
1610528cc3 runtime(forth): Update syntax and ftplugin files (#12976)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-31 08:17:16 +02:00
zeertzjq
1bed993c01 patch 9.0.1826: keytrans() doesn't translate recorded key typed in a GUI
Problem:  keytrans() doesn't translate recorded key typed in a GUI
Solution: Handle CSI like K_SPECIAL, like in mb_unescape()

closes: #12964
closes: #12966

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-30 19:38:24 +02:00
zeertzjq
6e55e85f92 patch 9.0.1825: wrong cursor position with virt text and 'linebreak'
Problem:  Wrong cursor position with virtual text before a whitespace
          character and 'linebreak'.
Solution: Always set "col_adj" to "size - 1" and apply 'linebreak' after
          adding the size of 'breakindent' and 'showbreak'.

closes: #12956

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-30 16:55:09 +02:00
Yegappan Lakshmanan
5bbcfbc4a2 patch 9.0.1824: Vim9: private members may be modifiable
Problem:  Vim9: private members may be modifiable
Solution: prevent modification for def function

closes: #12963

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-30 16:40:33 +02:00
Enno
9d8ef7cc43 runtime: cleanup :Sman command via the undo_ftplugin mechanism (#12967)
Regards to @dkearns as noticed in
2ac708b548

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-30 16:37:05 +02:00
Illia Bobyr
a96d544bc3 patch 9.0.1823: Autoconf 2.69 too old
Problem:  Autoconf 2.69 too old
Solution: Migrate to Autoconf 2.71

Autoconf 2.69 is almost 10 years old.  And 2.71 is also a few years old
as well.  Should be pretty well tested by now.  It brings a lot of
improvements and there seems to be an ongoing work on autoconf 2.72
already.

This change just addresses two minor changes `autoupdate` suggested, and
then `src/auto/configure` is regenerated by running

  cd src
  make AUTOCONF=autoconf2.71 autoconf

closes: #12958

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Illia Bobyr <illia.bobyr@gmail.com>
2023-08-30 16:30:15 +02:00
Yegappan Lakshmanan
e3b6c78ddc patch 9.0.1822: Vim9: no check for duplicate members in extended classes
Problem:  Vim9: no check for duplicate members in extended classes
Solution: Check for duplicate members in extended classes.
          Fix memory leak.

closes: #12948

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-29 22:34:36 +02:00
Gianmaria Bajo
4b9777a1df patch 9.0.1821: Vim9 constructors are always static
Problem:  Vim9 constructors are always static
Solution: make the "static" keyword an error

closes: #12945

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Gianmaria Bajo <mg1979.git@gmail.com>
2023-08-29 22:29:03 +02:00
dkearns
2ac708b548 runtime(sh): Update ftplugin (#12950)
Remove :Help command via the undo_ftplugin mechanism.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-29 22:24:37 +02:00
Doug Kearns
e06afb7860 patch 9.0.1820: Rexx files may not be recognised
Problem:  Rexx files may not be recognised
Solution: Add shebang detection and improve disambiguation of *.cls
	  files

closes: #12951

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-29 22:21:35 +02:00
ichizok
3e1e63de18 patch 9.0.1819: Github CI too complex
Problem:  Github CI too complex
Solution: CI: Tidy up matrix

Perform the following changes to the CI configuration:
 - Move common CFLAGS to ci/config.mk.sed
 - Change extra key to array to able to assign no or multiple values
   explicitly
 - Modify luaver variable handling
   - lib${{ matrix.luaver }}-dev ${{ matrix.luaver }} are confusing
     as package names
 - Deduplicate CONFOPT setting

closes: #12955

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: ichizok <gclient.gaap@gmail.com>
2023-08-29 22:20:21 +02:00
Jason King
3ac2d3da5f runtime(heex): Add HEEX comments to match_words in ftplugin (#12957)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-29 22:11:55 +02:00
Christian Brabandt
55460da26c patch 9.0.1818: dynamically linking perl is broken
Problem:  dynamically linking perl is broken
Solution: Fix all issues

This is a combination of several commits:

1) Fix if_perl.xs not being able to build on all versions of Perl (5.30)

This fixes the dynamic builds of Perl interface. The Perl interface file
previously had to manually copy and paste misc inline functions verbatim
from the Perl headers, because we defined `PERL_NO_INLINE_FUNCTIONS`
which prevents us form getting some function definitions. The original
reason we defined it was because those inline functions would reference
Perl functions that would cause linkage errors.

This is a little fragile as every time a new version of Perl comes out,
we inevitably have to copy over new versions of inline functions to our
file, and it's also easy to miss updates to existing functions.

Instead, remove the `PERL_NO_INLINE_FUNCTIONS` define, remove the manual
copy-pasted inline functions. Simply add stub implementations of the
missing linked functions like `Perl_sv_free2` and forward them to the
DLL version of the function at runtime. There are only a few functions
that need this treatment, and it's a simple stub so there is very low
upkeep compared to copying whole implementations to the file.

Also, fix the configure script so that if we are using dynamic linkage,
we don't pass `-lperl` to the build flags, to avoid accidental external
linkage while using dynamic builds. This is similar to how Python
integration works.

2) Fix GIMME_V deprecation warnings in Perl 5.38

Just use GIMME_V, and only use GIMME when using 5.30 to avoid needing to
link Perl_block_gimme. We could provide a stub like the other linked
functions like Perl_sv_free2, but simply using GIMME is the simplest and
it has always worked before.

3) Fix Perl 5.38 issues

Fix two issues:

3.1. Perl 5.38 links against more functions in their inline headers, so we
   need to stub them too.

3.2. Perl 5.38 made Perl_get_context an inline function, but *only* for
   non-Windows build. Fix that. Note that this was happening in Vim
   currently, as it would build, but fail to run Perl code at runtime.

4) Fix Perl 5.36/5.38 when thread local is used

Perl 5.36 introduced using `_Thread_local` for the current context,
which causes inline functions to fail. Create a stub
`PL_current_context` thread local variable to satisfy the linker for
inlined functions. Note that this is going to result in a different
`PL_current_context` being used than the one used in the library, but so
far from testing it seems to work.

5) Add docs for how to build Perl for dynamic linking to work

closes: #12827
closes: #12914

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-08-29 21:31:28 +02:00
Illia Bobyr
0e82b59df3 patch 9.0.1817: configure: using obsolete AC_HEADER_STDC
Problem:  configure: using obsolete AC_HEADER_STDC
Solution: Remove it and re-create configure

closes: #12949

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Illia Bobyr <illia.bobyr@gmail.com>
2023-08-29 21:17:50 +02:00
ichizok
bddc6adca6 patch 9.0.1816: configure: sed uses non-portable regex
Problem:  configure: sed uses non-portable regex
Solution: use '*' modifier instead of '\?' in regex
          for luajit version detection

closes: #12954

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: ichizok <gclient.gaap@gmail.com>
2023-08-29 20:54:32 +02:00
Christian Brabandt
a5eb6785ef runtime(doc): mention special case of i_CTRL-R_-
closes: #12947
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-29 16:23:22 +02:00
Christian Brabandt
7129de868c runtime(editorconfig): generate helptags, remove unused files
Remove the test suite and a few other non-used files from the
EditorConfig CI project

related: #12902
closes:  #12941

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-29 16:14:10 +02:00
Christian Brabandt
00d07a97ad runtime(tags): update helptags
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-28 21:45:55 +02:00
dkearns
0382f05dbd runtime: Set b:undo_indent where missing (#12944)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-28 21:32:59 +02:00
dkearns
f937ab32a1 runtime: Set b:undo_ftplugin where missing (#12943)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-28 21:32:27 +02:00
James McCoy
fe1463674c patch 9.0.1815: pango_coverage_unref() deprecated in pango > 1.51
Problem:  pango_coverage_unref() deprecated in pango > 1.51
Solution: use g_object_unref() instead

closes: #12942

Free PangoCoverage with g_object_unref for Pango >= 1.52

pango_coverage_unref was declared deprecated in Pango 1.52.0 in favor of
g_object_unref.  Adjust the call when building against a new enough
Pango to avoid the deprecation warning.

Signed-off-by: James McCoy <jamessan@jamessan.com>
Co-authored-by: James McCoy <jamessan@jamessan.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-28 21:29:13 +02:00
Yegappan Lakshmanan
2ba9d2e14e patch 9.0.1814: Vim9 no error on duplicate object member var
Problem:  Vim9 no error on duplicate object member var
Solution: detect duplicate members and error out

closes: #12938

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-28 21:26:23 +02:00
zeertzjq
1d3e0e8f31 patch 9.0.1813: linebreak incorrect drawn with breakindent
Problem: 'linebreak' is incorrectly drawn after 'breakindent'.
Solution: Don't include 'breakindent' size when already after it.

closes: #12937
closes: #12940

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-28 21:21:46 +02:00
Christian Brabandt
93ebb5e75e patch 9.0.1812: CI still fails with sodium_mlock error()
Problem:  CI still fails with sodium_mlock error()
Solution: Catch and ignore E1230 error in test_crypt

closes: #12939

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-28 21:17:36 +02:00
Yegappan Lakshmanan
85c3a5bc26 patch 9.0.1811: still some issues with term_debug test
Problem:  still some issues with term_debug test
Solution: Use WaitForAssert()

closes: #12936

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-27 22:01:23 +02:00
LemonBoy
d08745040b patch 9.0.1810: camel-case spelling has issues with digits
Problem:  camel-case spelling has issues with digits
Solution: Improve the camCase spell checking by taking digits
          and caps into account

Rewrite the conditions to check for word boundaries by taking into
account the presence of digits and all-caps sequences such as acronyms.

closes: #12644
closes: #12933

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
2023-08-27 21:52:27 +02:00
Christian Brabandt
6c93c94929 patch 9.0.1809: termdebug test flayk
Problem:  termdebug test flayk
Solution: wait slightly longer

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-27 21:48:29 +02:00
Christian Brabandt
f2534434c9 patch 9.0.1808: termdebug: Typo in termdebug test
Problem:  termdebug: Typo in termdebug test
Solution: fix the typos

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-27 20:00:37 +02:00
Doug Kearns
9b73902dbe patch 9.0.1807: runtime: crystal scripts not recognised
Problem:  runtime: crystal scripts not recognised
Solution: Filetype detect Crystal scripts by shebang line

closes: #12935

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-27 19:51:37 +02:00
dkearns
73aba18eb7 runtime: Remove outdated scripts.vim comment (#12934)
Problem:  Comment in scripts.vim is outdated
Solution: Delete the comment

runtime/autoload/dist/script.vim is now Vim9 script so =~ does not use
'ignorecase'.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-27 19:47:29 +02:00
Antonio Giovanni Colombo
d58bad6bc1 translation(it): updated Italian manpage
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-27 19:35:34 +02:00
LemonBoy
90c27b2803 patch 9.0.1806: Vim9: bogus error on export
Problem:  Vim9: bogus error on export
Solution: Don't error out when the export command is not executed

closes: #12912
closes: #12930

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
2023-08-27 19:28:15 +02:00
Yegappan Lakshmanan
639751d218 patch 9.0.1805: Vim9: problem compiling object method as function call arg
Problem:  Vim9: problem compiling object method as function call arg
Solution: After a object/class method call, remove the object/class from
          the stack.

closes: #12081
closes: #12929

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-27 19:26:16 +02:00
Yegappan Lakshmanan
cd7293bf6c patch 9.0.1804: Vim9: no support for private object methods
Problem:  Vim9: no support for private object methods
Solution: Add support for private object/class methods

closes: #12920

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-27 19:18:23 +02:00
NTBBloodbath
03e44a1d70 patch 9.0.1803: runtime(filetype): Add norg language detection
runtime(filetype): Add norg markup language detection

closes: #12913

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: NTBBloodbath <bloodbathalchemist@protonmail.com>
2023-08-27 19:15:20 +02:00
zeertzjq
e3daa06be1 patch 9.0.1802: Multiline regex with Visual selection fails with virtual text
Problem:  Multiline regex with Visual selection fails when Visual
          selection contains virtual text after last char.
Solution: Only include virtual text after last char when getting full
          line length.

closes: #12908

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-27 19:11:46 +02:00
Yegappan Lakshmanan
b49ad28d73 patch 9.0.1801: Vim9 instanceof() fails in a def func
Problem:  Vim9 instanceof() fails in a def func
Solution: allow Objects in compile time check

closes: #12907

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-27 19:08:40 +02:00
zeertzjq
6a3897232a patch 9.0.1800: Cursor position still wrong with 'showbreak' and virtual text
Problem:  Cursor position still wrong with 'showbreak' and virtual text
          after last character or 'listchars' "eol".
Solution: Remove unnecessary w_wcol adjustment in curs_columns(). Also
          fix first char of virtual text not shown at the start of a screen
          line.

closes: #12478
closes: #12532
closes: #12904

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-27 19:04:14 +02:00
RestorerZ
9a6cf34a1e patch 9.0.1799: Russian menu translation can be improved
Problem:  Russian menu translation can be improved
Solution: update the Russian menu files

closes: #12903

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: RestorerZ <restorer@mail2k.ru>
2023-08-27 19:00:42 +02:00
Christian Brabandt
e5e04306bf runtime: Distribute the editorconfig with vim (#12902)
This is the editorconfig-vim plugin Commit e014708e917b457e8f6c57f357d55dd3826880d4
from https://github.com/editorconfig/editorconfig-vim

closes: #2286
related: https://github.com/editorconfig/editorconfig-vim/issues/223

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-27 18:52:18 +02:00
Doug Kearns
6dfdff3f27 patch 9.0.1798: The 'syntax' option has no completion.
Problem:  The 'syntax' option has no completion.
Solution: Add syntax option completion.

closes: #12900

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-27 18:48:51 +02:00
Doug Kearns
f97f6bbf56 patch 9.0.1797: Vimball/Visual Basic filetype detection conflict
Problem:  Vimball/Visual Basic filetype detection conflict
Solution: runtime(vb): Improve Vimball and Visual Basic detection logic

Only run Vimball Archiver's BufEnter autocommand on Vimball archives.
Fixes #2694.

closes: #12899

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-27 18:44:09 +02:00
Ernie Rael
5c018bee0e patch 9.0.1796: Vim9 problems with null_objects
Problem:  Vim9 problems with null_objects
Solution: Vim9 improve null_object usage

Fix "xvar == null", where xvar might have been assigned null_object.

Fix compilation failure: "var o2: C = null_object".

closes: #12890

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-08-27 18:40:26 +02:00
Yegappan Lakshmanan
d4e4ecbb37 patch 9.0.1795: Indentation issues
Problem:  Indentation issues
Solution: Fix code indentation issues.

closes: #12906

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-27 18:35:45 +02:00
Illia Bobyr
74e1dada41 patch 9.0.1794: autoconf: not correctly detecing include dirs
Problem:  autoconf: not correctly detecing include dirs
Solution: make use of python3 to generate includedirs

configure: Python3: Use sysconfig for -I

It seems better to use tools provided by Python for determining the
include directories, rather than construct them "manually".

Current system is broken when using virtual environments for python
3.11.4.  It used to work before, but now it detects a incorrect value
for `-I`.

It would probably make sense to switch to a similar logic for lib
folders, that is for the `-l` switch.  There are also
`sysconfig.get_config_h_filename()` and
`sysconfig.get_makefile_filename()`, that could replace more Python
specific logic in the current `configure{.ac,}`.

sysconfig provides the necessary tools since Python 2.7.

closes: #12889

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Illia Bobyr <illia.bobyr@gmail.com>
2023-08-27 18:26:54 +02:00
Illia Bobyr
f39842f148 patch 9.0.1793: obsolete macros in configure script
Problem:  obsolete macros in configure script
Solution: Remove those and start moving to autoconf 2.71

src/configure.ac: Remove obsolete macros

These macros are declared obsolete in autoconf 2.69, which is almost 10
years old by now:

  https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Obsolete-Macros.html

They generate warnings when in a subsequent upgrade to autoconf 2.71.

`autoupdate` from autoupdate 2.71 suggests most of these changes, except
that it also adds obsolete warnings, that where individually checked and
removed.

Regenerated `src/auto/configure` by running:

  cd src
  autoconf2.69 --output=auto/configure configure.ac
  sed --in-place --expression='s@>config.log@>auto/config.log@g' auto/configure

closes: #12888

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Illia Bobyr <illia.bobyr@gmail.com>
2023-08-27 18:24:59 +02:00
zeertzjq
d809c0a903 patch 9.0.1792: problem with gj/gk/gM and virtual text
Problem:  Normal mode "gM", "gj", "gk" commands behave incorrectly with
          virtual text.
Solution: Use linetabsize() instead of linetabsize_str().

closes: #12909

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-27 11:17:39 +02:00
Yegappan Lakshmanan
58f39d89a8 patch 9.0.1791: No tests for the termdebug plugin
Problem:  No tests for the termdebug plugin
Solution: Add some simple tests for the termdebug plugin

closes: #12927

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-27 11:14:44 +02:00
Magnus Groß
8fbd9449e7 patch 9.0.1790: Redundant LSP Content-Type header
Problem:  The Content-Type header is an optional header that some LSP
          servers struggle with and may crash when encountering it.
Solution: Drop the Content-Type header from all messages, because we use
          the default value anyway.

Because pretty much all popular LSP clients (e.g. coc.nvim, VSCode) do
not send the Content-Type header, the LSP server ecosystem has developed
such that some LSP servers may even crash when encountering it.
To improve compatibility with these misbehaving LSP servers, we drop
this header as well.

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Magnus Groß <magnus@mggross.com>
2023-08-27 11:11:22 +02:00
Anatolii Sakhnik
0db1ea4815 translation(ua): Refine (synchronize with Neovim) (#12928)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-27 10:31:58 +02:00
mathew
20f61d96f8 patch 9.0.1789: too early declaration of variable in pum_set_selected()
Problem:  too early declaration of variable in pum_set_selected()
Solution: Move declaration to where it is actually used

closes: #12915

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: mathew <glephunter@gmail.com>
2023-08-26 18:11:31 +02:00
K.Takata
4c215ecdaf patch 9.0.1788: C4090 warnings in strings.c
Problem:  C4090 warnings in strings.c
Solution: Add type casts

closes: #12917

MSVC shows the following warnings:
```
strings.c(2436): warning C4090: 'function': different 'const' qualifiers
strings.c(2774): warning C4090: 'function': different 'const' qualifiers
strings.c(3865): warning C4090: 'function': different 'const' qualifiers
```

So add type casts to suppress them.

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ken .Takata <kentkt@csc.jp>
2023-08-26 18:05:08 +02:00
Herrington Darkholme
535b9e12d0 runtime(typescript): Fix highlighting symbols after number literal (#12911)
fixes #12831
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-26 18:01:47 +02:00
Anatolii Sakhnik
fa0094e162 translation(ua): Update Ukrainian translation (#12916)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-26 18:00:54 +02:00
Kevin Scannell
1da9fdb8c7 translation(ir): Updated irish translation (#12918)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-26 17:59:34 +02:00
Yegappan Lakshmanan
e750f8c330 runtime(todo): Update todo.txt to remove recently addressed issues (#12910)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-24 15:07:05 +01:00
Christian Brabandt
d42f95bbfb patch 9.0.1787: Cannot build with latest luajit
Problem:  Cannot build with latest luajit
Solution: adjust sed regexp and don't expect '-' in version output

closes: #12896

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-24 08:15:38 +02:00
Enno
2f25e40b1f runtime: configure keywordpg for some file types (#5566)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-23 21:27:50 +02:00
Christian Brabandt
e8d6f03f6a runtime: Remove Brams name from a few more runtime files (#12780)
syntax/model.vim: minor wording improvement

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Adri Verhoef <a3@a3.xs4all.nl>
2023-08-23 21:23:07 +02:00
Viktor Szépe
3fc7a7e44a runtime: Fix typos in various files
closes: #12836

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Viktor Szépe <viktor@szepe.net>
2023-08-23 21:20:00 +02:00
LemonBoy
afe0466fb1 patch 9.0.1786: Vim9: need instanceof() function
Problem:  Vim9: need instanceof() function
Solution: Implement instanceof() builtin

Implemented in the same form as Python's isinstance because it allows
for checking multiple class types at the same time.

closes: #12867

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
2023-08-23 21:08:11 +02:00
zeertzjq
1193951beb patch 9.0.1785: wrong cursor position with 'showbreak' and lcs-eol
Problem:  wrong cursor position with 'showbreak' and lcs-eol
Solution: Add size of 'showbreak' before when 'listchars' "eol" is used.
          Also fix wrong cursor position with wrapping virtual text on
          empty line and 'showbreak'.

closes: #12891

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-23 20:58:01 +02:00
mathew
c51fa7bc46 patch 9.0.1784: redundant else in pum_set_selected()
Problem:  redundant else in pum_set_selected()
Solution: Remove it

closes: #12893

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: mathew <glephunter@gmail.com>
2023-08-23 20:55:17 +02:00
Sean Dewar
3d3a9152fa runtime(termdebug): more termdebug fixes and improvements (#12892)
- Fix and attempt to simplify :Frame/:Up/:Down documentation.

- Accept a count instead for :Up/:Down/+/-.

- Update the "Last Change" dates.

- Fix a missing :let (caused an error if gdb fails to start).

- Wipe the prompt buffer when ending prompt mode (if it exists and wasn't wiped
  by the user first). Avoids issues with stale prompt buffers (such as E95 when
  starting a new prompt mode session).

- Kill the gdb job if the prompt buffer is unloaded (similar to what's done for
  a terminal buffer). Fixes not being able to start a new termdebug session if
  the buffer was wiped by the user, for example.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-23 17:14:49 +01:00
Emir SARI
79d9cb4cb0 Translation(tr): Update Turkish translations (#12897)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-23 17:10:16 +01:00
Christian Brabandt
e059fae100 runtime(menu): define shortcut for File->Open Tab (#12895)
Seems missing as noted by Antonio Giovanni Colombo. So add it and use
the 'T' as shortcut, which does not seem to be used in the File dialog.

Verified on Windows.

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Antonio Giovanni Colombo <azc100@gmail.com>
2023-08-23 17:07:55 +01:00
Karim Belabas
9180633e68 Codeowners: add KBelabas for runtime/syntax/gp.vim (#12898)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-23 17:07:23 +01:00
Job Noorman
544b209a2d runtime(scala): Link Scala highlighting groups using 'hi def link' in syntax script (#9594)
They were linked using 'hi link' which made it impossible for color
schemes to override highlight groups.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-22 22:37:40 +02:00
Oskar Stenman
6e93689bde runtime(bindzone): updated syntax file
- Add support for APL type in runtime/syntax/bindzone.vim
- all values between 0- 4294967295 are valid serials

closes: #9743
closes: #8382

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-22 22:34:26 +02:00
MichaWiedenmann
118f8e9da3 runtime(cmake) Recognize add_compile_definitions in syntax script (#10416)
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-22 22:25:50 +02:00
Moviuro
cdd934439d runtime(crontab): add support for BSD specifics in syntax script (#11196)
* OpenBSD supports the use of `~` as alias for "random valid value"
* FreeBSD supports `@every_{minute,second}`

See:

* https://man.openbsd.org/crontab.5
* https://www.freebsd.org/cgi/man.cgi?query=crontab&sektion=5

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-22 22:24:26 +02:00
Simon Sobisch
2ae7ffe0bc runtime(termdebug): add frame related commands (#12511)
implementing `:Frame`, `:Up` and `:Down'

partially fixing #10393

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-22 22:19:14 +02:00
Antonio Giovanni Colombo
6551ace0fe Translations(it): Update po and menus for it
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-22 22:15:13 +02:00
zeertzjq
b557f48982 patch 9.0.1783: Display issues with virt text smoothscroll and showbreak
Problem:  Wrong display with wrapping virtual text or unprintable chars,
          'showbreak' and 'smoothscroll'.
Solution: Don't skip cells taken by 'showbreak' in screen lines before
          "w_skipcol". Combined "n_skip" and "skip_cells".

closes: #12597

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-22 22:07:34 +02:00
Yegappan Lakshmanan
171c5b9b03 patch 9.0.1782: prop_list() does not return text_padding_left
Problem:  prop_list() does not return text_padding_left
Solution: Store and return the text_padding_left value for text
          properties

closes: #12870

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-22 21:48:50 +02:00
Christian Brabandt
757593c07a patch 9.0.1781: Problems when setting bin/paste option
Problem:  Problems when setting bin/paste option
Solution: When setting binary/paste, remember that this also affects
          depending options, so that :verbose set returns the right
          location.

Mention if depending options for 'binary' or 'paste' have been reset
indirectly. Add a test to verify it works.

Also noticed as small bug, that the global option value for expandtab
was not reset when paste option is set, so fix that while at it.

closes: #12837
closes: #12879

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-22 21:44:10 +02:00
Yegappan Lakshmanan
618e47d1cd patch 9.0.1780: Vim9 type not defined during object creation
Problem:  Vim9 type not defined during object creation
Solution: Define type during object creation and not during class
          definition, parse mulit-line member initializers, fix lock
          initialization

If type is not specified for a member, set it during object creation
instead of during class definition.  Add a runtime type check for the
object member initialization expression

Also, while at it, when copying an object or class, make sure the lock
is correctly initialized.

And finally, parse multi-line member initializers correctly.

closes: #11957
closes: #12868
closes: #12869
closes: #12881

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
2023-08-22 21:29:28 +02:00
zeertzjq
8dabccd295 patch 9.0.1779: Need more state() tests
Problem:  Need more state() tests
Solution: Add a few more tests for operater pending mode and register
          yank command

closes: #12883

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: author
2023-08-22 21:22:24 +02:00
Sean Dewar
a76f3221cd runtime(termdebug): Fix various Termdebug issues (#12875)
* Fix some Termdebug issues after #12403

Problem: Cleanup for :Var and :Asm buffers did not apply to prompt mode, and
E86 was possible if they were hidden.
Solution: Move cleanup to s:EndDebugCommon. Check that the buffers exist before
switching.

* Fix :Asm in Termdebug prompt mode

Problem: :Asm does not work in prompt mode.
Solution: Make it work by handling disassembly-related messages properly.

The previous implementation depended on the typed or sent (via s:SendCommand())
"disassemble ..." message being visible to s:CommOutput(), but this was only
true for the terminal-based job.

A more robust solution would be to use GDB MI's -data-disassemble command. I may
implement this in a future PR.

* Fix Termdebug s:DecodeMessage escaping logic

Problem: Termdebug does not escape gdb messages properly.
Solution: Improve the logic. Do not mangle messages if they have inner escaped
quotes. Use line continuation comments properly.

Interestingly, due to the missing line continuation comments (`"\`), most of
these substitutions were ignored.

Presumably, this logic still isn't exact. For example, if a message ends in
`\\"`, the quote may be preserved, even though it's the `\` being escaped
(similar issues may exist for the other escapes). This may not be a problem in
practice, though.
2023-08-22 19:30:29 +01:00
José-Paul D
b0d584d97a runtime(go): Update Go syntax file with 1.21 builtins (#12876)
* Update Go syntax file with 1.21 builtins
2023-08-22 19:29:19 +01:00
dkearns
e34b51e95f runtime(solidity): add new ftplugin (#12877)
Set undo_{ftplugin,indent}

closes #11240

Co-authored-by: cothi <jiungdev@gmail.com>
2023-08-22 19:28:42 +01:00
Karim Belabas
c6d533b0ad runtime(gp): update gp.vim syntax file for the GP language (version 2.15) (#12884)
- add missing defaults
- add missing control structures (incl. parallelism)
- add missing scope declarations
- whitespace edits (remove extra tabs)
2023-08-22 19:25:06 +01:00
Christian Brabandt
6909639249 runtime(dosini): save and restore cpo value in syntax script
Commit dd0ad25988  introduced
line-continuation. However, to make sure this does not cause an error
when Vim is run in compatible mode, we need to set compatibility mode
temporarily and reset it back when finished reading the file.

This fixes: https://groups.google.com/g/vim_use/c/9zccgo_RIqM/m/xlUmhBktBgAJ

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-21 06:49:38 +02:00
Christian Brabandt
75dc1ed1ad patch 9.0.1778: if_py_both: code-style issue
Problem:  if_py_both: code-style issue
Solution: add space

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-20 23:19:24 +02:00
Christian Brabandt
be07caa071 patch 9.0.1777: patch 9.0.1771 causes problems
Problem:  patch 9.0.1771 causes problems
Solution: revert it

Revert "patch 9.0.1771: regex: combining chars in collections not handled"
This reverts commit ca22fc36a4.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-20 22:28:28 +02:00
Jordi Altayó
6d626c4184 runtime(sdc): Add underscore to sdc flags in syntax file (#6201) 2023-08-20 21:45:13 +02:00
Jay Sitter
a0fddaa2f4 Runtime(javascript): add new document properties to completion file
closes: #6536

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-20 21:41:01 +02:00
Enrico Maria De Angelis
5e6e4042b1 runtime(haskell): Add single quote to iskeyword in ftplugin (#8191)
The single quote `'` is a valid character in variable names, so it should be included in `iskeyword`; this, for instance, makes the <kbd>*</kbd> command behave predictably
2023-08-20 21:29:09 +02:00
Brian C. Lane
a03380baa4 runtime(spec): ftplugin: Revert change dropping <SID> from SpecChangelog (#9032)
Without this it will return an error when creating a new changelog
entry:
"Unknown function: SpecChangelog"
2023-08-20 21:27:20 +02:00
Adrian Heine né Lang
309ded1954 runtime(css): Update pseudo-classes in syntax script (#11595) 2023-08-20 21:23:18 +02:00
beardedsakimonkey
9fa35b1c38 runtime(lua): fix lua indentation of non-lowercase "keywords" (#11759) 2023-08-20 21:21:51 +02:00
Meqa
e71e9d9ad3 runtime(javascript): fix default link of javaScriptNumber in syntax file (#11788)
cool unused matching
2023-08-20 21:20:59 +02:00
Yee Cheng Chin
c13b3d1350 patch 9.0.1776: No support for stable Python 3 ABI
Problem:  No support for stable Python 3 ABI
Solution: Support Python 3 stable ABI

Commits:
1) Support Python 3 stable ABI to allow mixed version interoperatbility

Vim currently supports embedding Python for use with plugins, and the
"dynamic" linking option allows the user to specify a locally installed
version of Python by setting `pythonthreedll`. However, one caveat is
that the Python 3 libs are not binary compatible across minor versions,
and mixing versions can potentially be dangerous (e.g. let's say Vim was
linked against the Python 3.10 SDK, but the user sets `pythonthreedll`
to a 3.11 lib). Usually, nothing bad happens, but in theory this could
lead to crashes, memory corruption, and other unpredictable behaviors.
It's also difficult for the user to tell something is wrong because Vim
has no way of reporting what Python 3 version Vim was linked with.

For Vim installed via a package manager, this usually isn't an issue
because all the dependencies would already be figured out. For prebuilt
Vim binaries like MacVim (my motivation for working on this), AppImage,
and Win32 installer this could potentially be an issue as usually a
single binary is distributed. This is more tricky when a new Python
version is released, as there's a chicken-and-egg issue with deciding
what Python version to build against and hard to keep in sync when a new
Python version just drops and we have a mix of users of different Python
versions, and a user just blindly upgrading to a new Python could lead to
bad interactions with Vim.

Python 3 does have a solution for this problem: stable ABI / limited API
(see https://docs.python.org/3/c-api/stable.html). The C SDK limits the
API to a set of functions that are promised to be stable across
versions. This pull request adds an ifdef config that allows us to turn
it on when building Vim. Vim binaries built with this option should be
safe to freely link with any Python 3 libraies without having the
constraint of having to use the same minor version.

Note: Python 2 has no such concept and this doesn't change how Python 2
integration works (not that there is going to be a new version of Python
2 that would cause compatibility issues in the future anyway).

---

Technical details:
======

The stable ABI can be accessed when we compile with the Python 3 limited
API (by defining `Py_LIMITED_API`). The Python 3 code (in `if_python3.c`
and `if_py_both.h`) would now handle this and switch to limited API
mode. Without it set, Vim will still use the full API as before so this
is an opt-in change.

The main difference is that `PyType_Object` is now an opaque struct that
we can't directly create "static types" out of, and we have to create
type objects as "heap types" instead. This is because the struct is not
stable and changes from version to version (e.g. 3.8 added a
`tp_vectorcall` field to it). I had to change all the types to be
allocated on the heap instead with just a pointer to them.

Other functions are also simply missing in limited API, or they are
introduced too late (e.g. `PyUnicode_AsUTF8AndSize` in 3.10) to it that
we need some other ways to do the same thing, so I had to abstract a few
things into macros, and sometimes re-implement functions like
`PyObject_NEW`.

One caveat is that in limited API, `OutputType` (used for replacing
`sys.stdout`) no longer inherits from `PyStdPrinter_Type` which I don't
think has any real issue other than minor differences in how they
convert to a string and missing a couple functions like `mode()` and
`fileno()`.

Also fixed an existing bug where `tp_basicsize` was set incorrectly for
`BufferObject`, `TabListObject, `WinListObject`.

Technically, there could be a small performance drop, there is a little
more indirection with accessing type objects, and some APIs like
`PyUnicode_AsUTF8AndSize` are missing, but in practice I didn't see any
difference, and any well-written Python plugin should try to avoid
excessing callbacks to the `vim` module in Python anyway.

I only tested limited API mode down to Python 3.7, which seemes to
compile and work fine. I haven't tried earlier Python versions.

2) Fix PyIter_Check on older Python vers / type##Ptr unused warning

For PyIter_Check, older versions exposed them as either macros (used in
full API), or a function (for use in limited API). A previous change
exposed PyIter_Check to the dynamic build because Python just moved it
to function-only in 3.10 anyway. Because of that, just make sure we
always grab the function in dynamic builds in earlier versions since
that's what Python eventually did anyway.

3) Move Py_LIMITED_API define to configure script

Can now use --with-python-stable-abi flag to customize what stable ABI
version to target. Can also use an env var to do so as well.

4) Show +python/dyn-stable in :version, and allow has() feature query

Not sure if the "/dyn-stable" suffix would break things, or whether we
should do it another way. Or just don't show it in version and rely on
has() feature checking.

5) Documentation first draft. Still need to implement v:python3_version

6) Fix PyIter_Check build breaks when compiling against Python 3.8

7) Add CI coverage stable ABI on Linux/Windows / make configurable on Windows

This adds configurable options for Windows make files (both MinGW and
MSVC). CI will also now exercise both traditional full API and stable
ABI for Linux and Windows in the matrix for coverage.

Also added a "dynamic" option to Linux matrix as a drive-by change to
make other scripting languages like Ruby / Perl testable under both
static and dynamic builds.

8) Fix inaccuracy in Windows docs

Python's own docs are confusing but you don't actually want to use
`python3.dll` for the dynamic linkage.

9) Add generated autoconf file

10) Add v:python3_version support

This variable indicates the version of Python3 that Vim was built
against (PY_VERSION_HEX), and will be useful to check whether the Python
library you are loading in dynamically actually fits it. When built with
stable ABI, it will be the limited ABI version instead
(`Py_LIMITED_API`), which indicates the minimum version of Python 3 the
user should have, rather than the exact match. When stable ABI is used,
we won't be exposing PY_VERSION_HEX in this var because it just doesn't
seem necessary to do so (the whole point of stable ABI is the promise
that it will work across versions), and I don't want to confuse the user
with too many variables.

Also, cleaned up some documentation, and added help tags.

11) Fix Python 3.7 compat issues

Fix a couple issues when using limited API < 3.8

- Crash on exit: In Python 3.7, if a heap-allocated type is destroyed
  before all instances are, it would cause a crash later. This happens
  when we destroyed `OptionsType` before calling `Py_Finalize` when
  using the limited API. To make it worse, later versions changed the
  semantics and now each instance has a strong reference to its own type
  and the recommendation has changed to have each instance de-ref its
  own type and have its type in GC traversal. To avoid dealing with
  these cross-version variations, we just don't free the heap type. They
  are static types in non-limited-API anyway and are designed to last
  through the entirety of the app, and we also don't restart the Python
  runtime and therefore do not need it to have absolutely 0 leaks.

  See:
  - https://docs.python.org/3/whatsnew/3.8.html#changes-in-the-c-api
  - https://docs.python.org/3/whatsnew/3.9.html#changes-in-the-c-api

- PyIter_Check: This function is not provided in limited APIs older than
  3.8. Previously I was trying to mock it out using manual
  PyType_GetSlot() but it was brittle and also does not actually work
  properly for static types (it will generate a Python error). Just
  return false. It does mean using limited API < 3.8 is not recommended
  as you lose the functionality to handle iterators, but from playing
  with plugins I couldn't find it to be an issue.

- Fix loading of PyIter_Check so it will be done when limited API < 3.8.
  Otherwise loading a 3.7 Python lib will fail even if limited API was
  specified to use it.

12) Make sure to only load `PyUnicode_AsUTF8AndSize` in needed in limited API

We don't use this function unless limited API >= 3.10, but we were
loading it regardless. Usually it's ok in Unix-like systems where Python
just has a single lib that we load from, but in Windows where there is a
separate python3.dll this would not work as the symbol would not have
been exposed in this more limited DLL file. This makes it much clearer
under what condition is this function needed.

closes: #12032

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-08-20 21:18:38 +02:00
Johan Mattsson
20cd8699ac patch 9.0.1775: Wrong comparison in vim9type.c
Problem:  Wrong comparison in vim9type.c
Solution: Change condition to false

closes: #12047

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Johan Mattsson <39247600+mjunix@users.noreply.github.com>
2023-08-20 21:07:29 +02:00
Shougo Matsushita
92997dda78 patch 9.0.1774: no support for custom cmdline completion
Problem:  no support for custom cmdline completion
Solution: Add new vimscript functions

Add the following two functions:
- getcmdcompltype() returns custom and customlist functions

- getcompletion() supports both custom and customlist

closes: #12228

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
2023-08-20 20:55:55 +02:00
Doug Kearns
19a3bc3add patch 9.0.1773: cannot distinguish Forth and Fortran *.f files
Problem:  cannot distinguish Forth and Fortran *.f files
Solution: Add Filetype detection Code

Also add *.4th as a Forth filetype

closes: #12251

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-20 20:53:47 +02:00
champignoom
6633611f42 runtime(lua): indent curly bracket followed by line comment (#12306)
fixes #12305
2023-08-20 20:49:16 +02:00
Luuk van Baal
16af913eee patch 9.0.1772: Cursor may be adjusted in 'splitkeep'ed windows
Problem:    Cursor is adjusted in window that did not change in size by
            'splitkeep'.
Solution:   Only check that cursor position is valid in a window that
            has changed in size.

closes: #12509

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Luuk van Baal <luukvbaal@gmail.com>
2023-08-20 20:44:59 +02:00
Raphael
478668013f runtime(rust): fix rust indent (#12542) 2023-08-20 20:42:39 +02:00
lifecrisis
17befac581 runtime(man): remove backslashes in man pages using Vim script (#12557)
Closes: vim/vim#12301

Co-authored-by: Jason Franklin <jason@oneway.dev>
2023-08-20 20:41:25 +02:00
Christian Brabandt
ca22fc36a4 patch 9.0.1771: regex: combining chars in collections not handled
Problem:  regex: combining chars in collections not handled
Solution: Check for following combining characters for NFA and BT engine

closes: #10459
closes: #10286

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-20 20:38:56 +02:00
Ibby
a6ab5e69d3 patch 9.0.1770: lines disappear when modifying chars before virt text
Problem:  lines disappear when modifying chars before virt text
Solution: take virtual text property length into account

closes: #12558
closes: #12244

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ibby <33922797+SleepySwords@users.noreply.github.com>
2023-08-20 20:24:18 +02:00
Shane-XB-Qian
f6fb52b667 runtime(termdebug): refactor error printing (#12856)
// vs not act like exception from vim or termdebug

Signed-off-by: shane.xb.qian <shane.qian@foxmail.com>
2023-08-20 20:07:49 +02:00
Shane-XB-Qian
19968fc4ec runtime(termdebug): re-indent lines (#12857)
Signed-off-by: shane.xb.qian <shane.qian@foxmail.com>
2023-08-20 20:06:49 +02:00
AmberArr
f5d0f54790 patch 9.0.1769: executable() ignoring symlinks on Windows
Problem:  executable() ignoring symlinks on Windows
Solution: resolve reparse points

closes: #12562

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: AmberArr <me@frost.moe>
2023-08-20 20:03:45 +02:00
laburnumT
9f29621415 Runtime(termdebug): Add support to view local and argument variables
closes: 12403

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-20 20:00:27 +02:00
James Fleming
72904d5fda Runtime: Add nixInherit matcher in nix.vim syntax
Perform the lookahead in `nixInheritAttributeScope`, then hand over to a
new region called `nixInheritAttributeSubExpr`, which sets the match
start to one char after the opening bracket to avoid a double-match.

Finally, only do a lookahead to `)` in `nixInheritAttributeSubExpr` (and
thus make sure the region is closed to not get a match of `nixParen`
here) and let `nixInheritAttributeScope` close the bracket.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-20 19:20:55 +02:00
Scott McKendry
2d0988ef93 patch 9.0.1768: Runtime: no support for bicep files
Problem:  Runtime: no support for bicep files
Solution: Add filetype support for bicepparam

closes: #12784

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Scott McKendry <scott.c.mckendry@gmail.com>
2023-08-20 19:17:42 +02:00
Gregory Anders
d4376dc3eb patch 9.0.1767: '.-' no allowed in highlight group names
Problem:  '.-' no allowed in highlight group names
Solution: Allow dot and hyphen characters in highlight group names

Allow dots and hyphens in group names. There does not seem
to be any reason for these to be disallowed.

closes: #12807

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Gregory Anders <greg@gpanders.com>
Co-authored-by: Sean Dewar <seandewar@users.noreply.github.com>
2023-08-20 19:14:03 +02:00
ChaseKnowlden
bedc69f9d6 patch 9.0.1766: Runtime: Missing QML support
Problem:  Runtime: Missing QML support
Solution: Add QML support to Vim

closes: #12810

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: ChaseKnowlden <haroldknowlden@gmail.com>
2023-08-20 19:10:03 +02:00
Mike Gilbert
a055b441f5 patch 9.0.1765: Error when cross-compiling Vim
Problem:  Error when cross-compiling Vim
Solution: use AC_CHECK_SIZEOF to find sizeof(wchar_t)

This fixes an error when cross compiling.

closes: #12828

Bug: https://bugs.gentoo.org/889430
Signed-off-by: Mike Gilbert <floppym@gentoo.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-20 19:01:41 +02:00
Philip H
4924ad099f patch 9.0.1764: CI: label should not be set on all yml files
Problem:  CI: label should not be set on all yml files
Solution: only set it for specific yml files in .github

closes: #12855

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Philip H <47042125+pheiduck@users.noreply.github.com>
2023-08-20 18:58:46 +02:00
Christian Brabandt
787de412b8 Translation: also update ru.cp1251.po file after 6cc8bc8366
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-20 18:46:41 +02:00
zeertzjq
ab9f2ecfd4 patch 9.0.1763: crash when passing invalid buffer to undotree()
Problem:  crash when passing invalid buffer to undotree()
Solution: Use get_buf_arg() instead of tv_get_buf_from_arg().

closes: #12862
closes: #12830

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-20 18:41:42 +02:00
Yegappan Lakshmanan
f9037f186a patch 9.0.1762: Not able to get the virtual text property
Problem:  Not able to get the virtual text property
Solution: Make prop_list() return virtual text and alignment

closes: #12860

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-20 18:27:45 +02:00
zeertzjq
654bdbbd32 patch 9.0.1761: g<kEnd> behaves different from g<end>
Problem:  g<kEnd> behaves different from g<end>
Solution: Make g<kEnd> behave like g<End>

closes: #12861

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-20 18:24:20 +02:00
Yegappan Lakshmanan
6ac1544e13 patch 9.0.1760: vim9 class problem with new() constructor
Problem:  vim9 class problem with new() constructor
Solution: Don't allow a return type for the new() class constructor.

closes: #12863
closes: #12040

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-20 18:20:17 +02:00
Restorer
6cc8bc8366 Translation: Russian PO file updated to Vim version 9.0.1757 (#12864)
Co-authored-by: RestorerZ <restorer@mail2k.ru>
2023-08-20 18:15:48 +02:00
zeertzjq
8fc6a1dae0 patch 9.0.1759: Visual highlight not working with cursor at end of screen line
Problem:  Visual highlight not working with cursor at end of screen line
          and 'showbreak'.
Solution: Only update "vcol_prev" when drawing buffer text.

closes: #12865

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-20 18:12:54 +02:00
LemonBoy
0ffc17aa47 patch 9.0.1758: vim9 no class identifiers in stack dumps
Problem:  vim9 no class identifiers in stack dumps
Solution: Prefix class members in stack traces with the class name
          followed by a dot.

closes: #12866
closes: #12078

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
2023-08-20 18:09:11 +02:00
Yegappan Lakshmanan
4b1cc7906f patch 9.0.1757: ex_class() function is too long
Problem:  ex_class() function is too long
Solution: refactor it

closes: #12858

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-19 22:39:33 +02:00
Christian Brabandt
e1eaae27f4 patch 9.0.1756: failing cursorline sign test
Problem:  failing cursorline sign test
Solution: only reset char attr, if cursorline
          option is not set

Unfortunately, commit dbeadf05b6 causes a
failure with the sign test Test_sign_cursor_position()

The root cause is, that resetting the character attribute will also
reset the existing cursor line highlighting and this breaks the test,
that expects the cursor line highlighting to overrule the sign line
highlighting.

So change the condition to reset the character attribute by making sure
that this only happens, if the 'cursorline' option is not active and the
cursor is not at the same line as the line to be drawn

closes: #12854
closes: #12859

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-19 22:36:12 +02:00
Christian Brabandt
25dec33c9b patch 9.0.1755: CI still fails with sodium mlock error
Problem: CI still fails with sodium mlock error
Solution: catch mlock failure

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-19 22:15:44 +02:00
LemonBoy
f244b2fbf2 patch 9.0.1754: still Ci breakage (after 9.0.1741)
Problem: still ci breakage (after 9.0.1741)
Solution: fix remaining issue

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
2023-08-19 16:02:04 +02:00
Christian Brabandt
b5f6fe9ca2 patch 9.0.1753: can't move to last non-blank char
Problem: can't move to last non-blank char
Solution: Make g<end> behave like that

Make it possible to move to last non-blank char on a line

We can distinguish between g0 and g^ to move to the very first character
and the first non-blank char.

And while we can move to the last screen char, we cannot go to the last
non-blank screen char.

Since I think g$ is the more widely used and known movement command (and
g<end> is synonymous to it) change the behaviour of g<end> to move to
last non-screen char instead and don't have this be the same command as
the g$ command anymore.

If you want to keep the old behaviour, you can use:

```
nnoremap g<end> g$
```

Add a test to verify the behaviour.

closes: #12593

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-19 15:55:35 +02:00
Christian Brabandt
2b6a12af4d patch 9.0.1752: CI: Coveralls is no longer used
Problem: CI: Coveralls is no longer used
Solution: Remove .coveralls.yml

Coveralls is no longer used, we ditched using it in patch v9.0.1547,
commit 12eb0f4ec5 issue #12389

So let's remove the .coveralls.yml file, it does not seem useful
anymore.

closes: #12851

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-19 15:50:52 +02:00
Philip H
8b8f7d19f8 patch 9.0.1751: CI: labeler configuration not found
Problem: CI: labeler configuration not found
         (after 9.0.1748)
Solution: set configuration path

closes: #12852

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Philip H <47042125+pheiduck@users.noreply.github.com>
2023-08-19 15:46:11 +02:00
rhysd
0bbc1be0a3 patch 9.0.1750: CI: fails because of changed error messages
Problem: CI: fails because of changed error messages
         (after: 9.0.1741)
Solution: Adjust expected error messages

closes: #12853

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: rhysd <lin90162@yahoo.co.jp>
2023-08-19 15:42:54 +02:00
Christian Brabandt
dbeadf05b6 patch 9.0.1749: Text property highlight doesn't override a sign highlight on TAB
Problem: Text property highlight doesn't override a sign highlight over
         a tab character
Solution: Let text_property override tab highlighting

This fixes a few problems of text properties:

-  text property highlighting when override=true does not overwrite TAB
   highlighting
-  text property highlighting when override=true does not overwrite TAB
   highlighting with :set list
-  text property highlighting is used instead of sign highlight after
   the actual text ends when signs are present with linehl is set

closes: #21584
closes: #21592

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-19 15:35:04 +02:00
Philip H
6d192a4ac9 patch 9.0.1748: CI: cannot label issues automatically
Problem:  CI: cannot label issues automatically
Solution: Create CI labeler

closes: #12788

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
2023-08-19 14:45:26 +02:00
Viktor Szépe
b23db545ce docs: Improve Markdown in README (#12829) 2023-08-19 14:16:10 +02:00
zeertzjq
6235a109c4 patch 9.0.1747: screenpos() may cause unnecessary redraw
Problem:  screenpos() may cause unnecessary redraw.
Solution: Don't unnecessarily reset VALID_WROW flag.

VALID_WROW flag is only used by two functions: validate_cursor() and
cursor_valid(), and cursor_valid() is only used once in ex_sleep().
When adjust_plines_for_skipcol() was first added in patch 9.0.0640, it
was called in two functions: comp_botline() and curs_rows().
- comp_botline() is called in two places:
  - onepage(), which resets VALID_WROW flag immediately afterwards.
  - validate_botline_win(), where resetting a VALID_ flag is strange.
- curs_rows() is called in two places:
  - curs_columns(), which sets VALID_WROW flag afterwards.
  - validate_cline_row(), which is only used by GUI mouse focus.

Therefore resetting VALID_WROW there doesn't seem to do anything useful.
Also, a w_skipcol check (which resets VALID_WROW flag) was added to
check_cursor_moved() in patch 9.0.0734, which seems to make more sense
than resetting that flag in the middle of a computation.

While at it make adjust_plines_for_skipcol() and textpos2screenpos() a
bit less confusing:
- Make adjust_plines_for_skipcol() return "off" instead of "n - off".
- Use 0-based "row" in textpos2screenpos() until W_WINROW is added.

closes: #12832

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-19 14:12:42 +02:00
Christian Brabandt
28ae5a32fd patch 9.0.1746: vim9class compile error for char/char_u conversion
Problem: vim9class compile error for char/char_u conversion
Solution: Correctly cast to (char *)

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-19 14:10:48 +02:00
zeertzjq
fc3058495d patch 9.0.1745: Missing test coverage for blockwise Visual highlight
Problem:  Missing test coverage for blockwise Visual highlight with
          virtual that starts with a double-width char.
Solution: Add a new virtual text to the test. Some other small fixes.

closes: #12835

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-19 13:27:03 +02:00
Sean Dewar
c3172fe9e4 patch 9.0.1744: Dead code in open_cmdwin()
Problem: Dead code in open_cmdwin()
Solution: Remove it

closes: #12839

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Sean Dewar <seandewar@users.noreply.github.com>
2023-08-19 13:23:50 +02:00
K.Takata
04510566b1 Translations: Update po files for zh and ja
Update po files by running `make` in `src/po/`.
Some po files were out of sync with the files in other encodings.

Related: #12749, #12787
closes: #12826
closes: #12840
2023-08-19 13:20:19 +02:00
Doug Kearns
44a6b72d7f patch 9.0.1743: Parameter of gui_gtk:gui_mch_browse incorrectly marked as UNUSED
Problem:    Parameter of gui_gtk:gui_mch_browse incorrectly marked as
            UNUSED.
Solution:   Remove UNUSED flag.

closes: #12841

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-19 13:13:11 +02:00
zeertzjq
9994160bfe patch 9.0.1742: wrong curswant when clicking on second cell of double-width char
Problem:  Wrong curswant when clicking and the second cell of a
          double-width char.
Solution: Don't copy virtcol of the first char to the second one.

closes: #12842

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-19 13:08:50 +02:00
LemonBoy
c5d2744c04 patch 9.0.1741: No type checking in interfaces
Problem: No type checking in interfaces
Solution: Implement member type check in vim9 interfaces

Most of the code is a small refactoring to allow the use of a where_T
for signaling the type mismatch, the type checking itself is pretty
simple.

Improve where_T error reports

Let the caller explicitly define the kind of location it's referring to
and free the WT_ARGUMENT enum from its catch-all role.

Implement type checking for interface methods

Follows closely the logic used for type-checking the members.

closes: #12844

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
2023-08-19 13:04:53 +02:00
dkearns
56bafd7a6a Runtime: add new sed ftplugin (#12843) 2023-08-19 12:13:31 +02:00
Pierre Colin
0a07646845 patch 9.0.1740: segfault when reading invalid viminfo file
Problem: segfault when reading invalid viminfo file
Solution: Check the expected type in the viminfo file

Thanks to @yegappan for the included test.

closes: #12652
closes: #12845

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Pierre Colin <48397990+Pierre-Colin@users.noreply.github.com>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-08-19 11:56:57 +02:00
James McCoy
38ab19e00f patch 9.0.1739: Leftover files in libvterm
Problem: leftover files in libvterm
Solution: Fix cleaning of libvterm directory

Delete the libvterm/src/.libs directory and fix typo in libvterm/t/.libs
directory name.

closes: #12846

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: James McCoy <jamessan@jamessan.com>
2023-08-19 11:38:49 +02:00
zeertzjq
4dd266cb66 patch 9.0.1738: Duplicate code to reverse a string
Problem:  Duplicate code to reverse a string
Solution: Move reverse_text() to strings.c and remove string_reverse().

closes: #12847

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-19 11:35:03 +02:00
Yegappan Lakshmanan
b102728c20 patch 9.0.1737: Calling a base class method through an extended class fails
Problem: Calling a base class method through an extended class fails
Solution: Create lookup table for member index in the interface to
          to the member class implementing the interface

Create additional tests for Vim9 classes.  Fix unconvered memory leaks
and crashes found by the new tests.

closes: #12848
closes: #12089

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>author
2023-08-19 11:26:42 +02:00
Antonio Giovanni Colombo
e27578aee6 Runtime: Update Italian Translation
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Antonio Giovanni Colombo <azc100@gmail.com>
2023-08-19 11:18:30 +02:00
Christian Brabandt
07a2b61d4c patch 9.0.1736: Github Actions times out after 20 minutes
Problem: Github Actions times out after 20 minutes
Solution: Increase the timeout to 25 minutes

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-18 01:20:42 +02:00
Bruno-366
817db406bb Add TODO, FIXME to Haskell syntax file (#8055)
Adding TODO, XXX, FIXME to Haskell syntax file #8054
2023-08-18 00:04:54 +02:00
Stuart Henderson
442d1746f4 bindzone runtime: add new DNS record types (#7351)
Recognize some newer DNS record types - CAA (RFC8659, certificate authority authorization), OPENPGPKEY (RFC7929), SMIMEA (RFC8162). Sort SSHFP alphabetically while there.
2023-08-18 00:04:24 +02:00
Yuri Klimov
a5988f582e Keywords 'of' and 'yield' for Javascript. (#7873)
* Keyword 'of' in for...of statement.

* Keyword 'yield' for generator function.
2023-08-18 00:03:23 +02:00
zeertzjq
e9ef347c13 patch 9.0.1735: Rename completion specific findex var
Problem: Rename completion specific findex var
Solution: Move "findex" static variable to xp_selected in expand_T

closes: #12548

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-17 23:57:05 +02:00
zeertzjq
be5cdd1d63 patch 9.0.1734: :runtime completion fails for multiple args
Problem: :runtime completion fails for multiple args
Solution: Make it work

closes: #12616

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-17 23:48:58 +02:00
Philip H
d2af6c66fe patch 9.0.1733: CI: cannot cache linux-modules-extra
Problem: CI: cannot cache linux-modules-extra
Solution: Enable caching and reduce failed downloads

closes: #12779

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Philip H <47042125+pheiduck@users.noreply.github.com>
2023-08-17 23:45:08 +02:00
Christian Brabandt
d5475e8d8d patch 9.0.1732: vimexpr: shadowing variable
Problem: vimexpr: shadowing variable
Solution: Rename local variable

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-17 23:41:33 +02:00
zeertzjq
6e940d9a1d patch 9.0.1731: blockwise Visual highlight not working with virtual text
Problem: blockwise Visual highlight not working with virtual text
Solution: Reset the correct variable at the end of virtual selection and
          Check for double-width char inside virtual text.

closes: #12606

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-17 23:21:40 +02:00
goweol
8cfe52e6fb man.vim: Recognise hyphenated-at-eol cross-references (#12609)
Manual pages requested for output may undergo formatting
arranged by some roff-descendant program. Lines longer
than MANWIDTH or COLUMNS or real-estate width of a device
(with support for horizontal scrolling considered) can be
divided at either blank characters and/or at groups of word
characters (syllables) according to supported hyphenation
rules (although page authors are free to disable hyphenation
or prevent particular words from being hyphenated).

Groff‘s manual describes it as follows:

    5.1.2 Hyphenation

    Since the odds are not great for finding a set of words, for
    every output line, which fit nicely on a line without
    inserting excessive amounts of space between words, gtroff
    hyphenates words so that it can justify lines without
    inserting too much space between words. It uses an internal
    hyphenation algorithm (a simplified version of the algorithm
    used within TeX) to indicate which words can be hyphenated
    and how to do so. When a word is hyphenated, the first part
    of the word is added to the current filled line being output
    (with an attached hyphen), and the other portion is added to
    the next line to be filled.

It would be expedient for autoload/dist/man.vim (along with
syntax/man.vim‘s highlighting and ftplugin/man.vim‘s Ctrl-],
\K mappings) to allow for hyphenation of cross-references
to manual pages.

For example,

  # Launch Vim [v9.0; patched: 1-1378, 1499] as follows:
  MANWIDTH=80 vim --not-a-term +MANPAGER '+Man man' '+/conv(1)' '+norm B'

  # Press Ctrl-] with cursor on _m_: "... use man‐
  # conv(1) directly."_______________________[^]
  #
  # (Man v2.11.2)

  # Launch Vim as follows:
  MANWIDTH=80 vim --not-a-term +MANPAGER '+Man git' '+/config(1)' '+norm B'

  # Press Ctrl-] with cursor on _g_: "... in git-
  # config(1) for a more ..."_______________[^]
  #
  # (Git v2.39.2)

Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
2023-08-17 23:13:29 +02:00
goweol
6e5ab2b994 man.vim: Uniformly place cursor at the same column with Ctrl-t (#12608)
Functions col and cursor count each tab (0x9) as a byte, and
are complementary. On the other hand, the | command motion
takes into consideration how many screen columns a tab does
occupy and may move cursor to a column closer to the start
of line than col would report at that position.

The provided changes prefer the cursor function to the | command.

Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
2023-08-17 23:12:42 +02:00
zeertzjq
008c91537b patch 9.0.1730: passing multiple patterns to runtime not working
Problem: passing multiple patterns to runtime not working
Solution: prepend prefix to each argument separately

closes: #12617

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-17 23:08:53 +02:00
zeertzjq
bfe377b8f2 patch 9.0.1729: screenpos() wrong when w_skipcol and cpoptions+=n
Problem:    screenpos() wrong result with w_skipcol and cpoptions+=n
Solution:   Use adjust_plines_for_skipcol() instead of subtracting
            w_skipcol.

closes: #12625

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-17 22:58:53 +02:00
zeertzjq
825cf813fa patch 9.0.1728: missing winid argument for virtcol()
Problem: missing winid argument for virtcol()
Solution: Add a {winid} argument to virtcol()

Other functions col(), charcol() and virtcol2col() support a {winid}
argument, so it makes sense for virtcol() to also support than.

Also add test for virtcol2col() with 'showbreak' and {winid}.

closes: #12633

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-17 22:55:25 +02:00
Sean Dewar
b0efa49ed1 patch 9.0.1727: minor problems with the teapot
Problem: minor problems with the teapot()
Solution: remove the null check, update documentation

Update the builtin-function-list entry. (It implicitly returns 0, but such
functions usually use "none")

Also, tv_get_string_strict() can not return NULL, so remove that check

closes: #12647

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Sean Dewar <seandewar@users.noreply.github.com>
2023-08-17 22:48:43 +02:00
Sean Dewar
876f5fb570 patch 9.0.1726: incorrect heights in win_size_restore()
Problem: incorrect heights in win_size_restore()
Solution: avoid restoring incorrect heights in win_size_restore()

Changing 'showtabline' or 'cmdheight' in the cmdwin restores incorrect
window heights after closing the cmdwin.

This may produce a gap between the cmdline and the window above.

Solution: restore window sizes only if the number of lines available for windows
changed; subtract the rows of the tabline, cmdline and last window's statusline
from 'lines' (other statuslines don't matter).

closes: #12704

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Sean Dewar <seandewar@users.noreply.github.com>
2023-08-17 22:40:05 +02:00
zeertzjq
e500ae8e29 patch 9.0.1725: cursor pos wrong after concealed text with 'virtualedit'
Problem:    Wrong cursor position when clicking after concealed text
            with 'virtualedit'.
Solution:   Store virtual columns in ScreenCols[] instead of text
            columns, and always use coladvance() when clicking.

This also fixes incorrect curswant when clicking on a TAB, so now
Test_normal_click_on_ctrl_char() asserts the same results as the ones
before patch 9.0.0048.

closes: #12808

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-17 22:35:26 +02:00
h-east
2261c89a49 patch 9.0.1724: vim9class constructor argument type checking bug
Problem: vim9class constructor argument type checking bug
Solution: fix it

closes: #12816

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: h-east <h.east.727@gmail.com>
2023-08-17 22:31:10 +02:00
Ivan Pešić
5a0dd71ed9 Update sr.po (#12820) 2023-08-17 22:28:59 +02:00
Yegappan Lakshmanan
bfc461f756 Use string interpolation (#12823) 2023-08-17 22:28:33 +02:00
zeertzjq
ad0c442f1f patch 9.0.1723: Fix regression in {func} argument of reduce()
Problem: Fix regression in {func} argument of reduce()
Solution: pass function name as string again

Before patch 9.0.0548, passing a string as {func} argument of reduce()
is treated as a function name, but after patch 9.0.0548 it is treated as
an expression instead, which is useless as reduce() doesn't set any v:
variables. This PR restores the behavior of {func} before that patch.

Also correct an emsg() call, as e_string_list_or_blob_required doesn't
contain format specifiers.

closes: #12824

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-17 22:15:47 +02:00
zeertzjq
4f389e7c0f patch 9.0.1722: wrong error messages when passing wrong types to count()
Problem: wrong error messages when passing wrong types to count()
Solution: fix it

This fixes two problems:
1. When passing wrong type to {ic} argument of count(), two error
   messages are given, the second of which is misleading.
2. When passing wrong type to {comp} argument of count(), the error
   message doesn't mention that {comp} may be a String.

closes: #12825

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-17 22:11:16 +02:00
zeertzjq
4112acae08 patch 9.0.1721: Build failure on Windows with dynamic lua
Problem: Build failure on Windows with dynamic lua (after 9.0.1719)
Solution: move definition further down in if_lua

closes: #12811
closes: #12814
closes: #12818

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-16 20:25:10 +02:00
Yegappan Lakshmanan
a456b12011 patch 9.0.1720: Vim9 class using wrong index for overridden method
Problem: Vim9 class using wrong index for overridden method
Solution: Use correct index for overridden method

closes: #12524
closes: #12813

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-16 20:14:37 +02:00
dkearns
20b33b56ad Update FreeBASIC syntax file (#12781) 2023-08-15 23:23:40 +02:00
依云
cf8cde2e5a zh_CN: update to use reordering (#12787) 2023-08-15 23:22:48 +02:00
Jesse Pavel
8a35033782 patch 9.0.1719: if_lua: crash for for Lua functions invoked via Vim callbacks
Problem: if_lua: crash for Lua functions invoked via Vim callbacks
Solution: Use Lua registry rather than upvalues for udata cache

closes: #12785

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Jesse Pavel <jpavel@alum.mit.edu>
2023-08-15 23:21:05 +02:00
LemonBoy
e98fb643ec patch 9.0.1718: dict-completion does not respect region
Problem: dict-completion does not respect region
Solution: respect selected region in dict completion

Set do_region to zero as we don't want a complete dump of the matching
words, we want the code to filter them according to the user's selected
region.

closes: #12792
closes: #7025

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
2023-08-15 23:14:30 +02:00
Restorer
636d32b327 The keyboard layout "russian-typograph" has been updated to version 3.3 (#12796)
Co-authored-by: RestorerZ <restorer@mail2k.ru>
2023-08-15 23:06:18 +02:00
lunasophia
10f23e10a9 Update syntax/muttrc.vim to latest mutt (#12797)
Nothing complicated, just lots of tedium keeping the lines wrapped at
reasonable lengths.
2023-08-15 23:05:36 +02:00
Ajit-Thakkar
4868f637b8 Update syntax/fortran.vim (#12798)
Several small improvements including better discrimination of "real" used as a type and as an intrinsic
2023-08-15 23:05:00 +02:00
Yegappan Lakshmanan
b209b86e66 patch 9.0.1717: virtcol2col returns last byte of a multi-byte char
Problem: virtcol2col returns last byte of a multi-byte char
Solution: Make it return the first byte for a multi-byte char

closes: #12786
closes: #12799

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-15 23:01:44 +02:00
Zdenek Dohnal
15a0a0281a patch 9.0.1716: Windows build with python 3.12 and clang fails
Problem: Windows build with python 3.12 and clang fails
Solution: Remove the PyBool_Type function pointer for python 3.12

Clang on Win doesn't like non-static functions in static struct with
Python 3.12 - removing the new obfuscated function and protecting the
old PyBool function for older Pythons fixes the issue.

closes: #12800

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Zdenek Dohnal <zdohnal@redhat.com>
2023-08-15 22:52:01 +02:00
zeertzjq
7772c93a3e patch 9.0.1715: duplicate test in message_test.c
Problem: duplicate test in message_test.c
Solution: Remove duplicate test and make functions static

closes: #12803

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-15 22:48:40 +02:00
zeertzjq
e4c79d3615 patch 9.0.1714: getcompletion() "cmdline" fails after :autocmd
Problem:  getcompletion() "cmdline" fails after :autocmd
Solution: Use set_cmd_context() instead of set_one_cmd_context().

closes: #12804

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-15 22:41:53 +02:00
Zdenek Dohnal
ba913b14dd patch 9.0.1713: Github CI fails to load snd-dummy kernel module
Problem: Github CI fails to load snd-dummy kernel module
Solution: Make installation of linux-modules-extra optional

linux-modules-extra package are not available on Ubuntu 22 at the
moment, which breaks CI runs. The change make its installation
conditional as the original `if-else` structure tried to do.

closes: #12801

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Zdenek Dohnal <zdohnal@redhat.com>
2023-08-15 22:34:45 +02:00
Jia-Ju Bai
5b0889b8bf patch 9.0.1712: missing null check in object_clear()
Problem: missing null check in object_clear()
Solution: Add null check of cl

closes: #12627

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Jia-Ju Bai <baijiaju@buaa.edu.cn>
2023-08-13 20:05:18 +02:00
zeertzjq
d3515a1e88 patch 9.0.1711: dead code in charset.c
Problem: dead code in charset.c
Solution: remove it

linetabsize_col() calls init_chartabsize_arg() with 0 as "lnum", so
cts.cts_has_prop_with_text is always FALSE.

closes: #PR

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-13 20:00:14 +02:00
Christian Brabandt
4a8eb6e7a9 patch 9.0.1710: scrolloff options work slightly different
Problem: sidescrolloff and scrolloff options work slightly
         different than other global-local options
Solution: Make it behave consistent for all global-local options

It was noticed, that sidescrolloff and scrolloff options behave
differently in comparison to other global-local window options like
'listchars'

So make those two behave like other global-local options. Also add some
extra documentation for a few special local-window options.

Add a few tests to make sure all global-local window options behave
similar

closes: #12956
closes: #12643

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-13 19:43:42 +02:00
Zdenek Dohnal
e5e4709a6a patch 9.0.1709: dynamic build with python 3.12 breaks
Problem: dynamic build with python 3.12 breaks
Solution: if_python3.c: Fix building dynamic Python3 interpreter

There are new extern global variables defined in python3 development
files, which types are within python3 library, so they break dynamic
python3 interpret Vim plugin.

Since the variables are used in macro `Py_SIZE` which is used in other
python3 headers, the dummy variables have to defined before including
Python.h.

closes: #12660

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Zdenek Dohnal <zdohnal@redhat.com>
2023-08-13 19:39:27 +02:00
Christian Brabandt
8ef1fbc0c3 patch 9.0.1708: getcompletion() failes for user-defined commands
Problem: getcompletion() failes for user-defined commands
Solution: set context for completion function

closes: #12681
closes: #12680

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-13 19:32:37 +02:00
Christian Brabandt
badeedd913 patch 9.0.1707: Cannot wrap around in popup_filter_menu()
Problem: Cannot wrap around in popup_filter_menu()
Solution: Allow to wrap around by default

Currently, it is not possible, to wrap around at the end of the list
using e.g. down (and go back to the top) or up at the beginning of the
list and go directly to the last item. This is not consistent behaviour
with e.g. how the pum-menu currently works, so let's just allow this.

Also adjust tests about it.

closes: #12689
closes: #12693

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-13 19:27:46 +02:00
Matthias Braun
02551c9de0 patch 9.0.1706: typos in the xxd manpage
Problem: typos in the xxd manpage
Solution: Fix typos and formatting

closes: #12645

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Matthias Braun <mb720@users.noreply.github.com>
2023-08-13 19:21:38 +02:00
Christian Brabandt
96d6c4aabe runtime: Remove Brams email in indent/README.txt
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-13 18:17:21 +02:00
zeertzjq
b25dbb3f9b patch 9.0.1705: cursor position wrong when clicking on an unprintable char
Problem:  cursor position wrong when clicking on an unprintable char
Solution: Don't update prev_ptr when wlv.n_extra is not zero.

closes: #12664

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-13 18:11:05 +02:00
Christ van Willegen
0c6181fec4 patch 9.0.1704: Cannot use positional arguments for printf()
Problem: Cannot use positional arguments for printf()
Solution: Support positional arguments in string formatting

closes: #12140

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Christ van Willegen <cvwillegen@gmail.com>
2023-08-13 18:06:00 +02:00
Christian Brabandt
1688938dd5 runtime: Add a few more remarks about Bram and new runtime files
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-13 17:53:07 +02:00
Yegappan Lakshmanan
74cc13cc40 patch 9.0.1703: Vim9 Calling a method in an extended class fails
Problem: Vim9 Calling a method in an extended class fails
Solution: use method index directly

closes: #12778

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-13 17:41:26 +02:00
ObserverOfTime
9ad1bf7afd runtime(pymanifest): fix mistake in syntax definition
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: ObserverOfTime <chronobserver@disroot.org>
2023-08-13 10:38:14 +02:00
Christian Brabandt
e978b4534a Farewell to Bram and dedicate upcoming Vim 9.1 to him (#12749)
* Dedicate upcoming Vim 9.1 to Bram

Also replace in a few more places Brams email address and mention new
maintainers.

* Remove Bram from any Maintainer role

* runtime: Align Header

* it's mailing list not mailinglist
2023-08-13 10:33:05 +02:00
zeertzjq
9c30f43899 patch 9.0.1702: Undo test is flaky
Problem:  Undo test is flaky.
Solution: Apply filter and change time to "1 second ago" in both dumps.

closes: #12771

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-13 10:31:27 +02:00
ObserverOfTime
2f339aad6c Add syntax & ftplugin for pymanifest (#12773) 2023-08-13 10:26:20 +02:00
ObserverOfTime
f9c4c2f97d Update iss syntax file (#11890)
- Add 'ExternalSize:' parameter
- Add 'setntfscompression' files flag
- Fix escaped left brace highlight
- Fix 'String:' parameter highlight
- Remove trailing whitespace
2023-08-13 10:25:41 +02:00
Yegappan Lakshmanan
57a02ccf4c patch 9.0.1701: vim9 crash when class member overridden
Problem: vim9 crash when class member overridden
Solution: Use method_count field instead

closes: #12676
closes: #12677

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-13 10:19:38 +02:00
K.Takata
32f586eec1 patch 9.0.1700: Cannot compile with dynamic perl < 5.38
Problem: Cannot compile with dynamic perl < 5.38 (after 9.0.1681)
Solution: Fix if_perl/dyn from perl 5.32 to 5.38

closes: #12755

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: K.Takata <kentkt@csc.jp>
2023-08-13 10:15:05 +02:00
Mike Williams
6c313bbb04 patch 9.0.1699: compile warning for xdiff/xutils on MS-Windows
Problem: compile warning for xdiff/xutils on MS-Windows
Solution: add explicit type cast from size_t to long

closes: #12531

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Mike Williams <mikew@globalgraphics.com>
2023-08-12 20:50:55 +02:00
zeertzjq
7fe1089904 patch 9.0.1698: Test_map_restore_sid fails in GUI
Problem: Test_map_restore_sid fails in GUI
Solution: Feed an unsimplified Ctrl-B

closes: #12770

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-12 20:44:21 +02:00
Christ van Willegen
73b8209266 patch 9.0.1697: incsearch test not sufficient
Problem: incsearch test not sufficient (after 9.0.1691)
Solution: add an additional test

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Christ van Willegen <cvwillegen@gmail.com>
2023-08-12 20:17:26 +02:00
Christian Brabandt
8878653a44 patch 9.0.1696: sodium_mlock may still fail in CI
Problem: sodium_mlock may still fail in CI
Solution: Catch E1230 in testscript and skip test

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-12 09:41:23 +02:00
Christian Brabandt
f1cc4d55b9 patch 9.0.1695: Crash with overlong textprop above
Problem: Crash with overlong textprop above
Solution: Consider only positive padding

closes: #12665
closes: #12661

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-12 00:14:14 +02:00
zeertzjq
bacc83009b patch 9.0.1694: wrong mapping applied when replaying a char search
Problem: wrong mapping applied when replaying a char search
Solution: Store a NOP after the ESC

closes: #12708
closes: #6350

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-12 00:09:31 +02:00
Christian Brabandt
2d63e4b3cc patch 9.0.1693: Ctrl-Q not handled like Ctrl-V in replace mode
Problem: Ctrl-Q not handled like Ctrl-V in replace mode
Solution: Handle Ctrl-Q like Ctrl-V

closes: #12686
closes: #12684

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-12 00:03:57 +02:00
cions
db4fd29063 patch 9.0.1692: Android not handling AI_V4MAPPED ai_flag
Problem: Android not handling AI_V4MAPPED ai_flag
Solution: don't set AI_V4MAPPED flag when on Android, since
          Android's getaddrinfo returns EAI_BADFLAGS if ai_flags
          contains it

closes: #12613

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: cions <gh.cions@gmail.com>
2023-08-11 23:53:13 +02:00
zeertzjq
7b7b4cb6f2 patch 9.0.1691: wrong viewport restored for incsearch and smoothscroll
Problem: wrong viewport restored for incsearch and smoothscroll
Solution: Save and restore skipcol as well

closes: #12713

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-11 23:48:27 +02:00
Christian Brabandt
f6cdab3704 patch 9.0.1690: popup_create() not aborting on errors
Problem: popup_create() not aborting on errors
Solution: check for errors in arguments given and abort if an error
          occurred

closes: #12711

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-11 23:42:02 +02:00
Zdenek Dohnal
288bf26c53 patch 9.0.1689: python 3.12 produces warnings and fails test
Problem: python 3.12 produces warnings and fails test
Solution: Make use of raw strings in python3 tests

closes: #12765

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Zdenek Dohnal <zdohnal@redhat.com>
2023-08-11 23:32:23 +02:00
Tom Praschan
ca6ac99077 patch 9.0.1688: cannot store custom data in quickfix list
Problem: cannot store custom data in quickfix list
Solution: add `user_data` field for the quickfix list

closes: #11818

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Tom Praschan <13141438+tom-anders@users.noreply.github.com>
2023-08-11 23:26:12 +02:00
zeertzjq
7e0bae024d patch 9.0.1687: mapset() not properly handling script ID
Problem: mapset() not properly handling script ID
Solution: replace_termcodes() may accept a script ID

closes: #12699
closes: #12697

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-11 23:16:10 +02:00
Philip H
cd4e4e169a .cirrus.yml: skip pkg update for FreeBSD 13.1 (#12767) 2023-08-11 23:10:02 +02:00
Keith Smiley
d8f981138a Add commentstring for nix file format (#12696) 2023-08-11 23:07:50 +02:00
Devin J. Pohly
5fee111149 patch 9.0.1686: undotree() only works for the current buffer
Problem:    undotree() only works for the current buffer
Solution:   Add an optional "buffer number" parameter to undotree().  If
            omitted, use the current buffer for backwards compatibility.

closes: #4001
closes: #12292

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Devin J. Pohly <djpohly@gmail.com>
2023-08-11 22:53:39 +02:00
Philip H
422b9dcbfa patch 9.0.1685: silence Python 3.11 depreciations for gcc
Problem: Python 3.11 interface throws deprecation warnings
Solution: ignore those warnings for gcc and clang

Python 3.11 deprecation warnings are already silenced for clang using
the pragma
```
 # pragma clang diagnostic ignored "-Wdeprecated-declarations"
```

However those warnings are also emitted when using gcc. To avoid them
for both compilers, change use the __GNUC__ ifdef, which is defined for
gcc as well as clang.

Additionally, instead of using the "clang diagnostic ignored" pragma,
let's make use of 'GCC diagnostic ignored' which is again supported by
clang and GCC

closes: #12610

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Philip H <47042125+pheiduck@users.noreply.github.com>
2023-08-11 22:38:48 +02:00
zeertzjq
b00df7aa38 patch 9.0.1684: Update libvterm to rev 839
Problem: libvterm slightly outdated
Solution: Update libvterm from rev 818 to rev 839

Notable fix: libvterm now handles DECSM/DECRM with multiple arguents,
so several ncurses programs (e.g. nnn) can enable mouse properly when
run in Vim's terminal in XTerm.

closes: #12746

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-11 21:15:08 +02:00
dkearns
8f5a8d8a8b Update CODEOWNERS (#12760) 2023-08-11 19:30:55 +02:00
Lily Ballard
21aaff3faa Update my name and email in runtime files (#12763) 2023-08-11 19:30:27 +02:00
Hong Xu
dd0ad25988 Update syntax/dosini.vim to the latest version (#12764)
The latest version is in https://github.com/xuhdev/syntax-dosini.vim/blob/master/syntax/dosini.vim. I've sent the file to Bram at the end of June, unfortunately it wasn't able to make into the Vim repository. RIP!
2023-08-11 19:29:20 +02:00
Dragan Simic' via vim_dev
81b8bf5b4a Update the vimscript code for restoring cursor position
Using xxd(1) to filter and edit binary files causes the input files
to have dual nature, so to speak, which effectively makes restoring
the cursor position broken.  Fix that by ignoring the "xxd" file type
in the code that restores the cursor position.

Interactive rebasing in git causes files to be edited in vim, which,
similarly to commit messages, are rarely the same as the last one
edited.  Thus, also add "gitrebase" to the list of file types for
which the cursor position isn't restored.

While there, refactor the code a bit to possibly save a few CPU cycles
and to keep the line lengths in check, and use the long form of the
commands and variables, to make the code slightly more consistent and
more understandable to newcomers.

Update the relevant comments in the code and the associated parts of
the documentation, to keep them in sync with the updated code.

Remove some redundant trailing whitespace as well, as spotted.
2023-08-10 06:43:14 +02:00
Dragan Simic' via vim_dev
6a500661a9 Improve the vimscript code in ":h hex-editing"
Save and restore the view position before and after saving the buffer,
respectively, to keep the current view of the xxd(1)'s hex dump
unchanged after doing ":w", which previously caused the window to
scroll back to the very beginning of the buffer.  I believe it's
needless to say how annoying and counterproductive that was.

Get rid of the "Press ENTER or type command to continue" message, which
was previously displayed after opening larger binary files.  The use
of "silent" and "redraw" commands is tailored specifically to avoid
screen flickering, e.g. when doing ":w", which is caused by the buffer
being filtered by an external command.

Increase the number of octets per line, produced by xxd(1), from the
default value of 16 to 32.  This puts bigger chunks of the hex dump
on the screen and makes the whole thing much more usable.

While there, reformat the code to make it more readable, and use the
long form of the commands and variables to make the code slightly more
consistent and more understandable to newcomers.
2023-08-10 06:43:14 +02:00
Christian Brabandt
6efb198033 Updated runtime files
This is a collection of various PRs from github that all require a minor
patch number:

1) https://github.com/vim/vim/pull/12612

    Do not conflate dictionary key with end of block

2) https://github.com/vim/vim/pull/12729:

    When saving and restoring 'undolevels', the constructs `&undolevels` and
    `:set undolevels` are problematic.

    The construct `&undolevels` reads an unpredictable value; it will be the
    local option value (if one has been set), or the global option value
    (otherwise), making it unsuitable for saving a value for later
    restoration.

    Similarly, if a local option value has been set for 'undolevels',
    temporarily modifying the option via `:set undolevels` changes the local
    value as well as the global value, requiring extra work to restore both
    values.

    Saving and restoring the option value in one step via the construct
    `:let &undolevels = &undolevels` appears to make no changes to the
    'undolevels' option, but if a local option has been set to a different
    value than the global option, it has the unintended effect of changing
    the global 'undolevels' value to the local value.

    Update the documentation to explain these issues and recommend explicit
    use of global and local option values when saving and restoring.  Update
    some unit tests to use `g:undolevels`.

3) https://github.com/vim/vim/pull/12702:

    Problem:    Pip requirements files are not recognized.
    Solution:   Add a pattern to match pip requirements files.

4) https://github.com/vim/vim/pull/12688:

    Add indent file and tests for ABB Rapid

5) https://github.com/vim/vim/pull/12668:

    Use Lua 5.1 numeric escapes in tests and add to CI

    Only Lua 5.2+ and LuaJIT understand hexadecimal escapes in strings.  Lua
    5.1 only supports decimal escapes:

    > A character in a string can also be specified by its numerical value
    > using the escape sequence \ddd, where ddd is a sequence of up to three
    > decimal digits. (Note that if a numerical escape is to be followed by a
    > digit, it must be expressed using exactly three digits.) Strings in Lua
    > can contain any 8-bit value, including embedded zeros, which can be
    > specified as '\0'.

    To make sure this works with Lua 5.4 and Lua 5.1 change the Vim CI to
    run with Lua 5.1 as well as Lua 5.4

6) https://github.com/vim/vim/pull/12631:

    Add hurl filetype detection

7) https://github.com/vim/vim/pull/12573:

    Problem:   Files for haskell persistent library are not recognized
    Solution:  Add pattern persistentmodels for haskell persistent library

closes: #12612
closes: #12729
closes: #12702
closes: #12688
closes: #12668
closes: #12631
closes: #12573

Co-authored-by: lacygoill <lacygoill@lacygoill.me>
Co-authored-by: Michael Henry <drmikehenry@drmikehenry.com>
Co-authored-by: ObserverOfTime <chronobserver@disroot.org>
Co-authored-by: KnoP-01 <knosowski@graeffrobotics.de>
Co-authored-by: James McCoy <jamessan@jamessan.com>
Co-authored-by: Jacob Pfeifer <jacob@pfeifer.dev>
Co-authored-by: Borys Lykah <lykahb@fastmail.com>
2023-08-10 06:19:18 +02:00
Christian Brabandt
6019fed0c5 patch 9.0.1682: sodium encryption is not portable
Problem: crypt: sodium encryption is not portable
Solution: use little-endian byte order for sodium encrypted files

As mentioned in #12586, sodium encryption only works on little ending
architectures, because reading and writing the sodium encryption
parameters are stored in the encrypted files in an arch-dependent way.

This of course fails for big-endian architectures like s390.

So make sure to use little-endian byte order when reading and writing
sodium encrypted files.

fixes: #12586
closes: 12655
2023-08-09 21:35:38 +02:00
Patrick Meiser-Knosowski
92f076e53e Update krl and add rapid syntax files (#12750) 2023-08-09 20:35:35 +02:00
Santos Gallegos
6ec7808c4a Add security policy (#12687)
* Add security policy

Currently is hard to find where to report security issues,
the only mention of it is in the issue template.

4c0089d696/.github/ISSUE_TEMPLATE/bug_report.yml (L12-L15)

Adding a SECURITY.md file will make it easier to find,
it will be displayed in https://github.com/vim/vim/security.

* Mention that reports are private
2023-08-09 20:11:37 +02:00
Balki
c41b3c9f95 defaults.vim: Update comment to simplify reverting augroup
closes: #12673
2023-08-09 20:07:26 +02:00
Philip H
1d7caa58e3 patch 9.0.1681: Build Failure with Perl 5.38
Problem: Build Failure with Perl 5.38
Solution: Fix Build Failure

closes: #12543, closes: #12575
2023-08-09 19:58:58 +02:00
Christian Brabandt
335c584940 patch 9.0.1680: sodium test fails in Github CI
Problem:    sodium test fails in Github CI
Solution:   Catch sodium_mlock() errors and do not error out

sodium_mlock() seems to fail consistently on the Github CI. Perhaps
[sodium_mlock()](https://libsodium.gitbook.io/doc/memory_management#text-locking-memory)
is called too often or with too much memory by the runners so
that this starts failing.

Let's just try to catch this and skip the test, when this starts
happening.

closes: #12751
2023-08-09 18:16:16 +02:00
Daniel Steinberg
c2bd205254 Change "the" to "then" under ':help bufload()' (#12662) 2023-08-09 18:10:59 +02:00
Filip Gospodinov
64dea84bb0 Manpager: apply g flag conditionally to s command (#12679)
Problem: The `s` command with `g` flag only substitutes
         one occurrence when `gdefault` is set.
Solution: Use `g` flag conditionally.
2023-08-09 18:00:36 +02:00
Christian Brabandt
bd76c89e31 update matchit (#12611) 2023-08-09 17:39:53 +02:00
zeertzjq
0401933a5b Fix alignment in filetype.txt (#12618)
There are three spaces because the "<" is concealed.
2023-08-09 17:39:05 +02:00
Dominique Pellé
077ade4f67 feat: recognize geojson extension as json filetype (#12636) 2023-08-09 17:36:40 +02:00
Max Gautier
b69b9d5e17 Add filetype detection for eyaml files (#12659)
https://github.com/voxpupuli/hiera-eyaml/ uses and produces the eyaml
format, which is simply yaml with some encrypted values.

It's convenient to edit the file without decrypting when not touching
encrypted values (or when you don't have access to the decryption key),
which is why vim should treat those files as yaml files.
2023-08-09 17:18:36 +02:00
ObserverOfTime
958e15bb1c Highlight editorconfig properties with dashes (#12691)
Problem: editorconfig properties with dashes are not highlighted
Solution: update the property pattern to include dashes
2023-08-09 17:05:39 +02:00
Turiiya
2eb413f89b detect filetype for *.vsh and *.vv files (#12692)
Co-authored-by: Turiiya <34311583+tobealive@users.noreply.github.com>
2023-08-09 17:04:59 +02:00
ObserverOfTime
44ff25d524 PyPA manifest files are not recognized (#12707)
Problem:    PyPA manifest files are not recognized.
Solution:   Add a pattern to match PyPA manifest files.
2023-08-09 16:52:33 +02:00
Anton Parkhomenko
7159ac7fec Unison support (#12715) 2023-08-09 16:50:52 +02:00
Chris Vincent
8967f6c4b9 feat(heex): borrow matchit support from html (#12717)
* feat(heex): borrow matchit support from html

Makes % support behave the same in heex as in html. For example, quickly moving the cursor between opening and closing tags.

* Remove unnecessary line; define b:undo_ftplugin first

* Remove b:html_set_match_words
2023-08-09 16:49:44 +02:00
Gergő Sályi
a13eb2b147 Add WebGPU Shading Language (WGSL) filetype (#12723)
The current W3C Working Draft for the WebGPU Shading Language (WGSL) specifies
'text/wgsl' media type for WGSL modules with the '.wgsl' file extension:
https://www.w3.org/TR/WGSL/#text-wgsl-media-type

It has also been registered at the Internet Assigned Numbers Authority (IANA):
https://www.iana.org/assignments/media-types/text/wgsl

Neovim's nvim-lspconfig already associates wgsl language servers
with 'filetype wgsl':
https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#wgsl_analyzer

However currenly setting 'filetype wgsl' for *.wgsl files by defalut in Neovim
is blocked by adding this filetype to the vim project first:
https://github.com/neovim/neovim/pull/23331

This commit adds this missing wgsl filetype.
2023-08-09 16:49:01 +02:00
Linda_pp
8f566fdb1e update .wast files syntax highlighting (#12741) 2023-08-09 16:45:52 +02:00
Christian Brabandt
84bc00e9b5 patch 9.0.1679: Cleanup Tests from leftover files
Problem:    Tests may leave leftover files around
Solution:   Clean up tests and remove files

There were a few failures in 'linux (huge, gcc, testgui, true, true)'
e.g. here: https://github.com/vim/vim/actions/runs/5497376153/jobs/10018060156

,----
| Error detected while processing command line..script /home/runner/work/vim/vim/src/testdir/runtest.vim[585]..function RunTheTest[54]..Test_lvimgrep_crash[16]..TestTimeout[12]..VimLeavePre Autocommands for "*"..function EarlyExit[7]..FinishTesting:
| line   70:
| E445: Other window contains changes
| E937: Attempt to delete a buffer that is in use: Xtest_stable_xxd.txt
| E937: Attempt to delete a buffer that is in use: Xtest_stable_xxd.txt
| E937: Attempt to delete a buffer that is in use: Xtest_stable_xxd.txtmalloc(): unsorted double linked list corrupted
`----

Which is puzzling, because the Xtest_stable_xxd file should have been
long gone after test_crypt.vim is run (and definitely no longer be
staying around in test_quickfix.vim).

So try to clean up properly after a test script is run, just in case any
X<file> is still around. During testing, a found a few leftover files,
which I also fixed in the relevant test-file.

Unfortunately, the test workflow 'linux (huge, gcc, testgui, true,
true)' now seems to fail with 'E1230: Encryption: sodium_mlock()' in
test_crypt.vim. Hopefully this is only temporary.
2023-08-08 20:39:55 +02:00
Christian Brabandt
9fcde94176 Merge pull request #12740 from k-takata/import-9.0.1678
Bring Bram's last patch (9.0.1678) to GitHub
2023-08-07 17:00:41 +02:00
ObserverOfTime
ad34abee25 patch 9.0.1678: blade files are not recognized
Problem:    Blade files are not recognized.
Solution:   Add a pattern for Blade files. (closes #12650)

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-08-07 03:24:20 +09:00
THARAK HEGDE
4c0089d696 patch 9.0.1677: typo in syntax test input file
Problem:    Typo in syntax test input file.
Solution:   Fix the typo and the expected dump files. (THARAK HEGDE,
            closes #12635)
2023-07-09 02:38:28 +01:00
Bram Moolenaar
16abd997c9 patch 9.0.1676: warning for buffer in use when exiting early
Problem:    Warning for buffer in use when exiting early.
Solution:   Change file names to be able to see what buffer is in use when
            exiting.
2023-07-08 00:54:06 +01:00
Bram Moolenaar
7c2beb48ef patch 9.0.1675: test may run into timeout when using valgrind
Problem:    Test may run into timeout when using valgrind.
Solution:   Use a longer timeout when using valgrind.
2023-07-08 00:25:56 +01:00
Bram Moolenaar
416bd916b4 patch 9.0.1674: help for builtin functions is not sorted properly
Problem:    Help for builtin functions is not sorted properly.
Solution:   Put err_teapot() help in the right position.
2023-07-07 23:19:18 +01:00
Bram Moolenaar
80adaa8ae8 patch 9.0.1673: cannot produce a status 418 or 503 message
Problem:    Cannot produce a status 418 or 503 message.
Solution:   Add err_teapot().
2023-07-07 18:57:40 +01:00
zeertzjq
d392a74c5a patch 9.0.1672: tabline highlight wrong after truncated double width label
Problem:    Tabline highlight wrong after truncated double width label.
Solution:   Fill up half a double width character later. (closes #12614)
2023-07-01 20:24:40 +01:00
skywind3000
e7d9ca2b3b patch 9.0.1671: Termdebug: error with more than 99 breakpoints
Problem:    Termdebug: error with more than 99 breakpoints.
Solution:   Use a different sign for breakpoint 100 and over. (closes #12589,
            closes #12588)
2023-06-28 23:27:28 +01:00
Bram Moolenaar
bf5f189e44 patch 9.0.1670: resetting local option to global value is inconsistent
Problem:    Resetting local option to global value is inconsistent.
Solution:   Handle "<" specifically for 'scrolloff' and 'sidescrolloff'.
            (closes #12594)
2023-06-27 21:51:07 +01:00
Christian Brabandt
19e6c4fd2d patch 9.0.1669: Crash syncing swapfile in new buffer when using sodium crypt
Problem:    Crash syncing swapfile in new buffer when using sodium crypt.
            (James McCoy)
Solution:   Add checks for sodium encryption. (Christian Brabandt,
            closes #12591, closes #12585)
2023-06-27 18:57:10 +01:00
ObserverOfTime
0256d76a33 patch 9.0.1668: PEM files are not recognized
Problem:    PEM files are not recognized.
Solution:   Add patterns to match PEM files. (closes #12582)
2023-06-26 22:05:37 +01:00
zeertzjq
e429893741 patch 9.0.1667: regression test doesn't fail when fix is reverted
Problem:    Regression test doesn't fail when fix is reverted.
Solution:   Add "n" to 'cpoptions' instead of using :winsize. (closes #12587,
            issue #12528)
2023-06-26 19:02:43 +01:00
Christian Brabandt
a2a90d5e20 patch 9.0.1666: compiler may warn for uninitialized variable
Problem:    Compiler may warn for uninitialized variable.
Solution:   Initialize this_props_len. (Christian Brabandt, closes #12599)
2023-06-26 18:48:09 +01:00
Christian Brabandt
590aae3557 patch 9.0.1665: empty CmdlineEnter autocommand causes errors in Ex mode
Problem:    Empty CmdlineEnter autocommand causes errors in Ex mode.
Solution:   Save and restore ex_pressedreturn. (Christian Brabandt,
            closes # 12581, closes #12578)
2023-06-25 22:34:22 +01:00
fullwaywang
8154e642aa patch 9.0.1664: divide by zero when scrolling with 'smoothscroll' set
Problem:    Divide by zero when scrolling with 'smoothscroll' set.
Solution:   Avoid using a negative width. (closes #12540, closes #12528)
2023-06-24 21:58:09 +01:00
1639 changed files with 137936 additions and 39117 deletions

View File

@@ -29,7 +29,6 @@ environment:
# disabled
# - FEATURE: TINY
# - FEATURE: NORMAL
# - FEATURE: BIG
matrix:
fast_finish: true

View File

@@ -5,15 +5,11 @@ env:
freebsd_task:
name: FreeBSD
matrix:
- name: FreeBSD 13.1
- name: FreeBSD 14.0
freebsd_instance:
image_family: freebsd-13-1
- name: FreeBSD 12.4
freebsd_instance:
image_family: freebsd-12-4
image_family: freebsd-14-0
timeout_in: 20m
install_script:
- pkg update -f
- pkg install -y gettext
build_script:
- NPROC=$(getconf _NPROCESSORS_ONLN)
@@ -25,22 +21,3 @@ freebsd_task:
- pw useradd cirrus -m
- chown -R cirrus:cirrus .
- sudo -u cirrus make test
macos_task:
name: macOS m1
macos_instance:
image: ghcr.io/cirruslabs/macos-ventura-xcode:latest
env:
# only run with clang, gcc is not real, it is a link to clang
CC: clang
timeout_in: 20m
install_script:
- brew update
- brew install gettext libtool diffutils
build_script:
- NPROC=$(getconf _NPROCESSORS_ONLN)
- ./configure --with-features=${FEATURES}
- make -j${NPROC}
test_script:
- src/vim --version
- make test

View File

@@ -5,6 +5,8 @@ coverage:
default:
threshold: 0.05%
comment: false
# Files not run by tests
ignore:
- "src/dosinst.c"

View File

@@ -1 +0,0 @@
service_name: github-actions

119
.github/CODEOWNERS vendored
View File

@@ -9,19 +9,16 @@
# So if a pull request only touches javascript files, only these owners
# will be requested to review.
nsis/lang/russian.nsi @RestorerZ
runtime/autoload/freebasic.vim @dkearns
runtime/autoload/getscript.vim @cecamp
runtime/autoload/haskell.vim @alx741
runtime/autoload/javascript.vim @jsit
runtime/autoload/netrw.vim @cecamp
runtime/autoload/netrwFileHandlers.vim @cecamp
runtime/autoload/netrwSettings.vim @cecamp
runtime/autoload/modula2.vim @dkearns
runtime/autoload/php.vim @david-szabo97
runtime/autoload/rubycomplete.vim @segfault @dkearns
runtime/autoload/tar.vim @cecamp
runtime/autoload/vimball.vim @cecamp
runtime/autoload/rust.vim @lilyball
runtime/autoload/xmlformat.vim @chrisbra
runtime/autoload/zip.vim @cecamp
runtime/autoload/dist/json.vim @habamax
runtime/colors/blue.vim @habamax @romainl @neutaaaaan
runtime/colors/darkblue.vim @habamax @romainl @neutaaaaan
runtime/colors/default.vim @habamax @romainl @neutaaaaan
@@ -63,6 +60,7 @@ runtime/compiler/eruby.vim @dkearns
runtime/compiler/fbc.vim @dkearns
runtime/compiler/gawk.vim @dkearns
runtime/compiler/gjs.vim @dkearns
runtime/compiler/gm2.vim @dkearns
runtime/compiler/go.vim @dbarnett
runtime/compiler/haml.vim @tpope
runtime/compiler/hare.vim @rsaihe
@@ -104,12 +102,6 @@ runtime/compiler/xmllint.vim @dkearns
runtime/compiler/xo.vim @dkearns
runtime/compiler/yamllint.vim @romainl
runtime/compiler/zsh.vim @dkearns
runtime/doc/pi_getscript.txt @cecamp
runtime/doc/pi_logipat.txt @cecamp
runtime/doc/pi_netrw.txt @cecamp
runtime/doc/pi_tar.txt @cecamp
runtime/doc/pi_vimball.txt @cecamp
runtime/doc/pi_zip.txt @cecamp
runtime/doc/ps1.txt @heaths
runtime/ftplugin/abaqus.vim @costerwi
runtime/ftplugin/apache.vim @dubgeiser
@@ -123,6 +115,9 @@ runtime/ftplugin/cs.vim @nickspoons
runtime/ftplugin/csh.vim @dkearns
runtime/ftplugin/css.vim @dkearns
runtime/ftplugin/cucumber.vim @tpope
runtime/ftplugin/debchangelog.vim @jamessan
runtime/ftplugin/debcontrol.vim @jamessan
runtime/ftplugin/debsources.vim @jamessan
runtime/ftplugin/desktop.vim @e-kwsm
runtime/ftplugin/dosbatch.vim @mrdubya
runtime/ftplugin/eiffel.vim @dkearns
@@ -132,6 +127,7 @@ runtime/ftplugin/eruby.vim @tpope @dkearns
runtime/ftplugin/expect.vim @dkearns
runtime/ftplugin/fennel.vim @gpanders
runtime/ftplugin/fetchmail.vim @dkearns
runtime/ftplugin/forth.vim @jkotlinski
runtime/ftplugin/fpcmake.vim @dkearns
runtime/ftplugin/freebasic.vim @dkearns
runtime/ftplugin/fstab.vim @rid9
@@ -150,17 +146,23 @@ runtime/ftplugin/go.vim @dbarnett
runtime/ftplugin/gprof.vim @dpelle
runtime/ftplugin/haml.vim @tpope
runtime/ftplugin/hare.vim @rsaihe
runtime/ftplugin/heex.vim @cvincent
runtime/ftplugin/hgcommit.vim @k-takata
runtime/ftplugin/hog.vim @wtfbbqhax
runtime/ftplugin/html.vim @dkearns
runtime/ftplugin/i3config.vim @hiqua
runtime/ftplugin/icon.vim @dkearns
runtime/ftplugin/indent.vim @dkearns
runtime/ftplugin/ishd.vim @dkearns
runtime/ftplugin/j.vim @glts
runtime/ftplugin/javascript.vim @dkearns
runtime/ftplugin/javascriptreact.vim @dkearns
runtime/ftplugin/json.vim @dbarnett
runtime/ftplugin/json5.vim @dkearns
runtime/ftplugin/jsonc.vim @izhakjakov
runtime/ftplugin/julia.vim @carlobaldassi
runtime/ftplugin/kconfig.vim @chrisbra
runtime/ftplugin/kotlin.vim @udalov
runtime/ftplugin/less.vim @genoma
runtime/ftplugin/liquid.vim @tpope
runtime/ftplugin/lua.vim @dkearns
@@ -168,8 +170,8 @@ runtime/ftplugin/lynx.vim @dkearns
runtime/ftplugin/m3build.vim @dkearns
runtime/ftplugin/m3quake.vim @dkearns
runtime/ftplugin/markdown.vim @tpope
runtime/ftplugin/matlab.vim @cecamp
runtime/ftplugin/meson.vim @Liambeguin
runtime/ftplugin/modula2.vim @dkearns
runtime/ftplugin/modula3.vim @dkearns
runtime/ftplugin/nginx.vim @chr4
runtime/ftplugin/nroff.vim @a-vrma
@@ -180,33 +182,35 @@ runtime/ftplugin/pascal.vim @dkearns
runtime/ftplugin/pbtxt.vim @lakshayg
runtime/ftplugin/pdf.vim @tpope
runtime/ftplugin/perl.vim @petdance @dkearns
runtime/ftplugin/php.vim @dkearns
runtime/ftplugin/pod.vim @petdance @dkearns
runtime/ftplugin/poefilter.vim @ObserverOfTime
runtime/ftplugin/postscr.vim @mrdubya
runtime/ftplugin/ps1.vim @heaths
runtime/ftplugin/ps1xml.vim @heaths
runtime/ftplugin/pymanifest.vim @ObserverOfTime
runtime/ftplugin/python.vim @tpict
runtime/ftplugin/qb64.vim @dkearns
runtime/ftplugin/r.vim @jalvesaq
runtime/ftplugin/qml.vim @ChaseKnowlden
runtime/ftplugin/racket.vim @benknoble
runtime/ftplugin/readline.vim @dkearns
runtime/ftplugin/rhelp.vim @jalvesaq
runtime/ftplugin/rmd.vim @jalvesaq
runtime/ftplugin/rnoweb.vim @jalvesaq
runtime/ftplugin/routeros.vim @zainin
runtime/ftplugin/rrst.vim @jalvesaq
runtime/ftplugin/rst.vim @marshallward
runtime/ftplugin/ruby.vim @tpope @dkearns
runtime/ftplugin/rust.vim @lilyball
runtime/ftplugin/sass.vim @tpope
runtime/ftplugin/scala.vim @derekwyatt
runtime/ftplugin/scss.vim @tpope
runtime/ftplugin/sdoc.vim @gpanders
runtime/ftplugin/sed.vim @dkearns
runtime/ftplugin/sh.vim @dkearns
runtime/ftplugin/solidity.vim @cothi
runtime/ftplugin/solution.vim @dkearns
runtime/ftplugin/spec.vim @ignatenkobrain
runtime/ftplugin/ssa.vim @ObserverOfTime
runtime/ftplugin/swayconfig.vim @jamespeapen
runtime/ftplugin/systemverilog.vim @Kocha
runtime/ftplugin/swig.vim @jmarrec
runtime/ftplugin/tap.vim @petdance
runtime/ftplugin/tcsh.vim @dkearns
runtime/ftplugin/tidy.vim @dkearns
@@ -215,10 +219,12 @@ runtime/ftplugin/toml.vim @averms
runtime/ftplugin/tt2html.vim @petdance
runtime/ftplugin/typescript.vim @dkearns
runtime/ftplugin/typescriptreact.vim @dkearns
runtime/ftplugin/unison.vim @chuwy
runtime/ftplugin/vdf.vim @ObserverOfTime
runtime/ftplugin/wast.vim @rhysd
runtime/ftplugin/wget.vim @dkearns
runtime/ftplugin/wget2.vim @dkearns
runtime/ftplugin/xcompose.vim @ObserverOfTime
runtime/ftplugin/xml.vim @chrisbra
runtime/ftplugin/xs.vim @petdance
runtime/ftplugin/zsh.vim @chrisbra
@@ -251,6 +257,7 @@ runtime/indent/go.vim @dbarnett
runtime/indent/gyp.vim @ObserverOfTime
runtime/indent/haml.vim @tpope
runtime/indent/hare.vim @rsaihe
runtime/indent/hog.vim @wtfbbqhax
runtime/indent/idlang.vim @dkearns
runtime/indent/j.vim @glts
runtime/indent/java.vim @xuhdev
@@ -258,6 +265,8 @@ runtime/indent/javascript.vim @bounceme
runtime/indent/json.vim @elzr
runtime/indent/jsonc.vim @izhakjakov
runtime/indent/julia.vim @carlobaldassi
runtime/indent/kotlin.vim @udalov
runtime/indent/krl.vim @KnoP-01
runtime/indent/ld.vim @dkearns
runtime/indent/less.vim @genoma
runtime/indent/liquid.vim @tpope
@@ -274,18 +283,16 @@ runtime/indent/postscr.vim @mrdubya
runtime/indent/prolog.vim @dkearns
runtime/indent/ps1.vim @heaths
runtime/indent/qb64.vim @dkearns
runtime/indent/r.vim @jalvesaq
runtime/indent/qml.vim @ChaseKnowlden
runtime/indent/racket.vim @benknoble
runtime/indent/rapid.vim @KnoP-01
runtime/indent/readline.vim @dkearns
runtime/indent/rhelp.vim @jalvesaq
runtime/indent/rmd.vim @jalvesaq
runtime/indent/rnoweb.vim @jalvesaq
runtime/indent/rrst.vim @jalvesaq
runtime/indent/ruby.vim @AndrewRadev @dkearns
runtime/indent/sass.vim @tpope
runtime/indent/scala.vim @derekwyatt
runtime/indent/scss.vim @tpope
runtime/indent/sh.vim @chrisbra
runtime/indent/solidity.vim @cothi
runtime/indent/systemverilog.vim @Kocha
runtime/indent/tcl.vim @dkearns
runtime/indent/tcsh.vim @dkearns
@@ -297,21 +304,19 @@ runtime/indent/xml.vim @chrisbra
runtime/indent/zsh.vim @chrisbra
runtime/keymap/armenian-eastern_utf-8.vim @blinskey
runtime/keymap/armenian-western_utf-8.vim @blinskey
runtime/keymap/russian-typograph.vim @RestorerZ
runtime/keymap/tamil_tscii.vim @yegappan
runtime/lang/menu_en_gb.latin1.vim @mrdubya
runtime/lang/menu_ru_ru.cp1251.vim @RestorerZ
runtime/lang/menu_ru_ru.koi8-r.vim @RestorerZ
runtime/lang/menu_ru_ru.utf-8.vim @RestorerZ
runtime/pack/dist/opt/cfilter/plugin/cfilter.vim @yegappan
runtime/pack/dist/opt/matchit/ @chrisbra
runtime/plugin/getscriptPlugin.vim @cecamp
runtime/plugin/logiPat.vim @cecamp
runtime/plugin/netrwPlugin.vim @cecamp
runtime/plugin/tarPlugin.vim @cecamp
runtime/plugin/vimballPlugin.vim @cecamp
runtime/plugin/zipPlugin.vim @cecamp
runtime/plugin/manpager.vim @Konfekt
runtime/syntax/shared/hgcommitDiff.vim @vegerot
runtime/syntax/shared/hgcommitDiff.vim @vegerot
runtime/syntax/abaqus.vim @costerwi
runtime/syntax/aidl.vim @dpelle
runtime/syntax/amiga.vim @cecamp
runtime/syntax/ant.vim @dkearns
runtime/syntax/arduino.vim @johshoff
runtime/syntax/asciidoc.vim @aerostitch
runtime/syntax/asm.vim @dkearns
@@ -328,14 +333,19 @@ runtime/syntax/cabalconfig.vim @coot
runtime/syntax/cabalproject.vim @coot
runtime/syntax/cf.vim @ernstvanderlinden
runtime/syntax/chatito.vim @ObserverOfTime
runtime/syntax/chuck.vim @gacallea
runtime/syntax/clojure.vim @axvr
runtime/syntax/cs.vim @nickspoons
runtime/syntax/csh.vim @cecamp
runtime/syntax/cucumber.vim @tpope
runtime/syntax/d.vim @JesseKPhillips
runtime/syntax/dart.vim @pr3d4t0r
runtime/syntax/datascript.vim @dpelle
runtime/syntax/dcl.vim @cecamp
runtime/syntax/deb822sources.vim @jamessan
runtime/syntax/debchangelog.vim @jamessan
runtime/syntax/debcontrol.vim @jamessan
runtime/syntax/debcopyright.vim @jamessan
runtime/syntax/debsources.vim @jamessan
runtime/syntax/dep3patch.vim @jamessan
runtime/syntax/desktop.vim @e-kwsm
runtime/syntax/dosbatch.vim @mrdubya
runtime/syntax/dosini.vim @xuhdev
@@ -345,11 +355,9 @@ runtime/syntax/dtd.vim @chrisbra
runtime/syntax/dts.vim @zonque
runtime/syntax/editorconfig.vim @gpanders
runtime/syntax/eiffel.vim @jocelyn
runtime/syntax/elmfilt.vim @cecamp
runtime/syntax/erlang.vim @hcs42
runtime/syntax/eruby.vim @tpope @dkearns
runtime/syntax/expect.vim @dkearns
runtime/syntax/exports.vim @cecamp
runtime/syntax/falcon.vim @steveno
runtime/syntax/fennel.vim @gpanders
runtime/syntax/fetchmail.vim @dkearns
@@ -369,14 +377,17 @@ runtime/syntax/gitolite.vim @sitaramc
runtime/syntax/gitrebase.vim @tpope
runtime/syntax/go.vim @bhcleek
runtime/syntax/godoc.vim @dbarnett
runtime/syntax/gp.vim @KBelabas
runtime/syntax/gprof.vim @dpelle
runtime/syntax/groff.vim @jmarshall
runtime/syntax/gyp.vim @ObserverOfTime
runtime/syntax/haml.vim @tpope
runtime/syntax/hare.vim @rsaihe
runtime/syntax/haskell.vim @coot
runtime/syntax/help_ru.vim @RestorerZ
runtime/syntax/hgcommit.vim @k-takata
runtime/syntax/hitest.vim @lacygoill
runtime/syntax/hog.vim @wtfbbqhax
runtime/syntax/hollywood.vim @sodero
runtime/syntax/html.vim @dkearns
runtime/syntax/i3config.vim @hiqua
@@ -389,10 +400,10 @@ runtime/syntax/javascript.vim @fleiner
runtime/syntax/jsonc.vim @izhakjakov
runtime/syntax/julia.vim @carlobaldassi
runtime/syntax/kconfig.vim @chrisbra
runtime/syntax/kotlin.vim @udalov
runtime/syntax/krl.vim @KnoP-01
runtime/syntax/less.vim @genoma
runtime/syntax/lex.vim @cecamp
runtime/syntax/liquid.vim @tpope
runtime/syntax/lisp.vim @cecamp
runtime/syntax/lua.vim @marcuscf
runtime/syntax/lyrics.vim @ObserverOfTime
runtime/syntax/lynx.vim @dkearns
@@ -401,19 +412,22 @@ runtime/syntax/m3quake.vim @dkearns
runtime/syntax/mailcap.vim @dkearns
runtime/syntax/make.vim @rohieb
runtime/syntax/mallard.vim @jhradilek
runtime/syntax/maple.vim @cecamp
runtime/syntax/markdown.vim @tpope
runtime/syntax/mason.vim @petdance
runtime/syntax/meson.vim @Liambeguin
runtime/syntax/modula2.vim @dkearns
runtime/syntax/modula2/opt/iso.vim @trijezdci
runtime/syntax/modula2/opt/pim.vim @trijezdci
runtime/syntax/modula2/opt/r10.vim @trijezdci
runtime/syntax/modula3.vim @dkearns
runtime/syntax/n1ql.vim @pr3d4t0r
runtime/syntax/netrw.vim @cecamp
runtime/syntax/nginx.vim @chr4
runtime/syntax/ninja.vim @nico
runtime/syntax/nix.vim @equill
runtime/syntax/nroff.vim @jmarshall
runtime/syntax/nsis.vim @k-takata
runtime/syntax/openvpn.vim @ObserverOfTime
runtime/syntax/pacmanlog.vim @rpigott
runtime/syntax/pascal.vim @dkearns
runtime/syntax/pbtxt.vim @lakshayg
runtime/syntax/pdf.vim @tpope
@@ -428,21 +442,20 @@ runtime/syntax/prolog.vim @XVilka
runtime/syntax/ps1.vim @heaths
runtime/syntax/ps1xml.vim @heaths
runtime/syntax/psl.vim @danielkho
runtime/syntax/pymanifest.vim @ObserverOfTime
runtime/syntax/qb64.vim @dkearns
runtime/syntax/r.vim @jalvesaq
runtime/syntax/qml.vim @ChaseKnowlden
runtime/syntax/racket.vim @benknoble
runtime/syntax/raml.vim @in3d
runtime/syntax/rapid.vim @KnoP-01
runtime/syntax/ratpoison.vim @trapd00r
runtime/syntax/rc.vim @chrisbra
runtime/syntax/rcs.vim @hdima
runtime/syntax/rebol.vim @mrdubya
runtime/syntax/rego.vim @zenmatic
runtime/syntax/resolv.vim @rid9
runtime/syntax/rmd.vim @jalvesaq
runtime/syntax/rng.vim @jhradilek
runtime/syntax/routeros.vim @zainin
runtime/syntax/rpcgen.vim @cecamp
runtime/syntax/rrst.vim @jalvesaq
runtime/syntax/rst.vim @marshallward
runtime/syntax/ruby.vim @dkearns
runtime/syntax/sass.vim @tpope
@@ -450,8 +463,8 @@ runtime/syntax/scala.vim @derekwyatt
runtime/syntax/scss.vim @tpope
runtime/syntax/sdoc.vim @gpanders
runtime/syntax/sed.vim @dkearns
runtime/syntax/sh.vim @cecamp
runtime/syntax/sm.vim @cecamp
runtime/syntax/shared/debversions.vim @jamessan
runtime/syntax/solidity.vim @cothi
runtime/syntax/spec.vim @ignatenkobrain
runtime/syntax/sqloracle.vim @chrisbra
runtime/syntax/squirrel.vim @zenmatic
@@ -462,12 +475,11 @@ runtime/syntax/sshdconfig.vim @Jakuje
runtime/syntax/sudoers.vim @e-kwsm
runtime/syntax/svn.vim @hdima
runtime/syntax/swayconfig.vim @jamespeapen
runtime/syntax/swig.vim @jmarrec
runtime/syntax/systemverilog.vim @Kocha
runtime/syntax/tags.vim @cecamp
runtime/syntax/tap.vim @petdance
runtime/syntax/tcsh.vim @dkearns
runtime/syntax/teraterm.vim @k-takata
runtime/syntax/tex.vim @cecamp
runtime/syntax/tidy.vim @dkearns
runtime/syntax/tmux.vim @ericpruitt
runtime/syntax/toml.vim @averms
@@ -477,25 +489,27 @@ runtime/syntax/tt2js.vim @petdance
runtime/syntax/typescript.vim @HerringtonDarkholme
runtime/syntax/typescriptcommon.vim @HerringtonDarkholme
runtime/syntax/typescriptreact.vim @HerringtonDarkholme
runtime/syntax/unison.vim @chuwy
runtime/syntax/vdf.vim @ObserverOfTime
runtime/syntax/vim.vim @cecamp
runtime/syntax/vroom.vim @dbarnett
runtime/syntax/wast.vim @rhysd
runtime/syntax/wdl.vim @zenmatic
runtime/syntax/wget.vim @dkearns
runtime/syntax/wget2.vim @dkearns
runtime/syntax/xbl.vim @dkearns
runtime/syntax/xmath.vim @cecamp
runtime/syntax/xcompose.vim @ObserverOfTime
runtime/syntax/xml.vim @chrisbra
runtime/syntax/xs.vim @petdance
runtime/syntax/xslt.vim @Boobies
runtime/syntax/xxd.vim @cecamp
runtime/syntax/yacc.vim @cecamp
runtime/syntax/zserio.vim @dpelle
runtime/syntax/zsh.vim @chrisbra
runtime/tutor/tutor.eo @dpelle
runtime/tutor/tutor.eo.utf-8 @dpelle
runtime/tutor/tutor.fr @dpelle
runtime/tutor/tutor.fr.utf-8 @dpelle
runtime/tutor/tutor.ru @RestorerZ
runtime/tutor/tutor.ru.cp1251 @RestorerZ
runtime/tutor/tutor.ru.utf-8 @RestorerZ
src/iscygpty.* @k-takata
src/libvterm/ @leonerd
src/po/ca.po @nfdisco
@@ -507,6 +521,7 @@ src/po/fr.po @dpelle
src/po/ga.po @kscanne
src/po/it.po @azc100
src/po/ja.po @k-takata
src/po/ru.po @RestorerZ
src/po/sr.po @eevan78
src/po/tr.po @bitigchi
src/po/uk.po @sakhnik

View File

@@ -9,10 +9,10 @@ body:
value: |
Thanks for reporting issues of Vim!
If you want to report a security issue, instead of reporting it here
you can alternatively disclose it on
[huntr.dev](https://huntr.dev/bounties/disclose/?utm_campaign=vim%2Fvim&utm_medium=social&utm_source=github&target=https%3A%2F%2Fgithub.com%2Fvim%2Fvim).
They have rewards in the form of money, swag and CVEs.
If you want to report a security issue, instead of reporting it here publicly,
please disclose it privately via mail to vim-security@googlegroups.com.
(It's a private list read only by the maintainers,
but anybody can post, after moderation.)
To make it easier for us to help you please enter detailed information below.
- type: textarea

View File

@@ -4,3 +4,5 @@ updates:
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "CI"

155
.github/labeler.yml vendored Normal file
View File

@@ -0,0 +1,155 @@
# list of labels and minimatch globs to match to apply the label.
CI:
- all:
- changed-files:
- any-glob-to-any-file:
- '.cirrus.yml'
- '.github/dependabot.yml'
- '.github/labeler.yml'
- '.github/workflows/*'
- '.appveyor.yml'
- '.codecov.yml'
documentation:
- all:
- changed-files:
- any-glob-to-all-files:
- '*/doc/*'
translation:
- all:
- changed-files:
- any-glob-to-any-file:
- 'src/po/*.po'
if_lua:
- all:
- changed-files:
- any-glob-to-any-file:
- 'src/if_lua.c'
- 'src/proto/if_lua.pro'
- 'runtime/doc/if_lua.txt'
if_mzscheme:
- all:
- changed-files:
- any-glob-to-any-file:
- 'src/if_mzsch.c'
- 'src/if_mzsch.h'
- 'src/proto/if_mzsch.pro'
- 'runtime/doc/if_mzsch.txt'
if_perl:
- all:
- changed-files:
- any-glob-to-any-file:
- 'src/if_perl.xs'
- 'src/if_perlsfio.c'
- 'src/proto/if_perl.pro'
- 'src/proto/if_perlsfio.pro'
- 'runtime/doc/if_perl.txt'
if_python:
- all:
- changed-files:
- any-glob-to-any-file:
- 'src/if_py_both.h'
- 'runtime/doc/if_pyth.txt'
- 'src/if_python.c'
- 'src/if_python3.c'
- 'src/proto/if_python.pro'
- 'src/proto/if_python3.pro'
if_ruby:
- all:
- changed-files:
- any-glob-to-any-file:
- 'src/if_ruby.c'
- 'src/proto/if_ruby.pro'
- 'runtime/doc/if_ruby.txt'
if_tcl:
- all:
- changed-files:
- any-glob-to-any-file:
- 'src/if_tcl.c'
- 'src/proto/if_tcl.pro'
- 'runtime/doc/if_tcl.txt'
installer:
- all:
- changed-files:
- any-glob-to-any-file:
- 'nsis/**'
- 'src/dosinst.*'
- 'src/uninstall.c'
platform-mac:
- all:
- changed-files:
- any-glob-to-any-file:
- 'src/INSTALLmac.txt'
- 'src/os_mac*'
- 'src/proto/os_mac*'
platform-windows:
- all:
- changed-files:
- any-glob-to-any-file:
- 'nsis/**'
- 'src/*.bat'
- 'src/*.bmp'
- 'src/*.ico'
- 'src/GvimExt/*'
- 'src/INSTALLpc.txt'
- 'src/Make_cyg*.mak'
- 'src/Make_ming.mak'
- 'src/Make_mvc.mak'
- 'src/dosinst.*'
- 'src/gui_dwrite.*'
- 'src/gui_w32*'
- 'src/if_ole.*'
- 'src/iid_ole.c'
- 'src/os_mswin*'
- 'src/os_w32*'
- 'src/os_win32.*'
- 'src/proto/gui_w32.pro'
- 'src/proto/os_mswin.pro'
- 'src/proto/os_win32.pro'
- 'src/proto/winclip.pro'
- 'src/uninstall.c'
- 'src/vim.manifest'
- 'src/vim.rc'
- 'src/vimrun.c'
- 'src/winclip.c'
- 'src/xpm/**'
- 'src/xpm_w32.*'
runtime:
- all:
- changed-files:
- any-glob-to-any-file:
- 'runtime/ftplugin'
- 'runtime/syntax'
- 'runtime/indent'
- 'runtime/pack/dist/opt/termdebug/plugin/termdebug.vim'
termdebug:
- all:
- changed-files:
- any-glob-to-any-file:
- 'runtime/pack/dist/opt/termdebug/plugin/termdebug.vim'
plugin-netrw:
- all:
- changed-files:
- any-glob-to-any-file:
- 'runtime/plugin/netrwPlugin.vim'
- 'runtime/autoload/netrw*'
xxd:
- all:
- changed-files:
- any-glob-to-any-file:
- 'src/xxd/*'

View File

@@ -22,11 +22,10 @@ jobs:
env:
CC: ${{ matrix.compiler }}
GCC_VER: 13
CLANG_VER: 16
CLANG_VER: 18
TEST: test
SRCDIR: ./src
LEAK_CFLAGS: -DEXITFREE
CFLAGS: -Wno-deprecated-declarations
LOG_DIR: ${{ github.workspace }}/logs
TERM: xterm
DISPLAY: ':99'
@@ -37,68 +36,100 @@ jobs:
matrix:
features: [tiny, normal, huge]
compiler: [clang, gcc]
extra: [none]
extra: [[]]
# Only use non-native architecture when features != huge.
# features=huge tries to install python3-dev, which fails to install
# for the non-native architecture.
architecture: [native]
include:
- features: tiny
compiler: clang
extra: nogui
extra: [nogui]
- features: tiny
compiler: gcc
extra: nogui
extra: [nogui]
- features: normal
shadow: ./src/shadow
- features: huge
coverage: true
- features: huge
compiler: gcc
architecture: i386
- features: huge
coverage: true
extra: testgui
uchar: true
- features: huge
compiler: clang
extra: asan
interface: dynamic
python3: stable-abi
- features: huge
compiler: gcc
coverage: true
extra: unittests
interface: dynamic
extra: [uchar, testgui]
- features: huge
compiler: clang
# Lua5.1 is the most widely used version (since it's what LuaJIT is
# compatible with), so ensure it works
lua_ver: '5.1'
extra: [asan]
- features: huge
compiler: gcc
coverage: true
extra: [unittests]
- features: normal
compiler: gcc
extra: vimtags
extra: [vimtags]
steps:
- name: Checkout repository from github
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Check Filelist (for packaging)
run: |
# If any files in the repository are not listed in Filelist this will
# exit with an error code and list the missing entries.
make -f ci/unlisted.make
- run: sudo dpkg --add-architecture i386
if: matrix.architecture == 'i386'
- name: Uninstall snap
run: |
sudo bash ci/remove_snap.sh
- name: Install packages
run: |
PKGS=( \
gettext \
libgtk2.0-dev \
libgtk2.0-dev:${{ matrix.architecture }} \
desktop-file-utils \
libtool-bin \
libncurses-dev:${{ matrix.architecture }} \
libxt-dev:${{ matrix.architecture }} \
)
if ${{ matrix.features == 'huge' }}; then
LUA_VER=${{ matrix.lua_ver || '5.4' }}
PKGS+=( \
autoconf \
gdb \
lcov \
libcanberra-dev \
libperl-dev \
python2-dev \
python3-dev \
liblua5.4-dev \
lua5.4 \
liblua${LUA_VER}-dev \
lua${LUA_VER} \
ruby-dev \
tcl-dev \
cscope \
libsodium-dev \
attr \
libattr1-dev
)
fi
sudo apt-get update && sudo apt-get install -y "${PKGS[@]}"
sudo apt-get update && sudo apt-get upgrade && sudo apt-get install -y "${PKGS[@]}"
- name: Install gcc-${{ env.GCC_VER }}
if: matrix.compiler == 'gcc'
run: |
sudo apt-get install -y gcc-${{ env.GCC_VER }}
sudo apt-get install -y gcc-${{ env.GCC_VER }}:${{ matrix.architecture }}
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ env.GCC_VER }} 100
sudo update-alternatives --set gcc /usr/bin/gcc-${{ env.GCC_VER }}
@@ -135,16 +166,20 @@ jobs:
;;
huge)
echo "TEST=scripttests test_libvterm"
echo "CONFOPT=--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
INTERFACE=${{ matrix.interface || 'yes' }}
if ${{ matrix.python3 == 'stable-abi' }}; then
PYTHON3_CONFOPT="--with-python3-stable-abi=3.8"
fi
echo "CONFOPT=--enable-perlinterp=${INTERFACE} --enable-pythoninterp=${INTERFACE} --enable-python3interp=${INTERFACE} --enable-rubyinterp=${INTERFACE} --enable-luainterp=${INTERFACE} --enable-tclinterp=${INTERFACE} ${PYTHON3_CONFOPT}"
;;
esac
if ${{ matrix.coverage == true }}; then
CFLAGS="$CFLAGS --coverage -DUSE_GCOV_FLUSH"
CFLAGS="${CFLAGS} --coverage -DUSE_GCOV_FLUSH"
echo "LDFLAGS=--coverage"
fi
if ${{ matrix.uchar == true }}; then
CFLAGS="$CFLAGS -funsigned-char"
if ${{ contains(matrix.extra, 'uchar') }}; then
CFLAGS="${CFLAGS} -funsigned-char"
fi
if ${{ contains(matrix.extra, 'testgui') }}; then
echo "TEST=-C src testgui"
@@ -161,7 +196,7 @@ jobs:
if ${{ contains(matrix.extra, 'vimtags') }}; then
echo "TEST=-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
fi
echo "CFLAGS=$CFLAGS"
echo "CFLAGS=${CFLAGS}"
) >> $GITHUB_ENV
- name: Set up system
@@ -178,17 +213,16 @@ jobs:
if: (!(contains(matrix.extra, 'unittests') || contains(matrix.extra, 'vimtags')))
env:
DEST_DIR: ${{ env.TMPDIR }}/linux-modules-extra-${{ env.LINUX_VERSION }}
uses: tecolicom/actions-use-apt-tools@main
with:
tools: linux-modules-extra-${{ env.LINUX_VERSION }}
path: "${DEST_DIR}"
- name: modprobe snd-dummy
if: (!(contains(matrix.extra, 'unittests') || contains(matrix.extra, 'vimtags')))
run: |
cd /lib/modules/${{ env.LINUX_VERSION }}
if apt-cache show linux-modules-extra-${{ env.LINUX_VERSION }} >/dev/null 2>&1 ; then
sudo apt-get install -d -y linux-modules-extra-${{ env.LINUX_VERSION }}
sudo dpkg -x /var/cache/apt/archives/linux-modules-extra-${{ env.LINUX_VERSION }}*.deb "${DEST_DIR}"
tar -cvC "${DEST_DIR}"/lib/modules/${{ env.LINUX_VERSION }} kernel/sound | sudo tar -x
sudo depmod --verbose
sudo modprobe --verbose snd-dummy
else
echo "Module " linux-modules-extra-${{ env.LINUX_VERSION }} "doesn't seem to exist, continue anyway"; exit 0
fi
sudo modprobe --verbose snd-dummy || true
- name: Check autoconf
if: contains(matrix.extra, 'unittests')
@@ -226,11 +260,23 @@ jobs:
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
- name: Test
timeout-minutes: 20
timeout-minutes: 25
run: |
do_test() { sg audio "sg $(id -gn) '$*'"; }
do_test make ${SHADOWOPT} ${TEST}
- name: Vim tags
if: contains(matrix.extra, 'vimtags')
run: |
# This will exit with an error code if the generated vim tags differs from source.
(
cd runtime/doc
git diff --exit-code -- tags
make html; rm *.html tags.ref;
test -f errors.log && exit 3;
true
)
- name: Generate gcov files
if: matrix.coverage
run: |
@@ -240,9 +286,10 @@ jobs:
- name: Codecov
timeout-minutes: 20
if: matrix.coverage
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v4
with:
flags: linux,${{ matrix.features }}-${{ matrix.compiler }}-${{ matrix.extra }}
token: ${{ secrets.CODECOV_TOKEN }}
- name: ASan logs
if: contains(matrix.extra, 'asan') && !cancelled()
@@ -253,7 +300,7 @@ jobs:
done
macos:
runs-on: macos-latest
runs-on: ${{ matrix.runner }}
env:
CC: clang
@@ -266,17 +313,23 @@ jobs:
fail-fast: false
matrix:
features: [tiny, normal, huge]
runner: [macos-latest, macos-14]
steps:
- name: Checkout repository from github
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install packages
if: matrix.features == 'huge'
run: |
brew install lua
echo "LUA_PREFIX=/usr/local" >> $GITHUB_ENV
brew uninstall perl
brew install lua libtool
echo "LUA_PREFIX=$(brew --prefix)" >> $GITHUB_ENV
- name: Grant microphone access for macos-14
if: matrix.runner == 'macos-14'
run: |
# Temporary fix to fix microphone permission issues for macos-14 when playing sound.
sqlite3 $HOME/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR IGNORE INTO access VALUES ('kTCCServiceMicrophone','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159,NULL,NULL,'UNUSED',1687786159);"
- name: Set up environment
run: |
@@ -320,6 +373,11 @@ jobs:
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
- name: Install packages for testing
run: |
# Apple diff is broken. Use GNU diff instead. See #14032.
brew install diffutils
- name: Test
timeout-minutes: 20
run: |
@@ -365,8 +423,8 @@ jobs:
fail-fast: false
matrix:
include:
- { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: no, arch: x64 }
- { features: HUGE, toolchain: mingw, VIMDLL: yes, GUI: yes, arch: x86, coverage: yes }
- { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: no, arch: x64, python3: stable }
- { features: HUGE, toolchain: mingw, VIMDLL: yes, GUI: yes, arch: x86, python3: stable, coverage: yes }
- { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: yes, arch: x86 }
- { features: HUGE, toolchain: mingw, VIMDLL: yes, GUI: no, arch: x64, coverage: yes }
- { features: NORMAL, toolchain: msvc, VIMDLL: yes, GUI: no, arch: x86 }
@@ -431,7 +489,7 @@ jobs:
release: false
- name: Checkout repository from github
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Create a list of download URLs
shell: cmd
@@ -442,7 +500,7 @@ jobs:
echo %SODIUM_VER%>> urls.txt
- name: Cache downloaded files
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: downloads
key: ${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('urls.txt') }}
@@ -497,6 +555,11 @@ jobs:
) else (
set GUI=${{ matrix.GUI }}
)
if "${{ matrix.python3 }}"=="stable" (
set PYTHON3_STABLE=yes
) else (
set PYTHON3_STABLE=no
)
if "${{ matrix.features }}"=="HUGE" (
nmake -nologo -f Make_mvc.mak ^
FEATURES=${{ matrix.features }} ^
@@ -504,6 +567,7 @@ jobs:
DYNAMIC_LUA=yes LUA=%LUA_DIR% ^
DYNAMIC_PYTHON=yes PYTHON=%PYTHON_DIR% ^
DYNAMIC_PYTHON3=yes PYTHON3=%PYTHON3_DIR% ^
DYNAMIC_PYTHON3_STABLE_ABI=%PYTHON3_STABLE% ^
DYNAMIC_SODIUM=yes SODIUM=%SODIUM_DIR%
) else (
nmake -nologo -f Make_mvc.mak ^
@@ -521,6 +585,11 @@ jobs:
else
GUI=${{ matrix.GUI }}
fi
if [ "${{ matrix.python3 }}" = "stable" ]; then
PYTHON3_STABLE=yes
else
PYTHON3_STABLE=no
fi
if [ "${{ matrix.features }}" = "HUGE" ]; then
mingw32-make -f Make_ming.mak -j2 \
FEATURES=${{ matrix.features }} \
@@ -528,6 +597,7 @@ jobs:
DYNAMIC_LUA=yes LUA=${LUA_DIR_SLASH} \
DYNAMIC_PYTHON=yes PYTHON=${PYTHON_DIR} \
DYNAMIC_PYTHON3=yes PYTHON3=${PYTHON3_DIR} \
DYNAMIC_PYTHON3_STABLE_ABI=${PYTHON3_STABLE} \
DYNAMIC_SODIUM=yes SODIUM=${SODIUM_DIR} \
STATIC_STDCPLUS=yes COVERAGE=${{ matrix.coverage }}
else
@@ -613,7 +683,8 @@ jobs:
- name: Codecov
timeout-minutes: 20
if: matrix.coverage
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v4
with:
directory: src
flags: windows,${{ matrix.toolchain }}-${{ matrix.arch }}-${{ matrix.features }}
token: ${{ secrets.CODECOV_TOKEN }}

View File

@@ -44,11 +44,11 @@ jobs:
steps:
- name: Checkout repository from github
uses: actions/checkout@v3
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -59,7 +59,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
uses: github/codeql-action/autobuild@v3
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -73,4 +73,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3

View File

@@ -13,14 +13,13 @@ jobs:
env:
CC: gcc
CFLAGS: -Wno-deprecated-declarations
DEBIAN_FRONTEND: noninteractive
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
steps:
- name: Checkout repository from github
if: env.TOKEN
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Download Coverity
if: env.TOKEN

22
.github/workflows/label.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
# This workflow will triage pull requests and apply a label based on the
# paths that are modified in the pull request.
#
# To use this workflow, you will need to set up a .github/labeler.yml
# file with configuration. For more information, see:
# https://github.com/actions/labeler
name: Labeler
on: [pull_request_target]
jobs:
label:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/labeler@v5
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

5
.gitignore vendored
View File

@@ -97,6 +97,11 @@ src/kword_test
# Generated by "make install"
runtime/doc/doctags
# Temporarily generated by "runtime/syntax/generator/make"
runtime/syntax/generator/generator.err
runtime/syntax/generator/sanity_check.err
runtime/syntax/generator/vim.vim.rc
# Generated by "make shadow". The directory names could be anything but we
# restrict them to shadow (the default) or shadow-*
src/shadow

View File

@@ -1,13 +1,12 @@
# Contributing to Vim
Patches are welcome in whatever form.
Discussions about patches happen on the vim-dev maillist.
Discussions about patches happen on the [vim-dev][0] mailing list.
If you create a pull request on GitHub it will be
forwarded to the vim-dev maillist. You can also send your patch there
directly. In that case an attachment with a unified diff format is preferred.
Information about the maillist can be found [on the Vim website].
[on the Vim website]: http://www.vim.org/maillist.php#vim-dev
forwarded to the vim-dev mailing list. You can also send your patch there
directly (but please note, the initial posting is subject to moderation).
In that case an attachment with a unified diff format is preferred.
Information about the mailing list can be found [on the Vim website][0]
A pull request has the advantage that it will trigger the Continuous
Integration tests, you will be warned of problems (you can ignore the coverage
@@ -22,31 +21,27 @@ Contributions will be distributed with Vim under the Vim license. Providing a
change to be included implies that you agree with this and your contribution
does not cause us trouble with trademarks or patents. There is no CLA to sign.
# Reporting issues
We use GitHub issues, but that is not a requirement. Writing to the Vim
maillist is also fine.
mailing list is also fine.
Please use the GitHub issues only for actual issues. If you are not 100% sure
that your problem is a Vim issue, please first discuss this on the Vim user
maillist. Try reproducing the problem without any of your plugins or settings:
mailing list. Try reproducing the problem without any of your plugins or settings:
vim --clean
If you report an issue, please describe exactly how to reproduce it.
For example, don't say "insert some text" but say what you did exactly:
"ahere is some text&lt;Esc&gt;".
`ahere is some text<Esc>`.
Ideally, the steps you list can be used to write a test to verify the problem
is fixed.
Feel free to report even the smallest problem, also typos in the documentation.
You can find known issues in the todo file: ":help todo".
Or open [the todo file] on GitHub to see the latest version.
[the todo file]: https://github.com/vim/vim/blob/master/runtime/doc/todo.txt
You can find known issues in the todo file: `:help todo`.
Or open [the todo file][todo list] on GitHub to see the latest version.
# Syntax, indent and other runtime files
@@ -57,11 +52,10 @@ If you find a problem with one of these files or have a suggestion for
improvement, please first try to contact the maintainer directly.
Look in the header of the file for the name and email address.
The maintainer will take care of issues and send updates to Bram for
The maintainer will take care of issues and send updates to the Vim project for
distribution with Vim.
If the maintainer does not respond, contact the vim-dev maillist.
If the maintainer does not respond, contact the [vim-dev][0] mailing list.
# Translations
@@ -77,8 +71,28 @@ can be translated:
The help files can be translated and made available separately.
See https://www.vim.org/translations.php for examples.
# How do I contribute to the project?
Please have a look at the following [discussion][6], which should give you some
ideas. Please also check the [develop.txt][7] helpfile for the recommended
style. Often it's also beneficial to check the surrounding code for the style
being used.
# I have a question
If you have some question on the style guide, please contact the [vim-dev][0]
mailing list. For other questions please use the [Vi Stack Exchange][8] website, the
[vim-use][9] mailing list or make use of the [discussion][10] feature here at github.
[todo list]: https://github.com/vim/vim/blob/master/runtime/doc/todo.txt
[0]: http://www.vim.org/maillist.php#vim-dev
[1]: https://github.com/vim/vim/blob/master/src/po/README.txt
[2]: https://github.com/vim/vim/blob/master/runtime/lang/README.txt
[3]: https://github.com/vim/vim/blob/master/runtime/tutor/README.txt
[4]: https://github.com/vim/vim/blob/master/runtime/doc/vim.1
[5]: https://github.com/vim/vim/blob/master/nsis/lang/english.nsi
[6]: https://github.com/vim/vim/discussions/13087
[7]: https://github.com/vim/vim/blob/master/runtime/doc/develop.txt
[8]: https://vi.stackexchange.com
[9]: http://www.vim.org/maillist.php#vim-use
[10]: https://github.com/vim/vim/discussions

122
Filelist
View File

@@ -1,10 +1,9 @@
# List of distributed Vim files.
# Used by Makefile.
# source files for all source archives
# Source files for all source archives.
SRC_ALL = \
.cirrus.yml \
.coveralls.yml \
.gitattributes \
.github/CODEOWNERS \
.github/ISSUE_TEMPLATE/bug_report.yml \
@@ -21,6 +20,7 @@ SRC_ALL = \
ci/config.mk*.sed \
ci/if_ver*.vim \
ci/setup-xvfb.sh \
ci/remove_snap.sh \
src/Make_all.mak \
src/README.md \
src/alloc.c \
@@ -213,10 +213,12 @@ SRC_ALL = \
src/testdir/dumps/*.dump \
src/testdir/dumps/*.vim \
src/testdir/samples/*.txt \
src/testdir/samples/*.vim \
src/testdir/samples/test000 \
src/testdir/color_ramp.vim \
src/testdir/silent.wav \
src/testdir/popupbounce.vim \
src/testdir/crash/* \
src/proto.h \
src/protodef.h \
src/proto/alloc.pro \
@@ -428,7 +430,7 @@ SRC_ALL = \
src/xdiff/xutils.h \
# source files for Unix only
# Source files for Unix-like only.
SRC_UNIX = \
Makefile \
Filelist \
@@ -494,7 +496,7 @@ SRC_UNIX = \
src/which.sh \
src/xxd/Makefile \
# source files for both DOS and Unix
# Source files for both MS Windows and Unix-like.
SRC_DOS_UNIX = \
src/gui_xim.c \
src/if_cscope.c \
@@ -520,7 +522,7 @@ SRC_DOS_UNIX = \
src/proto/if_tcl.pro \
src/typemap \
# source files for MS-Windows (also in the extra archive)
# Source files for MS Windows (also in the extra archive).
SRC_DOS = \
src/GvimExt/*.mak \
src/GvimExt/GvimExt.reg \
@@ -596,7 +598,7 @@ SRC_DOS = \
nsis/lang/*.nsi \
uninstall.txt \
# source files for DOS without CR/LF translation (also in the extra archive)
# Source files for MS Windows without CR/LF translation (also in the extra archive).
SRC_DOS_BIN = \
src/tearoff.bmp \
src/tools.bmp \
@@ -613,10 +615,10 @@ SRC_DOS_BIN = \
runtime/bitmaps/vim.ico \
nsis/icons.zip \
# source files for Amiga, DOS, etc. (also in the extra archive)
# Source files for Amiga, DOS, etc. (also in the extra archive).
SRC_AMI_DOS = \
# source files for Amiga (also in the extra archive)
# Source files for Amiga (also in the extra archive).
SRC_AMI = \
README_amisrc.txt \
README_amisrc.txt.info \
@@ -630,7 +632,7 @@ SRC_AMI = \
src/testdir/amiga.vim \
src/xxd/Make_amiga.mak \
# source files for Haiku (also in the extra archive)
# Source files for Haiku (also in the extra archive).
SRC_HAIKU = \
README_haiku.txt \
src/os_haiku.h \
@@ -639,7 +641,7 @@ SRC_HAIKU = \
src/gui_haiku.h \
src/proto/gui_haiku.pro \
# source files for the Mac (also in the extra archive)
# Source files for the Mac (also in the extra archive).
SRC_MAC = \
src/INSTALLmac.txt \
src/os_mac.h \
@@ -648,7 +650,7 @@ SRC_MAC = \
src/proto/os_mac_conv.pro \
src/proto/os_macosx.pro \
# source files for VMS (in the extra archive)
# Source files for VMS (in the extra archive).
SRC_VMS = \
src/INSTALLvms.txt \
src/Make_vms.mms \
@@ -662,7 +664,7 @@ SRC_VMS = \
src/xxd/Make_vms.mms \
vimtutor.com \
# source files for QNX (in the extra archive)
# Source files for QNX (in the extra archive).
SRC_QNX = \
src/os_qnx.c \
src/os_qnx.h \
@@ -670,7 +672,7 @@ SRC_QNX = \
src/proto/gui_photon.pro \
src/proto/os_qnx.pro \
# source files for the extra archive (all sources that are not for Unix)
# Source files for the extra archive (all sources that are not for Unix).
SRC_EXTRA = \
$(SRC_AMI) \
$(SRC_AMI_DOS) \
@@ -685,7 +687,7 @@ SRC_EXTRA = \
src/os_vms_fix.com \
src/toolbar.phi \
# runtime files for all distributions
# Runtime files for all distributions.
RT_ALL = \
README.txt \
README.md \
@@ -697,6 +699,7 @@ RT_ALL = \
runtime/doc/*.pl \
runtime/doc/*.txt \
runtime/doc/Makefile \
runtime/doc/Make_all.mak \
runtime/doc/doctags.c \
runtime/doc/doctags.vim \
runtime/doc/test_urls.vim \
@@ -755,6 +758,17 @@ RT_ALL = \
runtime/pack/dist/opt/dvorak/dvorak/enable.vim \
runtime/pack/dist/opt/dvorak/dvorak/disable.vim \
runtime/pack/dist/opt/editexisting/plugin/editexisting.vim \
runtime/pack/dist/opt/editorconfig/.editorconfig \
runtime/pack/dist/opt/editorconfig/CONTRIBUTORS \
runtime/pack/dist/opt/editorconfig/LICENSE* \
runtime/pack/dist/opt/editorconfig/mkzip.sh \
runtime/pack/dist/opt/editorconfig/README.md \
runtime/pack/dist/opt/editorconfig/autoload/*.vim \
runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/*.vim \
runtime/pack/dist/opt/editorconfig/doc/tags \
runtime/pack/dist/opt/editorconfig/doc/editorconfig.txt \
runtime/pack/dist/opt/editorconfig/ftdetect/editorconfig.vim \
runtime/pack/dist/opt/editorconfig/plugin/editorconfig.vim \
runtime/pack/dist/opt/justify/plugin/justify.vim \
runtime/pack/dist/opt/matchit/plugin/matchit.vim \
runtime/pack/dist/opt/matchit/doc/matchit.txt \
@@ -764,12 +778,12 @@ RT_ALL = \
runtime/pack/dist/opt/swapmouse/plugin/swapmouse.vim \
runtime/pack/dist/opt/termdebug/plugin/termdebug.vim \
# runtime files for all distributions without CR-NL translation
# Runtime files for all distributions without CR/LF translation.
RT_ALL_BIN = \
runtime/doc/tags \
runtime/print/*.ps \
# runtime script files
# Runtime script files.
RT_SCRIPTS = \
runtime/filetype.vim \
runtime/scripts.vim \
@@ -780,7 +794,9 @@ RT_SCRIPTS = \
runtime/makemenu.vim \
runtime/autoload/*.vim \
runtime/autoload/README.txt \
runtime/autoload/cargo/*.vim \
runtime/autoload/dist/*.vim \
runtime/autoload/rust/*.vim \
runtime/autoload/xml/*.vim \
runtime/autoload/zig/*.vim \
runtime/colors/*.vim \
@@ -803,15 +819,22 @@ RT_SCRIPTS = \
runtime/plugin/README.txt \
runtime/syntax/*.vim \
runtime/syntax/README.txt \
runtime/syntax/modula2/opt/*.vim \
runtime/syntax/shared/*.vim \
runtime/syntax/shared/README.txt \
runtime/syntax/Makefile \
runtime/syntax/testdir/README.txt \
runtime/syntax/testdir/runtest.vim \
runtime/syntax/testdir/ftplugin/*.* \
runtime/syntax/testdir/input/*.* \
runtime/syntax/testdir/dumps/*.dump \
runtime/syntax/generator/Makefile \
runtime/syntax/generator/README.md \
runtime/syntax/generator/gen_syntax_vim.vim \
runtime/syntax/generator/update_date.vim \
runtime/syntax/generator/vim.vim.base \
# Unix runtime
# Unix-like runtime.
RT_UNIX = \
README_unix.txt \
runtime/hi16-action-make.png \
@@ -819,7 +842,7 @@ RT_UNIX = \
runtime/gvim.desktop \
runtime/vim.desktop \
# Unix and DOS runtime without CR-LF translation
# Unix-like and MS Windows runtime without CR/LF translation.
RT_UNIX_DOS_BIN = \
runtime/vim16x16.gif \
runtime/vim16x16.png \
@@ -831,10 +854,10 @@ RT_UNIX_DOS_BIN = \
runtime/vim48x48.png \
runtime/vim48x48.xpm \
# runtime not for unix or extra
# Runtime not for Unix-like or extra.
RT_NO_UNIX = \
# runtime for Amiga (also in the extra archive)
# Runtime for Amiga (also in the extra archive).
RT_AMI_DOS = \
runtime/doc/evim.man \
runtime/doc/vim.man \
@@ -842,17 +865,22 @@ RT_AMI_DOS = \
runtime/doc/vimtutor.man \
runtime/doc/xxd.man \
# DOS runtime (also in the extra archive)
# MS Windows runtime (also in the extra archive).
RT_DOS = \
README_dos.txt \
runtime/doc/Make_mvc.mak \
runtime/indent/Make_mvc.mak \
runtime/tutor/Make_mvc.mak \
runtime/lang/Make_mvc.mak \
vimtutor.bat \
# DOS runtime without CR-LF translation (also in the extra archive)
# MS Windows runtime without CR/LF translation (also in the extra archive).
RT_DOS_BIN = \
runtime/vimlogo.cdr \
runtime/vimlogo.eps \
runtime/vimlogo.gif \
runtime/vimlogo.pdf \
runtime/vimlogo.svg \
# Amiga runtime (also in the extra archive)
RT_AMI = \
@@ -874,7 +902,7 @@ RT_AMI = \
runtime/tutor.info \
runtime/tutor/*.info \
# runtime files in extra archive
# Runtime files in extra archive.
RT_EXTRA = \
$(RT_AMI) \
$(RT_AMI_DOS) \
@@ -882,46 +910,46 @@ RT_EXTRA = \
$(RT_DOS_BIN) \
README_mac.txt \
# included in all Amiga archives
# Included in all Amiga archives.
ROOT_AMI = \
Contents \
Contents.info \
runtime.info \
vimdir.info \
# root files for the extra archive
# Root files for the extra archive.
ROOT_EXTRA = \
$(ROOT_AMI) \
# files for Amiga small binary (also in extra archive)
# Files for Amiga small binary (also in extra archive).
BIN_AMI = \
README_amibin.txt \
README_amibin.txt.info \
Vim.info \
Xxd.info \
# files for DOS binary (also in extra archive)
# Files for MS Windows binary (also in extra archive).
BIN_DOS = \
README_bindos.txt \
uninstall.txt \
# files for Win32 OLE binary (also in extra archive)
# Files for Win32 OLE binary (also in extra archive).
BIN_OLE = \
README_ole.txt \
# files for Win32s binary (also in extra archive)
# Files for Win32s binary (also in extra archive).
BIN_W32S = \
README_w32s.txt \
# files for VMS binary (also in extra archive)
# Files for VMS binary (also in extra archive).
BIN_VMS = \
README_vms.txt \
# files for OS/2 binary (also in extra archive)
# Files for OS/2 binary (also in extra archive).
BIN_OS2 = \
README_os2.txt \
# binary files for extra archive
# Binary files for extra archive.
BIN_EXTRA = \
$(BIN_AMI) \
$(BIN_DOS) \
@@ -930,7 +958,7 @@ BIN_EXTRA = \
$(BIN_VMS) \
$(BIN_OS2) \
# all files for extra archive
# All files for extra archive.
EXTRA = \
$(BIN_EXTRA) \
$(ROOT_EXTRA) \
@@ -939,7 +967,7 @@ EXTRA = \
README_extra.txt \
runtime/vimlogo.xpm \
# files in READMEdir that are included from the top dir
# Files in READMEdir that are included from the top dir.
IN_README_DIR = \
README.txt.info \
README_ami.txt \
@@ -951,6 +979,7 @@ IN_README_DIR = \
README_bindos.txt \
README_dos.txt \
README_extra.txt \
README_haiku.txt \
README_mac.txt \
README_ole.txt \
README_os2.txt \
@@ -958,6 +987,7 @@ IN_README_DIR = \
README_src.txt \
README_srcdos.txt \
README_unix.txt \
README_vimlogo.txt \
README_vms.txt \
README_w32s.txt \
Contents \
@@ -968,7 +998,7 @@ IN_README_DIR = \
src.info \
vimdir.info \
# generic language files
# Generic language files.
LANG_GEN = \
runtime/doc/*-da.1 \
runtime/doc/*-da.UTF-8.1 \
@@ -987,11 +1017,13 @@ LANG_GEN = \
runtime/doc/*-tr.UTF-8.1 \
runtime/lang/README.txt \
runtime/lang/Makefile \
runtime/lang/Make_all.mak \
runtime/lang/menu_*.vim \
runtime/keymap/README.txt \
runtime/keymap/*.vim \
runtime/tutor/README.*.txt \
runtime/tutor/Makefile \
runtime/tutor/Make_all.mak \
runtime/tutor/tutor.utf-8 \
runtime/tutor/tutor.?? \
runtime/tutor/tutor.??.utf-8 \
@@ -1019,7 +1051,7 @@ LANG_GEN = \
runtime/spell/main.aap \
runtime/spell/*.vim \
# generic language files, binary
# Generic language files, binary.
LANG_GEN_BIN = \
runtime/spell/README_en.txt \
runtime/spell/en.ascii.spl \
@@ -1029,7 +1061,7 @@ LANG_GEN_BIN = \
runtime/spell/en.latin1.sug \
runtime/spell/en.utf-8.sug \
# all files for lang archive
# All files for lang archive.
LANG_SRC = \
src/po/README.txt \
src/po/README_mingw.txt \
@@ -1046,10 +1078,24 @@ LANG_SRC = \
src/po/vim.desktop.in \
src/po/gvim.desktop.in \
src/po/sjiscorr.c \
src/po/big5corr.c \
src/po/*.po \
# the language files for the Win32 lang archive
# The language files for the Win32 lang archive.
LANG_DOS = \
src/po/*.mo \
# Files in the repository that are deliberately not listed above, and will thus
# be excluded from distribution tarballs and the like.
# This excludes them from the CI check for unlisted files.
IGNORE = \
.appveyor.yml \
.github/FUNDING.yml \
.github/labeler.yml \
.github/workflows/label.yml \
SECURITY.md \
ci/unlisted.make \
src/libvterm/CODE-MAP \
runtime/syntax/testdir/input/html_html \
# vim: set ft=make:

View File

@@ -21,8 +21,8 @@ II) It is allowed to distribute a modified (or extended) version of Vim,
maintainer will do with your changes and under what license they
will be distributed is negotiable. If there has been no negotiation
then this license, or a later version, also applies to your changes.
The current maintainer is Bram Moolenaar <Bram@vim.org>. If this
changes it will be announced in appropriate places (most likely
The current maintainers are listed here: https://github.com/orgs/vim/people.
If this changes it will be announced in appropriate places (most likely
vim.sf.net, www.vim.org and/or comp.editors). When it is completely
impossible to contact the maintainer, the obligation to send him
your changes ceases. Once the maintainer has confirmed that he has

View File

@@ -40,7 +40,7 @@ all install uninstall tools config configure reconfig proto depend lint tags typ
@echo "If there are problems, cd to the src directory and run make there"
cd src && $(MAKE) $@
@# When the target is "test" also run the indent and syntax tests.
@if test "$@" = "test"; then \
@if test "$@" = "test" -o "$@" = "testtiny"; then \
$(MAKE) indenttest; \
$(MAKE) syntaxtest; \
fi
@@ -94,7 +94,7 @@ syntaxtest:
# Before creating an archive first delete all backup files, *.orig, etc.
MAJOR = 9
MINOR = 0
MINOR = 1
# CHECKLIST for creating a new version:
#

View File

@@ -1,17 +1,21 @@
[![Vim Logo](https://github.com/vim/vim/raw/master/runtime/vimlogo.gif)](https://www.vim.org)
# [![Vim The editor](https://github.com/vim/vim/raw/master/runtime/vimlogo.gif)](https://www.vim.org)
[![Github Build status](https://github.com/vim/vim/workflows/GitHub%20CI/badge.svg)](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22) [![Appveyor Build status](https://ci.appveyor.com/api/projects/status/o2qht2kjm02sgghk?svg=true)](https://ci.appveyor.com/project/chrisbra/vim) [![Cirrus Build Status](https://api.cirrus-ci.com/github/vim/vim.svg)](https://cirrus-ci.com/github/vim/vim) [![Coverage Status](https://codecov.io/gh/vim/vim/coverage.svg?branch=master)](https://codecov.io/gh/vim/vim?branch=master) [![Coverity Scan](https://scan.coverity.com/projects/241/badge.svg)](https://scan.coverity.com/projects/vim) [![Debian CI](https://badges.debian.net/badges/debian/testing/vim/version.svg)](https://buildd.debian.org/vim) [![Packages](https://repology.org/badge/tiny-repos/vim.svg)](https://repology.org/metapackage/vim) [![Fossies codespell report](https://fossies.org/linux/test/vim-master.tar.gz/codespell.svg)](https://fossies.org/linux/test/vim-master.tar.gz/codespell.html)
<sub>For translations of this README see the end.</sub>
[![Github Build status](https://github.com/vim/vim/workflows/GitHub%20CI/badge.svg)](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22)
[![Appveyor Build status](https://ci.appveyor.com/api/projects/status/o2qht2kjm02sgghk?svg=true)](https://ci.appveyor.com/project/chrisbra/vim)
[![Cirrus Build Status](https://api.cirrus-ci.com/github/vim/vim.svg)](https://cirrus-ci.com/github/vim/vim)
[![Coverage Status](https://codecov.io/gh/vim/vim/coverage.svg?branch=master)](https://codecov.io/gh/vim/vim?branch=master)
[![Coverity Scan](https://scan.coverity.com/projects/241/badge.svg)](https://scan.coverity.com/projects/vim)
[![Debian CI](https://badges.debian.net/badges/debian/testing/vim/version.svg)](https://buildd.debian.org/vim)
[![Packages](https://repology.org/badge/tiny-repos/vim.svg)](https://repology.org/metapackage/vim)
[![Fossies codespell report](https://fossies.org/linux/test/vim-master.tar.gz/codespell.svg)](https://fossies.org/linux/test/vim-master.tar.gz/codespell.html)
If you find a bug or want to discuss the best way to add a new feature, please
open an [issue](https://github.com/vim/vim/issues).
[open an issue](https://github.com/vim/vim/issues/new/choose).
If you have a question or want to discuss the best way to do something with
Vim, you can use [StackExchange](https://vi.stackexchange.com/)
or one of the [Maillists](https://www.vim.org/community.php).
## What is Vim? ##
## What is Vim?
Vim is a greatly improved version of the good old UNIX editor
[Vi](https://en.wikipedia.org/wiki/Vi). Many new
@@ -35,7 +39,7 @@ Amiga DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
For Vim9 script see [README_VIM9](README_VIM9.md).
## Distribution ##
## Distribution
You can often use your favorite package manager to install Vim. On Mac and
Linux a small version of Vim is pre-installed, you still need to install Vim
@@ -55,48 +59,45 @@ Some popular places to get the latest Vim:
* Get a Windows executable from the
[vim-win32-installer](https://github.com/vim/vim-win32-installer/releases) repository.
## Compiling ##
## Compiling
If you obtained a binary distribution you don't need to compile Vim. If you
obtained a source distribution, all the stuff for compiling Vim is in the
[`src`](/src) directory. See [`src/INSTALL`](src/INSTALL) for instructions.
[`src`](./src/) directory. See [`src/INSTALL`](./src/INSTALL) for instructions.
## Installation ##
## Installation
See one of these files for system-specific instructions. Either in the
[READMEdir directory](./READMEdir/) (in the repository) or
the top directory (if you unpack an archive):
README_ami.txt Amiga
README_unix.txt Unix
README_dos.txt MS-DOS and MS-Windows
README_mac.txt Macintosh
README_haiku.txt Haiku
README_vms.txt VMS
```
README_ami.txt Amiga
README_unix.txt Unix
README_dos.txt MS-DOS and MS-Windows
README_mac.txt Macintosh
README_haiku.txt Haiku
README_vms.txt VMS
```
There are other `README_*.txt` files, depending on the distribution you used.
## Documentation ##
## Documentation
The Vim tutor is a one hour training course for beginners. Often it can be
started as `vimtutor`. See `:help tutor` for more information.
The best is to use `:help` in Vim. If you don't have an executable yet, read
[`runtime/doc/help.txt`](/runtime/doc/help.txt).
[`runtime/doc/help.txt`](./runtime/doc/help.txt).
It contains pointers to the other documentation files.
The User Manual reads like a book and is recommended to learn to use
Vim. See `:help user-manual`.
## Copying ##
## Copying
Vim is Charityware. You can use and copy it as much as you like, but you are
encouraged to make a donation to help orphans in Uganda. Please read the file
[`runtime/doc/uganda.txt`](runtime/doc/uganda.txt)
[`runtime/doc/uganda.txt`](./runtime/doc/uganda.txt)
for details (do `:help uganda` inside Vim).
Summary of the license: There are no restrictions on using or distributing an
@@ -105,28 +106,25 @@ text must always be included. For modified versions, a few restrictions apply.
The license is GPL compatible, you may compile Vim with GPL libraries and
distribute it.
## Sponsoring ##
## Sponsoring
Fixing bugs and adding new features takes a lot of time and effort. To show
your appreciation for the work and motivate Bram and others to continue
working on Vim please send a donation.
Since Bram is back to a paid job the money will now be used to help children
in Uganda. See [`runtime/doc/uganda.txt`](runtime/doc/uganda.txt). But
in Uganda. See [`runtime/doc/uganda.txt`](./runtime/doc/uganda.txt). But
at the same time donations increase Bram's motivation to keep working on Vim!
For the most recent information about sponsoring look on the Vim web site:
https://www.vim.org/sponsor/
## Contributing ##
## Contributing
If you would like to help make Vim better, see the
[CONTRIBUTING.md](/CONTRIBUTING.md) file.
[CONTRIBUTING.md](./CONTRIBUTING.md) file.
## Information ##
## Information
If you are on macOS, you can use [Macvim](https://macvim-dev.github.io/macvim/).
@@ -141,14 +139,15 @@ If you still have problems or any other questions, use one of the mailing
lists to discuss them with Vim users and developers:
https://www.vim.org/maillist.php
If nothing else works, report bugs directly:
Bram Moolenaar <Bram@vim.org>
If nothing else works, report bugs directly to the vim-dev mailing list:
`<vim-dev@vim.org>`
## Main author
## Main author ##
Most of Vim was created by Bram Moolenaar `<Bram@vim.org>`
[Bram-Moolenaar](https://vimhelp.org/version9.txt.html#Bram-Moolenaar)
Send any other comments, patches, flowers and suggestions to:
Bram Moolenaar <Bram@vim.org>
Send any other comments, patches, flowers and suggestions to the vim-dev mailing list:
`<vim-dev@vim.org>`
This is `README.md` for version 9.0 of Vim: Vi IMproved.
This is `README.md` for version 9.1 of Vim: Vi IMproved.

View File

@@ -1,4 +1,4 @@
README.txt for version 9.0 of Vim: Vi IMproved.
README.txt for version 9.1 of Vim: Vi IMproved.
WHAT IS VIM?
@@ -122,12 +122,14 @@ If you still have problems or any other questions, use one of the mailing
lists to discuss them with Vim users and developers:
https://www.vim.org/maillist.php
If nothing else works, report bugs directly:
Bram Moolenaar <Bram@vim.org>
If nothing else works, report bugs directly to the vim-dev mailing list:
<vim-dev@vim.org>
MAIN AUTHOR
Send any other comments, patches, flowers and suggestions to:
Most of Vim was created by Bram Moolenaar <Bram@vim.org> |Bram-Moolenaar|
Bram Moolenaar E-mail: Bram@vim.org
Send any other comments, patches, flowers and suggestions to the vim-dev mailing list:
<vim-dev@vim.org>

View File

@@ -9,15 +9,15 @@ Vim Vi IMproved. A clone of the UNIX text editor Vi. Very useful
messages, shows current file name in window title, on-line
help, rectangular cut/paste, etc., etc., etc...
Version 9.0. Also runs under UNIX, MS-Windows, Mac, etc.
vim90rt.tgz contains the documentation and syntax files.
vim90bin.tgz contains the binaries.
vim90src.tgz contains the sources.
Version 9.1. Also runs under UNIX, MS-Windows, Mac, etc.
vim91rt.tgz contains the documentation and syntax files.
vim91bin.tgz contains the binaries.
vim91src.tgz contains the sources.
Author: Bram Moolenaar et al.
Xxd Hex dumper and reader. Can be used to view files as hex, edit
them and write them back. Can also be used to patch files.
Version 2022 Jan 14
Version 2023 Oct 25
Author: Juergen Weigert

View File

@@ -1,4 +1,4 @@
README_ami.txt for version 9.0 of Vim: Vi IMproved.
README_ami.txt for version 9.1 of Vim: Vi IMproved.
This file explains the installation of Vim on Amiga systems.
See README.txt for general information about Vim.
@@ -16,8 +16,8 @@ easily upgrade to a new version. For example:
You would then unpack the archives like this:
cd dh0:editors
tar xf t:vim90bin.tar
tar xf t:vim90rt.tar
tar xf t:vim91bin.tar
tar xf t:vim91rt.tar
Set the $VIM environment variable to point to the top directory of your Vim
files. For the above example:

View File

@@ -1,4 +1,4 @@
README_amibin.txt for version 9.0 of Vim: Vi IMproved.
README_amibin.txt for version 9.1 of Vim: Vi IMproved.
See "README.txt" for general information about Vim.
See "README_ami.txt" for installation instructions for the Amiga.

View File

@@ -1,4 +1,4 @@
README_amisrc.txt for version 9.0 of Vim: Vi IMproved.
README_amisrc.txt for version 9.1 of Vim: Vi IMproved.
See "README.txt" for general information about Vim.
See "README_ami.txt" for installation instructions for the Amiga.

View File

@@ -1,4 +1,4 @@
README_bindos.txt for version 9.0 of Vim: Vi IMproved.
README_bindos.txt for version 9.1 of Vim: Vi IMproved.
See "README.txt" for general information about Vim.
See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
@@ -8,9 +8,9 @@ These files are in the runtime archive (vim90rt.zip).
There are several binary distributions of Vim for the PC. You would normally
pick only one of them, but it's also possible to install several.
These ones are available (the version number may differ):
vim90w32.zip Windows 95/98/NT/etc. console version
gvim90.zip Windows 95/98/NT/etc. GUI version
gvim90ole.zip Windows 95/98/NT/etc. GUI version with OLE
vim91w32.zip Windows 95/98/NT/etc. console version
gvim91.zip Windows 95/98/NT/etc. GUI version
gvim91ole.zip Windows 95/98/NT/etc. GUI version with OLE
You MUST also get the runtime archive (vim90rt.zip).
The sources are also available (vim90src.zip).
You MUST also get the runtime archive (vim91rt.zip).
The sources are also available (vim91src.zip).

View File

@@ -1,4 +1,4 @@
README_dos.txt for version 9.0 of Vim: Vi IMproved.
README_dos.txt for version 9.1 of Vim: Vi IMproved.
This file explains the installation of Vim on MS-Windows systems.
See "README.txt" for general information about Vim.
@@ -41,19 +41,19 @@ These are the normal steps to install Vim from the .zip archives:
located. Check the $VIM setting to see where it points to:
set VIM
For example, if you have
C:\vim\vim90
C:\vim\vim91
do
cd C:\
Binary and runtime Vim archives are normally unpacked in the same location,
on top of each other.
2. Unpack the zip archives. This will create a new directory "vim\vim90",
2. Unpack the zip archives. This will create a new directory "vim\vim91",
in which all the distributed Vim files are placed. Since the directory
name includes the version number, it is unlikely that you overwrite
existing files.
Examples:
pkunzip -d gvim90.zip
unzip vim90w32.zip
pkunzip -d gvim91.zip
unzip vim91w32.zip
You need to unpack the runtime archive and at least one of the binary
archives. When using more than one binary version, be careful not to
@@ -65,7 +65,7 @@ These are the normal steps to install Vim from the .zip archives:
won't move or copy the runtime files.
3. Change to the new directory:
cd vim\vim90
cd vim\vim91
Run the "install.exe" program. It will ask you a number of questions about
how you would like to have your Vim setup. Among these are:
- You can tell it to write a "_vimrc" file with your preferences in the
@@ -76,8 +76,8 @@ These are the normal steps to install Vim from the .zip archives:
console or in a shell. You can select one of the directories in your
$PATH. If you skip this, you can add Vim to the search path manually:
The simplest is to add a line to your autoexec.bat. Examples:
set path=%path%;C:\vim\vim90
set path=%path%;D:\editors\vim\vim90
set path=%path%;C:\vim\vim91
set path=%path%;D:\editors\vim\vim91
- Create entries for Vim on the desktop and in the Start menu.
That's it!
@@ -89,8 +89,8 @@ Remarks:
won't show a menubar. Then you need to set the $VIM environment variable to
point to the top directory of your Vim files. Example:
set VIM=C:\editors\vim
Vim version 9.0 will look for your vimrc file in $VIM, and for the runtime
files in $VIM/vim90. See ":help $VIM" for more information.
Vim version 9.1 will look for your vimrc file in $VIM, and for the runtime
files in $VIM/vim91. See ":help $VIM" for more information.
- To avoid confusion between distributed files of different versions and your
own modified vim scripts, it is recommended to use this directory layout:
@@ -101,14 +101,14 @@ Remarks:
C:\vim\vimfiles\ftplugin\*.vim Filetype plugins
C:\vim\... Other files you made.
Distributed files:
C:\vim\vim90\vim.exe The Vim version 9.0 executable.
C:\vim\vim90\doc\*.txt The version 9.0 documentation files.
C:\vim\vim90\bugreport.vim A Vim version 9.0 script.
C:\vim\vim90\... Other version 9.0 distributed files.
C:\vim\vim91\vim.exe The Vim version 9.1 executable.
C:\vim\vim91\doc\*.txt The version 9.1 documentation files.
C:\vim\vim91\bugreport.vim A Vim version 9.1 script.
C:\vim\vim91\... Other version 9.1 distributed files.
In this case the $VIM environment variable would be set like this:
set VIM=C:\vim
Then $VIMRUNTIME will automatically be set to "$VIM\vim90". Don't add
"vim90" to $VIM, that won't work.
Then $VIMRUNTIME will automatically be set to "$VIM\vim91". Don't add
"vim91" to $VIM, that won't work.
- You can put your Vim executable anywhere else. If the executable is not
with the other Vim files, you should set $VIM. The simplest is to add a line
@@ -132,8 +132,8 @@ Remarks:
Select Properties.
5. In the Program tab, change the "Cmdline" to add "/c" and the name of the
Vim executable. Examples:
C:\command.com /c C:\vim\vim90\vim.exe
C:\command.com /c D:\editors\vim\vim90\vim.exe
C:\command.com /c C:\vim\vim91\vim.exe
C:\command.com /c D:\editors\vim\vim91\vim.exe
6. Select the font, window size, etc. that you like. If this isn't
possible, select "Advanced" in the Program tab, and deselect "MS-DOS
mode".

View File

@@ -1,4 +1,4 @@
README_extra.txt for version 9.0 of Vim: Vi IMproved.
README_extra.txt for version 9.1 of Vim: Vi IMproved.
These extra files of Vim are for special purposes. This README explains what
the files are for. For general information about Vim, see the "README.txt"

View File

@@ -1,4 +1,4 @@
README_haiku.txt for version 9.0 of Vim: Vi IMproved.
README_haiku.txt for version 9.1 of Vim: Vi IMproved.
This file explains the installation of Vim on Haiku operating system.
See "README.txt" for general information about Vim.

View File

@@ -1,4 +1,4 @@
README_mac.txt for version 9.0 of Vim: Vi IMproved.
README_mac.txt for version 9.1 of Vim: Vi IMproved.
This file explains the installation of Vim on MacOS systems.
See "README.txt" for general information about Vim.

View File

@@ -1,4 +1,4 @@
README_ole.txt for version 9.0 of Vim: Vi IMproved.
README_ole.txt for version 9.1 of Vim: Vi IMproved.
This archive contains gvim.exe with OLE interface.
This version of gvim.exe can also load a number of interface dynamically (you

View File

@@ -1,4 +1,4 @@
README_os2.txt for version 9.0 of Vim: Vi IMproved.
README_os2.txt for version 9.1 of Vim: Vi IMproved.
This file used to explain the installation of Vim on OS/2 systems.
However, support for OS/2 has been removed in patch 7.4.1008.

View File

@@ -1,4 +1,4 @@
README_os390.txt for version 9.0 of Vim: Vi IMproved.
README_os390.txt for version 9.1 of Vim: Vi IMproved.
This readme explains how to build Vim on z/OS. Formerly called OS/390.
See "README.txt" for general information about Vim.
@@ -46,7 +46,7 @@ Change to the vim directory and do:
$ export CC=cc
$ export _CC_CCMODE=1
$./configure --with-features=big --without-x --enable-gui=no
$./configure --with-features=normal --without-x --enable-gui=no
$ cd src
$ make

View File

@@ -1,8 +1,8 @@
README_src.txt for version 9.0 of Vim: Vi IMproved.
README_src.txt for version 9.1 of Vim: Vi IMproved.
The source archive contains the files needed to compile Vim on Unix systems.
It is packed for Unix systems (NL line separator).
For more information, see the README.txt file that comes with the runtime
archive (vim-9.0-rt.tar.gz). To be able to run Vim you MUST get the runtime
archive (vim-9.1-rt.tar.gz). To be able to run Vim you MUST get the runtime
archive too!

View File

@@ -1,4 +1,4 @@
README_srcdos.txt for version 9.0 of Vim: Vi IMproved.
README_srcdos.txt for version 9.1 of Vim: Vi IMproved.
See "README.txt" for general information about Vim.
See "README_dos.txt" for installation instructions for MS-Windows.

View File

@@ -1,4 +1,4 @@
README_unix.txt for version 9.0 of Vim: Vi IMproved.
README_unix.txt for version 9.1 of Vim: Vi IMproved.
This file explains the installation of Vim on Unix systems.
See "README.txt" for general information about Vim.

View File

@@ -0,0 +1,11 @@
The Python project that creates `vimlogo.svg` can be found at
`https://github.com/ShayHill/vimlogo`. The Vim license applies.
`vimlogo.svg` is an effort to remove errors and inadvertant inconsistencies
from the original vim logo while maintaing the original design. `vimlogo.svg`
is based on the `vimlogo.svg` file (previously?) found at
`https://www.vim.org/logos.php`
As of 2024 Jan 30, `vimlogo.svg` is a separate project from `vimlogo.cdr`,
`vimlogo.eps`, `vimlogo.gif`, `vimlogo.pdf`, and `vimlogo.xpm`, all of which
are slightly different from each other.

View File

@@ -1,4 +1,4 @@
README_vms.txt for version 9.0 of Vim: Vi IMproved.
README_vms.txt for version 9.1 of Vim: Vi IMproved.
This file explains the installation of Vim on VMS systems.
See "README.txt" in the runtime archive for information about Vim.
@@ -19,14 +19,16 @@ src/INSTALLvms.txt.
To use the binary version, you need one of these archives:
vim-XX-exe-ia64-gui.zip IA64 GUI/Motif executables
vim-XX-exe-ia64-gtk.zip IA64 GUI/GTK executables
vim-XX-exe-ia64-term.zip IA64 console executables
vim-XX-exe-x86-gui.zip X86_64 GUI/Motif executables
vim-XX-exe-x86-term.zip X86_64 console executables
vim-XX-exe-ia64-gui.zip IA64 GUI/Motif executables
vim-XX-exe-ia64-gtk.zip IA64 GUI/GTK executables
vim-XX-exe-ia64-term.zip IA64 console executables
vim-XX-exe-axp-gui.zip Alpha GUI/Motif executables
vim-XX-exe-axp-gtk.zip Alpha GUI/GTK executables
vim-XX-exe-axp-term.zip Alpha console executables
vim-XX-exe-axp-term.zip Alpha console executables
vim-XX-exe-vax-gui.zip VAX GUI executables
vim-XX-exe-vax-term.zip VAX console executables
vim-XX-exe-vax-term.zip VAX console executables
and of course
vim-XX-runtime.zip runtime files
@@ -34,6 +36,8 @@ and of course
The binary archives contain: vim.exe, ctags.exe, xxd.exe files,
but there are also prepared "deploy ready" archives:
vim-XX-x86.zip GUI and console executables with runtime and
help files for X86_64 systems
vim-XX-ia64.zip GUI and console executables with runtime and
help files for IA64 systems
vim-XX-axp.zip GUI and console executables with runtime and

View File

@@ -1,4 +1,4 @@
README_w32s.txt for version 9.0 of Vim: Vi IMproved.
README_w32s.txt for version 9.1 of Vim: Vi IMproved.
This file used to explain the installation of Vim on MS-Windows 3.1 and 3.11
systems. However, support for MS-Windows 3.1 and 3.11 has been removed in

10
SECURITY.md Normal file
View File

@@ -0,0 +1,10 @@
# Security Policy
## Reporting a vulnerability
If you want to report a security issue, please privately disclose the issue to the vim-security mailing list
vim-security@googlegroups.com
This is a private list, read only by the maintainers, but anybody can post, after moderation.
**Please don't publicly disclose the issue until it has been addressed by us.**

View File

@@ -1,3 +1,3 @@
# Clang 12 (or Apple clang 13) and later makes a warning '-Wcompound-token-split-by-macro' enable by default.
/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=compound-token-split-by-macro/
/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=compound-token-split-by-macro -Wno-compound-token-split-by-macro/
/^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=compound-token-split-by-macro/

View File

@@ -1,3 +1,3 @@
/^CFLAGS[[:blank:]]*=/s/$/ -Wall -Wextra -Wshadow -Werror/
/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-function/
/^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-parameter/
/^CFLAGS[[:blank:]]*=/s/$/ -Wall -Wextra -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Werror -Wno-deprecated-declarations/
/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-function -Wno-shadow/
/^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-parameter -Wno-strict-prototypes/

13
ci/remove_snap.sh Normal file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env sh
pushd /etc/apt/preferences.d/
cat > nosnap.pref <<EOF
# To prevent repository packages from triggering the installation of snap,
# this file forbids snapd from being installed by APT.
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF
popd
snap remove --purge $(snap list | awk '!/^Name|^core/ {print $1}')
apt-get purge -y snapd

49
ci/unlisted.make Normal file
View File

@@ -0,0 +1,49 @@
# vim: ft=make
SHELL = /bin/bash
# List all files that are tracked in git but not listed in Filelist.
# Exit code is 2 ("Make encountered an error") if any such files exist.
# Filelist is a Makefile that defines many variables, so we use Make itself to
# query which variables it defines, then expand them all by wrapping each name
# in $(...), importing Filelist and using $(eval).
include Filelist
$(eval all_patterns := $(shell \
make -f Filelist --question --print-data-base --no-builtin-rules \
--no-builtin-variables 2>/dev/null \
| sed -nre \
'/^# makefile .from \x27Filelist\x27,/ { \
n; \
s/ = .*//; \
T; \
s/.*/$$(\0)/; \
p; \
}'))
# In Makefile's `prepeare` target, all the IN_README_DIR files are moved from
# READMEdir to the root, so add those files in their Git-tracked location:
all_patterns := $(all_patterns) \
$(foreach readme, $(IN_README_DIR), READMEdir/$(readme))
# The result 'all_patterns' is a list of patterns (globs), which we expand with
# wildcard to get actual filenames. Note this means Filelist can list a file
# that does not exist, and it will be omitted at this step.
listed_files := $(wildcard $(all_patterns))
# Default target to actually run the comparison:
.PHONY: check
check:
@# There are too many files to list on the command line, so we write
@# that to a temporary file, one per line.
$(file > Filelist-listed-files)
$(foreach filename, $(listed_files),\
$(file >> Filelist-listed-files,$(filename)))
@# Compare the sorted lists. Delete that temporary file on both
@# success and failure, but exit with diff's exit code.
diff -u0 --label files-in-git <(git ls-files | sort) \
--label Filelist <(sort --unique Filelist-listed-files); \
RV=$$?; \
rm Filelist-listed-files; \
(($$RV != 0)) && echo "Add files to the right variable in Filelist."; \
exit $$RV

View File

@@ -167,9 +167,11 @@ Page custom SetCustom ValidateCustom
!include "lang\danish.nsi"
!include "lang\dutch.nsi"
!include "lang\german.nsi"
!include "lang\greek.nsi"
!include "lang\italian.nsi"
!include "lang\japanese.nsi"
!include "lang\russian.nsi"
!include "lang\serbian.nsi"
!include "lang\simpchinese.nsi"
!include "lang\tradchinese.nsi"
!include "lang\turkish.nsi"
@@ -397,6 +399,9 @@ Section "$(str_section_exe)" id_section_exe
SetOutPath $0\indent
File ${VIMRT}\indent\*.*
SetOutPath $0\keymap
File ${VIMRT}\keymap\*.*
SetOutPath $0\macros
File /r ${VIMRT}\macros\*.*
@@ -416,7 +421,7 @@ Section "$(str_section_exe)" id_section_exe
File ${VIMSRC}\vim.ico
SetOutPath $0\syntax
File /r ${VIMRT}\syntax\*.*
File /r /x testdir /x generator ${VIMRT}\syntax\*.*
SetOutPath $0\spell
File ${VIMRT}\spell\*.txt

View File

@@ -2,5 +2,5 @@
!ifndef __GVIM_VER__NSH__
!define __GVIM_VER__NSH__
!define VER_MAJOR 9
!define VER_MINOR 0
!define VER_MINOR 1
!endif

276
nsis/lang/greek.nsi Normal file
View File

@@ -0,0 +1,276 @@
# vi:set ts=8 sts=4 sw=4 et fdm=marker:
#
# greek.nsi: Greek language strings for gvim NSIS installer.
#
# Locale ID : 1032
# fileencoding : UTF-8
# Author : Christos Longros
!insertmacro MUI_LANGUAGE "Greek"
# Overwrite the default translation.
# These strings should be always English. Otherwise dosinst.c fails.
LangString ^SetupCaption ${LANG_GREEK} \
"$(^Name) Setup"
LangString ^UninstallCaption ${LANG_GREEK} \
"$(^Name) Uninstall"
##############################################################################
# MUI Configuration Strings {{{1
##############################################################################
#LangString str_dest_folder ${LANG_GREEK} \
# "Φάκελος προορισμός (Πρέπει να τελειώνει σε $\"vim$\")"
LangString str_show_readme ${LANG_GREEK} \
"Εμφάνιση README μετά την ολοκλήρωση της εγκατάστασης"
# Install types:
LangString str_type_typical ${LANG_GREEK} \
"Typical"
LangString str_type_minimal ${LANG_GREEK} \
"Minimal"
LangString str_type_full ${LANG_GREEK} \
"Full"
##############################################################################
# Section Titles & Description {{{1
##############################################################################
LangString str_section_old_ver ${LANG_GREEK} \
"Απεγκατάσταση υπάρχουσων εκδόσεων"
LangString str_desc_old_ver ${LANG_GREEK} \
"Απεγκατάσταση υπάρχουσων εκδόσεων Vim από το σύστημά σας."
LangString str_section_exe ${LANG_GREEK} \
"Vim GUI and runtime files"
LangString str_desc_exe ${LANG_GREEK} \
"Vim GUI executables and runtime files. This component is required."
LangString str_section_console ${LANG_GREEK} \
"Vim console program"
LangString str_desc_console ${LANG_GREEK} \
"Console version of Vim (vim.exe)."
LangString str_section_batch ${LANG_GREEK} \
"Δημιουργία αρχείων .bat"
LangString str_desc_batch ${LANG_GREEK} \
"Δημιουργία αρχείων .bat από παράγωγα Vim στον κατάλογο των Windows για \
χρήση γραμμής εντολών."
LangString str_group_icons ${LANG_GREEK} \
"Δημιουργία εικονιδίων Vim"
LangString str_desc_icons ${LANG_GREEK} \
"Δημιουργία εικονιδίων για τον Vim σε διάφορες τοποθεσίες για την διευκόλυνση της προσβασιμότητας."
LangString str_section_desktop ${LANG_GREEK} \
"Στην επιφάνεια εργασίας"
LangString str_desc_desktop ${LANG_GREEK} \
"Δημιουργία εικονιδίων για gVim εκτελέσιμα στην επιφάνεια εργασίας."
LangString str_section_start_menu ${LANG_GREEK} \
"In the Start Menu Programs Folder"
LangString str_desc_start_menu ${LANG_GREEK} \
"Προσθήκη του Vim στον φάκελο προγραμμάτων του μενού εκκίνησης."
#LangString str_section_quick_launch ${LANG_GREEK} \
# "In the Quick Launch Bar"
#LangString str_desc_quick_launch ${LANG_GREEK} \
# "Add Vim shortcut in the quick launch bar."
LangString str_section_edit_with ${LANG_GREEK} \
"Add Vim Context Menu"
LangString str_desc_edit_with ${LANG_GREEK} \
"Add Vim to the $\"Open With...$\" context menu list."
#LangString str_section_edit_with32 ${LANG_GREEK} \
# "32-bit Version"
#LangString str_desc_edit_with32 ${LANG_GREEK} \
# "Add Vim to the $\"Open With...$\" context menu list \
# for 32-bit applications."
#LangString str_section_edit_with64 ${LANG_GREEK} \
# "64-bit Version"
#LangString str_desc_edit_with64 ${LANG_GREEK} \
# "Add Vim to the $\"Open With...$\" context menu list \
# for 64-bit applications."
LangString str_section_vim_rc ${LANG_GREEK} \
"Δημιουργία προεπιλεγμένων ρυθμίσεων"
LangString str_desc_vim_rc ${LANG_GREEK} \
"Δημιουργία προεπιλεγμένου αρχείου ρυθμίσεων (_vimrc) αν δεν υπάρχει ήδη."
LangString str_group_plugin ${LANG_GREEK} \
"Δημιουργία καταλόγων Plugin"
LangString str_desc_plugin ${LANG_GREEK} \
"Δημιουργία καταλόγων plugin. Οι κατάλογοι Plugin επιτρέπουν την επέκταση του Vim \
με την μεταφορά ενός αρχείου σε έναν κατάλογο."
LangString str_section_plugin_home ${LANG_GREEK} \
"Private"
LangString str_desc_plugin_home ${LANG_GREEK} \
"Δημιουργία καταλόγων plugin στον κατάλογο HOME."
LangString str_section_plugin_vim ${LANG_GREEK} \
"Shared"
LangString str_desc_plugin_vim ${LANG_GREEK} \
"Δημιουργία καταλόγων plugin στον κατάλογο εγκατάστασης του Vim, χρησιμοποιείται από \
όλους στο σύστημα."
LangString str_section_nls ${LANG_GREEK} \
"Native Language Support"
LangString str_desc_nls ${LANG_GREEK} \
"Install files for native language support."
LangString str_unsection_register ${LANG_GREEK} \
"Unregister Vim"
LangString str_desc_unregister ${LANG_GREEK} \
"Unregister Vim from the system."
LangString str_unsection_exe ${LANG_GREEK} \
"Remove Vim Executables/Runtime Files"
LangString str_desc_rm_exe ${LANG_GREEK} \
"Remove all Vim executables and runtime files."
LangString str_ungroup_plugin ${LANG_GREEK} \
"Remove plugin directories"
LangString str_desc_rm_plugin ${LANG_GREEK} \
"Remove the plugin directories if they are empty."
LangString str_unsection_plugin_home ${LANG_GREEK} \
"Private"
LangString str_desc_rm_plugin_home ${LANG_GREEK} \
"Remove the plugin directories from HOME directory."
LangString str_unsection_plugin_vim ${LANG_GREEK} \
"Shared"
LangString str_desc_rm_plugin_vim ${LANG_GREEK} \
"Remove the plugin directories from Vim install directory."
LangString str_unsection_rootdir ${LANG_GREEK} \
"Remove the Vim root directory"
LangString str_desc_rm_rootdir ${LANG_GREEK} \
"Remove the Vim root directory. It contains your Vim configuration files!"
##############################################################################
# Messages {{{1
##############################################################################
#LangString str_msg_too_many_ver ${LANG_GREEK} \
# "Found $vim_old_ver_count Vim versions on your system.$\r$\n\
# This installer can only handle ${VIM_MAX_OLD_VER} versions \
# at most.$\r$\n\
# Please remove some versions and start again."
#LangString str_msg_invalid_root ${LANG_GREEK} \
# "Invalid install path: $vim_install_root!$\r$\n\
# It should end with $\"vim$\"."
#LangString str_msg_bin_mismatch ${LANG_GREEK} \
# "Binary path mismatch!$\r$\n$\r$\n\
# Expect the binary path to be $\"$vim_bin_path$\",$\r$\n\
# but system indicates the binary path is $\"$INSTDIR$\"."
#LangString str_msg_vim_running ${LANG_GREEK} \
# "Vim is still running on your system.$\r$\n\
# Please close all instances of Vim before you continue."
#LangString str_msg_register_ole ${LANG_GREEK} \
# "Attempting to register Vim with OLE. \
# There is no message indicates whether this works or not."
#LangString str_msg_unreg_ole ${LANG_GREEK} \
# "Attempting to unregister Vim with OLE. \
# There is no message indicates whether this works or not."
#LangString str_msg_rm_start ${LANG_GREEK} \
# "Uninstalling the following version:"
#LangString str_msg_rm_fail ${LANG_GREEK} \
# "Fail to uninstall the following version:"
#LangString str_msg_no_rm_key ${LANG_GREEK} \
# "Cannot find uninstaller registry key."
#LangString str_msg_no_rm_reg ${LANG_GREEK} \
# "Cannot find uninstaller from registry."
#LangString str_msg_no_rm_exe ${LANG_GREEK} \
# "Cannot access uninstaller."
#LangString str_msg_rm_copy_fail ${LANG_GREEK} \
# "Fail to copy uninstaller to temporary directory."
#LangString str_msg_rm_run_fail ${LANG_GREEK} \
# "Αποτυχία εκτέλεσης της λειτουργίας απεγκατάστασης."
#LangString str_msg_abort_install ${LANG_GREEK} \
# "Installer will abort."
LangString str_msg_install_fail ${LANG_GREEK} \
"Η εγκατάσταση απέτυχε. Better luck next time."
LangString str_msg_rm_exe_fail ${LANG_GREEK} \
"Μερικά αρχεία στο $0 δεν έχουν διαγραφεί!$\r$\n\
Πρέπει να το κάνετε χειροκίνητα."
#LangString str_msg_rm_root_fail ${LANG_GREEK} \
# "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αδύνατη η αφαίρεση $\"$vim_install_root$\", δεν είναι κενό!"
LangString str_msg_uninstalling ${LANG_GREEK} \
"Απεγκατάσταση παλιάς έκδοσης the old version..."
LangString str_msg_registering ${LANG_GREEK} \
"Καταχώρηση..."
LangString str_msg_unregistering ${LANG_GREEK} \
"Unregistering..."
##############################################################################
# Dialog Box {{{1
##############################################################################
LangString str_vimrc_page_title ${LANG_GREEK} \
"Επιλογή ρυθμίσεων _vimrc"
LangString str_vimrc_page_subtitle ${LANG_GREEK} \
"Choose the settings for enhancement, keyboard and mouse."
LangString str_msg_compat_title ${LANG_GREEK} \
" Συμπεριφορά Vi / Vim "
LangString str_msg_compat_desc ${LANG_GREEK} \
"&Compatibility and enhancements"
LangString str_msg_compat_vi ${LANG_GREEK} \
"Vi compatible"
LangString str_msg_compat_vim ${LANG_GREEK} \
"Vim original"
LangString str_msg_compat_defaults ${LANG_GREEK} \
"Vim with some enhancements (load defaults.vim)"
LangString str_msg_compat_all ${LANG_GREEK} \
"Vim with all enhancements (load vimrc_example.vim) (Default)"
LangString str_msg_keymap_title ${LANG_GREEK} \
" Mappings "
LangString str_msg_keymap_desc ${LANG_GREEK} \
"&Remap a few keys for Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
LangString str_msg_keymap_default ${LANG_GREEK} \
"Do not remap keys (Default)"
LangString str_msg_keymap_windows ${LANG_GREEK} \
"Remap a few keys"
LangString str_msg_mouse_title ${LANG_GREEK} \
" Ποντίκι "
LangString str_msg_mouse_desc ${LANG_GREEK} \
"&Behavior of right and left buttons"
LangString str_msg_mouse_default ${LANG_GREEK} \
"Right: popup menu, Left: visual mode (Default)"
LangString str_msg_mouse_windows ${LANG_GREEK} \
"Right: popup menu, Left: select mode (Windows)"
LangString str_msg_mouse_unix ${LANG_GREEK} \
"Right: extends selection, Left: visual mode (Unix)"

View File

@@ -22,20 +22,20 @@ LangString ^UninstallCaption ${LANG_RUSSIAN} \
##############################################################################
#LangString str_dest_folder ${LANG_RUSSIAN} \
# "Маршрут к каталогу установки (должен оканчиваться каталогом $\"vim$\")"
# "Маршрут установки программы (должен завершаться каталогом $\"vim$\")"
LangString str_show_readme ${LANG_RUSSIAN} \
"После окончания установки ознакомиться с кратким описанием"
" Ознакомиться с кратким описанием программы"
# Install types:
LangString str_type_typical ${LANG_RUSSIAN} \
"Стандартная"
"Стандартный"
LangString str_type_minimal ${LANG_RUSSIAN} \
"Минимальная"
"Минимальный"
LangString str_type_full ${LANG_RUSSIAN} \
"Полная"
"Полный"
##############################################################################
@@ -50,59 +50,61 @@ LangString str_desc_old_ver ${LANG_RUSSIAN} \
LangString str_section_exe ${LANG_RUSSIAN} \
"Графический интерфейс и вспомогательные файлы"
LangString str_desc_exe ${LANG_RUSSIAN} \
"Графический интерфейс программы Vim и все необходимые для этого файлы. \
"Исполняемые файлы и все необходимые для работы программы файлы. \
Это обязательный компонент"
LangString str_section_console ${LANG_RUSSIAN} \
"Консольная программа Vim"
LangString str_desc_console ${LANG_RUSSIAN} \
"Вариант редактора Vim (vim.exe), используемый в командной оболочке"
"Вариант редактора Vim (vim.exe), используемый для работы в командной \
оболочке"
LangString str_section_batch ${LANG_RUSSIAN} \
"Создать командные файлы"
LangString str_desc_batch ${LANG_RUSSIAN} \
"Создание командных bat-файлов позволяющих работать с редактором \
Vim из командной строки Windows"
"Создание командных bat-файлов в каталоге Windows для работы с редактором \
Vim из командной строки"
LangString str_group_icons ${LANG_RUSSIAN} \
"Создать ярлыки для редактора Vim"
LangString str_desc_icons ${LANG_RUSSIAN} \
"Создание ярлыков редактора Vim для облегчения запуска программы"
"Создание ярлыков программы для удобного и быстрого запуска редактора Vim"
LangString str_section_desktop ${LANG_RUSSIAN} \
"На Рабочем столе"
LangString str_desc_desktop ${LANG_RUSSIAN} \
"Создание ярлыков программы Gvim на Рабочем столе"
"Создание ярлыков редактора Vim на Рабочем столе"
LangString str_section_start_menu ${LANG_RUSSIAN} \
"В меню кнопки Пуск"
LangString str_desc_start_menu ${LANG_RUSSIAN} \
"Создание ярлыков программы Gvim в меню кнопки Пуск"
"Создание ярлыков редактора Vim в меню кнопки Пуск"
#LangString str_section_quick_launch ${LANG_RUSSIAN} \
# "На панели быстрого запуска"
#LangString str_desc_quick_launch ${LANG_RUSSIAN} \
# "Создание ярлыков программы GVim на панели быстрого запуска"
# "Создание ярлыков редактора Vim на панели быстрого запуска"
LangString str_section_edit_with ${LANG_RUSSIAN} \
"В контекстном меню"
"Запуск редактора Vim из контекстного меню"
LangString str_desc_edit_with ${LANG_RUSSIAN} \
"Добавление вызова программы Gvim в пункт $\"Открыть с помощью...$\" контекстного меню"
"Добавление необходимой строки в пункт контекстного меню \
«Открыть с помощью...»"
#LangString str_section_edit_with32 ${LANG_RUSSIAN} \
# "32-разрядная версия программы"
# "Для 32-разрядной версии программы"
#LangString str_desc_edit_with32 ${LANG_RUSSIAN} \
# "Добавление вызова программы Gvim в пункт $\"Открыть с помощью...$\" контекстного меню \
# для 32-разрядных приложений"
# "Добавление в пункт контекстного меню \
# «Открыть с помощью...» 32-разрядных приложений"
#LangString str_section_edit_with64 ${LANG_RUSSIAN} \
# "64-разрядная версия программы"
# "Для 64-разрядной версии программы"
#LangString str_desc_edit_with64 ${LANG_RUSSIAN} \
# "Добавление вызова программы Gvim в пункт $\"Открыть с помощью...$\" контекстного меню \
# для 64-разрядных приложений"
# "Добавление в пункт контекстного меню \
# «Открыть с помощью...» 64-разрядных приложений"
LangString str_section_vim_rc ${LANG_RUSSIAN} \
"Настройки программы по умолчанию"
"Начальная настройка программы"
LangString str_desc_vim_rc ${LANG_RUSSIAN} \
"Создание файла _vimrc с предустановленными настройками, если нет других \
файлов настроек"
@@ -110,25 +112,31 @@ LangString str_desc_vim_rc ${LANG_RUSSIAN} \
LangString str_group_plugin ${LANG_RUSSIAN} \
"Создать каталог для подключаемых модулей"
LangString str_desc_plugin ${LANG_RUSSIAN} \
"Создание каталога для размещения подключаемых модулей, которые расширяют \
возможности редактора Vim"
"Создание каталога для подключаемых модулей, которые расширяют возможности \
редактора Vim"
LangString str_section_plugin_home ${LANG_RUSSIAN} \
"Личный каталог"
LangString str_desc_plugin_home ${LANG_RUSSIAN} \
"Создание каталога для подключаемых модулей в домашнем каталоге пользователя"
"В домашнем каталоге пользователя. Модули в этом каталоге доступны только \
этому пользователю"
LangString str_section_plugin_vim ${LANG_RUSSIAN} \
"Общий каталог"
LangString str_desc_plugin_vim ${LANG_RUSSIAN} \
"Создание каталога для подключаемых модулей в каталоге установки редактора Vim. \
Модули в этом каталоге будут доступны для любого пользователя \
зарегистрировавшегося в системе"
"В каталоге установки редактора Vim. Модули в этом каталоге доступны для \
всех пользователей"
#LangString str_section_vis_vim ${LANG_RUSSIAN} \
# "Подключаемый модуль VisVim"
#LangString str_desc_vis_vim ${LANG_RUSSIAN} \
# "Подключаемый модуль VisVim используется для интеграции с \
# Microsoft Visual Studio"
LangString str_section_nls ${LANG_RUSSIAN} \
"Поддержка региональных языков"
LangString str_desc_nls ${LANG_RUSSIAN} \
"Установка файлов для поддержки региональных языков операционной системы"
"Установка файлов для работы программе на различных региональных языках"
LangString str_unsection_register ${LANG_RUSSIAN} \
"Отменить регистрацию компонентов программы Vim"
@@ -158,8 +166,8 @@ LangString str_desc_rm_plugin_vim ${LANG_RUSSIAN} \
LangString str_unsection_rootdir ${LANG_RUSSIAN} \
"Удалить основной каталог программы Vim"
LangString str_desc_rm_rootdir ${LANG_RUSSIAN} \
"Удаление основного каталога программы Vim. В этом каталоге находятся файлы \
настроек!"
"Удаление основного каталога программы Vim. В этом каталоге находятся \
файлы настроек!"
##############################################################################
@@ -199,10 +207,11 @@ LangString str_desc_rm_rootdir ${LANG_RUSSIAN} \
# "Произошёл сбой при выполнении удаления следующих версий программы:"
#LangString str_msg_no_rm_key ${LANG_RUSSIAN} \
# "Не удалось найти раздел реестра, содержащий информацию об удалении программы"
# "Не удалось найти раздел реестра, содержащий информацию об удалении \
# программы"
#LangString str_msg_no_rm_reg ${LANG_RUSSIAN} \
# "Не удалось найти программу выполняющую удаление, указанную в разделе реестра"
# "Не удалось найти указанную в реестре программу, которая выполняет удаление"
#LangString str_msg_no_rm_exe ${LANG_RUSSIAN} \
# "Отсутствуют права на доступ к программе, выполняющей удаление"
@@ -219,14 +228,15 @@ LangString str_desc_rm_rootdir ${LANG_RUSSIAN} \
LangString str_msg_install_fail ${LANG_RUSSIAN} \
"Произошла ошибка при установке программы. Попробуйте повторить установку \
немного попозже"
# когда луна будет в другой фазе и ветер должен дуть с юго‐запада
# когда Луна будет в другой фазе и ветер должен дуть с юго‐запада
LangString str_msg_rm_exe_fail ${LANG_RUSSIAN} \
"Некоторые файлы не были удалены из каталога $0 $\r$\n\
Необходимо выполнить их удаление самостоятельно"
#LangString str_msg_rm_root_fail ${LANG_RUSSIAN} \
# "Внимание! В каталоге $\"$vim_install_root$\" содержатся файлы. Удаление каталога не выполнено"
# "Внимание! В каталоге $\"$vim_install_root$\" содержатся файлы. Удаление \
# каталога не выполнено"
LangString str_msg_uninstalling ${LANG_RUSSIAN} \
"Удаление предыдущих версий программ..."
@@ -245,7 +255,8 @@ LangString str_msg_unregistering ${LANG_RUSSIAN} \
LangString str_vimrc_page_title ${LANG_RUSSIAN} \
"Установка параметров программы"
LangString str_vimrc_page_subtitle ${LANG_RUSSIAN} \
"Параметры, используемые для клавиатуры, «мыши» и функциональности программы"
"Параметры, используемые для клавиатуры, манипулятора «мышь» и \
функциональности программы"
LangString str_msg_compat_title ${LANG_RUSSIAN} \
" Варианты использования программы "
@@ -256,27 +267,26 @@ LangString str_msg_compat_vi ${LANG_RUSSIAN} \
LangString str_msg_compat_vim ${LANG_RUSSIAN} \
"Работа в варианте функциональности редактора Vim"
LangString str_msg_compat_defaults ${LANG_RUSSIAN} \
"Работа редактора Vim с некоторыми улучшениями (файл defaults.vim)"
"Включить некоторые улучшения (из файла defaults.vim)"
LangString str_msg_compat_all ${LANG_RUSSIAN} \
"Работа редактора Vim со всеми улучшениями (файл vimrc_example.vim). \
Используется по умолчанию"
"Включить все улучшения (из файла vimrc_example.vim). Стандартно"
LangString str_msg_keymap_title ${LANG_RUSSIAN} \
" Клавиатурные команды "
LangString str_msg_keymap_desc ${LANG_RUSSIAN} \
"Клавиатурные команды используемые в ОС Windows (CTRL+V, CTRL+C, CTRL+S, CTRL+F и т. п.)"
"Изменение клавиатурных команд CTRL+V, CTRL+C, CTRL+S, CTRL+F и т. п."
LangString str_msg_keymap_default ${LANG_RUSSIAN} \
"Не изменять клавиатурные команды. Использовать принятые в редакторе Vim"
"Без изменения, использовать как принято в редакторе Vim"
LangString str_msg_keymap_windows ${LANG_RUSSIAN} \
"Изменить указанные клавиатурные команды"
"Изменить и использовать как принято в ОС Windows"
LangString str_msg_mouse_title ${LANG_RUSSIAN} \
" Манипулятор «мышь» "
LangString str_msg_mouse_desc ${LANG_RUSSIAN} \
"Действий правой и левой кнопки манипулятора «мышь»"
"Действия правой и левой кнопки манипулятора «мышь»"
LangString str_msg_mouse_default ${LANG_RUSSIAN} \
"Правая кнопка — всплывающее меню, левая кнопка — режим визуальный"
"Правая — всплывающее меню, левая — режим визуальный (Vim)"
LangString str_msg_mouse_windows ${LANG_RUSSIAN} \
"Правая кнопка — всплывающее меню, левая кнопка — режим выборки (как в ОС Windows)"
"Правая — всплывающее меню, левая — режим выборки (Windows)"
LangString str_msg_mouse_unix ${LANG_RUSSIAN} \
"Правая кнопка — расширяемый режим выбора, левая кнопка — режим визуальный (как в UNIXподобных ОС)"
"Правая — расширение выборки, левая — режим визуальный (UNIX)"

View File

@@ -6,7 +6,7 @@
# fileencoding : UTF-8
# Author : Ivan Pešić
!insertmacro MUI_LANGUAGE "Српски"
!insertmacro MUI_LANGUAGE "Serbian"
# Overwrite the default translation.

149
runtime/autoload/cargo.vim Normal file
View File

@@ -0,0 +1,149 @@
" Last Modified: 2023-09-11
function! cargo#Load()
" Utility call to get this script loaded, for debugging
endfunction
function! cargo#cmd(args) abort
" Trim trailing spaces. This is necessary since :terminal command parses
" trailing spaces as an empty argument.
let args = substitute(a:args, '\s\+$', '', '')
if exists('g:cargo_shell_command_runner')
let cmd = g:cargo_shell_command_runner
elseif has('terminal')
let cmd = 'terminal'
elseif has('nvim')
let cmd = 'noautocmd new | terminal'
else
let cmd = '!'
endif
execute cmd 'cargo' args
endfunction
function! s:nearest_cargo(...) abort
" If the second argument is not specified, the first argument determines
" whether we will start from the current directory or the directory of the
" current buffer, otherwise, we start with the provided path on the
" second argument.
let l:is_getcwd = get(a:, 1, 0)
if l:is_getcwd
let l:starting_path = get(a:, 2, getcwd())
else
let l:starting_path = get(a:, 2, expand('%:p:h'))
endif
return findfile('Cargo.toml', l:starting_path . ';')
endfunction
function! cargo#nearestCargo(is_getcwd) abort
return s:nearest_cargo(a:is_getcwd)
endfunction
function! cargo#nearestWorkspaceCargo(is_getcwd) abort
let l:nearest = s:nearest_cargo(a:is_getcwd)
while l:nearest !=# ''
for l:line in readfile(l:nearest, '', 0x100)
if l:line =~# '\V[workspace]'
return l:nearest
endif
endfor
let l:next = fnamemodify(l:nearest, ':p:h:h')
let l:nearest = s:nearest_cargo(0, l:next)
endwhile
return ''
endfunction
function! cargo#nearestRootCargo(is_getcwd) abort
" Try to find a workspace Cargo.toml, and if not found, take the nearest
" regular Cargo.toml
let l:workspace_cargo = cargo#nearestWorkspaceCargo(a:is_getcwd)
if l:workspace_cargo !=# ''
return l:workspace_cargo
endif
return s:nearest_cargo(a:is_getcwd)
endfunction
function! cargo#build(args)
call cargo#cmd("build " . a:args)
endfunction
function! cargo#check(args)
call cargo#cmd("check " . a:args)
endfunction
function! cargo#clean(args)
call cargo#cmd("clean " . a:args)
endfunction
function! cargo#doc(args)
call cargo#cmd("doc " . a:args)
endfunction
function! cargo#new(args)
call cargo#cmd("new " . a:args)
cd `=a:args`
endfunction
function! cargo#init(args)
call cargo#cmd("init " . a:args)
endfunction
function! cargo#run(args)
call cargo#cmd("run " . a:args)
endfunction
function! cargo#test(args)
call cargo#cmd("test " . a:args)
endfunction
function! cargo#bench(args)
call cargo#cmd("bench " . a:args)
endfunction
function! cargo#update(args)
call cargo#cmd("update " . a:args)
endfunction
function! cargo#search(args)
call cargo#cmd("search " . a:args)
endfunction
function! cargo#publish(args)
call cargo#cmd("publish " . a:args)
endfunction
function! cargo#install(args)
call cargo#cmd("install " . a:args)
endfunction
function! cargo#runtarget(args)
let l:filename = expand('%:p')
let l:read_manifest = system('cargo read-manifest')
let l:metadata = json_decode(l:read_manifest)
let l:targets = get(l:metadata, 'targets', [])
let l:did_run = 0
for l:target in l:targets
let l:src_path = get(l:target, 'src_path', '')
let l:kinds = get(l:target, 'kind', [])
let l:name = get(l:target, 'name', '')
if l:src_path == l:filename
if index(l:kinds, 'example') != -1
let l:did_run = 1
call cargo#run("--example " . shellescape(l:name) . " " . a:args)
return
elseif index(l:kinds, 'bin') != -1
let l:did_run = 1
call cargo#run("--bin " . shellescape(l:name) . " " . a:args)
return
endif
endif
endfor
if l:did_run != 1
call cargo#run(a:args)
return
endif
endfunction
" vim: set et sw=4 sts=4 ts=8:

View File

@@ -0,0 +1,29 @@
" Last Modified: 2023-09-11
function! cargo#quickfix#CmdPre() abort
if &filetype ==# 'rust' && get(b:, 'current_compiler', '') ==# 'cargo' &&
\ &makeprg =~ '\V\^cargo\ \.\*'
" Preserve the current directory, and 'lcd' to the nearest Cargo file.
let b:rust_compiler_cargo_qf_has_lcd = haslocaldir()
let b:rust_compiler_cargo_qf_prev_cd = getcwd()
let b:rust_compiler_cargo_qf_prev_cd_saved = 1
let l:nearest = fnamemodify(cargo#nearestRootCargo(0), ':h')
execute 'lchdir! '.l:nearest
else
let b:rust_compiler_cargo_qf_prev_cd_saved = 0
endif
endfunction
function! cargo#quickfix#CmdPost() abort
if exists("b:rust_compiler_cargo_qf_prev_cd_saved") && b:rust_compiler_cargo_qf_prev_cd_saved
" Restore the current directory.
if b:rust_compiler_cargo_qf_has_lcd
execute 'lchdir! '.b:rust_compiler_cargo_qf_prev_cd
else
execute 'chdir! '.b:rust_compiler_cargo_qf_prev_cd
endif
let b:rust_compiler_cargo_qf_prev_cd_saved = 0
endif
endfunction
" vim: set et sw=4 sts=4 ts=8:

View File

@@ -1,10 +1,11 @@
vim9script noclear
# Vim completion script
# Language: C
# Maintainer: Bram Moolenaar <Bram@vim.org>
# Language: C
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2023 Aug 10
# Rewritten in Vim9 script by github user lacygoill
# Last Change: 2022 Jan 31
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
var prepended: string
var grepCache: dict<list<dict<any>>>

View File

@@ -3,7 +3,7 @@ vim9script
# Language: ConTeXt typesetting engine
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
# Latest Revision: 2022 Sep 19
# Latest Revision: 2023 Dec 26
# Typesetting {{{
import autoload './typeset.vim'

View File

@@ -2,8 +2,9 @@ vim9script
# Vim functions for file type detection
#
# Maintainer: Bram Moolenaar <Bram@vim.org>
# Last Change: 2023 Jun 09
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2024 Feb 18
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
# These functions are moved here from runtime/filetype.vim to make startup
# faster.
@@ -61,7 +62,7 @@ export def FTasmsyntax()
endif
enddef
var ft_visual_basic_content = '\cVB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
var ft_visual_basic_content = '\c^\s*\%(Attribute\s\+VB_Name\|Begin\s\+\%(VB\.\|{\%(\x\+-\)\+\x\+}\)\)'
# See FTfrm() for Visual Basic form file detection
export def FTbas()
@@ -145,12 +146,20 @@ export def FTcls()
return
endif
if getline(1) =~ '^\v%(\%|\\)'
setf tex
elseif getline(1)[0] == '#' && getline(1) =~ 'rexx'
var line1 = getline(1)
if line1 =~ '^#!.*\<\%(rexx\|regina\)\>'
setf rexx
elseif getline(1) == 'VERSION 1.0 CLASS'
return
elseif line1 == 'VERSION 1.0 CLASS'
setf vb
return
endif
var nonblank1 = getline(nextnonblank(1))
if nonblank1 =~ '^\v%(\%|\\)'
setf tex
elseif nonblank1 =~ '^\s*\%(/\*\|::\w\)'
setf rexx
else
setf st
endif
@@ -270,6 +279,19 @@ export def DtraceCheck()
endif
enddef
export def FTdef()
if get(g:, "filetype_def", "") == "modula2" || IsModula2()
SetFiletypeModula2()
return
endif
if exists("g:filetype_def")
exe "setf " .. g:filetype_def
else
setf def
endif
enddef
export def FTe()
if exists('g:filetype_euphoria')
exe 'setf ' .. g:filetype_euphoria
@@ -286,12 +308,48 @@ export def FTe()
endif
enddef
def IsForth(): bool
var first_line = nextnonblank(1)
# SwiftForth block comment (line is usually filled with '-' or '=') or
# OPTIONAL (sometimes precedes the header comment)
if getline(first_line) =~? '^\%({\%(\s\|$\)\|OPTIONAL\s\)'
return true
endif
var n = first_line
while n < 100 && n <= line("$")
# Forth comments and colon definitions
if getline(n) =~ '^[:(\\] '
return true
endif
n += 1
endwhile
return false
enddef
# Distinguish between Forth and Fortran
export def FTf()
if exists("g:filetype_f")
exe "setf " .. g:filetype_f
elseif IsForth()
setf forth
else
setf fortran
endif
enddef
export def FTfrm()
if exists("g:filetype_frm")
exe "setf " .. g:filetype_frm
return
endif
if getline(1) == "VERSION 5.00"
setf vb
return
endif
var lines = getline(1, min([line("$"), 5]))
if match(lines, ft_visual_basic_content) > -1
@@ -301,21 +359,13 @@ export def FTfrm()
endif
enddef
# Distinguish between Forth and F#.
# Provided by Doug Kearns.
# Distinguish between Forth and F#
export def FTfs()
if exists("g:filetype_fs")
exe "setf " .. g:filetype_fs
elseif IsForth()
setf forth
else
var n = 1
while n < 100 && n <= line("$")
# Forth comments and colon definitions
if getline(n) =~ "^[:(\\\\] "
setf forth
return
endif
n += 1
endwhile
setf fsharp
endif
enddef
@@ -480,16 +530,53 @@ def IsLProlog(): bool
return getline(lnum) =~ '\<module\s\+\w\+\s*\.\s*\(%\|$\)'
enddef
def IsModula2(): bool
return getline(nextnonblank(1)) =~ '\<MODULE\s\+\w\+\s*\%(\[.*]\s*\)\=;\|^\s*(\*'
enddef
def SetFiletypeModula2()
const KNOWN_DIALECTS = ["iso", "pim", "r10"]
const KNOWN_EXTENSIONS = ["gm2"]
const LINE_COUNT = 200
const TAG = '(\*!m2\(\w\+\)\%(+\(\w\+\)\)\=\*)'
var dialect = get(g:, "modula2_default_dialect", "pim")
var extension = get(g:, "modula2_default_extension", "")
var matches = []
# ignore unknown dialects or badly formatted tags
for lnum in range(1, min([line("$"), LINE_COUNT]))
matches = matchlist(getline(lnum), TAG)
if !empty(matches)
if index(KNOWN_DIALECTS, matches[1]) >= 0
dialect = matches[1]
endif
if index(KNOWN_EXTENSIONS, matches[2]) >= 0
extension = matches[2]
endif
break
endif
endfor
modula2#SetDialect(dialect, extension)
setf modula2
enddef
# Determine if *.mod is ABB RAPID, LambdaProlog, Modula-2, Modsim III or go.mod
export def FTmod()
if get(g:, "filetype_mod", "") == "modula2" || IsModula2()
SetFiletypeModula2()
return
endif
if exists("g:filetype_mod")
exe "setf " .. g:filetype_mod
elseif expand("<afile>") =~ '\<go.mod$'
setf gomod
elseif IsLProlog()
setf lprolog
elseif getline(nextnonblank(1)) =~ '\%(\<MODULE\s\+\w\+\s*;\|^\s*(\*\)'
setf modula2
elseif IsRapid()
setf rapid
else
@@ -553,23 +640,27 @@ export def FTprogress_cweb()
endif
enddef
export def FTprogress_asm()
# These include the leading '%' sign
var ft_swig_keywords = '^\s*%\%(addmethods\|apply\|beginfile\|clear\|constant\|define\|echo\|enddef\|endoffile\|extend\|feature\|fragment\|ignore\|import\|importfile\|include\|includefile\|inline\|insert\|keyword\|module\|name\|namewarn\|native\|newobject\|parms\|pragma\|rename\|template\|typedef\|typemap\|types\|varargs\|warn\)'
# This is the start/end of a block that is copied literally to the processor file (C/C++)
var ft_swig_verbatim_block_start = '^\s*%{'
export def FTi()
if exists("g:filetype_i")
exe "setf " .. g:filetype_i
return
endif
# This function checks for an assembly comment the first ten lines.
# This function checks for an assembly comment or a SWIG keyword or verbatim block in the first 50 lines.
# If not found, assume Progress.
var lnum = 1
while lnum <= 10 && lnum < line('$')
while lnum <= 50 && lnum < line('$')
var line = getline(lnum)
if line =~ '^\s*;' || line =~ '^\*'
FTasm()
return
elseif line !~ '^\s*$' || line =~ '^/\*'
# Not an empty line: Doesn't look like valid assembly code.
# Or it looks like a Progress /* comment
break
elseif line =~ ft_swig_keywords || line =~ ft_swig_verbatim_block_start
setf swig
return
endif
lnum += 1
endwhile
@@ -1145,33 +1236,61 @@ export def FTv()
# ":setf" will do nothing, bail out early
return
endif
if exists("g:filetype_v")
exe "setf " .. g:filetype_v
return
endif
for line in getline(1, 200)
if line[0] =~ '^\s*/'
var in_comment = 0
for lnum in range(1, min([line("$"), 200]))
var line = getline(lnum)
# Skip Verilog and V comments (lines and blocks).
if line =~ '^\s*/\*'
# start comment block
in_comment = 1
endif
if in_comment == 1
if line =~ '\*/'
# end comment block
in_comment = 0
endif
# skip comment-block line
continue
endif
if line =~ '^\s*//'
# skip comment line
continue
endif
# Coq: line ends with a '.' followed by an optional variable number of
# spaces or contains the start of a comment, but not inside a Verilog or V
# comment.
# Example: "Definition x := 10. (*".
if (line =~ '\.\s*$' && line !~ '/[/*]') || (line =~ '(\*' && line !~ '/[/*].*(\*')
setf coq
return
endif
# Verilog: line ends with ';' followed by an optional variable number of
# spaces and an optional start of a comment.
# Example: " b <= a + 1; // Add 1".
if line =~ ';\(\s*\)\?\(/.*\)\?$'
if line =~ ';\s*\(/[/*].*\)\?$'
setf verilog
return
endif
# Coq: line ends with a '.' followed by an optional variable number of
# spaces and an optional start of a comment.
# Example: "Definition x := 10. (*".
if line =~ '\.\(\s*\)\?\((\*.*\)\?$'
setf coq
return
endif
endfor
# No line matched, fall back to "v".
setf v
enddef
export def FTvba()
if getline(1) =~ '^["#] Vimball Archiver'
setf vim
else
setf vb
endif
enddef
# Uncomment this line to check for compilation errors early
# defcompile

182
runtime/autoload/dist/json.vim vendored Normal file
View File

@@ -0,0 +1,182 @@
vim9script
# Maintainer: Maxim Kim <habamax@gmail.com>
# Last update: 2023-12-10
#
# Set of functions to format/beautify JSON data structures.
#
# Could be used to reformat a minified json in a buffer (put it into ~/.vim/ftplugin/json.vim):
# import autoload 'dist/json.vim'
# setl formatexpr=json.FormatExpr()
#
# Or to get a formatted string out of vim's dict/list/string:
# vim9script
# import autoload 'dist/json.vim'
# echo json.Format({
# "widget": { "debug": "on", "window": { "title": "Sample \"Konfabulator\" Widget",
# "name": "main_window", "width": 500, "height": 500
# },
# "image": { "src": "Images/Sun.png", "name": "sun1", "hOffset": 250,
# "vOffset": 250, "alignment": "center" },
# "text": { "data": "Click Here", "size": 36, "style": "bold", "name": "text1",
# "hOffset": 250, "vOffset": 100, "alignment": "center",
# "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;" } }
# })
#
# Should output:
# {
# "widget": {
# "debug": "on",
# "window": {
# "title": "Sample \"Konfabulator\" Widget",
# "name": "main_window",
# "width": 500,
# "height": 500
# },
# "image": {
# "src": "Images/Sun.png",
# "name": "sun1",
# "hOffset": 250,
# "vOffset": 250,
# "alignment": "center"
# },
# "text": {
# "data": "Click Here",
# "size": 36,
# "style": "bold",
# "name": "text1",
# "hOffset": 250,
# "vOffset": 100,
# "alignment": "center",
# "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
# }
# }
# }
#
# NOTE: order of `key: value` pairs is not kept.
#
# You can also use a JSON string instead of vim's dict/list to maintain order:
# echo json.Format('{"hello": 1, "world": 2}')
# {
# "hello": 1,
# "world": 2
# }
# To be able to reformat with `gq` add following to `~/.vim/ftplugin/json.vim`:
# import autoload 'dist/json.vim'
# setl formatexpr=json.FormatExpr()
export def FormatExpr(): number
FormatRange(v:lnum, v:lnum + v:count - 1)
return 0
enddef
# import autoload 'dist/json.vim'
# command -range=% JSONFormat json.FormatRange(<line1>, <line2>)
export def FormatRange(line1: number, line2: number)
var indent_base = matchstr(getline(line1), '^\s*')
var indent = &expandtab ? repeat(' ', &shiftwidth) : "\t"
var [l1, l2] = line1 > line2 ? [line2, line1] : [line1, line2]
var json_src = getline(l1, l2)->join()
var json_fmt = Format(json_src, {use_tabs: !&et, indent: &sw, indent_base: indent_base})->split("\n")
exe $":{l1},{l2}d"
if line('$') == 1 && getline(1) == ''
setline(l1, json_fmt[0])
append(l1, json_fmt[1 : ])
else
append(l1 - 1, json_fmt)
endif
enddef
# Format JSON string or dict/list as JSON
# import autoload 'dist/json.vim'
# echo json.Format('{"hello": "world"}', {use_tabs: false, indent: 2, indent_base: 0})
# {
# "hello": "world"
# }
# echo json.Format({'hello': 'world'}, {use_tabs: false, indent: 2, indent_base: 0})
# {
# "hello": "world"
# }
#
# Note, when `obj` is dict, order of the `key: value` pairs might be different:
# echo json.Format({'hello': 1, 'world': 2})
# {
# "world": 2,
# "hello": 1
# }
export def Format(obj: any, params: dict<any> = {}): string
var obj_str = ''
if type(obj) == v:t_string
obj_str = obj
else
obj_str = json_encode(obj)
endif
var indent_lvl = 0
var indent_base = get(params, "indent_base", "")
var indent = get(params, "use_tabs", false) ? "\t" : repeat(' ', get(params, "indent", 2))
var json_line = indent_base
var json = ""
var state = ""
for char in obj_str
if state == ""
if char =~ '[{\[]'
json_line ..= char
json ..= json_line .. "\n"
indent_lvl += 1
json_line = indent_base .. repeat(indent, indent_lvl)
elseif char =~ '[}\]]'
if json_line !~ '^\s*$'
json ..= json_line .. "\n"
indent_lvl -= 1
if indent_lvl < 0
json_line = strpart(indent_base, -indent_lvl * len(indent))
else
json_line = indent_base .. repeat(indent, indent_lvl)
endif
elseif json =~ '[{\[]\n$'
json = json[ : -2]
json_line = substitute(json_line, '^\s*', '', '')
indent_lvl -= 1
endif
json_line ..= char
elseif char == ':'
json_line ..= char .. ' '
elseif char == '"'
json_line ..= char
state = 'QUOTE'
elseif char == ','
json_line ..= char
json ..= json_line .. "\n"
json_line = indent_base .. repeat(indent, indent_lvl)
elseif char !~ '\s'
json_line ..= char
endif
elseif state == "QUOTE"
json_line ..= char
if char == '\'
state = "ESCAPE"
elseif char == '"'
state = ""
endif
elseif state == "ESCAPE"
state = "QUOTE"
json_line ..= char
else
json_line ..= char
endif
endfor
if json_line !~ '^\s*$'
json ..= json_line .. "\n"
endif
return json
enddef

View File

@@ -1,9 +1,9 @@
" Vim filetype plugin autoload file
" Language: man
" Maintainer: Jason Franklin <vim@justemail.net>
" Maintainer: Jason Franklin <jason@oneway.dev>
" Maintainer: SungHyun Nam <goweol@gmail.com>
" Autoload Split: Bram Moolenaar
" Last Change: 2022 Jun 18
" Last Change: 2024 Jan 17 (make it work on AIX, see #13847)
let s:cpo_save = &cpo
set cpo-=C
@@ -13,39 +13,85 @@ let s:man_tag_depth = 0
let s:man_sect_arg = ""
let s:man_find_arg = "-w"
try
if !has("win32") && $OSTYPE !~ 'cygwin\|linux' && system('uname -s') =~ "SunOS" && system('uname -r') =~ "^5"
let s:man_sect_arg = "-s"
let s:man_find_arg = "-l"
if !has("win32") && $OSTYPE !~ 'cygwin\|linux'
" cache the value
let uname_s = system('uname -s')
if uname_s =~ "SunOS" && system('uname -r') =~ "^5"
" Special Case for Man on SunOS
let s:man_sect_arg = "-s"
let s:man_find_arg = "-l"
elseif uname_s =~? 'AIX'
" Special Case for Man on AIX
let s:man_sect_arg = ""
let s:man_find_arg = ""
endif
endif
catch /E145:/
" Ignore the error in restricted mode
endtry
unlet! uname_s
func s:ParseIntoPageAndSection()
" Accommodate a reference that terminates in a hyphen.
"
" See init_charset_table() at
" https://git.savannah.gnu.org/cgit/groff.git/tree/src/roff/troff/input.cpp?h=1.22.4#n6794
"
" See can_break_after() at
" https://git.savannah.gnu.org/cgit/groff.git/tree/src/roff/troff/charinfo.h?h=1.22.4#n140
"
" Assumptions and limitations:
" 1) Manual-page references (in consequence of command-related filenames)
" do not contain non-ASCII HYPHENs (0x2010), any terminating HYPHEN
" must have been introduced to mark division of a word at the end of
" a line and can be discarded; whereas similar references may contain
" ASCII HYPHEN-MINUSes (0x002d) and any terminating HYPHEN-MINUS forms
" a compound word in addition to marking word division.
" 2) Well-formed manual-page references always have a section suffix, e.g.
" "git-commit(1)", therefore suspended hyphenated compounds are not
" determined, e.g. [V] (With cursor at _git-merge-_ below...)
" ".................... git-merge- and git-merge-base. (See git-cherry-
" pick(1) and git-cherry(1).)" (... look up "git-merge-pick(1)".)
"
" Note that EM DASH (0x2014), a third stooge from init_charset_table(),
" neither connects nor divides parts of a word.
let str = expand("<cWORD>")
if str =~ '\%u2010$' " HYPHEN (-1).
let str = strpart(str, 0, strridx(str, "\u2010"))
" Append the leftmost WORD (or an empty string) from the line below.
let str .= get(split(get(getbufline(bufnr('%'), line('.') + 1), 0, '')), 0, '')
elseif str =~ '-$' " HYPHEN-MINUS.
" Append the leftmost WORD (or an empty string) from the line below.
let str .= get(split(get(getbufline(bufnr('%'), line('.') + 1), 0, '')), 0, '')
endif
" According to man(1), section name formats vary (MANSECT):
" 1 n l 8 3 2 3posix 3pm 3perl 3am 5 4 9 6 7
let parts = matchlist(str, '\(\k\+\)(\(\k\+\))')
return (len(parts) > 2)
\ ? {'page': parts[1], 'section': parts[2]}
\ : {'page': matchstr(str, '\k\+'), 'section': ''}
endfunc
func dist#man#PreGetPage(cnt)
if a:cnt == 0
let old_isk = &iskeyword
if &ft == 'man'
setl iskeyword+=(,)
endif
let str = expand("<cword>")
let &l:iskeyword = old_isk
let page = substitute(str, '(*\(\k\+\).*', '\1', '')
let sect = substitute(str, '\(\k\+\)(\([^()]*\)).*', '\2', '')
if match(sect, '^[0-9 ]\+$') == -1
let sect = ""
endif
if sect == page
let sect = ""
endif
let what = s:ParseIntoPageAndSection()
let sect = what.section
let page = what.page
else
let what = s:ParseIntoPageAndSection()
let sect = a:cnt
let page = expand("<cword>")
let page = what.page
endif
call dist#man#GetPage('', sect, page)
endfunc
func s:GetCmdArg(sect, page)
if empty(a:sect)
return shellescape(a:page)
endif
@@ -75,9 +121,11 @@ func dist#man#GetPage(cmdmods, ...)
return
endif
" To support: nmap K :Man <cword>
if page == '<cword>'
let page = expand('<cword>')
" To support: nmap K :Man <cWORD><CR>
if page ==? '<cword>'
let what = s:ParseIntoPageAndSection()
let sect = what.section
let page = what.page
endif
if !exists('g:ft_man_no_sect_fallback') || (g:ft_man_no_sect_fallback == 0)
@@ -154,9 +202,14 @@ func dist#man#GetPage(cmdmods, ...)
endif
let env_cmd = s:env_has_u ? 'env -u MANPAGER' : 'env MANPAGER=cat'
let env_cmd .= ' GROFF_NO_SGR=1'
let man_cmd = env_cmd . ' man ' . s:GetCmdArg(sect, page) . ' | col -b'
let man_cmd = env_cmd . ' man ' . s:GetCmdArg(sect, page)
silent exec "r !" . man_cmd
" Emulate piping the buffer through the "col -b" command.
" Ref: https://github.com/vim/vim/issues/12301
exe 'silent! keepjumps keeppatterns %s/\v(.)\b\ze\1?//e' .. (&gdefault ? '' : 'g')
if unsetwidth
let $MANWIDTH = ''
endif
@@ -180,9 +233,10 @@ func dist#man#PopPage()
exec "let s:man_tag_buf=s:man_tag_buf_".s:man_tag_depth
exec "let s:man_tag_lin=s:man_tag_lin_".s:man_tag_depth
exec "let s:man_tag_col=s:man_tag_col_".s:man_tag_depth
exec s:man_tag_buf."b"
exec s:man_tag_lin
exec "norm! ".s:man_tag_col."|"
call cursor(s:man_tag_lin, s:man_tag_col)
exec "unlet s:man_tag_buf_".s:man_tag_depth
exec "unlet s:man_tag_lin_".s:man_tag_depth
exec "unlet s:man_tag_col_".s:man_tag_depth

View File

@@ -3,8 +3,9 @@ vim9script
# Vim function for detecting a filetype from the file contents.
# Invoked from "scripts.vim" in 'runtimepath'
#
# Maintainer: Bram Moolenaar <Bram@vim.org>
# Last Change: 2023 Jun 09
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2023 Aug 10
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
export def DetectFiletype()
var line1 = getline(1)
@@ -208,6 +209,26 @@ export def Exe2filetype(name: string, line1: string): string
elseif name =~ 'nix-shell'
return 'nix'
# Crystal
elseif name =~ '^crystal\>'
return 'crystal'
# Rexx
elseif name =~ '^\%(rexx\|regina\)\>'
return 'rexx'
# Janet
elseif name =~ '^janet\>'
return 'janet'
# Dart
elseif name =~ '^dart\>'
return 'dart'
# Execline (s6)
elseif name =~ '^execlineb\>'
return 'execline'
endif
return ''
@@ -352,7 +373,7 @@ def DetectFromText(line1: string)
# Strace
# inaccurate fast match first, then use accurate slow match
elseif (line1 =~ 'execve(' && line1 =~ '^[0-9:.]* *execve(')
elseif (line1 =~ 'execve(' && line1 =~ '^[0-9:. ]*execve(')
|| line1 =~ '^__libc_start_main'
setl ft=strace

32
runtime/autoload/dist/vim.vim vendored Normal file
View File

@@ -0,0 +1,32 @@
" Vim runtime support library,
" runs the vim9 script version or legacy script version
" on demand (mostly for Neovim compatability)
"
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Nov 04
" enable the zip and gzip plugin by default, if not set
if !exists('g:zip_exec')
let g:zip_exec = 1
endif
if !exists('g:gzip_exec')
let g:gzip_exec = 1
endif
if !has('vim9script')
function dist#vim#IsSafeExecutable(filetype, executable)
let cwd = getcwd()
return get(g:, a:filetype .. '_exec', get(g:, 'plugin_exec', 0)) &&
\ (fnamemodify(exepath(a:executable), ':p:h') !=# cwd
\ || (split($PATH, has('win32') ? ';' : ':')->index(cwd) != -1 &&
\ cwd != '.'))
endfunction
finish
endif
def dist#vim#IsSafeExecutable(filetype: string, executable: string): bool
return dist#vim9#IsSafeExecutable(filetype, executable)
enddef

17
runtime/autoload/dist/vim9.vim vendored Normal file
View File

@@ -0,0 +1,17 @@
vim9script
# Vim runtime support library
#
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2023 Oct 25
export def IsSafeExecutable(filetype: string, executable: string): bool
var cwd = getcwd()
return get(g:, filetype .. '_exec', get(g:, 'plugin_exec', 0))
&& (fnamemodify(exepath(executable), ':p:h') !=# cwd
|| (split($PATH, has('win32') ? ';' : ':')->index(cwd) != -1
&& cwd != '.'))
enddef
# Uncomment this line to check for compilation errors early
# defcompile

View File

@@ -2,7 +2,10 @@ vim9script
# Language: Vim script
# Maintainer: github user lacygoill
# Last Change: 2023 Feb 01
# Last Change: 2023 Jun 29
#
# Includes Changes from Vim:
# - 2024 Feb 09: Fix indent after literal Dict (A. Radev via #13966)
# NOTE: Whenever you change the code, make sure the tests are still passing:
#
@@ -112,10 +115,6 @@ const DICT_KEY: string = '^\s*\%('
.. '\)'
.. ':\%(\s\|$\)'
# NOT_A_DICT_KEY {{{3
const NOT_A_DICT_KEY: string = ':\@!'
# END_OF_COMMAND {{{3
const END_OF_COMMAND: string = $'\s*\%($\|||\@!\|{INLINE_COMMENT}\)'
@@ -197,13 +196,13 @@ patterns =<< trim eval END
ldo\=\>!\=
tabdo\=\>
windo\>
au\%[tocmd]\>.*
com\%[mand]\>.*
au\%[tocmd]\>!\=.*
com\%[mand]\>!\=.*
g\%[lobal]!\={PATTERN_DELIMITER}.*
v\%[global]!\={PATTERN_DELIMITER}.*
END
const HIGHER_ORDER_COMMAND: string = $'\%(^\|{BAR_SEPARATION}\)\s*\<\%({patterns->join('\|')}\){NOT_A_DICT_KEY}'
const HIGHER_ORDER_COMMAND: string = $'\%(^\|{BAR_SEPARATION}\)\s*\<\%({patterns->join('\|')}\)\%(\s\|$\)\@='
# START_MIDDLE_END {{{3
@@ -254,7 +253,7 @@ START_MIDDLE_END = START_MIDDLE_END
kwds->map((_, kwd: string) => kwd == ''
? ''
: $'\%(^\|{BAR_SEPARATION}\|\<sil\%[ent]\|{HIGHER_ORDER_COMMAND}\)\s*'
.. $'\<\%({kwd}\)\>\%(\s*{OPERATOR}\)\@!'))
.. $'\<\%({kwd}\)\>\%(\s\|$\|!\)\@=\%(\s*{OPERATOR}\)\@!'))
lockvar! START_MIDDLE_END
@@ -279,7 +278,7 @@ patterns = BLOCKS
const ENDS_BLOCK_OR_CLAUSE: string = '^\s*\%(' .. patterns->join('\|') .. $'\){END_OF_COMMAND}'
.. $'\|^\s*cat\%[ch]\%(\s\+\({PATTERN_DELIMITER}\).*\1\)\={END_OF_COMMAND}'
.. $'\|^\s*elseif\=\>\%({OPERATOR}\)\@!'
.. $'\|^\s*elseif\=\>\%(\s\|$\)\@=\%(\s*{OPERATOR}\)\@!'
# STARTS_NAMED_BLOCK {{{3
@@ -296,7 +295,7 @@ patterns = []
endfor
}
const STARTS_NAMED_BLOCK: string = $'^\s*\%(sil\%[ent]\s\+\)\=\%({patterns->join('\|')}\)\>{NOT_A_DICT_KEY}'
const STARTS_NAMED_BLOCK: string = $'^\s*\%(sil\%[ent]\s\+\)\=\%({patterns->join('\|')}\)\>\%(\s\|$\|!\)\@='
# STARTS_CURLY_BLOCK {{{3
@@ -312,7 +311,7 @@ const STARTS_CURLY_BLOCK: string = '\%('
# STARTS_FUNCTION {{{3
const STARTS_FUNCTION: string = $'^\s*\%({MODIFIERS.def}\)\=def\>{NOT_A_DICT_KEY}'
const STARTS_FUNCTION: string = $'^\s*\%({MODIFIERS.def}\)\=def\>!\=\s\@='
# ENDS_FUNCTION {{{3
@@ -385,7 +384,7 @@ const LINE_CONTINUATION_AT_EOL: string = '\%('
# It can be the start of a dictionary or a block.
# We only want to match the former.
.. '\|' .. $'^\%({STARTS_CURLY_BLOCK}\)\@!.*\zs{{'
.. '\)\s*\%(\s#.*\)\=$'
.. '\)\s*\%(\s#[^{].*\)\=$'
# }}}2
# SOL {{{2
# BACKSLASH_AT_SOL {{{3

View File

@@ -1,6 +1,7 @@
" ---------------------------------------------------------------------
" getscript.vim
" Author: Charles E. Campbell
" Maintainer: This runtime file is looking for a new maintainer.
" Original Author: Charles E. Campbell
" Date: Jan 21, 2014
" Version: 36
" Installing: :help glvs-install

View File

@@ -1,6 +1,7 @@
" Vim autoload file for editing compressed files.
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2016 Sep 28
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Aug 10
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" These functions are used by the gzip plugin.
@@ -9,12 +10,17 @@
fun s:check(cmd)
let name = substitute(a:cmd, '\(\S*\).*', '\1', '')
if !exists("s:have_" . name)
" safety check, don't execute anything from the current directory
let f = dist#vim#IsSafeExecutable('gzip', name)
if !f
echoerr "Warning: NOT executing " .. name .. " from current directory!"
endif
let e = executable(name)
if e < 0
let r = system(name . " --version")
let e = (r !~ "not found" && r != "")
endif
exe "let s:have_" . name . "=" . e
exe "let s:have_" . name . "=" . (e && f)
endif
exe "return s:have_" . name
endfun

View File

@@ -156,8 +156,8 @@ function! javascriptcomplete#CompleteJS(findstart, base)
\ 'text', 'vLink']
let bodys = bodyprop
" Document - document.
let docuprop = ['anchors', 'body', 'characterSet', 'doctype',
\ 'documentElement', 'documentURI', 'embeds', 'fonts', 'forms',
let docuprop = ['anchors', 'applets', 'body', 'characterSet', 'childNodes',
\ 'doctype', 'documentElement', 'documentURI', 'embeds', 'fonts', 'forms',
\ 'head', 'hidden', 'images', 'implementation', 'lastStyleSheetSet',
\ 'links', 'plugins', 'preferredStyleSheetSet', 'scripts',
\ 'scrollingElement', 'selectedStyleSheetSet', 'styleSheetSets',
@@ -171,7 +171,7 @@ function! javascriptcomplete#CompleteJS(findstart, base)
\ 'createEvent', 'createExpression', 'createNSResolver',
\ 'createNodeIterator', 'createProcessingInstruction', 'createRange',
\ 'createTextNode', 'createTouchList', 'createTreeWalker',
\ 'enableStyleSheetsForSet', 'evaluate', 'focus', 'getElementById',
\ 'enableStyleSheetsForSet', 'evaluate', 'focus',
\ 'getElementById', 'getElementsByClassName', 'getElementsByName',
\ 'getElementsByTagName', 'getElementsByTagNameNS',
\ 'hasStorageAccess', 'importNode', 'onClick', 'onDblClick',

View File

@@ -0,0 +1,31 @@
" Vim filetype plugin file
" Language: Modula-2
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2024 Jan 04
" Dialect can be one of pim, iso, r10
function modula2#GetDialect() abort
if exists("b:modula2.dialect")
return b:modula2.dialect
endif
if exists("g:modula2_default_dialect")
let dialect = g:modula2_default_dialect
else
let dialect = "pim"
endif
return dialect
endfunction
function modula2#SetDialect(dialect, extension = "") abort
if exists("b:modula2")
unlockvar! b:modula2
endif
let b:modula2 = #{ dialect: a:dialect, extension: a:extension }
lockvar! b:modula2
endfunction
" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:

View File

@@ -1,8 +1,14 @@
" netrw.vim: Handles file transfer and remote directory listing across
" AUTOLOAD SECTION
" Date: May 03, 2023
" Version: 173
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Maintainer: This runtime file is looking for a new maintainer.
" Date: May 03, 2023
" Version: 173a
" Last Change:
" 2023 Nov 21 by Vim Project: ignore wildignore when expanding $COMSPEC (v173a)
" 2023 Nov 22 by Vim Project: fix handling of very long filename on longlist style (v173a)
" 2024 Feb 19 by Vim Project: (announce adoption)
" 2024 Feb 29 by Vim Project: handle symlinks in tree mode correctly
" Former Maintainer: Charles E Campbell
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
@@ -400,7 +406,7 @@ if !exists("g:netrw_localcopycmd")
if g:netrw_cygwin
let g:netrw_localcopycmd= "cp"
else
let g:netrw_localcopycmd = expand("$COMSPEC")
let g:netrw_localcopycmd = expand("$COMSPEC", v:true)
let g:netrw_localcopycmdopt= " /c copy"
endif
elseif has("unix") || has("macunix")
@@ -415,7 +421,7 @@ if !exists("g:netrw_localcopydircmd")
let g:netrw_localcopydircmd = "cp"
let g:netrw_localcopydircmdopt= " -R"
else
let g:netrw_localcopydircmd = expand("$COMSPEC")
let g:netrw_localcopydircmd = expand("$COMSPEC", v:true)
let g:netrw_localcopydircmdopt= " /c xcopy /e /c /h /i /k"
endif
elseif has("unix")
@@ -436,7 +442,7 @@ if has("win32") || has("win95") || has("win64") || has("win16")
if g:netrw_cygwin
call s:NetrwInit("g:netrw_localmkdir","mkdir")
else
let g:netrw_localmkdir = expand("$COMSPEC")
let g:netrw_localmkdir = expand("$COMSPEC", v:true)
let g:netrw_localmkdiropt= " /c mkdir"
endif
else
@@ -452,7 +458,7 @@ if !exists("g:netrw_localmovecmd")
if g:netrw_cygwin
let g:netrw_localmovecmd= "mv"
else
let g:netrw_localmovecmd = expand("$COMSPEC")
let g:netrw_localmovecmd = expand("$COMSPEC", v:true)
let g:netrw_localmovecmdopt= " /c move"
endif
elseif has("unix") || has("macunix")
@@ -1166,7 +1172,6 @@ fun! netrw#Explore(indx,dosplit,style,...)
2match none
if exists("s:explore_match") | unlet s:explore_match | endif
if exists("s:explore_prvdir") | unlet s:explore_prvdir | endif
echo " "
" call Decho("cleared explore match list",'~'.expand("<slnum>"))
endif
@@ -1961,7 +1966,7 @@ endfun
" Doing this means that netrw will not come up as having changed a
" setting last when it really didn't actually change it.
"
" Used by s:NetrwOptionsRestore() to restore each netrw-senstive setting
" Used by s:NetrwOptionsRestore() to restore each netrw-sensitive setting
" keepvars are set up by s:NetrwOptionsSave
fun! s:NetrwRestoreSetting(keepvar,setting)
""" call Dfunc("s:NetrwRestoreSetting(a:keepvar<".a:keepvar."> a:setting<".a:setting.">)")
@@ -2018,7 +2023,7 @@ fun! NetrwStatusLine()
if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr("%") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list")
" restore user's status line
let &stl = s:netrw_users_stl
let &l:stl = s:netrw_users_stl
let &laststatus = s:netrw_users_ls
if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
if exists("w:netrw_explore_line") |unlet w:netrw_explore_line |endif
@@ -2119,9 +2124,9 @@ fun! netrw#NetRead(mode,...)
let wholechoice = wholechoice . " " . choice
let ichoice = ichoice + 1
if ichoice > a:0
if !exists("g:netrw_quiet")
call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",3)
endif
if !exists("g:netrw_quiet")
call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",3)
endif
" call Dret("netrw#NetRead :2 getcwd<".getcwd().">")
return
endif
@@ -2542,9 +2547,9 @@ fun! netrw#NetWrite(...) range
let wholechoice= wholechoice . " " . choice
let ichoice = ichoice + 1
if choice > a:0
if !exists("g:netrw_quiet")
call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",13)
endif
if !exists("g:netrw_quiet")
call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",13)
endif
" call Dret("netrw#NetWrite")
return
endif
@@ -2815,7 +2820,7 @@ fun! netrw#NetWrite(...) range
if a:firstline == 1 && a:lastline == line("$")
" restore modifiability; usually equivalent to set nomod
let &mod= mod
let &l:mod= mod
" call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
elseif !exists("leavemod")
" indicate that the buffer has not been modified since last written
@@ -2998,13 +3003,13 @@ fun! s:NetrwGetFile(readcmd, tfile, method)
" to process this detection correctly.
" call Decho("detect filetype of local version of remote file<".rfile.">",'~'.expand("<slnum>"))
" call Decho("..did_filetype()=".did_filetype())
setl ft=
" setl ft=
" call Decho("..initial filetype<".&ft."> for buf#".bufnr()."<".bufname().">")
let iskkeep= &isk
setl isk-=/
filetype detect
" call Decho("..local filetype<".&ft."> for buf#".bufnr()."<".bufname().">")
let &isk= iskkeep
let &l:isk= iskkeep
" call Dredir("ls!","NetrwGetFile (renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">)")
let line1 = 1
let line2 = line("$")
@@ -3516,6 +3521,11 @@ fun! s:NetrwBookHistHandler(chg,curdir)
echo "bookmarked the current directory"
endif
try
call s:NetrwBookHistSave()
catch
endtry
elseif a:chg == 1
" change to the bookmarked directory
" call Decho("(user: <".v:count."gb>) change to the bookmarked directory",'~'.expand("<slnum>"))
@@ -3660,6 +3670,11 @@ fun! s:NetrwBookHistHandler(chg,curdir)
" call Decho("g:netrw_bookmarklist=".string(g:netrw_bookmarklist),'~'.expand("<slnum>"))
endif
" call Decho("resulting g:netrw_bookmarklist=".string(g:netrw_bookmarklist),'~'.expand("<slnum>"))
try
call s:NetrwBookHistSave()
catch
endtry
endif
call s:NetrwBookmarkMenu()
call s:NetrwTgtMenu()
@@ -4991,12 +5006,12 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
if g:netrw_chgwin >= 1
" call Decho("edit-a-file: changing window to #".g:netrw_chgwin.": (due to g:netrw_chgwin)",'~'.expand("<slnum>"))
if winnr("$")+1 == g:netrw_chgwin
" if g:netrw_chgwin is set to one more than the last window, then
" vertically split the last window to make that window available.
let curwin= winnr()
exe "NetrwKeepj keepalt ".winnr("$")."wincmd w"
vs
exe "NetrwKeepj keepalt ".g:netrw_chgwin."wincmd ".curwin
" if g:netrw_chgwin is set to one more than the last window, then
" vertically split the last window to make that window available.
let curwin= winnr()
exe "NetrwKeepj keepalt ".winnr("$")."wincmd w"
vs
exe "NetrwKeepj keepalt ".g:netrw_chgwin."wincmd ".curwin
endif
exe "NetrwKeepj keepalt ".g:netrw_chgwin."wincmd w"
endif
@@ -5303,7 +5318,8 @@ fun! s:NetrwBrowseUpDir(islocal)
endif
call s:RestorePosn(s:netrw_posn)
let curdir= substitute(curdir,'^.*[\/]','','')
call search('\<'.curdir.'/','wc')
let curdir= '\<'. escape(curdir, '~'). '/'
call search(curdir,'wc')
endif
" call Dret("s:NetrwBrowseUpDir")
endfun
@@ -5552,7 +5568,7 @@ fun! netrw#BrowseX(fname,remote)
" cleanup: remove temporary file,
" delete current buffer if success with handler,
" return to prior buffer (directory listing)
" Feb 12, 2008: had to de-activiate removal of
" Feb 12, 2008: had to de-activate removal of
" temporary file because it wasn't getting seen.
" if remote == 1 && fname != a:fname
"" call Decho("deleting temporary file<".fname.">",'~'.expand("<slnum>"))
@@ -5720,8 +5736,6 @@ fun! s:NetrwClearExplore()
if exists("w:netrw_explore_list") |unlet w:netrw_explore_list |endif
if exists("w:netrw_explore_bufnr") |unlet w:netrw_explore_bufnr |endif
" redraw!
echo " "
echo " "
" call Dret("s:NetrwClearExplore")
endfun
@@ -6116,7 +6130,7 @@ fun! s:NetrwServerEdit(islocal,fname)
" used something like <cr>.
" call Decho("user must have closed server AND did not use ctrl-r",'~'.expand("<slnum>"))
if exists("g:netrw_browse_split")
unlet g:netrw_browse_split
unlet g:netrw_browse_split
endif
let g:netrw_browse_split= 0
if exists("s:netrw_browse_split_".winnr())
@@ -6150,7 +6164,7 @@ fun! s:NetrwServerEdit(islocal,fname)
if !ctrlr
" call Decho("server<".g:netrw_servername."> not available and ctrl-r not used",'~'.expand("<slnum>"))
if exists("g:netrw_browse_split")
unlet g:netrw_browse_split
unlet g:netrw_browse_split
endif
let g:netrw_browse_split= 0
call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,a:fname))
@@ -6668,14 +6682,14 @@ fun! s:NetrwMaps(islocal)
nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse
imap <buffer> <leftmouse> <Plug>ILeftmouse
imap <buffer> <middlemouse> <Plug>IMiddlemouse
nno <buffer> <silent> <Plug>NetrwLeftmouse <leftmouse>:call <SID>NetrwLeftmouse(1)<cr>
nno <buffer> <silent> <Plug>NetrwCLeftmouse <leftmouse>:call <SID>NetrwCLeftmouse(1)<cr>
nno <buffer> <silent> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(1)<cr>
nno <buffer> <silent> <Plug>NetrwSLeftmouse <leftmouse>:call <SID>NetrwSLeftmouse(1)<cr>
nno <buffer> <silent> <Plug>NetrwSLeftdrag <leftmouse>:call <SID>NetrwSLeftdrag(1)<cr>
nno <buffer> <silent> <Plug>NetrwLeftmouse :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwLeftmouse(1)<cr>
nno <buffer> <silent> <Plug>NetrwCLeftmouse :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwCLeftmouse(1)<cr>
nno <buffer> <silent> <Plug>NetrwMiddlemouse :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwPrevWinOpen(1)<cr>
nno <buffer> <silent> <Plug>NetrwSLeftmouse :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwSLeftmouse(1)<cr>
nno <buffer> <silent> <Plug>NetrwSLeftdrag :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwSLeftdrag(1)<cr>
nmap <buffer> <silent> <Plug>Netrw2Leftmouse -
exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
exe 'nnoremap <buffer> <silent> <rightmouse> :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
exe 'vnoremap <buffer> <silent> <rightmouse> :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
endif
exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
@@ -6769,22 +6783,22 @@ fun! s:NetrwMaps(islocal)
nnoremap <buffer> <silent> <Plug>NetrwRefresh :call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
if g:netrw_mousemaps == 1
nmap <buffer> <leftmouse> <Plug>NetrwLeftmouse
nno <buffer> <silent> <Plug>NetrwLeftmouse <leftmouse>:call <SID>NetrwLeftmouse(0)<cr>
nno <buffer> <silent> <Plug>NetrwLeftmouse :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwLeftmouse(0)<cr>
nmap <buffer> <c-leftmouse> <Plug>NetrwCLeftmouse
nno <buffer> <silent> <Plug>NetrwCLeftmouse <leftmouse>:call <SID>NetrwCLeftmouse(0)<cr>
nno <buffer> <silent> <Plug>NetrwCLeftmouse :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwCLeftmouse(0)<cr>
nmap <buffer> <s-leftmouse> <Plug>NetrwSLeftmouse
nno <buffer> <silent> <Plug>NetrwSLeftmouse <leftmouse>:call <SID>NetrwSLeftmouse(0)<cr>
nno <buffer> <silent> <Plug>NetrwSLeftmouse :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwSLeftmouse(0)<cr>
nmap <buffer> <s-leftdrag> <Plug>NetrwSLeftdrag
nno <buffer> <silent> <Plug>NetrwSLeftdrag <leftmouse>:call <SID>NetrwSLeftdrag(0)<cr>
nno <buffer> <silent> <Plug>NetrwSLeftdrag :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwSLeftdrag(0)<cr>
nmap <middlemouse> <Plug>NetrwMiddlemouse
nno <buffer> <silent> <middlemouse> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr>
nno <buffer> <silent> <middlemouse> <Plug>NetrwMiddlemouse :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwPrevWinOpen(0)<cr>
nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse
nmap <buffer> <silent> <Plug>Netrw2Leftmouse -
imap <buffer> <leftmouse> <Plug>ILeftmouse
imap <buffer> <middlemouse> <Plug>IMiddlemouse
imap <buffer> <s-leftmouse> <Plug>ISLeftmouse
exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
exe 'nnoremap <buffer> <silent> <rightmouse> :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
exe 'vnoremap <buffer> <silent> <rightmouse> :exec "norm! \<lt>leftmouse>"<bar>call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
endif
exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
@@ -7382,8 +7396,7 @@ fun! s:NetrwMarkFileDiff(islocal)
exe "NetrwKeepj e ".fnameescape(fname)
diffthis
elseif cnt == 2 || cnt == 3
vsplit
wincmd l
below vsplit
" call Decho("diffthis: ".fname,'~'.expand("<slnum>"))
exe "NetrwKeepj e ".fnameescape(fname)
diffthis
@@ -7496,7 +7509,7 @@ fun! s:NetrwMarkFileExe(islocal,enbloc)
for fname in s:netrwmarkfilelist_{curbufnr}
if a:islocal
if g:netrw_keepdir
let fname= s:ShellEscape(netrw#WinPath(s:ComposePath(curdir,fname)))
let fname= s:ShellEscape(netrw#WinPath(s:ComposePath(curdir,fname)))
endif
else
let fname= s:ShellEscape(netrw#WinPath(b:netrw_curdir.fname))
@@ -7852,7 +7865,7 @@ fun! s:NetrwMarkFileMove(islocal)
let movecmd = netrw#WinPath(movecmd).movecmdargs
" call Decho("windows exception: movecmd<".movecmd."> (#1: had a space)",'~'.expand("<slnum>"))
else
let movecmd = netrw#WinPath(movecmd)
let movecmd = netrw#WinPath(g:netrw_localmovecmd)
" call Decho("windows exception: movecmd<".movecmd."> (#2: no space)",'~'.expand("<slnum>"))
endif
else
@@ -7866,10 +7879,6 @@ fun! s:NetrwMarkFileMove(islocal)
endif
if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
let fname= substitute(fname,'/','\\','g')
if g:netrw_keepdir
" Jul 19, 2022: fixing file move when g:netrw_keepdir is 1
let fname= b:netrw_curdir."\\".fname
endif
endif
" call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("<slnum>"))
let ret= system(movecmd.g:netrw_localmovecmdopt." ".s:ShellEscape(fname)." ".tgt)
@@ -9468,7 +9477,7 @@ fun! s:NetrwTreeDir(islocal)
" call Decho("treedir<".treedir.">",'~'.expand("<slnum>"))
elseif curline =~ '@$'
" call Decho("handle symbolic link from current line",'~'.expand("<slnum>"))
let treedir= resolve(substitute(substitute(getline('.'),'@.*$','','e'),'^|*\s*','','e'))
let potentialdir= resolve(substitute(substitute(getline('.'),'@.*$','','e'),'^|*\s*','','e'))
" call Decho("treedir<".treedir.">",'~'.expand("<slnum>"))
else
" call Decho("do not extract tree subdirectory from current line and set treedir to empty",'~'.expand("<slnum>"))
@@ -9493,7 +9502,6 @@ fun! s:NetrwTreeDir(islocal)
" call Decho("COMBAK#23 : mod=".&mod." win#".winnr())
" call Decho("islocal=".a:islocal." curline<".curline.">",'~'.expand("<slnum>"))
let potentialdir= s:NetrwFile(substitute(curline,'^'.s:treedepthstring.'\+ \(.*\)@$','\1',''))
" call Decho("potentialdir<".potentialdir."> isdir=".isdirectory(potentialdir),'~'.expand("<slnum>"))
" call Decho("COMBAK#24 : mod=".&mod." win#".winnr())
@@ -9506,8 +9514,15 @@ fun! s:NetrwTreeDir(islocal)
" " call Decho("newdir <".newdir.">",'~'.expand("<slnum>"))
" else
" call Decho("apply NetrwTreePath to treetop<".w:netrw_treetop.">",'~'.expand("<slnum>"))
let treedir = s:NetrwTreePath(w:netrw_treetop)
" endif
if a:islocal && curline =~ '@$'
if isdirectory(s:NetrwFile(potentialdir))
let treedir = w:netrw_treetop.'/'.potentialdir.'/'
let w:netrw_treetop = treedir
endif
else
let potentialdir= s:NetrwFile(substitute(curline,'^'.s:treedepthstring.'\+ \(.*\)@$','\1',''))
let treedir = s:NetrwTreePath(w:netrw_treetop)
endif
endif
" call Decho("COMBAK#25 : mod=".&mod." win#".winnr())
@@ -10205,7 +10220,7 @@ fun! s:SetupNetrwStatusLine(statline)
" set up status line (may use User9 highlighting)
" insure that windows have a statusline
" make sure statusline is displayed
let &stl=a:statline
let &l:stl=a:statline
setl laststatus=2
" call Decho("stl=".&stl,'~'.expand("<slnum>"))
redraw
@@ -10321,7 +10336,7 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd)
setl ff=unix
" restore settings
let &ff= ffkeep
let &l:ff= ffkeep
" call Dret("NetrwRemoteFtpCmd")
return
@@ -10358,7 +10373,7 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd)
endif
" restore settings " {{{3
let &ff= ffkeep
let &l:ff= ffkeep
" call Dret("NetrwRemoteFtpCmd")
endfun
@@ -10371,7 +10386,7 @@ fun! s:NetrwRemoteListing()
let w:netrw_bannercnt= s:bannercnt
endif
if !exists("w:netrw_bannercnt") && exists("b:bannercnt")
let w:netrw_bannercnt= s:bannercnt
let w:netrw_bannercnt= b:bannercnt
endif
call s:RemotePathAnalysis(b:netrw_curdir)
@@ -10662,7 +10677,7 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all)
NetrwKeepj call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53)
let ok="q"
else
let remotedir= substitute(b:netrw_curdir,'^.*//[^/]\+/\(.*\)$','\1','')
let remotedir= substitute(b:netrw_curdir,'^.\{-}//[^/]\+/\(.*\)$','\1','')
" call Decho("netrw_rm_cmd<".netrw_rm_cmd.">",'~'.expand("<slnum>"))
" call Decho("remotedir<".remotedir.">",'~'.expand("<slnum>"))
" call Decho("rmfile<".a:rmfile.">",'~'.expand("<slnum>"))
@@ -10675,7 +10690,7 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all)
let ret= system(netrw_rm_cmd)
if v:shell_error != 0
if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir
call netrw#ErrorMsg(s:ERROR,"remove failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",102)
call netrw#ErrorMsg(s:ERROR,"remove failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",102)
else
call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60)
endif
@@ -10953,6 +10968,10 @@ fun! s:LocalBrowseRefresh()
" call Dret("s:LocalBrowseRefresh : don't refresh when focus not on netrw window")
return
endif
if !empty(getcmdwintype())
" cannot move away from cmdline window, see :h E11
return
endif
if exists("s:netrw_events") && s:netrw_events == 1
" s:LocalFastBrowser gets called (indirectly) from a
let s:netrw_events= 2
@@ -11179,16 +11198,16 @@ fun! s:LocalListing()
" call Decho("pfile <".pfile.">",'~'.expand("<slnum>"))
if w:netrw_liststyle == s:LONGLIST
let sz = getfsize(filename)
let szlen = 15 - (strdisplaywidth(longfile) - g:netrw_maxfilenamelen)
let szlen = (szlen > 0) ? szlen : 0
let fsz = printf("%".szlen."S",sz)
let longfile = printf("%-".g:netrw_maxfilenamelen."S",pfile)
let sz = getfsize(filename)
let szlen = 15 - (strdisplaywidth(longfile) - g:netrw_maxfilenamelen)
let szlen = (szlen > 0) ? szlen : 0
if g:netrw_sizestyle =~# "[hH]"
let sz= s:NetrwHumanReadable(sz)
endif
let longfile= printf("%-".g:netrw_maxfilenamelen."S",pfile)
let pfile = longfile." ".sz." ".strftime(g:netrw_timefmt,getftime(filename))
let fsz = printf("%".szlen."S",sz)
let pfile= longfile." ".fsz." ".strftime(g:netrw_timefmt,getftime(filename))
" call Decho("longlist support: sz=".sz." fsz=".fsz,'~'.expand("<slnum>"))
endif
@@ -11198,7 +11217,7 @@ fun! s:LocalListing()
" call Decho("implementing g:netrw_sort_by=".g:netrw_sort_by." (time)")
" call Decho("getftime(".filename.")=".getftime(filename),'~'.expand("<slnum>"))
let t = getftime(filename)
let ft = strpart("000000000000000000",1,18-strlen(t)).t
let ft = printf("%018d",t)
" call Decho("exe NetrwKeepj put ='".ft.'/'.pfile."'",'~'.expand("<slnum>"))
let ftpfile= ft.'/'.pfile
sil! NetrwKeepj put=ftpfile
@@ -11208,10 +11227,7 @@ fun! s:LocalListing()
" call Decho("implementing g:netrw_sort_by=".g:netrw_sort_by." (size)")
" call Decho("getfsize(".filename.")=".getfsize(filename),'~'.expand("<slnum>"))
let sz = getfsize(filename)
if g:netrw_sizestyle =~# "[hH]"
let sz= s:NetrwHumanReadable(sz)
endif
let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz
let fsz = printf("%018d",sz)
" call Decho("exe NetrwKeepj put ='".fsz.'/'.filename."'",'~'.expand("<slnum>"))
let fszpfile= fsz.'/'.pfile
sil! NetrwKeepj put =fszpfile
@@ -11268,6 +11284,10 @@ endfun
fun! s:NetrwLocalRename(path) range
" call Dfunc("NetrwLocalRename(path<".a:path.">)")
if !exists("w:netrw_bannercnt")
let w:netrw_bannercnt= b:netrw_bannercnt
endif
" preparation for removing multiple files/directories
let ykeep = @@
let ctr = a:firstline
@@ -11369,6 +11389,10 @@ fun! s:NetrwLocalRm(path) range
" call Dfunc("s:NetrwLocalRm(path<".a:path.">)")
" call Decho("firstline=".a:firstline." lastline=".a:lastline,'~'.expand("<slnum>"))
if !exists("w:netrw_bannercnt")
let w:netrw_bannercnt= b:netrw_bannercnt
endif
" preparation for removing multiple files/directories
let ykeep = @@
let ret = 0
@@ -11568,7 +11592,7 @@ endfun
" netrw#RFC2396: converts %xx into characters {{{2
fun! netrw#RFC2396(fname)
" call Dfunc("netrw#RFC2396(fname<".a:fname.">)")
let fname = escape(substitute(a:fname,'%\(\x\x\)','\=nr2char("0x".submatch(1))','ge')," \t")
let fname = escape(substitute(a:fname,'%\(\x\x\)','\=printf("%c","0x".submatch(1))','ge')," \t")
" call Dret("netrw#RFC2396 ".fname)
return fname
endfun
@@ -12044,9 +12068,9 @@ fun! s:NetrwBufRemover(bufid)
" call Decho("buf#".a:bufid." has name <".bufname(a:bufid).">","~".expand("<slnum>"))
" call Decho("buf#".a:bufid." has winid#".bufwinid(a:bufid),"~".expand("<slnum>"))
if a:bufid > 1 && !buflisted(a:bufid) && bufname(a:bufid) == "" && bufwinid(a:bufid) == -1
if a:bufid > 1 && !buflisted(a:bufid) && bufloaded(a:bufid) && bufname(a:bufid) == "" && bufwinid(a:bufid) == -1
" call Decho("(s:NetrwBufRemover) removing buffer#".a:bufid,"~".expand("<slnum>"))
exe "bd! ".a:bufid
exe "sil! bd! ".a:bufid
endif
" call Dret("s:NetrwBufRemover")
@@ -12203,7 +12227,7 @@ fun! s:NetrwLcd(newdir)
if (has("win32") || has("win95") || has("win64") || has("win16")) && !g:netrw_cygwin
if a:newdir =~ '^\\\\\w\+' || a:newdir =~ '^//\w\+'
let dirname = '\'
exe 'NetrwKeepj sil lcd '.fnameescape(dirname)
exe 'NetrwKeepj sil lcd '.fnameescape(dirname)
endif
endif
catch /^Vim\%((\a\+)\)\=:E472/

View File

@@ -1,6 +1,7 @@
" netrwFileHandlers: contains various extension-based file handlers for
" netrw's browsers' x command ("eXecute launcher")
" Author: Charles E. Campbell
" Maintainer: This runtime file is looking for a new maintainer.
" Original Author: Charles E. Campbell
" Date: Sep 18, 2020
" Version: 11
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{1

View File

@@ -1,6 +1,7 @@
" netrwSettings.vim: makes netrw settings simpler
" Date: Nov 15, 2021
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Maintainer: This runtime file is looking for a new maintainer.
" Former Maintainer: Charles E Campbell
" Version: 18
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,

View File

@@ -1,6 +1,7 @@
" Vim support file to help with paste mappings and menus
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2019 Jan 27
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Aug 10
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" Define the string to use for items that are present both in Edit, Popup and
" Toolbar menu. Also used in mswin.vim and macmap.vim.

View File

@@ -2907,7 +2907,7 @@ endfor
" builtin class information
let g:php_builtin_object_functions = {}
" When completing for 'everyting imaginable' (no class context, not a
" When completing for 'everything imaginable' (no class context, not a
" variable) we need a list of built-in classes in a format of {'classname':''}
" for performance reasons we precompile this too
let g:php_builtin_classnames = {}

213
runtime/autoload/racket.vim Normal file
View File

@@ -0,0 +1,213 @@
" Maintainer: D. Ben Knoble <ben.knoble+github@gmail.com>
" URL: https://github.com/benknoble/vim-racket
" Last Change: 2023 Sep 22
vim9script
def MakePatternFromLiterals(xs: list<string>): string
return printf('\V%s', xs->mapnew((_, v) => escape(v, '\'))->join('\|'))
enddef
const openers = ['(', '[', '{']
const closers = {'(': ')', '[': ']', '{': '}'}
const brackets_pattern: string = closers->items()->flattennew()->MakePatternFromLiterals()
# transliterated from a modified copy of src/indent.c
export def Indent(): number
if InHerestring(v:lnum)
return -1
endif
# Indent from first column to avoid odd results from nested forms.
cursor(v:lnum, 1)
const bracket = FindBracket()
if bracket == null_dict || !bracket.found
return -1
endif
# assert_report(printf('{lnum: %d, str: %s, found: %s, line: %d, column: %d}',
# v:lnum, getline(bracket.line)[bracket.column - 1], bracket.found, bracket.line, bracket.column))
# N.B. Column =/= Line Index; Columns start at 1
const amount: number = bracket.column
const line = getline(bracket.line)
const lw = Lispword(line[bracket.column :])
if !IsForFold(lw) # skip: see comments about for/fold special case below
# "Extra trick"
var current = prevnonblank(v:lnum - 1)
while current > bracket.line
cursor(current, 1)
if getline(current) !~# '^\s*;' && synID(current, 1, 0)->synIDattr('name') !~? 'string' && FindBracket() == bracket
return indent(current)
endif
current = prevnonblank(current - 1)
endwhile
cursor(v:lnum, 1)
endif
if index(openers, line[bracket.column - 1]) >= 0 && !empty(lw)
# Special case for/fold &co. The iterator clause (2nd form) is indented
# under the accumulator clause (1st form). Everything else is standard.
const start_of_first_form = match(line[bracket.column :], MakePatternFromLiterals(openers))
# assert_report(printf('{line: %s}', line))
# assert_report(printf('{start: %s}', start_of_first_form >= 0 ? line[bracket.column + start_of_first_form :] : '<NULL>'))
if IsForFold(lw) && IsSecondForm(bracket.line, bracket.column, v:lnum) && start_of_first_form >= 0
return amount + start_of_first_form
else
# Lispword, but not for/fold second form (or first form couldn't be
# found): indent like define or lambda.
# 2 extra indent, but subtract 1 for columns starting at 1.
# Current vim9 doesn't constant fold "x + 2 - 1", so write "x + 1"
return amount + 1
endif
else
# assert_report(printf('{line: %s}', line[bracket.column :]))
return amount + IndentForContinuation(bracket.line, bracket.column, line[bracket.column :])
endif
enddef
def InHerestring(start: number): bool
return synID(start, col([start, '$']) - 1, 0)->synIDattr('name') =~? 'herestring'
enddef
def FindBracket(): dict<any>
const paren = FindMatch('(', ')')
const square = FindMatch('\[', ']')
const curly = FindMatch('{', '}')
return null_dict
->MatchMax(paren)
->MatchMax(square)
->MatchMax(curly)
enddef
def Lispword(line: string): string
# assume keyword on same line as opener
const word: string = matchstr(line, '^\s*\k\+\>')->trim()
# assert_report(printf('line: %s; word: %s', line, word))
# assert_report(&l:lispwords->split(',')->index(word) >= 0 ? 't' : 'f')
return &l:lispwords->split(',')->index(word) >= 0 ? word : ''
enddef
# line contains everything on line_nr after column
def IndentForContinuation(line_nr: number, column: number, line: string): number
const end = len(line)
var indent = match(line, '[^[:space:]]')
# first word is a string or some other literal (or maybe a form); assume that
# the current line is outside such a thing
if indent < end && ['"', '#']->index(line[indent]) >= 0
return indent
endif
if indent < end && ["'", '`']->index(line[indent]) >= 0
# could be a form or a word. Advance one and see.
++indent
endif
if indent < end && ['(', '[', '{']->index(line[indent]) >= 0
# there's a form; assume outside, but need to skip it to see if any others
cursor(line_nr, column + indent + 1)
# assert_report(getline(line_nr)[column + indent :])
normal! %
const [_, matched_line, matched_col, _, _] = getcursorcharpos()
if line_nr != matched_line || matched_col == column + indent + 1
return indent
endif
indent = matched_col - column
endif
var in_delim: bool
var quoted: bool
while indent < end && (line[indent] !~# '\s' || in_delim || quoted)
if line[indent] == '\' && !in_delim
quoted = true
else
quoted = false
endif
if line[indent] == '|' && !quoted
in_delim = !in_delim
endif
++indent
endwhile
# not handling newlines in first words
if quoted || in_delim
return 0
endif
# no other word on this line
if indent == end
return 0
endif
# find beginning of next word
indent += match(line[indent :], '[^[:space:]]')
return indent
enddef
def FindMatch(start: string, end: string): dict<any>
# TODO too slow
# could try replicating C? might have false positives. Or make "100"
# configurable number: for amounts of indent bodies, we're still fast enough
const [linenr, column] = searchpairpos(start, '', end, 'bnzW',
() =>
synID(line('.'), col('.'), 0)->synIDattr('name') =~? 'char\|string\|comment',
line('.') > 100 ? line('.') - 100 : 0)
if linenr > 0 && column > 0
return {found: true, line: linenr, column: column}
else
return {found: false, line: linenr, column: column}
endif
enddef
def MatchMax(left: dict<any>, right: dict<any>): dict<any>
if left == null_dict || !left.found
return right
endif
if right == null_dict || !right.found
return left
endif
# left and right non-null, both found
return PosLT(left, right) ? right : left
enddef
def PosLT(left: dict<any>, right: dict<any>): bool
return left.line != right.line
\ ? left.line < right.line
\ : (left.column != right.column && left.column < right.column)
enddef
def IsForFold(word: string): bool
return ['for/fold', 'for/foldr', 'for*/fold', 'for*/foldr']->index(word) >= 0
enddef
def IsSecondForm(blnum: number, bcol: number, vlnum: number): bool
var forms_seen: number # "top-level" (inside for/fold) counter only
var [lnum, col] = [blnum, bcol + 1]
cursor(lnum, col)
var stack: list<string> = []
while lnum <= vlnum
const found = search(brackets_pattern, '', vlnum, 0, () =>
synID(line('.'), col('.'), 0)->synIDattr('name') =~? 'char\|string\|comment')
if found <= 0
break
endif
const pos = getcursorcharpos()
lnum = pos[1]
col = pos[2]
var current_char = getline(lnum)[col - 1]
# assert_report(printf('search: %d, %d: %s', lnum, col, current_char))
# assert_report(printf('forms seen post-search: %d', forms_seen))
if index(openers, current_char) >= 0
insert(stack, current_char)
elseif !empty(stack) && current_char ==# closers[stack[0]]
stack = stack[1 :]
if empty(stack)
++forms_seen
endif
else
# parse failure of some kind: not an opener or not the correct closer
return false
endif
# assert_report(printf('forms seen pre-check: %d', forms_seen))
if forms_seen > 2
return false
endif
endwhile
# assert_report(printf('forms seen pre-return: %d', forms_seen))
return forms_seen == 2 || (forms_seen == 1 && !empty(stack))
enddef

View File

@@ -2,8 +2,7 @@
" Language: Ruby
" Maintainer: Mark Guzman <segfault@hasno.info>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Apr 12
" Last Change: 2023 Dec 31
" ----------------------------------------------------------------------------
"
" Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com)
@@ -490,7 +489,7 @@ class VimRubyCompletion
trail = "%s%s" % [ dir, sub ]
tcfg = "%sconfig" % trail
if File.exists?( tcfg )
if File.exist?( tcfg )
rails_base = trail
break
end
@@ -503,7 +502,7 @@ class VimRubyCompletion
bootfile = rails_base + "config/boot.rb"
envfile = rails_base + "config/environment.rb"
if File.exists?( bootfile ) && File.exists?( envfile )
if File.exist?( bootfile ) && File.exist?( envfile )
begin
require bootfile
require envfile

View File

@@ -1,207 +1,258 @@
" Author: Kevin Ballard
" Description: Helper functions for Rust commands/mappings
" Last Modified: May 27, 2014
" Last Modified: 2023-09-11
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
function! rust#Load()
" Utility call to get this script loaded, for debugging
endfunction
function! rust#GetConfigVar(name, default)
" Local buffer variable with same name takes predeence over global
if has_key(b:, a:name)
return get(b:, a:name)
endif
if has_key(g:, a:name)
return get(g:, a:name)
endif
return a:default
endfunction
" Include expression {{{1
function! rust#IncludeExpr(fname) abort
" Remove leading 'crate::' to deal with 2018 edition style 'use'
" statements
let l:fname = substitute(a:fname, '^crate::', '', '')
" Remove trailing colons arising from lines like
"
" use foo::{Bar, Baz};
let l:fname = substitute(l:fname, ':\+$', '', '')
" Replace '::' with '/'
let l:fname = substitute(l:fname, '::', '/', 'g')
" When we have
"
" use foo::bar::baz;
"
" we can't tell whether baz is a module or a function; and we can't tell
" which modules correspond to files.
"
" So we work our way up, trying
"
" foo/bar/baz.rs
" foo/bar.rs
" foo.rs
while l:fname !=# '.'
let l:path = findfile(l:fname)
if !empty(l:path)
return l:fname
endif
let l:fname = fnamemodify(l:fname, ':h')
endwhile
return l:fname
endfunction
" Jump {{{1
function! rust#Jump(mode, function) range
let cnt = v:count1
normal! m'
if a:mode ==# 'v'
norm! gv
endif
let foldenable = &foldenable
set nofoldenable
while cnt > 0
execute "call <SID>Jump_" . a:function . "()"
let cnt = cnt - 1
endwhile
let &foldenable = foldenable
let cnt = v:count1
normal! m'
if a:mode ==# 'v'
norm! gv
endif
let foldenable = &foldenable
set nofoldenable
while cnt > 0
execute "call <SID>Jump_" . a:function . "()"
let cnt = cnt - 1
endwhile
let &foldenable = foldenable
endfunction
function! s:Jump_Back()
call search('{', 'b')
keepjumps normal! w99[{
call search('{', 'b')
keepjumps normal! w99[{
endfunction
function! s:Jump_Forward()
normal! j0
call search('{', 'b')
keepjumps normal! w99[{%
call search('{')
normal! j0
call search('{', 'b')
keepjumps normal! w99[{%
call search('{')
endfunction
" Run {{{1
function! rust#Run(bang, args)
let args = s:ShellTokenize(a:args)
if a:bang
let idx = index(l:args, '--')
if idx != -1
let rustc_args = idx == 0 ? [] : l:args[:idx-1]
let args = l:args[idx+1:]
else
let rustc_args = l:args
let args = []
endif
else
let rustc_args = []
endif
let args = s:ShellTokenize(a:args)
if a:bang
let idx = index(l:args, '--')
if idx != -1
let rustc_args = idx == 0 ? [] : l:args[:idx-1]
let args = l:args[idx+1:]
else
let rustc_args = l:args
let args = []
endif
else
let rustc_args = []
endif
let b:rust_last_rustc_args = l:rustc_args
let b:rust_last_args = l:args
let b:rust_last_rustc_args = l:rustc_args
let b:rust_last_args = l:args
call s:WithPath(function("s:Run"), rustc_args, args)
call s:WithPath(function("s:Run"), rustc_args, args)
endfunction
function! s:Run(dict, rustc_args, args)
let exepath = a:dict.tmpdir.'/'.fnamemodify(a:dict.path, ':t:r')
if has('win32')
let exepath .= '.exe'
endif
let exepath = a:dict.tmpdir.'/'.fnamemodify(a:dict.path, ':t:r')
if has('win32')
let exepath .= '.exe'
endif
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
let rustc_args = [relpath, '-o', exepath] + a:rustc_args
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
let rustc_args = [relpath, '-o', exepath] + a:rustc_args
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
let output = s:system(pwd, shellescape(rustc) . " " . join(map(rustc_args, 'shellescape(v:val)')))
if output != ''
echohl WarningMsg
echo output
echohl None
endif
if !v:shell_error
exe '!' . shellescape(exepath) . " " . join(map(a:args, 'shellescape(v:val)'))
endif
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
let output = s:system(pwd, shellescape(rustc) . " " . join(map(rustc_args, 'shellescape(v:val)')))
if output !=# ''
echohl WarningMsg
echo output
echohl None
endif
if !v:shell_error
exe '!' . shellescape(exepath) . " " . join(map(a:args, 'shellescape(v:val)'))
endif
endfunction
" Expand {{{1
function! rust#Expand(bang, args)
let args = s:ShellTokenize(a:args)
if a:bang && !empty(l:args)
let pretty = remove(l:args, 0)
else
let pretty = "expanded"
endif
call s:WithPath(function("s:Expand"), pretty, args)
let args = s:ShellTokenize(a:args)
if a:bang && !empty(l:args)
let pretty = remove(l:args, 0)
else
let pretty = "expanded"
endif
call s:WithPath(function("s:Expand"), pretty, args)
endfunction
function! s:Expand(dict, pretty, args)
try
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
try
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
if a:pretty =~? '^\%(everybody_loops$\|flowgraph=\)'
let flag = '--xpretty'
else
let flag = '--pretty'
endif
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
let args = [relpath, '-Z', 'unstable-options', l:flag, a:pretty] + a:args
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)')))
if v:shell_error
echohl WarningMsg
echo output
echohl None
else
new
silent put =output
1
d
setl filetype=rust
setl buftype=nofile
setl bufhidden=hide
setl noswapfile
" give the buffer a nice name
let suffix = 1
let basename = fnamemodify(a:dict.path, ':t:r')
while 1
let bufname = basename
if suffix > 1 | let bufname .= ' ('.suffix.')' | endif
let bufname .= '.pretty.rs'
if bufexists(bufname)
let suffix += 1
continue
endif
exe 'silent noautocmd keepalt file' fnameescape(bufname)
break
endwhile
endif
endtry
if a:pretty =~? '^\%(everybody_loops$\|flowgraph=\)'
let flag = '--xpretty'
else
let flag = '--pretty'
endif
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
let args = [relpath, '-Z', 'unstable-options', l:flag, a:pretty] + a:args
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)')))
if v:shell_error
echohl WarningMsg
echo output
echohl None
else
new
silent put =output
1
d
setl filetype=rust
setl buftype=nofile
setl bufhidden=hide
setl noswapfile
" give the buffer a nice name
let suffix = 1
let basename = fnamemodify(a:dict.path, ':t:r')
while 1
let bufname = basename
if suffix > 1 | let bufname .= ' ('.suffix.')' | endif
let bufname .= '.pretty.rs'
if bufexists(bufname)
let suffix += 1
continue
endif
exe 'silent noautocmd keepalt file' fnameescape(bufname)
break
endwhile
endif
endtry
endfunction
function! rust#CompleteExpand(lead, line, pos)
if a:line[: a:pos-1] =~ '^RustExpand!\s*\S*$'
" first argument and it has a !
let list = ["normal", "expanded", "typed", "expanded,identified", "flowgraph=", "everybody_loops"]
if !empty(a:lead)
call filter(list, "v:val[:len(a:lead)-1] == a:lead")
endif
return list
endif
if a:line[: a:pos-1] =~# '^RustExpand!\s*\S*$'
" first argument and it has a !
let list = ["normal", "expanded", "typed", "expanded,identified", "flowgraph=", "everybody_loops"]
if !empty(a:lead)
call filter(list, "v:val[:len(a:lead)-1] == a:lead")
endif
return list
endif
return glob(escape(a:lead, "*?[") . '*', 0, 1)
return glob(escape(a:lead, "*?[") . '*', 0, 1)
endfunction
" Emit {{{1
function! rust#Emit(type, args)
let args = s:ShellTokenize(a:args)
call s:WithPath(function("s:Emit"), a:type, args)
let args = s:ShellTokenize(a:args)
call s:WithPath(function("s:Emit"), a:type, args)
endfunction
function! s:Emit(dict, type, args)
try
let output_path = a:dict.tmpdir.'/output'
try
let output_path = a:dict.tmpdir.'/output'
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
let args = [relpath, '--emit', a:type, '-o', output_path] + a:args
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)')))
if output != ''
echohl WarningMsg
echo output
echohl None
endif
if !v:shell_error
new
exe 'silent keepalt read' fnameescape(output_path)
1
d
if a:type == "llvm-ir"
setl filetype=llvm
let extension = 'll'
elseif a:type == "asm"
setl filetype=asm
let extension = 's'
endif
setl buftype=nofile
setl bufhidden=hide
setl noswapfile
if exists('l:extension')
" give the buffer a nice name
let suffix = 1
let basename = fnamemodify(a:dict.path, ':t:r')
while 1
let bufname = basename
if suffix > 1 | let bufname .= ' ('.suffix.')' | endif
let bufname .= '.'.extension
if bufexists(bufname)
let suffix += 1
continue
endif
exe 'silent noautocmd keepalt file' fnameescape(bufname)
break
endwhile
endif
endif
endtry
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
let args = [relpath, '--emit', a:type, '-o', output_path] + a:args
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)')))
if output !=# ''
echohl WarningMsg
echo output
echohl None
endif
if !v:shell_error
new
exe 'silent keepalt read' fnameescape(output_path)
1
d
if a:type ==# "llvm-ir"
setl filetype=llvm
let extension = 'll'
elseif a:type ==# "asm"
setl filetype=asm
let extension = 's'
endif
setl buftype=nofile
setl bufhidden=hide
setl noswapfile
if exists('l:extension')
" give the buffer a nice name
let suffix = 1
let basename = fnamemodify(a:dict.path, ':t:r')
while 1
let bufname = basename
if suffix > 1 | let bufname .= ' ('.suffix.')' | endif
let bufname .= '.'.extension
if bufexists(bufname)
let suffix += 1
continue
endif
exe 'silent noautocmd keepalt file' fnameescape(bufname)
break
endwhile
endif
endif
endtry
endfunction
" Utility functions {{{1
@@ -219,145 +270,154 @@ endfunction
" existing path of the current buffer. If the path is inside of {dict.tmpdir}
" then it is guaranteed to have a '.rs' extension.
function! s:WithPath(func, ...)
let buf = bufnr('')
let saved = {}
let dict = {}
try
let saved.write = &write
set write
let dict.path = expand('%')
let pathisempty = empty(dict.path)
let buf = bufnr('')
let saved = {}
let dict = {}
try
let saved.write = &write
set write
let dict.path = expand('%')
let pathisempty = empty(dict.path)
" Always create a tmpdir in case the wrapped command wants it
let dict.tmpdir = tempname()
call mkdir(dict.tmpdir)
" Always create a tmpdir in case the wrapped command wants it
let dict.tmpdir = tempname()
call mkdir(dict.tmpdir)
if pathisempty || !saved.write
let dict.istemp = 1
" if we're doing this because of nowrite, preserve the filename
if !pathisempty
let filename = expand('%:t:r').".rs"
else
let filename = 'unnamed.rs'
endif
let dict.tmpdir_relpath = filename
let dict.path = dict.tmpdir.'/'.filename
if pathisempty || !saved.write
let dict.istemp = 1
" if we're doing this because of nowrite, preserve the filename
if !pathisempty
let filename = expand('%:t:r').".rs"
else
let filename = 'unnamed.rs'
endif
let dict.tmpdir_relpath = filename
let dict.path = dict.tmpdir.'/'.filename
let saved.mod = &mod
set nomod
let saved.mod = &modified
set nomodified
silent exe 'keepalt write! ' . fnameescape(dict.path)
if pathisempty
silent keepalt 0file
endif
else
let dict.istemp = 0
update
endif
silent exe 'keepalt write! ' . fnameescape(dict.path)
if pathisempty
silent keepalt 0file
endif
else
let dict.istemp = 0
update
endif
call call(a:func, [dict] + a:000)
finally
if bufexists(buf)
for [opt, value] in items(saved)
silent call setbufvar(buf, '&'.opt, value)
unlet value " avoid variable type mismatches
endfor
endif
if has_key(dict, 'tmpdir') | silent call s:RmDir(dict.tmpdir) | endif
endtry
call call(a:func, [dict] + a:000)
finally
if bufexists(buf)
for [opt, value] in items(saved)
silent call setbufvar(buf, '&'.opt, value)
unlet value " avoid variable type mismatches
endfor
endif
if has_key(dict, 'tmpdir') | silent call s:RmDir(dict.tmpdir) | endif
endtry
endfunction
function! rust#AppendCmdLine(text)
call setcmdpos(getcmdpos())
let cmd = getcmdline() . a:text
return cmd
call setcmdpos(getcmdpos())
let cmd = getcmdline() . a:text
return cmd
endfunction
" Tokenize the string according to sh parsing rules
function! s:ShellTokenize(text)
" states:
" 0: start of word
" 1: unquoted
" 2: unquoted backslash
" 3: double-quote
" 4: double-quoted backslash
" 5: single-quote
let l:state = 0
let l:current = ''
let l:args = []
for c in split(a:text, '\zs')
if l:state == 0 || l:state == 1 " unquoted
if l:c ==# ' '
if l:state == 0 | continue | endif
call add(l:args, l:current)
let l:current = ''
let l:state = 0
elseif l:c ==# '\'
let l:state = 2
elseif l:c ==# '"'
let l:state = 3
elseif l:c ==# "'"
let l:state = 5
else
let l:current .= l:c
let l:state = 1
endif
elseif l:state == 2 " unquoted backslash
if l:c !=# "\n" " can it even be \n?
let l:current .= l:c
endif
let l:state = 1
elseif l:state == 3 " double-quote
if l:c ==# '\'
let l:state = 4
elseif l:c ==# '"'
let l:state = 1
else
let l:current .= l:c
endif
elseif l:state == 4 " double-quoted backslash
if stridx('$`"\', l:c) >= 0
let l:current .= l:c
elseif l:c ==# "\n" " is this even possible?
" skip it
else
let l:current .= '\'.l:c
endif
let l:state = 3
elseif l:state == 5 " single-quoted
if l:c == "'"
let l:state = 1
else
let l:current .= l:c
endif
endif
endfor
if l:state != 0
call add(l:args, l:current)
endif
return l:args
" states:
" 0: start of word
" 1: unquoted
" 2: unquoted backslash
" 3: double-quote
" 4: double-quoted backslash
" 5: single-quote
let l:state = 0
let l:current = ''
let l:args = []
for c in split(a:text, '\zs')
if l:state == 0 || l:state == 1 " unquoted
if l:c ==# ' '
if l:state == 0 | continue | endif
call add(l:args, l:current)
let l:current = ''
let l:state = 0
elseif l:c ==# '\'
let l:state = 2
elseif l:c ==# '"'
let l:state = 3
elseif l:c ==# "'"
let l:state = 5
else
let l:current .= l:c
let l:state = 1
endif
elseif l:state == 2 " unquoted backslash
if l:c !=# "\n" " can it even be \n?
let l:current .= l:c
endif
let l:state = 1
elseif l:state == 3 " double-quote
if l:c ==# '\'
let l:state = 4
elseif l:c ==# '"'
let l:state = 1
else
let l:current .= l:c
endif
elseif l:state == 4 " double-quoted backslash
if stridx('$`"\', l:c) >= 0
let l:current .= l:c
elseif l:c ==# "\n" " is this even possible?
" skip it
else
let l:current .= '\'.l:c
endif
let l:state = 3
elseif l:state == 5 " single-quoted
if l:c ==# "'"
let l:state = 1
else
let l:current .= l:c
endif
endif
endfor
if l:state != 0
call add(l:args, l:current)
endif
return l:args
endfunction
function! s:RmDir(path)
" sanity check; make sure it's not empty, /, or $HOME
if empty(a:path)
echoerr 'Attempted to delete empty path'
return 0
elseif a:path == '/' || a:path == $HOME
echoerr 'Attempted to delete protected path: ' . a:path
return 0
endif
return system("rm -rf " . shellescape(a:path))
" sanity check; make sure it's not empty, /, or $HOME
if empty(a:path)
echoerr 'Attempted to delete empty path'
return 0
elseif a:path ==# '/' || a:path ==# $HOME
let l:path = expand(a:path)
if l:path ==# '/' || l:path ==# $HOME
echoerr 'Attempted to delete protected path: ' . a:path
return 0
endif
endif
if !isdirectory(a:path)
return 0
endif
" delete() returns 0 when removing file successfully
return delete(a:path, 'rf') == 0
endfunction
" Executes {cmd} with the cwd set to {pwd}, without changing Vim's cwd.
" If {pwd} is the empty string then it doesn't change the cwd.
function! s:system(pwd, cmd)
let cmd = a:cmd
if !empty(a:pwd)
let cmd = 'cd ' . shellescape(a:pwd) . ' && ' . cmd
endif
return system(cmd)
let cmd = a:cmd
if !empty(a:pwd)
let cmd = 'cd ' . shellescape(a:pwd) . ' && ' . cmd
endif
return system(cmd)
endfunction
" Playpen Support {{{1
@@ -366,10 +426,10 @@ endfunction
" http://github.com/mattn/gist-vim
function! s:has_webapi()
if !exists("*webapi#http#post")
try
call webapi#http#post()
catch
endtry
try
call webapi#http#post()
catch
endtry
endif
return exists("*webapi#http#post")
endfunction
@@ -381,35 +441,130 @@ function! rust#Play(count, line1, line2, ...) abort
let l:rust_shortener_url = get(g:, 'rust_shortener_url', 'https://is.gd/')
if !s:has_webapi()
echohl ErrorMsg | echomsg ':RustPlay depends on webapi.vim (https://github.com/mattn/webapi-vim)' | echohl None
return
echohl ErrorMsg | echomsg ':RustPlay depends on webapi.vim (https://github.com/mattn/webapi-vim)' | echohl None
return
endif
let bufname = bufname('%')
if a:count < 1
let content = join(getline(a:line1, a:line2), "\n")
let content = join(getline(a:line1, a:line2), "\n")
else
let save_regcont = @"
let save_regtype = getregtype('"')
silent! normal! gvy
let content = @"
call setreg('"', save_regcont, save_regtype)
let save_regcont = @"
let save_regtype = getregtype('"')
silent! normal! gvy
let content = @"
call setreg('"', save_regcont, save_regtype)
endif
let body = l:rust_playpen_url."?code=".webapi#http#encodeURI(content)
let url = l:rust_playpen_url."?code=".webapi#http#encodeURI(content)
if strlen(body) > 5000
echohl ErrorMsg | echomsg 'Buffer too large, max 5000 encoded characters ('.strlen(body).')' | echohl None
return
if strlen(url) > 5000
echohl ErrorMsg | echomsg 'Buffer too large, max 5000 encoded characters ('.strlen(url).')' | echohl None
return
endif
let payload = "format=simple&url=".webapi#http#encodeURI(body)
let payload = "format=simple&url=".webapi#http#encodeURI(url)
let res = webapi#http#post(l:rust_shortener_url.'create.php', payload, {})
let url = res.content
if res.status[0] ==# '2'
let url = res.content
endif
redraw | echomsg 'Done: '.url
let footer = ''
if exists('g:rust_clip_command')
call system(g:rust_clip_command, url)
if !v:shell_error
let footer = ' (copied to clipboard)'
endif
endif
redraw | echomsg 'Done: '.url.footer
endfunction
" Run a test under the cursor or all tests {{{1
" Finds a test function name under the cursor. Returns empty string when a
" test function is not found.
function! s:SearchTestFunctionNameUnderCursor() abort
let cursor_line = line('.')
" Find #[test] attribute
if search('\m\C#\[test\]', 'bcW') is 0
return ''
endif
" Move to an opening brace of the test function
let test_func_line = search('\m\C^\s*fn\s\+\h\w*\s*(.\+{$', 'eW')
if test_func_line is 0
return ''
endif
" Search the end of test function (closing brace) to ensure that the
" cursor position is within function definition
if maparg('<Plug>(MatchitNormalForward)') ==# ''
keepjumps normal! %
else
" Prefer matchit.vim official plugin to native % since the plugin
" provides better behavior than original % (#391)
" To load the plugin, run:
" :packadd matchit
execute 'keepjumps' 'normal' "\<Plug>(MatchitNormalForward)"
endif
if line('.') < cursor_line
return ''
endif
return matchstr(getline(test_func_line), '\m\C^\s*fn\s\+\zs\h\w*')
endfunction
function! rust#Test(mods, winsize, all, options) abort
let manifest = findfile('Cargo.toml', expand('%:p:h') . ';')
if manifest ==# ''
return rust#Run(1, '--test ' . a:options)
endif
" <count> defaults to 0, but we prefer an empty string
let winsize = a:winsize ? a:winsize : ''
if has('terminal')
if has('patch-8.0.910')
let cmd = printf('%s noautocmd %snew | terminal ++curwin ', a:mods, winsize)
else
let cmd = printf('%s terminal ', a:mods)
endif
elseif has('nvim')
let cmd = printf('%s noautocmd %snew | terminal ', a:mods, winsize)
else
let cmd = '!'
let manifest = shellescape(manifest)
endif
if a:all
if a:options ==# ''
execute cmd . 'cargo test --manifest-path' manifest
else
execute cmd . 'cargo test --manifest-path' manifest a:options
endif
return
endif
let saved = getpos('.')
try
let func_name = s:SearchTestFunctionNameUnderCursor()
finally
call setpos('.', saved)
endtry
if func_name ==# ''
echohl ErrorMsg
echomsg 'No test function was found under the cursor. Please add ! to command if you want to run all tests'
echohl None
return
endif
if a:options ==# ''
execute cmd . 'cargo test --manifest-path' manifest func_name
else
execute cmd . 'cargo test --manifest-path' manifest func_name a:options
endif
endfunction
" }}}1
" vim: set noet sw=8 ts=8:
" vim: set et sw=4 sts=4 ts=8:

View File

@@ -0,0 +1,105 @@
" Last Modified: 2023-09-11
" For debugging, inspired by https://github.com/w0rp/rust/blob/master/autoload/rust/debugging.vim
let s:global_variable_list = [
\ '_rustfmt_autosave_because_of_config',
\ 'ftplugin_rust_source_path',
\ 'loaded_syntastic_rust_cargo_checker',
\ 'loaded_syntastic_rust_filetype',
\ 'loaded_syntastic_rust_rustc_checker',
\ 'rust_bang_comment_leader',
\ 'rust_cargo_avoid_whole_workspace',
\ 'rust_clip_command',
\ 'rust_conceal',
\ 'rust_conceal_mod_path',
\ 'rust_conceal_pub',
\ 'rust_fold',
\ 'rust_last_args',
\ 'rust_last_rustc_args',
\ 'rust_original_delimitMate_excluded_regions',
\ 'rust_playpen_url',
\ 'rust_prev_delimitMate_quotes',
\ 'rust_recent_nearest_cargo_tol',
\ 'rust_recent_root_cargo_toml',
\ 'rust_recommended_style',
\ 'rust_set_conceallevel',
\ 'rust_set_conceallevel=1',
\ 'rust_set_foldmethod',
\ 'rust_set_foldmethod=1',
\ 'rust_shortener_url',
\ 'rustc_makeprg_no_percent',
\ 'rustc_path',
\ 'rustfmt_autosave',
\ 'rustfmt_autosave_if_config_present',
\ 'rustfmt_command',
\ 'rustfmt_emit_files',
\ 'rustfmt_fail_silently',
\ 'rustfmt_options',
\ 'syntastic_extra_filetypes',
\ 'syntastic_rust_cargo_fname',
\]
function! s:Echo(message) abort
execute 'echo a:message'
endfunction
function! s:EchoGlobalVariables() abort
for l:key in s:global_variable_list
if l:key !~# '^_'
call s:Echo('let g:' . l:key . ' = ' . string(get(g:, l:key, v:null)))
endif
if has_key(b:, l:key)
call s:Echo('let b:' . l:key . ' = ' . string(b:[l:key]))
endif
endfor
endfunction
function! rust#debugging#Info() abort
call cargo#Load()
call rust#Load()
call rustfmt#Load()
call s:Echo('rust.vim Global Variables:')
call s:Echo('')
call s:EchoGlobalVariables()
silent let l:output = system(g:rustfmt_command . ' --version')
echo l:output
let l:rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
silent let l:output = system(l:rustc . ' --version')
echo l:output
silent let l:output = system('cargo --version')
echo l:output
version
if exists(":SyntasticInfo")
echo "----"
echo "Info from Syntastic:"
execute "SyntasticInfo"
endif
endfunction
function! rust#debugging#InfoToClipboard() abort
redir @"
silent call rust#debugging#Info()
redir END
call s:Echo('RustInfo copied to your clipboard')
endfunction
function! rust#debugging#InfoToFile(filename) abort
let l:expanded_filename = expand(a:filename)
redir => l:output
silent call rust#debugging#Info()
redir END
call writefile(split(l:output, "\n"), l:expanded_filename)
call s:Echo('RustInfo written to ' . l:expanded_filename)
endfunction
" vim: set et sw=4 sts=4 ts=8:

View File

@@ -1,107 +1,261 @@
" Author: Stephen Sugden <stephen@stephensugden.com>
" Last Modified: 2023-09-11
"
" Adapted from https://github.com/fatih/vim-go
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
if !exists("g:rustfmt_autosave")
let g:rustfmt_autosave = 0
let g:rustfmt_autosave = 0
endif
if !exists("g:rustfmt_command")
let g:rustfmt_command = "rustfmt"
let g:rustfmt_command = "rustfmt"
endif
if !exists("g:rustfmt_options")
let g:rustfmt_options = ""
let g:rustfmt_options = ""
endif
if !exists("g:rustfmt_fail_silently")
let g:rustfmt_fail_silently = 0
let g:rustfmt_fail_silently = 0
endif
function! rustfmt#DetectVersion()
" Save rustfmt '--help' for feature inspection
silent let s:rustfmt_help = system(g:rustfmt_command . " --help")
let s:rustfmt_unstable_features = s:rustfmt_help =~# "--unstable-features"
" Build a comparable rustfmt version variable out of its `--version` output:
silent let l:rustfmt_version_full = system(g:rustfmt_command . " --version")
let l:rustfmt_version_list = matchlist(l:rustfmt_version_full,
\ '\vrustfmt ([0-9]+[.][0-9]+[.][0-9]+)')
if len(l:rustfmt_version_list) < 3
let s:rustfmt_version = "0"
else
let s:rustfmt_version = l:rustfmt_version_list[1]
endif
return s:rustfmt_version
endfunction
call rustfmt#DetectVersion()
if !exists("g:rustfmt_emit_files")
let g:rustfmt_emit_files = s:rustfmt_version >= "0.8.2"
endif
if !exists("g:rustfmt_file_lines")
let g:rustfmt_file_lines = s:rustfmt_help =~# "--file-lines JSON"
endif
let s:got_fmt_error = 0
function! rustfmt#Load()
" Utility call to get this script loaded, for debugging
endfunction
function! s:RustfmtWriteMode()
if g:rustfmt_emit_files
return "--emit=files"
else
return "--write-mode=overwrite"
endif
endfunction
function! s:RustfmtConfigOptions()
let l:rustfmt_toml = findfile('rustfmt.toml', expand('%:p:h') . ';')
if l:rustfmt_toml !=# ''
return '--config-path '.shellescape(fnamemodify(l:rustfmt_toml, ":p"))
endif
let l:_rustfmt_toml = findfile('.rustfmt.toml', expand('%:p:h') . ';')
if l:_rustfmt_toml !=# ''
return '--config-path '.shellescape(fnamemodify(l:_rustfmt_toml, ":p"))
endif
" Default to edition 2018 in case no rustfmt.toml was found.
return '--edition 2018'
endfunction
function! s:RustfmtCommandRange(filename, line1, line2)
let l:arg = {"file": shellescape(a:filename), "range": [a:line1, a:line2]}
return printf("%s %s --write-mode=overwrite --file-lines '[%s]'", g:rustfmt_command, g:rustfmt_options, json_encode(l:arg))
if g:rustfmt_file_lines == 0
echo "--file-lines is not supported in the installed `rustfmt` executable"
return
endif
let l:arg = {"file": shellescape(a:filename), "range": [a:line1, a:line2]}
let l:write_mode = s:RustfmtWriteMode()
let l:rustfmt_config = s:RustfmtConfigOptions()
" FIXME: When --file-lines gets to be stable, add version range checking
" accordingly.
let l:unstable_features = s:rustfmt_unstable_features ? '--unstable-features' : ''
let l:cmd = printf("%s %s %s %s %s --file-lines '[%s]' %s", g:rustfmt_command,
\ l:write_mode, g:rustfmt_options,
\ l:unstable_features, l:rustfmt_config,
\ json_encode(l:arg), shellescape(a:filename))
return l:cmd
endfunction
function! s:RustfmtCommand(filename)
return g:rustfmt_command . " --write-mode=overwrite " . g:rustfmt_options . " " . shellescape(a:filename)
function! s:RustfmtCommand()
let write_mode = g:rustfmt_emit_files ? '--emit=stdout' : '--write-mode=display'
let config = s:RustfmtConfigOptions()
return join([g:rustfmt_command, write_mode, config, g:rustfmt_options])
endfunction
function! s:RunRustfmt(command, curw, tmpname)
if exists("*systemlist")
let out = systemlist(a:command)
else
let out = split(system(a:command), '\r\?\n')
endif
function! s:DeleteLines(start, end) abort
silent! execute a:start . ',' . a:end . 'delete _'
endfunction
if v:shell_error == 0 || v:shell_error == 3
" remove undo point caused via BufWritePre
try | silent undojoin | catch | endtry
function! s:RunRustfmt(command, tmpname, from_writepre)
let l:view = winsaveview()
" Replace current file with temp file, then reload buffer
call rename(a:tmpname, expand('%'))
silent edit!
let &syntax = &syntax
let l:stderr_tmpname = tempname()
call writefile([], l:stderr_tmpname)
" only clear location list if it was previously filled to prevent
" clobbering other additions
if s:got_fmt_error
let s:got_fmt_error = 0
call setloclist(0, [])
lwindow
endif
elseif g:rustfmt_fail_silently == 0
" otherwise get the errors and put them in the location list
let errors = []
let l:command = a:command . ' 2> ' . l:stderr_tmpname
for line in out
" src/lib.rs:13:5: 13:10 error: expected `,`, or `}`, found `value`
let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\):\s*\(\d\+:\d\+\s*\)\?\s*error: \(.*\)')
if !empty(tokens)
call add(errors, {"filename": @%,
\"lnum": tokens[2],
\"col": tokens[3],
\"text": tokens[5]})
endif
endfor
if a:tmpname ==# ''
" Rustfmt in stdin/stdout mode
if empty(errors)
% | " Couldn't detect rustfmt error format, output errors
endif
" chdir to the directory of the file
let l:has_lcd = haslocaldir()
let l:prev_cd = getcwd()
execute 'lchdir! '.expand('%:h')
if !empty(errors)
call setloclist(0, errors, 'r')
echohl Error | echomsg "rustfmt returned error" | echohl None
endif
let l:buffer = getline(1, '$')
if exists("*systemlist")
silent let out = systemlist(l:command, l:buffer)
else
silent let out = split(system(l:command,
\ join(l:buffer, "\n")), '\r\?\n')
endif
else
if exists("*systemlist")
silent let out = systemlist(l:command)
else
silent let out = split(system(l:command), '\r\?\n')
endif
endif
let s:got_fmt_error = 1
lwindow
" We didn't use the temp file, so clean up
call delete(a:tmpname)
endif
let l:stderr = readfile(l:stderr_tmpname)
call winrestview(a:curw)
call delete(l:stderr_tmpname)
let l:open_lwindow = 0
if v:shell_error == 0
if a:from_writepre
" remove undo point caused via BufWritePre
try | silent undojoin | catch | endtry
endif
if a:tmpname ==# ''
let l:content = l:out
else
" take the tmpfile's content, this is better than rename
" because it preserves file modes.
let l:content = readfile(a:tmpname)
endif
call s:DeleteLines(len(l:content), line('$'))
call setline(1, l:content)
" only clear location list if it was previously filled to prevent
" clobbering other additions
if s:got_fmt_error
let s:got_fmt_error = 0
call setloclist(0, [])
let l:open_lwindow = 1
endif
elseif g:rustfmt_fail_silently == 0 && !a:from_writepre
" otherwise get the errors and put them in the location list
let l:errors = []
let l:prev_line = ""
for l:line in l:stderr
" error: expected one of `;` or `as`, found `extern`
" --> src/main.rs:2:1
let tokens = matchlist(l:line, '^\s\+-->\s\(.\{-}\):\(\d\+\):\(\d\+\)$')
if !empty(tokens)
call add(l:errors, {"filename": @%,
\"lnum": tokens[2],
\"col": tokens[3],
\"text": l:prev_line})
endif
let l:prev_line = l:line
endfor
if !empty(l:errors)
call setloclist(0, l:errors, 'r')
echohl Error | echomsg "rustfmt returned error" | echohl None
else
echo "rust.vim: was not able to parse rustfmt messages. Here is the raw output:"
echo "\n"
for l:line in l:stderr
echo l:line
endfor
endif
let s:got_fmt_error = 1
let l:open_lwindow = 1
endif
" Restore the current directory if needed
if a:tmpname ==# ''
if l:has_lcd
execute 'lchdir! '.l:prev_cd
else
execute 'chdir! '.l:prev_cd
endif
endif
" Open lwindow after we have changed back to the previous directory
if l:open_lwindow == 1
lwindow
endif
call winrestview(l:view)
endfunction
function! rustfmt#FormatRange(line1, line2)
let l:curw = winsaveview()
let l:tmpname = expand("%:p:h") . "/." . expand("%:p:t") . ".rustfmt"
call writefile(getline(1, '$'), l:tmpname)
let command = s:RustfmtCommandRange(l:tmpname, a:line1, a:line2)
call s:RunRustfmt(command, l:curw, l:tmpname)
let l:tmpname = tempname()
call writefile(getline(1, '$'), l:tmpname)
let command = s:RustfmtCommandRange(l:tmpname, a:line1, a:line2)
call s:RunRustfmt(command, l:tmpname, v:false)
call delete(l:tmpname)
endfunction
function! rustfmt#Format()
let l:curw = winsaveview()
let l:tmpname = expand("%:p:h") . "/." . expand("%:p:t") . ".rustfmt"
call writefile(getline(1, '$'), l:tmpname)
let command = s:RustfmtCommand(l:tmpname)
call s:RunRustfmt(command, l:curw, l:tmpname)
call s:RunRustfmt(s:RustfmtCommand(), '', v:false)
endfunction
function! rustfmt#Cmd()
" Mainly for debugging
return s:RustfmtCommand()
endfunction
function! rustfmt#PreWrite()
if !filereadable(expand("%@"))
return
endif
if rust#GetConfigVar('rustfmt_autosave_if_config_present', 0)
if findfile('rustfmt.toml', '.;') !=# '' || findfile('.rustfmt.toml', '.;') !=# ''
let b:rustfmt_autosave = 1
let b:_rustfmt_autosave_because_of_config = 1
endif
else
if has_key(b:, '_rustfmt_autosave_because_of_config')
unlet b:_rustfmt_autosave_because_of_config
unlet b:rustfmt_autosave
endif
endif
if !rust#GetConfigVar("rustfmt_autosave", 0)
return
endif
call s:RunRustfmt(s:RustfmtCommand(), '', v:true)
endfunction
" vim: set et sw=4 sts=4 ts=8:

View File

@@ -1,6 +1,7 @@
" Vim script to download a missing spell file
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Jul 10
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Aug 10
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
if !exists('g:spellfile_URL')
" Always use https:// because it's secure. The certificate is for nluug.nl,

View File

@@ -1,8 +1,9 @@
" tar.vim: Handles browsing tarfiles
" AUTOLOAD PORTION
" Date: Jan 07, 2020
" Version: 32
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Date: Nov 14, 2023
" Version: 32b (with modifications from the Vim Project)
" Maintainer: This runtime file is looking for a new maintainer.
" Former Maintainer: Charles E Campbell
" License: Vim License (see vim's :help license)
"
" Contains many ideas from Michael Toren's <tar.vim>
@@ -22,7 +23,7 @@
if &cp || exists("g:loaded_tar")
finish
endif
let g:loaded_tar= "v32"
let g:loaded_tar= "v32a"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of tar needs vim 7.2"
@@ -163,9 +164,9 @@ fun! tar#Browse(tarfile)
" call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$' || tarfile =~# '\.\(tzs\)$'
elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$' || tarfile =~# '\.\(tzst\)$'
if has("unix") && executable("file")
let filekind= system("file ".shellescape(tarfile,1)) =~ "bzip2"
let filekind= system("file ".shellescape(tarfile,1))
else
let filekind= ""
endif
@@ -192,7 +193,7 @@ fun! tar#Browse(tarfile)
elseif tarfile =~# '\.\(xz\|txz\)$'
" call Decho("3: exe silent r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
elseif tarfile =~# '\.\(zst\|tzs\)$'
elseif tarfile =~# '\.\(zst\|tzst\)$'
exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
else
if tarfile =~ '^\s*-'
@@ -208,23 +209,29 @@ fun! tar#Browse(tarfile)
" call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
return
endif
if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~# '\c\%(warning\|error\|inappropriate\|unrecognized\)')
redraw!
echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None
keepj sil! %d
let eikeep= &ei
set ei=BufReadCmd,FileReadCmd
exe "r ".fnameescape(a:tarfile)
let &ei= eikeep
keepj sil! 1d
" call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
return
endif
"
" The following should not be neccessary, since in case of errors the
" previous if statement should have caught the problem (because tar exited
" with a non-zero exit code).
" if line("$") == curlast || ( line("$") == (curlast + 1) &&
" \ getline("$") =~# '\c\<\%(warning\|error\|inappropriate\|unrecognized\)\>' &&
" \ getline("$") =~ '\s' )
" redraw!
" echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None
" keepj sil! %d
" let eikeep= &ei
" set ei=BufReadCmd,FileReadCmd
" exe "r ".fnameescape(a:tarfile)
" let &ei= eikeep
" keepj sil! 1d
" call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
" return
" endif
" set up maps supported for tar
setlocal noma nomod ro
noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
noremap <silent> <buffer> x :call tar#Extract()<cr>
noremap <silent> <buffer> x :call tar#Extract()<cr>
if &mouse != ""
noremap <silent> <buffer> <leftmouse> <leftmouse>:call <SID>TarBrowseSelect()<cr>
endif
@@ -462,9 +469,9 @@ fun! tar#Write(fname)
let compress= "xz -- ".shellescape(tarfile,0)
" call Decho("compress<".compress.">")
elseif tarfile =~# '\.zst'
call system("zstd --decompress -- ".shellescape(tarfile,0))
call system("zstd --decompress --rm -- ".shellescape(tarfile,0))
let tarfile = substitute(tarfile,'\.zst','','e')
let compress= "zstd -- ".shellescape(tarfile,0)
let compress= "zstd --rm -- ".shellescape(tarfile,0)
elseif tarfile =~# '\.lzma'
call system("lzma -d -- ".shellescape(tarfile,0))
let tarfile = substitute(tarfile,'\.lzma','','e')
@@ -480,7 +487,7 @@ fun! tar#Write(fname)
else
" call Decho("tarfile<".tarfile."> fname<".fname.">")
if fname =~ '/'
let dirpath = substitute(fname,'/[^/]\+$','','e')
if has("win32unix") && executable("cygpath")
@@ -496,7 +503,7 @@ fun! tar#Write(fname)
let tarfile = substitute(tarfile, '-', './-', '')
endif
" call Decho("tarfile<".tarfile."> fname<".fname.">")
if exists("g:tar_secure")
let tar_secure= " -- "
else
@@ -506,7 +513,7 @@ fun! tar#Write(fname)
if has("win32unix") && executable("cygpath")
let tarfile = substitute(system("cygpath ".shellescape(tarfile,0)),'\n','','e')
endif
" delete old file from tarfile
" call Decho("system(".g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")")
call system(g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
@@ -515,8 +522,8 @@ fun! tar#Write(fname)
" call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname))
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
else
" update tarfile with new file
" update tarfile with new file
" call Decho(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
if v:shell_error != 0
@@ -549,7 +556,7 @@ fun! tar#Write(fname)
unlet s:tblfile_{winnr()}
endif
endif
" cleanup and restore current directory
cd ..
call s:Rmdir("_ZIPVIM_")
@@ -690,13 +697,13 @@ fun! tar#Extract()
echo "***note*** successfully extracted ".fname
endif
elseif filereadable(tarbase.".tzs")
elseif filereadable(tarbase.".tzst")
let extractcmd= substitute(extractcmd,"-","--zstd","")
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tzs ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname))
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tzst ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".tzst ".shellescape(fname))
if v:shell_error != 0
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!")
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tzst ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd." ".tarbase.".tzst ".fname.": failed!")
else
echo "***note*** successfully extracted ".fname
endif
@@ -704,7 +711,7 @@ fun! tar#Extract()
elseif filereadable(tarbase.".tar.zst")
let extractcmd= substitute(extractcmd,"-","--zstd","")
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.zst ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname))
call system(extractcmd." ".shellescape(tarbase).".tar.zst ".shellescape(fname))
if v:shell_error != 0
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!")

View File

@@ -1,6 +1,6 @@
" Vim autoload file for the tohtml plugin.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2023 Jan 01
" Last Change: 2023 Sep 03
"
" Additional contributors:
"
@@ -307,7 +307,7 @@ func! tohtml#Convert2HTML(line1, line2) "{{{
let g:html_diff_win_num = 0
for window in win_list
" switch to the next buffer to convert
exe ":" . bufwinnr(window) . "wincmd w"
exe ":" .. bufwinnr(window) .. "wincmd w"
" figure out whether current charset and encoding will work, if not
" default to UTF-8
@@ -355,7 +355,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
if !s:settings.no_doc
if s:settings.use_xhtml
if s:settings.encoding != ""
let xml_line = "<?xml version=\"1.0\" encoding=\"" . s:settings.encoding . "\"?>"
let xml_line = "<?xml version=\"1.0\" encoding=\"" .. s:settings.encoding .. "\"?>"
else
let xml_line = "<?xml version=\"1.0\"?>"
endif
@@ -387,34 +387,34 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" contained in XML information
if s:settings.encoding != "" && !s:settings.use_xhtml
if s:html5
call add(html, '<meta charset="' . s:settings.encoding . '"' . tag_close)
call add(html, '<meta charset="' .. s:settings.encoding .. '"' .. tag_close)
else
call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" .. s:settings.encoding .. '"' .. tag_close)
endif
endif
call add(html, '<title>diff</title>')
call add(html, '<meta name="Generator" content="Vim/'.v:version/100.'.'.v:version%100.'"'.tag_close)
call add(html, '<meta name="plugin-version" content="'.g:loaded_2html_plugin.'"'.tag_close)
call add(html, '<meta name="Generator" content="Vim/'..v:version/100..'.'..v:version%100..'"'..tag_close)
call add(html, '<meta name="plugin-version" content="'..g:loaded_2html_plugin..'"'..tag_close)
call add(html, '<meta name="settings" content="'.
\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
\ ',prevent_copy='.s:settings.prevent_copy.
\ ',use_input_for_pc='.s:settings.use_input_for_pc.
\ '"'.tag_close)
\ ',prevent_copy='..s:settings.prevent_copy.
\ ',use_input_for_pc='..s:settings.use_input_for_pc.
\ '"'..tag_close)
call add(html, '<meta name="colorscheme" content="'.
\ (exists('g:colors_name')
\ ? g:colors_name
\ : 'none'). '"'.tag_close)
\ : 'none').. '"'..tag_close)
call add(html, '</head>')
let body_line_num = len(html)
call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
call add(html, '<body'..(s:settings.line_ids ? ' onload="JumpToLine();"' : '')..'>')
endif
call add(html, "<table ".(s:settings.use_css? "" : "border='1' width='100%' ")."id='vimCodeElement".s:settings.id_suffix."'>")
call add(html, "<table "..(s:settings.use_css? "" : "border='1' width='100%' ").."id='vimCodeElement"..s:settings.id_suffix.."'>")
call add(html, '<tr>')
for buf in a:win_list
call add(html, '<th>'.bufname(buf).'</th>')
call add(html, '<th>'..bufname(buf)..'</th>')
endfor
call add(html, '</tr><tr>')
@@ -423,7 +423,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
for buf in a:buf_list
let temp = []
exe bufwinnr(buf) . 'wincmd w'
exe bufwinnr(buf) .. 'wincmd w'
" If text is folded because of user foldmethod settings, etc. we don't want
" to act on everything in a fold by mistake.
@@ -526,16 +526,16 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
endif
let i = 1
let name = "Diff" . (s:settings.use_xhtml ? ".xhtml" : ".html")
let name = "Diff" .. (s:settings.use_xhtml ? ".xhtml" : ".html")
" Find an unused file name if current file name is already in use
while filereadable(name)
let name = substitute(name, '\d*\.x\?html$', '', '') . i . '.' . fnamemodify(copy(name), ":t:e")
let name = substitute(name, '\d*\.x\?html$', '', '') .. i .. '.' .. fnamemodify(copy(name), ":t:e")
let i += 1
endwhile
let s:ei_sav = &eventignore
set eventignore+=FileType
exe "topleft new " . name
exe "topleft new " .. name
let &eventignore=s:ei_sav
unlet s:ei_sav
@@ -601,7 +601,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
\ "",
\ " /* navigate upwards in the DOM tree to open all folds containing the line */",
\ " var node = lineElem;",
\ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
\ " while (node && node.id != 'vimCodeElement"..s:settings.id_suffix.."')",
\ " {",
\ " if (node.className == 'closed-fold')",
\ " {",
@@ -640,7 +640,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
call append(style_start, [
\ " function toggleFold(objID)",
\ " {",
\ " for (win_num = 1; win_num <= ".len(a:buf_list)."; win_num++)",
\ " for (win_num = 1; win_num <= "..len(a:buf_list).."; win_num++)",
\ " {",
\ " var fold;",
\ ' fold = document.getElementById("win"+win_num+objID);',
@@ -660,7 +660,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
if s:uses_script
" insert script tag if needed
call append(style_start, [
\ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
\ "<script" .. (s:html5 ? "" : " type='text/javascript'") .. ">",
\ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
endif
@@ -671,14 +671,14 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" is pretty useless for really long lines. {{{
if s:settings.use_css
call append(style_start,
\ ['<style' . (s:html5 ? '' : 'type="text/css"') . '>']+
\ ['<style' .. (s:html5 ? '' : 'type="text/css"') .. '>']+
\ style+
\ [ s:settings.use_xhtml ? '' : '<!--',
\ 'table { table-layout: fixed; }',
\ 'html, body, table, tbody { width: 100%; margin: 0; padding: 0; }',
\ 'table, td, th { border: 1px solid; }',
\ 'td { vertical-align: top; }',
\ 'th, td { width: '.printf("%.1f",100.0/len(a:win_list)).'%; }',
\ 'th, td { width: '..printf("%.1f",100.0/len(a:win_list))..'%; }',
\ 'td div { overflow: auto; }',
\ s:settings.use_xhtml ? '' : '-->',
\ '</style>'
@@ -694,7 +694,7 @@ endfunc "}}}
" Gets a single user option and sets it in the passed-in Dict, or gives it the
" default value if the option doesn't actually exist.
func! tohtml#GetOption(settings, option, default) "{{{
if exists('g:html_'.a:option)
if exists('g:html_'..a:option)
let a:settings[a:option] = g:html_{a:option}
else
let a:settings[a:option] = a:default
@@ -713,10 +713,11 @@ func! tohtml#GetUserSettings() "{{{
let user_settings = {}
" Define the correct option if the old option name exists and we haven't
" already defined the correct one. Maybe I'll put out a warning message about
" this sometime and remove the old option entirely at some even later time,
" but for now just silently accept the old option.
" already defined the correct one.
if exists('g:use_xhtml') && !exists("g:html_use_xhtml")
echohl WarningMsg
echomsg "Warning: g:use_xhtml is deprecated, use g:html_use_xhtml"
echohl None
let g:html_use_xhtml = g:use_xhtml
endif
@@ -739,7 +740,7 @@ func! tohtml#GetUserSettings() "{{{
call tohtml#GetOption(user_settings, 'whole_filler', 0 )
call tohtml#GetOption(user_settings, 'use_xhtml', 0 )
call tohtml#GetOption(user_settings, 'line_ids', user_settings.number_lines )
call tohtml#GetOption(user_settings, 'use_input_for_pc', 'fallback')
call tohtml#GetOption(user_settings, 'use_input_for_pc', 'none')
" }}}
" override those settings that need it {{{
@@ -854,16 +855,16 @@ func! tohtml#GetUserSettings() "{{{
if user_settings.use_css
if exists("g:html_prevent_copy")
if user_settings.dynamic_folds && !user_settings.no_foldcolumn && g:html_prevent_copy =~# 'f'
let user_settings.prevent_copy .= 'f'
let user_settings.prevent_copy ..= 'f'
endif
if user_settings.number_lines && g:html_prevent_copy =~# 'n'
let user_settings.prevent_copy .= 'n'
let user_settings.prevent_copy ..= 'n'
endif
if &diff && g:html_prevent_copy =~# 'd'
let user_settings.prevent_copy .= 'd'
let user_settings.prevent_copy ..= 'd'
endif
if !user_settings.ignore_folding && g:html_prevent_copy =~# 't'
let user_settings.prevent_copy .= 't'
let user_settings.prevent_copy ..= 't'
endif
else
let user_settings.prevent_copy = ""
@@ -875,10 +876,10 @@ func! tohtml#GetUserSettings() "{{{
" enforce valid values for use_input_for_pc
if user_settings.use_input_for_pc !~# 'fallback\|none\|all'
let user_settings.use_input_for_pc = 'fallback'
let user_settings.use_input_for_pc = 'none'
echohl WarningMsg
echomsg '2html: "' . g:html_use_input_for_pc . '" is not valid for g:html_use_input_for_pc'
echomsg '2html: defaulting to "' . user_settings.use_input_for_pc . '"'
echomsg '2html: "' .. g:html_use_input_for_pc .. '" is not valid for g:html_use_input_for_pc'
echomsg '2html: defaulting to "' .. user_settings.use_input_for_pc .. '"'
echohl None
sleep 3
endif

View File

@@ -97,7 +97,7 @@ enddef
# Public interface {{{
# When a TeX document is split into several source files, each source file
# may contain a "magic line" specifiying the "root" file, e.g.:
# may contain a "magic line" specifying the "root" file, e.g.:
#
# % !TEX root = main.tex
#

View File

@@ -1,6 +1,7 @@
" vimball.vim : construct a file containing both paths and files
" Author: Charles E. Campbell
" Date: Apr 11, 2016
" Maintainer: This runtime file is looking for a new maintainer.
" Original Author: Charles E. Campbell
" Date: Apr 11, 2016
" Version: 37
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
" Copyright: (c) 2004-2011 by Charles E. Campbell

View File

@@ -2,7 +2,8 @@
" AUTOLOAD PORTION
" Date: Mar 12, 2023
" Version: 33
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Maintainer: This runtime file is looking for a new maintainer.
" Former Maintainer: Charles E Campbell
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
@@ -57,6 +58,11 @@ if !exists("g:zip_extractcmd")
let g:zip_extractcmd= g:zip_unzipcmd
endif
if !dist#vim#IsSafeExecutable('zip', g:zip_unzipcmd)
echoerr "Warning: NOT executing " .. g:zip_unzipcmd .. " from current directory!"
finish
endif
" ----------------
" Functions: {{{1
" ----------------

View File

@@ -1,8 +1,9 @@
:" 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
:" Maintainer: The Vim Project <https://github.com/vim/vim>
:" Last change: 2023 Aug 10
:" Former Maintainer: Bram Moolenaar <Bram@vim.org>
:"
:" To use inside Vim:
:" :so $VIMRUNTIME/bugreport.vim

View File

@@ -111,11 +111,11 @@ please check the following items:
- Do not use hard coded escape sequences, these will not work in other
terminals. Always use #RRGGBB for the GUI.
- When targetting 8-16 colors terminals, don't count on "darkblue" to be blue
- When targeting 8-16 colors terminals, don't count on "darkblue" to be blue
and dark, or on "2" to be even vaguely reddish. Names are more portable
than numbers, though.
- When targetting 256 colors terminals, prefer colors 16-255 to colors 0-15
- When targeting 256 colors terminals, prefer colors 16-255 to colors 0-15
for the same reason.
- Typographic attributes (bold, italic, underline, reverse, etc.) are not

View File

@@ -4,16 +4,16 @@
" Maintainer: Original maintainer Steven Vertigan <steven@vertigan.wattle.id.au>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Fri 02 Sep 2022 09:41:44 MSK
" Last Updated: Mon 08 Jan 2024 09:42:49 AM AEDT
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=dark
hi clear
let g:colors_name = 'blue'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
@@ -76,8 +76,8 @@ hi Underlined guifg=NONE guibg=NONE gui=underline ctermfg=NONE ctermbg=NONE cter
hi Label guifg=#ffd700 guibg=NONE gui=NONE cterm=NONE
hi! link Terminal Normal
hi! link Debug Special
hi! link diffAdded String
hi! link diffRemoved WarningMsg
hi! link Added String
hi! link Removed WarningMsg
hi! link diffOnly WarningMsg
hi! link diffNoEOL WarningMsg
hi! link diffIsA WarningMsg
@@ -186,8 +186,8 @@ if s:t_Co >= 256
hi Label ctermfg=220 ctermbg=NONE cterm=NONE
hi! link Terminal Normal
hi! link Debug Special
hi! link diffAdded String
hi! link diffRemoved WarningMsg
hi! link Added String
hi! link Removed WarningMsg
hi! link diffOnly WarningMsg
hi! link diffNoEOL WarningMsg
hi! link diffIsA WarningMsg
@@ -299,8 +299,8 @@ if s:t_Co >= 16
hi Label ctermfg=yellow ctermbg=NONE cterm=NONE
hi! link Terminal Normal
hi! link Debug Special
hi! link diffAdded String
hi! link diffRemoved WarningMsg
hi! link Added String
hi! link Removed WarningMsg
hi! link diffOnly WarningMsg
hi! link diffNoEOL WarningMsg
hi! link diffIsA WarningMsg
@@ -411,8 +411,8 @@ if s:t_Co >= 8
hi Label ctermfg=yellow ctermbg=NONE cterm=NONE
hi! link Terminal Normal
hi! link Debug Special
hi! link diffAdded String
hi! link diffRemoved WarningMsg
hi! link Added String
hi! link Removed WarningMsg
hi! link diffOnly WarningMsg
hi! link diffNoEOL WarningMsg
hi! link diffIsA WarningMsg
@@ -583,4 +583,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -4,16 +4,16 @@
" Maintainer: Original author Bohdan Vlasyuk <bohdan@vstu.edu.ua>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Fri 02 Sep 2022 09:40:36 MSK
" Last Updated: Mon 08 Jan 2024 09:43:03 AM AEDT
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=dark
hi clear
let g:colors_name = 'darkblue'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#8b0000', '#90f020', '#ffa500', '#00008b', '#8b008b', '#008b8b', '#c0c0c0', '#808080', '#ffa0a0', '#90f020', '#ffff60', '#0030ff', '#ff00ff', '#90fff0', '#ffffff']
@@ -54,8 +54,8 @@ hi! link Structure Type
hi! link Tag Special
hi! link Typedef Type
hi! link Debug Special
hi! link diffAdded String
hi! link diffRemoved WarningMsg
hi! link Added String
hi! link Removed WarningMsg
hi! link diffOnly WarningMsg
hi! link diffNoEOL WarningMsg
hi! link diffIsA WarningMsg
@@ -162,8 +162,8 @@ if s:t_Co >= 256
hi! link Tag Special
hi! link Typedef Type
hi! link Debug Special
hi! link diffAdded String
hi! link diffRemoved WarningMsg
hi! link Added String
hi! link Removed WarningMsg
hi! link diffOnly WarningMsg
hi! link diffNoEOL WarningMsg
hi! link diffIsA WarningMsg
@@ -467,4 +467,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -1,6 +1,7 @@
" Vim color file
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2001 Jul 23
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Aug 10
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" This is the default color scheme. It doesn't define the Normal
" highlighting, it uses whatever the colors used to be.

View File

@@ -4,16 +4,16 @@
" Maintainer: Original maintainer David Schweikert <david@schweikert.ch>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Sun 04 Sep 2022 09:31:26 MSK
" Last Updated: Fri 15 Dec 2023 20:05:34
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=light
hi clear
let g:colors_name = 'delek'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#ffffff', '#0000ff', '#00cd00', '#cd00cd', '#008b8b', '#0000ff', '#ff1493', '#bcbcbc', '#ee0000', '#0000ff', '#00cd00', '#cd00cd', '#008b8b', '#0000ff', '#ff1493', '#000000']
@@ -408,4 +408,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -4,16 +4,16 @@
" Maintainer: Original maintainer Hans Fugal <hans@fugal.net>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Fri 02 Sep 2022 09:39:21 MSK
" Last Updated: Fri 15 Dec 2023 20:05:34
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=dark
hi clear
let g:colors_name = 'desert'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#7f7f8c', '#cd5c5c', '#9acd32', '#bdb76b', '#75a0ff', '#eeee00', '#cd853f', '#666666', '#8a7f7f', '#ff0000', '#89fb98', '#f0e68c', '#6dceeb', '#ffde9b', '#ffa0a0', '#c2bfa5']
@@ -397,4 +397,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -3,16 +3,16 @@
" Maintainer: original maintainer Ron Aaron <ron@ronware.org>
" Website: https://www.github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Fri 02 Sep 2022 09:44:22 MSK
" Last Updated: Fri 15 Dec 2023 20:05:35
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=dark
hi clear
let g:colors_name = 'elflord'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
hi! link Terminal Normal
hi! link Boolean Constant
@@ -446,4 +446,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -4,16 +4,16 @@
" Maintainer: Original maintainer Steven Vertigan <steven@vertigan.wattle.id.au>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Sun 04 Sep 2022 09:48:34 MSK
" Last Updated: Mon 08 Jan 2024 09:43:27 AM AEDT
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=dark
hi clear
let g:colors_name = 'evening'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0087ff', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
@@ -28,8 +28,8 @@ hi! link CursorIM Cursor
hi! link LineNrAbove LineNr
hi! link LineNrBelow LineNr
hi! link Debug Special
hi! link diffAdded String
hi! link diffRemoved WarningMsg
hi! link Added String
hi! link Removed WarningMsg
hi! link diffOnly WarningMsg
hi! link diffNoEOL WarningMsg
hi! link diffIsA WarningMsg
@@ -136,8 +136,8 @@ if s:t_Co >= 256
hi! link LineNrAbove LineNr
hi! link LineNrBelow LineNr
hi! link Debug Special
hi! link diffAdded String
hi! link diffRemoved WarningMsg
hi! link Added String
hi! link Removed WarningMsg
hi! link diffOnly WarningMsg
hi! link diffNoEOL WarningMsg
hi! link diffIsA WarningMsg
@@ -247,8 +247,8 @@ if s:t_Co >= 16
hi! link LineNrAbove LineNr
hi! link LineNrBelow LineNr
hi! link Debug Special
hi! link diffAdded String
hi! link diffRemoved WarningMsg
hi! link Added String
hi! link Removed WarningMsg
hi! link diffOnly WarningMsg
hi! link diffNoEOL WarningMsg
hi! link diffIsA WarningMsg
@@ -528,4 +528,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -4,16 +4,16 @@
" Maintainer: Maxim Kim <habamax@gmail.com>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Fri 24 Mar 2023 20:28:06 AEDT
" Last Updated: Mon 08 Jan 2024 09:39:53 AM AEDT
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=dark
hi clear
let g:colors_name = 'habamax'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#1c1c1c', '#d75f5f', '#87af87', '#afaf87', '#5f87af', '#af87af', '#5f8787', '#9e9e9e', '#767676', '#d7875f', '#afd7af', '#d7d787', '#87afd7', '#d7afd7', '#87afaf', '#bcbcbc']
@@ -106,8 +106,9 @@ hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Debug guifg=#5f8787 guibg=NONE gui=NONE cterm=NONE
hi DiffAdd guifg=#dadada guibg=#5f875f gui=NONE cterm=NONE
hi DiffDelete guifg=#af875f guibg=NONE gui=NONE cterm=NONE
hi diffAdded guifg=#87af87 guibg=NONE gui=NONE cterm=NONE
hi diffRemoved guifg=#d75f5f guibg=NONE gui=NONE cterm=NONE
hi Added guifg=#87af87 guibg=NONE gui=NONE cterm=NONE
hi Changed guifg=#5f8787 guibg=NONE gui=NONE cterm=NONE
hi Removed guifg=#d75f5f guibg=NONE gui=NONE cterm=NONE
hi diffSubname guifg=#af87af guibg=NONE gui=NONE cterm=NONE
hi DiffText guifg=#dadada guibg=#878787 gui=NONE cterm=NONE
hi DiffChange guifg=#bcbcbc guibg=#5f5f5f gui=NONE cterm=NONE
@@ -199,8 +200,9 @@ if s:t_Co >= 256
hi Debug ctermfg=66 ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=253 ctermbg=65 cterm=NONE
hi DiffDelete ctermfg=137 ctermbg=NONE cterm=NONE
hi diffAdded ctermfg=108 ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=167 ctermbg=NONE cterm=NONE
hi Added ctermfg=108 ctermbg=NONE cterm=NONE
hi Changed ctermfg=66 ctermbg=NONE cterm=NONE
hi Removed ctermfg=167 ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=139 ctermbg=NONE cterm=NONE
hi DiffText ctermfg=253 ctermbg=102 cterm=NONE
hi DiffChange ctermfg=250 ctermbg=59 cterm=NONE
@@ -277,8 +279,9 @@ if s:t_Co >= 16
hi Debug ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
hi DiffDelete ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi diffAdded ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=darkred ctermbg=NONE cterm=NONE
hi Added ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi Changed ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Removed ctermfg=darkred ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi DiffText ctermfg=white ctermbg=lightgrey cterm=NONE
hi DiffChange ctermfg=white ctermbg=darkgray cterm=NONE
@@ -355,8 +358,9 @@ if s:t_Co >= 8
hi Debug ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
hi DiffDelete ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi diffAdded ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=darkred ctermbg=NONE cterm=NONE
hi Added ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi Changed ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Removed ctermfg=darkred ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi DiffText ctermfg=white ctermbg=black cterm=bold,reverse
hi DiffChange ctermfg=black ctermbg=white cterm=NONE
@@ -465,4 +469,4 @@ endif
" Color: white #dadada 253 white
" Term colors: color00 color01 color02 color03 color04 color05 color06 color07
" Term colors: color08 color09 color10 color11 color12 color13 color14 color15
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -4,16 +4,16 @@
" Maintainer: Original maintainer Shian Lee.
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Sun 04 Sep 2022 09:50:04 MSK
" Last Updated: Fri 15 Dec 2023 20:05:36
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=dark
hi clear
let g:colors_name = 'industry'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#303030', '#870000', '#5fd75f', '#afaf00', '#87afff', '#af00af', '#00afaf', '#6c6c6c', '#444444', '#ff0000', '#00ff00', '#ffff00', '#005fff', '#ff00ff', '#00ffff', '#ffffff']
@@ -409,4 +409,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -3,16 +3,16 @@
" Maintainer: original maintainer Ron Aaron <ron@ronware.org>
" Website: https://www.github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Fri 02 Sep 2022 09:23:56 MSK
" Last Updated: Fri 15 Dec 2023 20:05:36
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=dark
hi clear
let g:colors_name = 'koehler'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
hi! link Terminal Normal
hi! link Boolean Constant
@@ -423,4 +423,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -4,6 +4,9 @@
" Similar in spirit to rgb.txt, this plugin establishes a human-friendly name
" for every color listed in the CSS standard:
"
" Note: the color names should be in lower case, because Vim will lookup the
" a color by its lower case name.
"
" https://www.w3.org/TR/css-color-3/
let s:keepcpo= &cpo
@@ -26,7 +29,6 @@ call extend(v:colornames, {
\ 'css_blue': '#0000FF',
\ 'css_teal': '#008080',
\ 'css_aqua': '#00FFFF',
\
\ 'css_aliceblue': '#f0f8ff',
\ 'css_antiquewhite': '#faebd7',
\ 'css_aquamarine': '#7fffd4',
@@ -160,6 +162,14 @@ call extend(v:colornames, {
\ 'css_yellowgreen': '#9acd32',
\ }, 'keep')
" all keys should be in lower case, convert keys that are not yet
for [key, val] in items(filter(copy(v:colornames), { key -> key =~ '\u'}))
call remove(v:colornames, key)
if !has_key(v:colornames, tolower(key))
call extend(v:colornames, {tolower(key): val}, 'keep')
endif
endfor
let &cpo= s:keepcpo
unlet s:keepcpo

View File

@@ -6,6 +6,8 @@
" time the highlight command fails to recognize a gui color. You can override
" these colors by introducing a new colors/lists/default.vim file earlier in
" the runtimepath.
" Note: the color names should be in lower case, because Vim will lookup the
" a color by its lower case name.
" make sure line continuation works
let s:keepcpo = &cpo
@@ -802,6 +804,14 @@ call extend(v:colornames, {
\ 'teal': '#008080'
\ }, 'keep')
" all keys should be in lower case, convert keys that are not yet
for [key, val] in items(filter(copy(v:colornames), { key -> key =~ '\u'}))
call remove(v:colornames, key)
if !has_key(v:colornames, tolower(key))
call extend(v:colornames, {tolower(key): val}, 'keep')
endif
endfor
let &cpo = s:keepcpo
unlet s:keepcpo

View File

@@ -4,20 +4,36 @@
" Maintainer: Maxim Kim <habamax@gmail.com>
" Website: https://www.github.com/vim/colorschemes
" License: Vim License (see `:help license`)
" Last Updated: Sun 26 Mar 2023 23:04:18 AEDT
" Last Updated: Mon 08 Jan 2024 09:41:03 AM AEDT
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
hi clear
let g:colors_name = 'lunaperche'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
hi! link helpVim Title
hi! link helpHeader Title
hi! link helpHyperTextJump Underlined
hi! link fugitiveSymbolicRef PreProc
hi! link fugitiveHeading Statement
hi! link fugitiveStagedHeading Statement
hi! link fugitiveUnstagedHeading Statement
hi! link fugitiveUntrackedHeading Statement
hi! link fugitiveStagedModifier PreProc
hi! link fugitiveUnstagedModifier PreProc
hi! link fugitiveHash Constant
hi! link diffFile PreProc
hi! link markdownHeadingDelimiter Special
hi! link rstSectionDelimiter Statement
hi! link rstDirective PreProc
hi! link rstHyperlinkReference Special
hi! link rstFieldName Constant
hi! link rstDelimiter Special
hi! link rstInterpretedText Special
hi! link rstCodeBlock Normal
hi! link rstLiteralBlock rstCodeBlock
hi! link markdownUrl String
hi! link colortemplateKey Statement
hi! link xmlTagName Statement
@@ -118,10 +134,10 @@ if &background ==# 'dark'
hi WildMenu guifg=#000000 guibg=#ffd787 gui=bold cterm=bold
hi debugPC guifg=#5f87af guibg=NONE gui=reverse cterm=reverse
hi debugBreakpoint guifg=#5fafaf guibg=NONE gui=reverse cterm=reverse
hi Cursor guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi Cursor guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
hi lCursor guifg=#ff5fff guibg=#000000 gui=reverse cterm=reverse
hi Visual guifg=#ffffff guibg=#005f87 gui=NONE cterm=NONE
hi MatchParen guifg=#c5e7c5 guibg=#000000 gui=reverse cterm=reverse
hi MatchParen guifg=#ff00af guibg=NONE gui=bold cterm=bold
hi VisualNOS guifg=#000000 guibg=#5fafaf gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#262626 gui=NONE cterm=NONE
hi CursorColumn guifg=NONE guibg=#262626 gui=NONE cterm=NONE
@@ -148,8 +164,9 @@ if &background ==# 'dark'
hi DiffChange guifg=#c6c6c6 guibg=#5f5f5f gui=NONE cterm=NONE
hi DiffText guifg=#afffff guibg=#5f8787 gui=NONE cterm=NONE
hi DiffDelete guifg=#d78787 guibg=NONE gui=NONE cterm=NONE
hi diffAdded guifg=#5fd75f guibg=NONE gui=NONE cterm=NONE
hi diffRemoved guifg=#d78787 guibg=NONE gui=NONE cterm=NONE
hi Added guifg=#5fd75f guibg=NONE gui=NONE cterm=NONE
hi Changed guifg=#5fafff guibg=NONE gui=NONE cterm=NONE
hi Removed guifg=#d78787 guibg=NONE gui=NONE cterm=NONE
hi diffSubname guifg=#ff87ff guibg=NONE gui=NONE cterm=NONE
hi dirType guifg=#d787d7 guibg=NONE gui=NONE cterm=NONE
hi dirPermissionUser guifg=#5faf5f guibg=NONE gui=NONE cterm=NONE
@@ -208,10 +225,10 @@ else
hi WildMenu guifg=#000000 guibg=#ffd787 gui=bold cterm=bold
hi debugPC guifg=#005fd7 guibg=NONE gui=reverse cterm=reverse
hi debugBreakpoint guifg=#005f5f guibg=NONE gui=reverse cterm=reverse
hi Cursor guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi Cursor guifg=#ffffff guibg=#000000 gui=NONE cterm=NONE
hi lCursor guifg=#ff00ff guibg=#000000 gui=reverse cterm=reverse
hi Visual guifg=#ffffff guibg=#5f87af gui=NONE cterm=NONE
hi MatchParen guifg=NONE guibg=#c5e7c5 gui=NONE cterm=NONE
hi MatchParen guifg=#ff00af guibg=NONE gui=bold cterm=bold
hi VisualNOS guifg=#ffffff guibg=#008787 gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#eeeeee gui=NONE cterm=NONE
hi CursorColumn guifg=NONE guibg=#eeeeee gui=NONE cterm=NONE
@@ -238,8 +255,9 @@ else
hi DiffChange guifg=#000000 guibg=#d0d0d0 gui=NONE cterm=NONE
hi DiffText guifg=#000000 guibg=#5fd7d7 gui=NONE cterm=NONE
hi DiffDelete guifg=#870000 guibg=NONE gui=NONE cterm=NONE
hi diffAdded guifg=#008700 guibg=NONE gui=NONE cterm=NONE
hi diffRemoved guifg=#d70000 guibg=NONE gui=NONE cterm=NONE
hi Added guifg=#008700 guibg=NONE gui=NONE cterm=NONE
hi Changed guifg=#005fd7 guibg=NONE gui=NONE cterm=NONE
hi Removed guifg=#d70000 guibg=NONE gui=NONE cterm=NONE
hi diffSubname guifg=#af00af guibg=NONE gui=NONE cterm=NONE
hi dirType guifg=#005f5f guibg=NONE gui=NONE cterm=NONE
hi dirPermissionUser guifg=#af5f00 guibg=NONE gui=NONE cterm=NONE
@@ -262,8 +280,24 @@ if s:t_Co >= 256
hi! link helpVim Title
hi! link helpHeader Title
hi! link helpHyperTextJump Underlined
hi! link fugitiveSymbolicRef PreProc
hi! link fugitiveHeading Statement
hi! link fugitiveStagedHeading Statement
hi! link fugitiveUnstagedHeading Statement
hi! link fugitiveUntrackedHeading Statement
hi! link fugitiveStagedModifier PreProc
hi! link fugitiveUnstagedModifier PreProc
hi! link fugitiveHash Constant
hi! link diffFile PreProc
hi! link markdownHeadingDelimiter Special
hi! link rstSectionDelimiter Statement
hi! link rstDirective PreProc
hi! link rstHyperlinkReference Special
hi! link rstFieldName Constant
hi! link rstDelimiter Special
hi! link rstInterpretedText Special
hi! link rstCodeBlock Normal
hi! link rstLiteralBlock rstCodeBlock
hi! link markdownUrl String
hi! link colortemplateKey Statement
hi! link xmlTagName Statement
@@ -362,7 +396,7 @@ if s:t_Co >= 256
hi debugPC ctermfg=67 ctermbg=NONE cterm=reverse
hi debugBreakpoint ctermfg=73 ctermbg=NONE cterm=reverse
hi Visual ctermfg=231 ctermbg=24 cterm=NONE
hi MatchParen ctermfg=30 ctermbg=16 cterm=reverse
hi MatchParen ctermfg=199 ctermbg=NONE cterm=bold
hi VisualNOS ctermfg=16 ctermbg=73 cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=235 cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=235 cterm=NONE
@@ -389,8 +423,9 @@ if s:t_Co >= 256
hi DiffChange ctermfg=251 ctermbg=59 cterm=NONE
hi DiffText ctermfg=159 ctermbg=66 cterm=NONE
hi DiffDelete ctermfg=174 ctermbg=NONE cterm=NONE
hi diffAdded ctermfg=77 ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=174 ctermbg=NONE cterm=NONE
hi Added ctermfg=77 ctermbg=NONE cterm=NONE
hi Changed ctermfg=75 ctermbg=NONE cterm=NONE
hi Removed ctermfg=174 ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=213 ctermbg=NONE cterm=NONE
hi dirType ctermfg=176 ctermbg=NONE cterm=NONE
hi dirPermissionUser ctermfg=71 ctermbg=NONE cterm=NONE
@@ -447,7 +482,7 @@ if s:t_Co >= 256
hi debugPC ctermfg=26 ctermbg=NONE cterm=reverse
hi debugBreakpoint ctermfg=23 ctermbg=NONE cterm=reverse
hi Visual ctermfg=231 ctermbg=67 cterm=NONE
hi MatchParen ctermfg=30 ctermbg=231 cterm=reverse
hi MatchParen ctermfg=199 ctermbg=NONE cterm=bold
hi VisualNOS ctermfg=231 ctermbg=30 cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=255 cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=255 cterm=NONE
@@ -474,8 +509,9 @@ if s:t_Co >= 256
hi DiffChange ctermfg=16 ctermbg=252 cterm=NONE
hi DiffText ctermfg=16 ctermbg=80 cterm=NONE
hi DiffDelete ctermfg=88 ctermbg=NONE cterm=NONE
hi diffAdded ctermfg=28 ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=160 ctermbg=NONE cterm=NONE
hi Added ctermfg=28 ctermbg=NONE cterm=NONE
hi Changed ctermfg=26 ctermbg=NONE cterm=NONE
hi Removed ctermfg=160 ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=127 ctermbg=NONE cterm=NONE
hi dirType ctermfg=23 ctermbg=NONE cterm=NONE
hi dirPermissionUser ctermfg=130 ctermbg=NONE cterm=NONE
@@ -537,8 +573,7 @@ if s:t_Co >= 16
hi WildMenu ctermfg=black ctermbg=yellow cterm=bold
hi debugPC ctermfg=darkblue ctermbg=NONE cterm=reverse
hi debugBreakpoint ctermfg=darkcyan ctermbg=NONE cterm=reverse
hi Visual ctermfg=white ctermbg=darkblue cterm=NONE
hi MatchParen ctermfg=darkcyan ctermbg=black cterm=reverse
hi MatchParen ctermfg=NONE ctermbg=NONE cterm=bold,underline
hi VisualNOS ctermfg=black ctermbg=darkcyan cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorColumn ctermfg=black ctermbg=yellow cterm=NONE
@@ -565,8 +600,9 @@ if s:t_Co >= 16
hi DiffChange ctermfg=white ctermbg=darkgreen cterm=NONE
hi DiffText ctermfg=black ctermbg=cyan cterm=NONE
hi DiffDelete ctermfg=darkred ctermbg=NONE cterm=NONE
hi diffAdded ctermfg=green ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=darkred ctermbg=NONE cterm=NONE
hi Added ctermfg=green ctermbg=NONE cterm=NONE
hi Changed ctermfg=blue ctermbg=NONE cterm=NONE
hi Removed ctermfg=darkred ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=magenta ctermbg=NONE cterm=NONE
hi dirType ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi dirPermissionUser ctermfg=darkgreen ctermbg=NONE cterm=NONE
@@ -623,7 +659,7 @@ if s:t_Co >= 16
hi debugPC ctermfg=darkblue ctermbg=NONE cterm=reverse
hi debugBreakpoint ctermfg=darkcyan ctermbg=NONE cterm=reverse
hi Visual ctermfg=white ctermbg=darkblue cterm=NONE
hi MatchParen ctermfg=darkcyan ctermbg=white cterm=reverse
hi MatchParen ctermfg=NONE ctermbg=NONE cterm=bold,underline
hi VisualNOS ctermfg=black ctermbg=cyan cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorColumn ctermfg=black ctermbg=yellow cterm=NONE
@@ -650,8 +686,9 @@ if s:t_Co >= 16
hi DiffChange ctermfg=black ctermbg=lightgray cterm=NONE
hi DiffText ctermfg=black ctermbg=cyan cterm=NONE
hi DiffDelete ctermfg=darkred ctermbg=NONE cterm=NONE
hi diffAdded ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=red ctermbg=NONE cterm=NONE
hi Added ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi Changed ctermfg=darkblue ctermbg=NONE cterm=NONE
hi Removed ctermfg=red ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi dirType ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi dirPermissionUser ctermfg=darkyellow ctermbg=NONE cterm=NONE
@@ -714,7 +751,7 @@ if s:t_Co >= 8
hi debugPC ctermfg=darkblue ctermbg=NONE cterm=reverse
hi debugBreakpoint ctermfg=darkcyan ctermbg=NONE cterm=reverse
hi Visual ctermfg=NONE ctermbg=NONE cterm=reverse
hi MatchParen ctermfg=darkcyan ctermbg=black cterm=reverse
hi MatchParen ctermfg=magenta ctermbg=NONE cterm=bold
hi VisualNOS ctermfg=black ctermbg=darkcyan cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorColumn ctermfg=black ctermbg=darkyellow cterm=NONE
@@ -781,7 +818,7 @@ if s:t_Co >= 8
hi debugPC ctermfg=darkblue ctermbg=NONE cterm=reverse
hi debugBreakpoint ctermfg=darkcyan ctermbg=NONE cterm=reverse
hi Visual ctermfg=NONE ctermbg=NONE cterm=reverse
hi MatchParen ctermfg=darkcyan ctermbg=grey cterm=reverse
hi MatchParen ctermfg=magenta ctermbg=NONE cterm=bold
hi VisualNOS ctermfg=black ctermbg=darkcyan cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorColumn ctermfg=black ctermbg=darkyellow cterm=NONE
@@ -906,7 +943,7 @@ endif
" Color: colorC #FFFFFF 231 white
" Color: colorlC #FF5FFF 207 magenta
" Color: colorV #005F87 24 darkblue
" Color: colorMP #C5E7C5 30 darkcyan
" Color: colorMP #ff00af 199 magenta
" Color: colorPMenuSel #4e4e4e 239 darkcyan
" Color: colorDim #878787 102 grey
" Color: diffAdd #875f87 96 darkmagenta
@@ -941,7 +978,7 @@ endif
" Color: colorC #000000 16 black
" Color: colorlC #FF00FF 201 magenta
" Color: colorV #5F87AF 67 darkblue
" Color: colorMP #C5E7C5 30 darkcyan
" Color: colorMP #ff00af 199 magenta
" Color: colorPMenuSel #C6C6C6 251 darkcyan
" Color: colorDim #626262 241 darkgrey
" Color: diffAdd #D7AFD7 182 darkmagenta
@@ -952,4 +989,4 @@ endif
" Term colors: color00 color01 color02 color03 color04 color05 color06 color07
" Term colors: color08 color09 color10 color11 color12 color13 color14 color15
" Background: any
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -4,16 +4,16 @@
" Maintainer: Original maintainer Bram Moolenaar <Bram@vim.org>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Fri 02 Sep 2022 09:46:24 MSK
" Last Updated: Fri 15 Dec 2023 20:05:37
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=light
hi clear
let g:colors_name = 'morning'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#e4e4e4', '#a52a2a', '#ff00ff', '#6a0dad', '#008787', '#2e8b57', '#6a5acd', '#bcbcbc', '#0000ff', '#a52a2a', '#ff00ff', '#6a0dad', '#008787', '#2e8b57', '#6a5acd', '#000000']
@@ -400,4 +400,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -4,16 +4,16 @@
" Maintainer: Original maintainer Ron Aaron <ron@ronware.org>.
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Fri 02 Sep 2022 09:47:20 MSK
" Last Updated: Mon 08 Jan 2024 09:50:15 AM AEDT
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=dark
hi clear
let g:colors_name = 'murphy'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#303030', '#ffa700', '#005f00', '#ffd7af', '#87afff', '#ffafaf', '#00afaf', '#bcbcbc', '#444444', '#ff0000', '#00875f', '#ffff00', '#005fff', '#ff00ff', '#00ffff', '#ffffff']
@@ -28,6 +28,7 @@ hi! link StatusLineTerm StatusLine
hi! link StatusLineTermNC StatusLineNC
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi! link Added Constant
hi Normal guifg=#87ff87 guibg=#000000 gui=NONE cterm=NONE
hi EndOfBuffer guifg=#0000ff guibg=#000000 gui=NONE cterm=NONE
hi StatusLine guifg=#ffffff guibg=#00008b gui=NONE cterm=NONE
@@ -100,6 +101,7 @@ if s:t_Co >= 256
hi! link StatusLineTermNC StatusLineNC
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi! link Added Constant
hi Normal ctermfg=120 ctermbg=16 cterm=NONE
hi EndOfBuffer ctermfg=21 ctermbg=16 cterm=NONE
hi StatusLine ctermfg=231 ctermbg=18 cterm=NONE
@@ -394,4 +396,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -3,16 +3,16 @@
" Maintainer: Original maintainerRon Aaron <ron@ronware.org>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Wed 14 Sep 2022 19:05:27 MSK
" Last Updated: Fri 15 Dec 2023 20:05:38
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=dark
hi clear
let g:colors_name = 'pablo'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
@@ -427,4 +427,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -4,16 +4,16 @@
" Maintainer: Original maintainer David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Fri 02 Sep 2022 09:50:02 MSK
" Last Updated: Fri 15 Dec 2023 20:05:39
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=light
hi clear
let g:colors_name = 'peachpuff'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#ffdab9', '#a52a2a', '#c00058', '#cd00cd', '#008b8b', '#2e8b57', '#6a5acd', '#737373', '#406090', '#a52a2a', '#c00058', '#cd00cd', '#008b8b', '#2e8b57', '#6a5acd', '#000000']
@@ -405,4 +405,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -4,14 +4,14 @@
" Maintainer: Maxence Weynans <neutaaaaan@gmail.com>
" Website: https://github.com/vim/colorschemes
" License: Vim License (see `:help license`)`
" Last Updated: Wed 15 Mar 2023 06:45:06 PM CET
" Last Updated: Fri 15 Dec 2023 20:05:39
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
hi clear
let g:colors_name = 'quiet'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
hi! link Terminal Normal
hi! link StatusLineTerm StatusLine
@@ -742,4 +742,4 @@ endif
" Term colors: light0 light1 light2 light3 light4 light5 light6 light7
" Term colors: light8 light9 light10 light11 light12 light13 light14 light15
" Background: any
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -4,14 +4,14 @@
" Maintainer: Maxim Kim <habamax@gmail.com>, ported from gruvbox8 of Lifepillar <lifepillar@lifepillar.me>
" Website: https://www.github.com/vim/colorschemes
" License: Vim License (see `:help license`)
" Last Updated: Sun 12 Mar 2023 15:14:04 AEDT
" Last Updated: Fri 15 Dec 2023 20:05:40
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
hi clear
let g:colors_name = 'retrobox'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
hi! link CursorColumn CursorLine
hi! link StatusLineTerm StatusLine
@@ -61,7 +61,7 @@ if &background ==# 'dark'
hi WildMenu guifg=#83a598 guibg=#504945 gui=bold cterm=bold
hi EndOfBuffer guifg=#504945 guibg=NONE gui=NONE cterm=NONE
hi Conceal guifg=#83a598 guibg=NONE gui=NONE cterm=NONE
hi Cursor guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi Cursor guifg=#1c1c1c guibg=#fbf1c7 gui=NONE cterm=NONE
hi DiffAdd guifg=#b8bb26 guibg=#1c1c1c gui=reverse cterm=reverse
hi DiffChange guifg=#8ec07c guibg=#1c1c1c gui=reverse cterm=reverse
hi DiffDelete guifg=#fb4934 guibg=#1c1c1c gui=reverse cterm=reverse
@@ -112,7 +112,7 @@ if &background ==# 'dark'
hi Type guifg=#fabd2f guibg=NONE gui=NONE cterm=NONE
hi Typedef guifg=#fabd2f guibg=NONE gui=NONE cterm=NONE
hi Underlined guifg=#83a598 guibg=NONE gui=underline cterm=underline
hi CursorIM guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi CursorIM guifg=#1c1c1c guibg=#fbf1c7 gui=NONE cterm=NONE
else
" Light background
if (has('termguicolors') && &termguicolors) || has('gui_running')
@@ -152,7 +152,7 @@ else
hi WildMenu guifg=#076678 guibg=#e5d4b1 gui=bold cterm=bold
hi EndOfBuffer guifg=#e5d4b1 guibg=NONE gui=NONE cterm=NONE
hi Conceal guifg=#076678 guibg=NONE gui=NONE cterm=NONE
hi Cursor guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi Cursor guifg=#fbf1c7 guibg=#282828 gui=NONE cterm=NONE
hi DiffAdd guifg=#79740e guibg=#fbf1c7 gui=reverse cterm=reverse
hi DiffChange guifg=#427b58 guibg=#fbf1c7 gui=reverse cterm=reverse
hi DiffDelete guifg=#9d0006 guibg=#fbf1c7 gui=reverse cterm=reverse
@@ -203,7 +203,7 @@ else
hi Type guifg=#b57614 guibg=NONE gui=NONE cterm=NONE
hi Typedef guifg=#b57614 guibg=NONE gui=NONE cterm=NONE
hi Underlined guifg=#076678 guibg=NONE gui=underline cterm=underline
hi CursorIM guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi CursorIM guifg=#fbf1c7 guibg=#282828 gui=NONE cterm=NONE
endif
if s:t_Co >= 256
@@ -242,7 +242,7 @@ if s:t_Co >= 256
hi WildMenu ctermfg=109 ctermbg=239 cterm=bold
hi EndOfBuffer ctermfg=239 ctermbg=NONE cterm=NONE
hi Conceal ctermfg=109 ctermbg=NONE cterm=NONE
hi Cursor ctermfg=NONE ctermbg=NONE cterm=reverse
hi Cursor ctermfg=234 ctermbg=230 cterm=NONE
hi DiffAdd ctermfg=142 ctermbg=234 cterm=reverse
hi DiffChange ctermfg=107 ctermbg=234 cterm=reverse
hi DiffDelete ctermfg=203 ctermbg=234 cterm=reverse
@@ -293,7 +293,7 @@ if s:t_Co >= 256
hi Type ctermfg=214 ctermbg=NONE cterm=NONE
hi Typedef ctermfg=214 ctermbg=NONE cterm=NONE
hi Underlined ctermfg=109 ctermbg=NONE cterm=underline
hi CursorIM ctermfg=NONE ctermbg=NONE cterm=reverse
hi CursorIM ctermfg=234 ctermbg=230 cterm=NONE
else
" Light background
hi Normal ctermfg=237 ctermbg=230 cterm=NONE
@@ -330,7 +330,7 @@ if s:t_Co >= 256
hi WildMenu ctermfg=23 ctermbg=188 cterm=bold
hi EndOfBuffer ctermfg=188 ctermbg=NONE cterm=NONE
hi Conceal ctermfg=23 ctermbg=NONE cterm=NONE
hi Cursor ctermfg=NONE ctermbg=NONE cterm=reverse
hi Cursor ctermfg=230 ctermbg=235 cterm=NONE
hi DiffAdd ctermfg=64 ctermbg=230 cterm=reverse
hi DiffChange ctermfg=29 ctermbg=230 cterm=reverse
hi DiffDelete ctermfg=124 ctermbg=230 cterm=reverse
@@ -381,7 +381,7 @@ if s:t_Co >= 256
hi Type ctermfg=172 ctermbg=NONE cterm=NONE
hi Typedef ctermfg=172 ctermbg=NONE cterm=NONE
hi Underlined ctermfg=23 ctermbg=NONE cterm=underline
hi CursorIM ctermfg=NONE ctermbg=NONE cterm=reverse
hi CursorIM ctermfg=230 ctermbg=235 cterm=NONE
endif
unlet s:t_Co
finish
@@ -423,7 +423,7 @@ if s:t_Co >= 16
hi WildMenu ctermfg=White ctermbg=Black cterm=bold
hi EndOfBuffer ctermfg=DarkGray ctermbg=NONE cterm=NONE
hi Conceal ctermfg=Blue ctermbg=NONE cterm=NONE
hi Cursor ctermfg=NONE ctermbg=NONE cterm=reverse
hi Cursor ctermfg=Black ctermbg=White cterm=NONE
hi DiffAdd ctermfg=Green ctermbg=Black cterm=reverse
hi DiffChange ctermfg=Cyan ctermbg=Black cterm=reverse
hi DiffDelete ctermfg=Red ctermbg=Black cterm=reverse
@@ -474,7 +474,7 @@ if s:t_Co >= 16
hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Typedef ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Underlined ctermfg=Blue ctermbg=NONE cterm=underline
hi CursorIM ctermfg=NONE ctermbg=NONE cterm=reverse
hi CursorIM ctermfg=Black ctermbg=White cterm=NONE
else
" Light background
hi Normal ctermfg=Black ctermbg=White cterm=NONE
@@ -511,7 +511,7 @@ if s:t_Co >= 16
hi WildMenu ctermfg=Black ctermbg=White cterm=bold
hi EndOfBuffer ctermfg=Grey ctermbg=NONE cterm=NONE
hi Conceal ctermfg=Blue ctermbg=NONE cterm=NONE
hi Cursor ctermfg=NONE ctermbg=NONE cterm=reverse
hi Cursor ctermfg=White ctermbg=DarkGray cterm=NONE
hi DiffAdd ctermfg=Green ctermbg=White cterm=reverse
hi DiffChange ctermfg=Cyan ctermbg=White cterm=reverse
hi DiffDelete ctermfg=Red ctermbg=White cterm=reverse
@@ -562,7 +562,7 @@ if s:t_Co >= 16
hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Typedef ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Underlined ctermfg=Blue ctermbg=NONE cterm=underline
hi CursorIM ctermfg=NONE ctermbg=NONE cterm=reverse
hi CursorIM ctermfg=White ctermbg=DarkGray cterm=NONE
endif
unlet s:t_Co
finish
@@ -604,7 +604,7 @@ if s:t_Co >= 8
hi WildMenu ctermfg=Blue ctermbg=DarkGray cterm=bold
hi EndOfBuffer ctermfg=NONE ctermbg=NONE cterm=NONE
hi Conceal ctermfg=Blue ctermbg=NONE cterm=NONE
hi Cursor ctermfg=NONE ctermbg=NONE cterm=reverse
hi Cursor ctermfg=Black ctermbg=White cterm=NONE
hi DiffAdd ctermfg=Green ctermbg=Black cterm=reverse
hi DiffChange ctermfg=Cyan ctermbg=Black cterm=reverse
hi DiffDelete ctermfg=Red ctermbg=Black cterm=reverse
@@ -655,7 +655,7 @@ if s:t_Co >= 8
hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Typedef ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Underlined ctermfg=Blue ctermbg=NONE cterm=underline
hi CursorIM ctermfg=NONE ctermbg=NONE cterm=reverse
hi CursorIM ctermfg=Black ctermbg=White cterm=NONE
else
" Light background
hi Normal ctermfg=Black ctermbg=Grey cterm=NONE
@@ -692,7 +692,7 @@ if s:t_Co >= 8
hi WildMenu ctermfg=Blue ctermbg=Grey cterm=bold
hi EndOfBuffer ctermfg=NONE ctermbg=NONE cterm=NONE
hi Conceal ctermfg=Blue ctermbg=NONE cterm=NONE
hi Cursor ctermfg=NONE ctermbg=NONE cterm=reverse
hi Cursor ctermfg=White ctermbg=DarkGray cterm=NONE
hi DiffAdd ctermfg=Green ctermbg=White cterm=reverse
hi DiffChange ctermfg=Cyan ctermbg=White cterm=reverse
hi DiffDelete ctermfg=Red ctermbg=White cterm=reverse
@@ -743,7 +743,7 @@ if s:t_Co >= 8
hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Typedef ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Underlined ctermfg=Blue ctermbg=NONE cterm=underline
hi CursorIM ctermfg=NONE ctermbg=NONE cterm=reverse
hi CursorIM ctermfg=White ctermbg=DarkGray cterm=NONE
endif
unlet s:t_Co
finish
@@ -871,4 +871,4 @@ endif
" Term colors: fg1 neutralred neutralgreen neutralyellow neutralblue neutralpurple neutralaqua fg4
" Term colors: grey red green yellow blue purple aqua bg0
" Background: any
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

View File

@@ -3,16 +3,16 @@
" Maintainer: original maintainer Ron Aaron <ron@ronware.org>
" Website: https://www.github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Fri 02 Sep 2022 09:50:56 MSK
" Last Updated: Fri 15 Dec 2023 20:05:41
" Generated by Colortemplate v2.2.0
" Generated by Colortemplate v2.2.3
set background=dark
hi clear
let g:colors_name = 'ron'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
hi! link Terminal Normal
hi! link Boolean Constant
@@ -441,4 +441,4 @@ endif
" Color: fgDiffB #000000 16 black
" Color: bgDiffC8 #5F87AF 67 darkblue
" Color: bgDiffD8 #AF5FAF 133 darkmagenta
" vim: et ts=2 sw=2
" vim: et ts=8 sw=2 sts=2

Some files were not shown because too many files have changed in this diff Show More