Compare commits

...

126 Commits

Author SHA1 Message Date
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
268 changed files with 26088 additions and 10390 deletions

View File

@@ -1 +0,0 @@
service_name: github-actions

8
.github/CODEOWNERS vendored
View File

@@ -192,6 +192,7 @@ runtime/ftplugin/ps1xml.vim @heaths
runtime/ftplugin/pymanifest.vim @ObserverOfTime
runtime/ftplugin/python.vim @tpict
runtime/ftplugin/qb64.vim @dkearns
runtime/ftplugin/qml.vim @ChaseKnowlden
runtime/ftplugin/r.vim @jalvesaq
runtime/ftplugin/racket.vim @benknoble
runtime/ftplugin/readline.vim @dkearns
@@ -207,7 +208,9 @@ 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
@@ -283,6 +286,7 @@ runtime/indent/postscr.vim @mrdubya
runtime/indent/prolog.vim @dkearns
runtime/indent/ps1.vim @heaths
runtime/indent/qb64.vim @dkearns
runtime/indent/qml.vim @ChaseKnowlden
runtime/indent/r.vim @jalvesaq
runtime/indent/racket.vim @benknoble
runtime/indent/rapid.vim @KnoP-01
@@ -296,6 +300,7 @@ 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
@@ -379,6 +384,7 @@ 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
@@ -442,6 +448,7 @@ runtime/syntax/ps1xml.vim @heaths
runtime/syntax/psl.vim @danielkho
runtime/syntax/pymanifest.vim @ObserverOfTime
runtime/syntax/qb64.vim @dkearns
runtime/syntax/qml.vim @ChaseKnowlden
runtime/syntax/r.vim @jalvesaq
runtime/syntax/racket.vim @benknoble
runtime/syntax/raml.vim @in3d
@@ -466,6 +473,7 @@ runtime/syntax/sdoc.vim @gpanders
runtime/syntax/sed.vim @dkearns
runtime/syntax/sh.vim @cecamp
runtime/syntax/sm.vim @cecamp
runtime/syntax/solidity.vim @cothi
runtime/syntax/spec.vim @ignatenkobrain
runtime/syntax/sqloracle.vim @chrisbra
runtime/syntax/squirrel.vim @zenmatic

60
.github/labeler.yml vendored Normal file
View File

@@ -0,0 +1,60 @@
# list of labels and minimatch globs to match to apply the label.
CI:
- any: ['.cirrus.yml']
- any: ['.github/dependabot.yml']
- any: ['.github/labeler.yml']
- any: ['.github/workflows/*']
- any: ['.appveyor.yml']
- any: ['.codecov.yml']
translation:
- any: ['src/po/*.po']
if_lua:
- any: ['src/if_lua.c']
- any: ['src/proto/if_lua.pro']
- any: ['runtime/doc/if_lua.txt']
if_mzscheme:
- any: ['src/if_mzsch.c']
- any: ['src/if_mzsch.h']
- any: ['src/proto/if_mzsch.pro']
- any: ['runtime/doc/if_mzsch.txt']
if_perl:
- any: ['src/if_perl.xs']
- any: ['src/if_perlsfio.c']
- any: ['src/proto/if_perl.pro']
- any: ['src/proto/if_perlsfio.pro']
- any: ['runtime/doc/if_perl.txt']
if_python:
- any: ['src/if_py_both.h']
- any: ['runtime/doc/if_pyth.txt']
- any: ['src/if_python.c']
- any: ['src/if_python3.c']
- any: ['src/proto/if_python.pro']
- any: ['src/proto/if_python3.pro']
if_ruby:
- any: ['src/if_ruby.c']
- any: ['src/proto/if_ruby.pro']
- any: ['runtime/doc/if_ruby.txt']
if_tcl:
- any: ['src/if_tcl.c']
- any: ['src/proto/if_tcl.pro']
- any: ['runtime/doc/if_tcl.txt']
runtime:
- any: ['runtime/ftplugin']
- any: ['runtime/syntax']
- any: ['runtime/indent']
- any: ['runtime/pack/dist/opt/termdebug/plugin/termdebug.vim']
termdebug: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
netrw:
- any: ['runtime/plugin/netrwPlugin.vim']
- any: ['runtime/autoload/netrw*']

View File

@@ -50,9 +50,15 @@ jobs:
shadow: ./src/shadow
- features: huge
coverage: true
- features: huge
compiler: clang
extra: none
interface: dynamic
python3: stable-abi
- features: huge
compiler: gcc
coverage: true
interface: dynamic
extra: testgui
uchar: true
luaver: lua5.4
@@ -86,6 +92,7 @@ jobs:
if ${{ matrix.features == 'huge' }}; then
PKGS+=( \
autoconf \
gdb \
lcov \
libcanberra-dev \
libperl-dev \
@@ -141,7 +148,16 @@ jobs:
;;
huge)
echo "TEST=scripttests test_libvterm"
echo "CONFOPT=--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
if ${{ matrix.interface == 'dynamic' }}; then
if ${{ matrix.python3 == 'stable-abi' }}; then
PYTHON3_FLAGS="--with-python3-stable-abi=3.8"
else
PYTHON3_FLAGS=""
fi
echo "CONFOPT=--enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --enable-luainterp=dynamic --enable-tclinterp=dynamic ${PYTHON3_FLAGS}"
else
echo "CONFOPT=--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
fi
;;
esac
@@ -180,23 +196,20 @@ jobs:
sudo usermod -a -G audio "${USER}"
sudo bash ci/setup-xvfb.sh
- name: Check if linux-modules-extra is available
id: check-snd-dummy
if: (!(contains(matrix.extra, 'unittests') || contains(matrix.extra, 'vimtags')))
continue-on-error: true
run: |
sudo apt-get install -d -y linux-modules-extra-${{ env.LINUX_VERSION }}
- name: Set up snd-dummy
if: steps.check-snd-dummy.outcome == 'success' && (!(contains(matrix.extra, 'unittests') || contains(matrix.extra, 'vimtags')))
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 }}
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
sudo modprobe --verbose snd-dummy
- name: Check autoconf
if: contains(matrix.extra, 'unittests')
@@ -234,7 +247,7 @@ 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}
@@ -372,8 +385,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 }
@@ -504,6 +517,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 }} ^
@@ -511,6 +529,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 ^
@@ -528,6 +547,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 }} \
@@ -535,6 +559,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

24
.github/workflows/label.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
# 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@v4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: .github/labeler.yml
sync-labels: ''

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/).
@@ -142,16 +140,14 @@ lists to discuss them with Vim users and developers:
https://www.vim.org/maillist.php
If nothing else works, report bugs directly to the vim-dev mailing list:
<vim-dev@vim.org>
`<vim-dev@vim.org>`
## Main author
## Main author ##
Most of Vim was created by Bram Moolenaar <Bram@vim.org>
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 the vim-dev mailing list:
<vim-dev@vim.org>
`<vim-dev@vim.org>`
This is `README.md` for version 9.0 of Vim: Vi IMproved.

View File

@@ -62,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()
@@ -146,11 +146,13 @@ export def FTcls()
return
endif
if getline(1) =~ '^\v%(\%|\\)'
var line1 = getline(1)
if line1 =~ '^\v%(\%|\\)'
setf tex
elseif getline(1)[0] == '#' && getline(1) =~ 'rexx'
elseif line1[0] == '#' && line1 =~ 'rexx'
setf rexx
elseif getline(1) == 'VERSION 1.0 CLASS'
elseif line1 == 'VERSION 1.0 CLASS'
setf vb
else
setf st
@@ -287,12 +289,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
@@ -302,21 +340,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
@@ -1174,5 +1204,13 @@ export def FTv()
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

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: 2023 Jun 28
let s:cpo_save = &cpo
set cpo-=C
@@ -21,31 +21,65 @@ catch /E145:/
" Ignore the error in restricted mode
endtry
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 +109,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 +190,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
silent! keepjumps keeppatterns %s/\v(.)\b\ze\1?//ge
if unsetwidth
let $MANWIDTH = ''
endif
@@ -180,9 +221,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

@@ -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

@@ -156,7 +156,7 @@ digraph_setlist({digraphlist}) Boolean register multiple |digraph|s
echoraw({expr}) none output {expr} as-is
empty({expr}) Number |TRUE| if {expr} is empty
environ() Dict return environment variables
err_teapot() Number produce error 418
err_teapot([{expr}]) none give E418, or E503 if {expr} is |TRUE|
escape({string}, {chars}) String escape {chars} in {string} with '\'
eval({string}) any evaluate {string} into its value
eventhandler() Number |TRUE| if inside an event handler
@@ -310,6 +310,7 @@ inputrestore() Number restore typeahead
inputsave() Number save and clear typeahead
inputsecret({prompt} [, {text}]) String like input() but hiding the text
insert({object}, {item} [, {idx}]) List insert {item} in {object} [before {idx}]
instanceof({object}, {class}) Number |TRUE| if {object} is an instance of {class}
interrupt() none interrupt script execution
invert({expr}) Number bitwise invert
isabsolutepath({path}) Number |TRUE| if {path} is an absolute path
@@ -713,7 +714,8 @@ uniq({list} [, {func} [, {dict}]])
utf16idx({string}, {idx} [, {countcc} [, {charidx}]])
Number UTF-16 index of byte {idx} in {string}
values({dict}) List values in {dict}
virtcol({expr} [, {list}]) Number or List
virtcol({expr} [, {list} [, {winid}])
Number or List
screen column of cursor or mark
virtcol2col({winid}, {lnum}, {col})
Number byte index of a character on screen
@@ -3550,6 +3552,8 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
cmdline |cmdline-completion| result
compiler compilers
cscope |:cscope| suboptions
custom,{func} custom completion, defined via {func}
customlist,{func} custom completion, defined via {func}
diff_buffer |:diffget| and |:diffput| completion
dir directory names
environment environment variable names
@@ -5049,6 +5053,17 @@ insert({object}, {item} [, {idx}]) *insert()*
Can also be used as a |method|: >
mylist->insert(item)
instanceof({object}, {class}) *instanceof()*
The result is a Number, which is |TRUE| when the {object} argument is a
direct or indirect instance of a |Class| specified by {class}.
When {class} is a |List| the function returns |TRUE| when {object} is an
instance of any of the specified classes.
Example: >
instanceof(animal, [Dog, Cat])
< Can also be used as a |method|: >
myobj->instanceof(mytype)
interrupt() *interrupt()*
Interrupt script execution. It works more or less like the
user typing CTRL-C, most commands won't execute and control
@@ -10283,7 +10298,7 @@ values({dict}) *values()*
Can also be used as a |method|: >
mydict->values()
virtcol({expr} [, {list}]) *virtcol()*
virtcol({expr} [, {list} [, {winid}]]) *virtcol()*
The result is a Number, which is the screen column of the file
position given with {expr}. That is, the last screen position
occupied by the character at that position, when the screen
@@ -10315,10 +10330,13 @@ virtcol({expr} [, {list}]) *virtcol()*
returns the cursor position. Differs from |'<| in
that it's updated right away.
If {list} is present and non-zero then virtcol() returns a List
with the first and last screen position occupied by the
If {list} is present and non-zero then virtcol() returns a
List with the first and last screen position occupied by the
character.
With the optional {winid} argument the values are obtained for
that window instead of the current window.
Note that only marks in the current file can be used.
Examples: >
" With text "foo^Lbar" and cursor on the "^L":
@@ -10330,7 +10348,7 @@ virtcol({expr} [, {list}]) *virtcol()*
" With text " there", with 't at 'h':
virtcol("'t") " returns 6
< The first column is 1. 0 is returned for an error.
< The first column is 1. 0 or [0, 0] is returned for an error.
A more advanced example that echoes the maximum length of
all lines: >
echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
@@ -10980,6 +10998,7 @@ python_dynamic Python 2.x interface is dynamically loaded. |has-python|
python3 Python 3.x interface available. |has-python|
python3_compiled Compiled with Python 3.x interface. |has-python|
python3_dynamic Python 3.x interface is dynamically loaded. |has-python|
python3_stable Python 3.x interface is using Python Stable ABI. |has-python|
pythonx Python 2.x and/or 3.x interface available. |python_x|
qnx QNX version of Vim.
quickfix Compiled with |quickfix| support.

View File

@@ -2424,6 +2424,25 @@ v:progpath Contains the command with which Vim was invoked, in a form
".exe" is not added to v:progpath.
Read-only.
*v:python3_version* *python3-version-variable*
v:python3_version
Version of Python 3 that Vim was built against. When
Python is loaded dynamically (|python-dynamic|), this version
should exactly match the Python library up to the minor
version (e.g. 3.10.2 and 3.10.3 are compatible as the minor
version is "10", whereas 3.9.4 and 3.10.3 are not compatible).
When |python-stable-abi| is used, this will be the minimum Python
version that you can use instead. (e.g. if v:python3_version
indicates 3.9, you can use 3.9, 3.10, or anything above).
This number is encoded as a hex number following Python ABI
versioning conventions. Do the following to have a
human-readable full version in hex: >
echo printf("%08X", v:python3_version)
< You can obtain only the minor version by doing: >
echo and(v:python3_version>>16,0xff)
< Read-only.
*v:register* *register-variable*
v:register The name of the register in effect for the current normal mode
command (regardless of whether that command actually used a

View File

@@ -146,6 +146,7 @@ variables can be used to overrule the filetype used for certain extensions:
*.cls g:filetype_cls
*.csh g:filetype_csh |ft-csh-syntax|
*.dat g:filetype_dat
*.f g:filetype_f |ft-forth-syntax|
*.frm g:filetype_frm |ft-form-syntax|
*.fs g:filetype_fs |ft-forth-syntax|
*.i g:filetype_i |ft-progress-syntax|

View File

@@ -769,7 +769,19 @@ Unix ~
The 'pythondll' or 'pythonthreedll' option can be used to specify the Python
shared library file instead of DYNAMIC_PYTHON_DLL or DYNAMIC_PYTHON3_DLL file
what were specified at compile time. The version of the shared library must
match the Python 2.x or Python 3 version Vim was compiled with.
match the Python 2.x or Python 3 version (|v:python3_version|) Vim was
compiled with unless using |python3-stable-abi|.
Stable ABI and mixing Python versions ~
*python-stable* *python-stable-abi* *python3-stable-abi*
If Vim was not compiled with Stable ABI (only available for Python 3), the
version of the Python shared library must match the version that Vim was
compiled with. Otherwise, mixing versions could result in unexpected crashes
and failures. With Stable ABI, this restriction is relaxed, and any Python 3
library with version of at least |v:python3_version| will work. See
|has-python| for how to check if Stable ABI is supported, or see if version
output includes |+python3/dyn-stable|.
==============================================================================
10. Python 3 *python3*
@@ -881,6 +893,18 @@ python support: >
endif
endif
When loading the library dynamically, Vim can be compiled to support Python 3
Stable ABI (|python3-stable-abi|) which allows you to load a different version
of Python 3 library than the one Vim was compiled with. To check it: >
if has('python3_dynamic')
if has('python3_stable')
echo 'support Python 3 Stable ABI.'
else
echo 'does not support Python 3 Stable ABI.'
echo 'only use Python 3 version ' .. v:python3_version
endif
endif
This also tells you whether Python is dynamically loaded, which will fail if
the runtime library cannot be found.

View File

@@ -242,8 +242,8 @@ gM Like "g0", but to halfway the text of the line.
Thus "10gM" is near the start of the text and "90gM"
is near the end of the text.
*g$* *g<End>*
g$ or g<End> When lines wrap ('wrap' on): To the last character of
*g$*
g$ When lines wrap ('wrap' on): To the last character of
the screen line and [count - 1] screen lines downward
|inclusive|. Differs from "$" when a line is wider
than the screen.
@@ -256,6 +256,10 @@ g$ or g<End> When lines wrap ('wrap' on): To the last character of
When 'virtualedit' is enabled moves to the end of the
screen line.
*g<End>* *g<kEnd>*
g<End> Like |g$| but to the last non-blank character
instead of the last character.
*bar*
| To screen column [count] in the current line.
|exclusive| motion. Ceci n'est pas une pipe.

View File

@@ -214,10 +214,10 @@ A syntax group name is to be used for syntax items that match the same kind of
thing. These are then linked to a highlight group that specifies the color.
A syntax group name doesn't specify any color or attributes itself.
The name for a highlight or syntax group must consist of ASCII letters, digits
and the underscore. As a regexp: "[a-zA-Z0-9_]*". However, Vim does not give
an error when using other characters. The maximum length of a group name is
about 200 bytes. *E1249*
The name for a highlight or syntax group must consist of ASCII letters,
digits, underscores, dots, or hyphens. As a regexp: "[a-zA-Z0-9_.-]*".
However, Vim does not give an error when using other characters. The maximum
length of a group name is about 200 bytes. *E1249*
To be able to allow each user to pick their favorite set of colors, there must
be preferred names for highlight groups that are common for many languages.
@@ -1579,9 +1579,10 @@ example, FORM files, use this in your startup vimrc: >
FORTH *forth.vim* *ft-forth-syntax*
Files matching "*.fs" could be F# or Forth. If the automatic detection
doesn't work for you, or you don't edit F# at all, use this in your
startup vimrc: >
Files matching "*.f" could be Fortran or Forth and those matching "*.fs" could
be F# or Forth. If the automatic detection doesn't work for you, or you don't
edit F# or Fortran at all, use this in your startup vimrc: >
:let filetype_f = "forth"
:let filetype_fs = "forth"

View File

@@ -1434,6 +1434,7 @@ $quote eval.txt /*$quote*
+python/dyn various.txt /*+python\/dyn*
+python3 various.txt /*+python3*
+python3/dyn various.txt /*+python3\/dyn*
+python3/dyn-stable various.txt /*+python3\/dyn-stable*
+quickfix various.txt /*+quickfix*
+reltime various.txt /*+reltime*
+rightleft various.txt /*+rightleft*
@@ -9294,6 +9295,8 @@ python-path_hook if_pyth.txt /*python-path_hook*
python-pyeval if_pyth.txt /*python-pyeval*
python-range if_pyth.txt /*python-range*
python-special-path if_pyth.txt /*python-special-path*
python-stable if_pyth.txt /*python-stable*
python-stable-abi if_pyth.txt /*python-stable-abi*
python-strwidth if_pyth.txt /*python-strwidth*
python-tabpage if_pyth.txt /*python-tabpage*
python-tabpages if_pyth.txt /*python-tabpages*
@@ -9306,6 +9309,8 @@ python.vim syntax.txt /*python.vim*
python2-directory if_pyth.txt /*python2-directory*
python3 if_pyth.txt /*python3*
python3-directory if_pyth.txt /*python3-directory*
python3-stable-abi if_pyth.txt /*python3-stable-abi*
python3-version-variable eval.txt /*python3-version-variable*
python_x if_pyth.txt /*python_x*
python_x-special-comments if_pyth.txt /*python_x-special-comments*
pythonx if_pyth.txt /*pythonx*
@@ -10632,6 +10637,7 @@ v:prevcount eval.txt /*v:prevcount*
v:profiling eval.txt /*v:profiling*
v:progname eval.txt /*v:progname*
v:progpath eval.txt /*v:progpath*
v:python3_version eval.txt /*v:python3_version*
v:register eval.txt /*v:register*
v:scrollstart eval.txt /*v:scrollstart*
v:searchforward eval.txt /*v:searchforward*

View File

@@ -1,4 +1,4 @@
*terminal.txt* For Vim version 9.0. Last change: 2023 Jun 28
*terminal.txt* For Vim version 9.0. Last change: 2023 Aug 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,6 +38,7 @@ If the result is "1" you have it.
Example session |termdebug-example|
Stepping through code |termdebug-stepping|
Inspecting variables |termdebug-variables|
Navigating stack frames |termdebug-frames|
Other commands |termdebug-commands|
Events |termdebug-events|
Prompt mode |termdebug-prompt|
@@ -1376,6 +1377,18 @@ This is similar to using "print" in the gdb window.
You can usually shorten `:Evaluate` to `:Ev`.
Navigating stack frames ~
*termdebug-frames* *:Frame* *:Up* *:Down*
`:Frame` [frame] select frame [frame], which is a frame number,
address, or function name (default: current frame)
`:Up` [count] go up [count] frames (default: 1; the frame that
called the current)
`+` same (see |termdebug_map_plus| to disable)
`:Down` [count] go down [count] frames (default: 1; the frame called
by the current)
`-` same (see |termdebug_map_minus| to disable)
Other commands ~
*termdebug-commands*
*:Gdb* jump to the gdb window
@@ -1384,6 +1397,9 @@ Other commands ~
isn't one
*:Asm* jump to the window with the disassembly, create it if there
isn't one
*:Var* jump to the window with the local and argument variables,
create it if there isn't one. This window updates whenever the
program is stopped
Events ~
*termdebug-events*
@@ -1446,10 +1462,18 @@ If there is no g:termdebug_config you can use: >
let g:termdebug_use_prompt = 1
<
*termdebug_map_K*
The K key is normally mapped to :Evaluate. If you do not want this use: >
The K key is normally mapped to |:Evaluate|. If you do not want this use: >
let g:termdebug_config['map_K'] = 0
If there is no g:termdebug_config you can use: >
let g:termdebug_map_K = 0
<
*termdebug_map_minus*
The - key is normally mapped to |:Down|. If you do not want this use: >
let g:termdebug_config['map_minus'] = 0
<
*termdebug_map_plus*
The + key is normally mapped to |:Up|. If you do not want this use: >
let g:termdebug_config['map_plus'] = 0
<
*termdebug_disasm_window*
If you want the Asm window shown by default, set the "disasm_window" flag to
@@ -1460,6 +1484,15 @@ If there is no g:termdebug_config you can use: >
let g:termdebug_disasm_window = 15
Any value greater than 1 will set the Asm window height to that value.
*termdebug_variables_window*
If you want the Var window shown by default, set the flag to 1.
the "variables_window_height" entry can be used to set the window height: >
let g:termdebug_config['variables_window'] = 1
let g:termdebug_config['variables_window_height'] = 15
If there is no g:termdebug_config you can use: >
let g:termdebug_variables_window = 15
Any value greater than 1 will set the Var window height to that value.
Communication ~
*termdebug-communication*
There is another, hidden, buffer, which is used for Vim to communicate with

View File

@@ -335,6 +335,12 @@ prop_list({lnum} [, {props}]) *prop_list()*
length length in bytes, one more if line break is
included
id property ID
text text to be displayed before {col}. Only
present for |virtual-text| properties.
text_align alignment property of |virtual-text|.
text_padding_left
left padding used for virtual text.
text_wrap specifies whether |virtual-text| is wrapped.
type name of the property type, omitted if
the type was deleted
type_bufnr buffer number for which this type was defined;

View File

@@ -61,8 +61,6 @@ without all the help files.
SpellCap highlight not updated - PR #12428
Virtual text problems:
- Deleting character before a wrapping virtual text, causes for the following
lines to dissapear (Issue #12244)
- If 'list' is on, 'below' virtual text which includes 1 or 2 characters are
gone (Issue #12028)
- Virtual text aligned "above": Wrong indentation when using tabs (Issue
@@ -75,14 +73,6 @@ Virtual text problems:
'below' on an empty line (Issue #11959)
- truncated Virtual text below an empty line causes display error #12493
include #12403: window for Termdebug showing local variables
include #12140: positional arguments in printf(), fixes #10577
Include #11818: attach custom data to quickfix items.
Include #12292: buffer argument for undotree()?
When 'virtualedit' is "all" and 'cursorcolumn' is set, the wrong column may be
highlighted. (van-de-bugger, 2018 Jan 23, #2576)
@@ -131,7 +121,7 @@ Upcoming larger works:
Further Vim9 improvements, possibly after launch:
- implement :class and :interface: See |vim9-classes
- Classes and Interfaces. See |vim9-classes|
- Change access: public by default, private by prefixing "_".
Check for error: can't have same name twice (ignoring "_" prefix).
- Private methods?
@@ -142,22 +132,15 @@ Further Vim9 improvements, possibly after launch:
- Cannot use class type of itself in the method (Issue #12369)
- Cannot use an object method in a lambda #12417
Define all methods before compiling them?
- class members initialized during definition (Issue #12041)
- Cannot call class member of funcref type (Issue #12324)
Also #12081 first case.
- Using list of functions does not work #12081 (repro in later message).
- Weird `class X not found on interface X` error (Issue #12023)
- First argument of call() cannot be "obj.Func". (#11865)
- "return this" required for early return from constructor (inconsistent)
(Issue #12040)
- class/method confusion inside ":def" when using "class extends" (Issue
#12089)
- null_object - constant type 17 not supported (Issue #12043)
- problem compiling object method call as function call argument (Issue
#12081)
- Make ":defcompile ClassName" compile all functions and methods in the
class.
- object's method in stacktrace missing information (Issue #12078)
- Forward declaration of a class? E.g. for Clone() function.
email lifepillar 2023 Mar 26
- Getting member of variable with "any" type should be handled at runtime.
@@ -180,7 +163,7 @@ Further Vim9 improvements, possibly after launch:
- For chaining, allow using the class name as type for function return
value.
- Implement generics
- Add "instanceof" (exact class name). And "assignable" (class or child)?
- Add "assignable" (class or child)?
- More efficient way for interface member index than iterating over list?
- a variant of type() that returns a different type for each class?
list<number> and list<string> should also differ.

View File

@@ -877,6 +877,7 @@ Other computation: *bitwise-function*
srand() initialize seed used by rand()
Variables: *var-functions*
instanceof() check if a variable is an instance of a given class
type() type of a variable as a number
typename() type of a variable as text
islocked() check if a variable is locked

View File

@@ -450,6 +450,8 @@ m *+python* Python 2 interface |python|
m *+python/dyn* Python 2 interface |python-dynamic| |/dyn|
m *+python3* Python 3 interface |python|
m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn|
m *+python3/dyn-stable*
Python 3 interface |python-dynamic| |python-stable| |/dyn|
N *+quickfix* |:make| and |quickfix| commands
N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout,
'redrawtime' option

View File

@@ -1033,10 +1033,12 @@ In Vim9 script one can use the following predefined values: >
null
null_blob
null_channel
null_class
null_dict
null_function
null_job
null_list
null_object
null_partial
null_string
`true` is the same as `v:true`, `false` the same as `v:false`, `null` the same

View File

@@ -232,6 +232,9 @@ If the class extends a parent class, the same thing happens. In the second
step the members of the parent class are done first. There is no need to call
"super()" or "new()" on the parent.
When defining the new() method the return type should not be specified. It
always returns an object of the class.
==============================================================================
3. class members and functions *Vim9-class-member*
@@ -420,6 +423,12 @@ Each member and function name can be used only once. It is not possible to
define a function with the same name and different type of arguments.
Member Initialization ~
If the type of a member is not explicitly specified in a class, then it is set
to "any" during class definition. When an object is instantiated from the
class, then the type of the member is set.
Extending a class ~
*extends*
A class can extend one other class. *E1352* *E1353* *E1354*

View File

@@ -209,9 +209,6 @@ au BufNewFile,BufRead *.bi,*.bm call dist#ft#FTbas()
" Bass
au BufNewFile,BufRead *.bass setf bass
" Visual Basic Script (close to Visual Basic) or Visual Basic .NET
au BufNewFile,BufRead *.vb,*.vbs,*.dsm,*.ctl setf vb
" IBasic file (similar to QBasic)
au BufNewFile,BufRead *.iba,*.ibi setf ibasic
@@ -245,7 +242,7 @@ au BufNewFile,BufRead *.bib setf bib
au BufNewFile,BufRead *.bst setf bst
" Bicep
au BufNewFile,BufRead *.bicep setf bicep
au BufNewFile,BufRead *.bicep,*.bicepparam setf bicep
" BIND configuration
" sudoedit uses namedXXXX.conf
@@ -724,16 +721,19 @@ au BufNewFile,BufRead auto.master setf conf
au BufNewFile,BufRead *.mas,*.master setf master
" Forth
au BufNewFile,BufRead *.ft,*.fth setf forth
au BufNewFile,BufRead *.ft,*.fth,*.4th setf forth
" Reva Forth
au BufNewFile,BufRead *.frt setf reva
" Fortran
if has("fname_case")
au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95,*.F03,*.F08 setf fortran
au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95,*.F03,*.F08 setf fortran
endif
au BufNewFile,BufRead *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95,*.f03,*.f08 setf fortran
au BufNewFile,BufRead *.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95,*.f03,*.f08 setf fortran
" Fortran or Forth
au BufNewFile,BufRead *.f call dist#ft#FTf()
" Framescript
au BufNewFile,BufRead *.fsl setf framescript
@@ -1708,6 +1708,9 @@ au BufNewFile,BufRead *.ptl,*.pyi,SConstruct setf python
" QL
au BufRead,BufNewFile *.ql,*.qll setf ql
" QML
au BufRead,BufNewFile *.qml,*.qbs setf qml
" QMLdir
au BufRead,BufNewFile qmldir setf qmldir
@@ -2370,7 +2373,7 @@ au BufNewFile,BufRead *.tape setf vhs
au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst,*.vho setf vhdl
" Vim script
au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc setf vim
au BufNewFile,BufRead *.vim,.exrc,_exrc setf vim
" Viminfo file
au BufNewFile,BufRead .viminfo,_viminfo setf viminfo
@@ -2383,10 +2386,31 @@ au BufRead,BufNewFile *.hw,*.module,*.pkg
\ setf virata |
\ endif
" Visual Basic (also uses *.bas) or FORM
" Visual Basic (see also *.bas *.cls)
" Visual Basic or FORM
au BufNewFile,BufRead *.frm call dist#ft#FTfrm()
" SaxBasic is close to Visual Basic
" Visual Basic
" user control, ActiveX document form, active designer, property page
au BufNewFile,BufRead *.ctl,*.dob,*.dsr,*.pag setf vb
" Visual Basic or Vimball Archiver
au BufNewFile,BufRead *.vba call dist#ft#FTvba()
" Visual Basic Project
au BufNewFile,BufRead *.vbp setf dosini
" VBScript (close to Visual Basic)
au BufNewFile,BufRead *.vbs setf vb
" Visual Basic .NET (close to Visual Basic)
au BufNewFile,BufRead *.vb setf vb
" Visual Studio Macro
au BufNewFile,BufRead *.dsm setf vb
" SaxBasic (close to Visual Basic)
au BufNewFile,BufRead *.sba setf vb
" Vgrindefs file

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: bash
" Maintainer: Bram Moolenaar
" Last Changed: 2019 Jan 12
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Changed: 2023 Aug 13
"
" This is not a real filetype plugin. It allows for someone to set 'filetype'
" to "bash" in the modeline, and gets the effect of filetype "sh" with

View File

@@ -122,7 +122,7 @@ function NewVersion()
normal! 1G0
call search(')')
normal! h
" ':normal' doens't support key annotation (<c-a>) directly.
" ':normal' doesn't support key annotation (<c-a>) directly.
" Vim's manual recommends using ':exe' to use key annotation indirectly (backslash-escaping needed though).
exe "normal! \<c-a>"
call setline(1, substitute(getline(1), '-\$\$', '-', ''))

View File

@@ -15,5 +15,22 @@ let b:undo_ftplugin = "setl com< cms< fo<"
setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
if has('unix') && executable('less')
if !has('gui_running')
command -buffer -nargs=1 Sman
\ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s+--' . <q-args> . '\b'' --hilite-search" man ' . 'gpg' |
\ redraw!
elseif has('terminal')
command -buffer -nargs=1 Sman
\ silent exe ':term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+--' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'gpg'
endif
if exists(':Sman') == 2
setlocal iskeyword+=-
setlocal keywordprg=:Sman
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword<'
endif
endif
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -17,6 +17,7 @@ let b:undo_ftplugin = "setl com< cms< fo<"
setlocal comments=s1fl:{-,mb:-,ex:-},:-- commentstring=--\ %s
setlocal formatoptions-=t formatoptions+=croql
setlocal omnifunc=haskellcomplete#Complete
setlocal iskeyword+='
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -16,5 +16,21 @@ let b:undo_ftplugin = "setl com< cms< inc< fo<"
setlocal comments=:# commentstring=#\ %s include=^\\s*include
setlocal formatoptions-=t formatoptions+=croql
if has('unix') && executable('less')
if !has('gui_running')
command -buffer -nargs=1 Sman
\ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s{,8}' . <q-args> . '\b'' --hilite-search" man ' . 'modprobe.d' |
\ redraw!
elseif has('terminal')
command -buffer -nargs=1 Sman
\ silent exe ':term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s{,8}' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'modprobe.d'
endif
if exists(':Sman') == 2
setlocal iskeyword+=-
setlocal keywordprg=:Sman
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword<'
endif
endif
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -18,5 +18,21 @@ setlocal formatoptions-=t formatoptions+=croql
let &l:include = '^\s*source\>'
if has('unix') && executable('less')
if !has('gui_running')
command -buffer -nargs=1 Sman
\ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s+' . <q-args> . '\b'' --hilite-search" man ' . 'muttrc' |
\ redraw!
elseif has('terminal')
command -buffer -nargs=1 Sman
\ silent exe 'term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'muttrc'
endif
if exists(':Sman') == 2
setlocal iskeyword+=-
setlocal keywordprg=:Sman
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword<'
endif
endif
let &cpo = s:cpo_save
unlet s:cpo_save

31
runtime/ftplugin/qml.vim Normal file
View File

@@ -0,0 +1,31 @@
" Vim filetype plugin file
" Language: QML
" Maintainer: Chase Knowlden <haroldknowlden@gmail.com>
" Last Change: 2023 Aug 16
if exists( 'b:did_ftplugin' )
finish
endif
let b:did_ftplugin = 1
let s:cpoptions_save = &cpoptions
set cpoptions&vim
" command for undo
let b:undo_ftplugin = "setlocal formatoptions< comments< commentstring<"
if (has("gui_win32") || has("gui_gtk")) && !exists( 'b:browsefilter' )
let b:browsefilter =
\ 'QML Files (*.qml,*.qbs)\t*.qml;*.qbs\n' .
\ 'All Files\t*\n'
endif
" Set 'comments' to format dashed lists in comments.
setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
setlocal commentstring=//%s
setlocal formatoptions-=t
setlocal formatoptions+=croql
let &cpoptions = s:cpoptions_save
unlet s:cpoptions_save

View File

@@ -25,11 +25,27 @@ if exists("loaded_matchit") && !exists("b:match_words")
endif
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Readline Intialization Files (inputrc .inputrc)\tinputrc;*.inputrc\n" ..
let b:browsefilter = "Readline Initialization Files (inputrc .inputrc)\tinputrc;*.inputrc\n" ..
\ "All Files (*.*)\t*.*\n"
let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif
if has('unix') && executable('less')
if !has('gui_running')
command -buffer -nargs=1 Sman
\ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s+' . <q-args> . '\b'' --hilite-search" man ' . '3 readline' |
\ redraw!
elseif has('terminal')
command -buffer -nargs=1 Sman
\ silent exe 'term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . '3 readline'
endif
if exists(':Sman') == 2
setlocal iskeyword+=-
setlocal keywordprg=:Sman
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword<'
endif
endif
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -28,7 +28,7 @@ setlocal formatoptions+=tcroql
" directives (..) and ordered lists (1.), although it can cause problems for
" many other cases.
"
" More sophisticated indentation rules should be revisted in the future.
" More sophisticated indentation rules should be revisited in the future.
if exists("g:rst_style") && g:rst_style != 0
setlocal expandtab shiftwidth=3 softtabstop=3 tabstop=8

29
runtime/ftplugin/sed.vim Normal file
View File

@@ -0,0 +1,29 @@
" Vim filetype plugin file
" Language: sed
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Apr 1
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
setlocal comments=:#
setlocal commentstring=#\ %s
setlocal formatoptions-=t formatoptions+=croql
let b:undo_ftplugin = "setl com< cms< fo<"
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "sed Script Files (*.sed)\t*.sed\n" ..
\ "All Files (*.*)\t*.*\n"
let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nowrap sw=2 sts=2 ts=8

View File

@@ -41,6 +41,19 @@ if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif
if (exists('b:is_bash') && (b:is_bash == 1)) ||
\ (exists('b:is_sh') && (b:is_sh == 1))
if !has('gui_running') && executable('less')
command! -buffer -nargs=1 Help silent exe '!bash -c "{ help "<args>" 2>/dev/null || man "<args>"; } | LESS= less"' | redraw!
elseif has('terminal')
command! -buffer -nargs=1 Help silent exe ':term bash -c "help "<args>" 2>/dev/null || man "<args>""'
else
command! -buffer -nargs=1 Help echo system('bash -c "help <args>" 2>/dev/null || man "<args>"')
endif
setlocal keywordprg=:Help
let b:undo_ftplugin .= '| setlocal keywordprg<'
endif
" Restore the saved compatibility options.
let &cpo = s:save_cpo
unlet s:save_cpo

View File

@@ -0,0 +1,15 @@
" Vim filetype plugin file
" Language: Solidity
" Maintainer: Cothi (jiungdev@gmail.com)
" Original Author: tomlion (https://github.com/tomlion/vim-solidity)
" Last Change: 2022 Sep 27
" 2023 Aug 22 Vim Project (did_ftplugin, undo_ftplugin)
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
setlocal commentstring=//\ %s
let b:undo_ftplugin = "setlocal commentstring<"

View File

@@ -140,7 +140,7 @@ if !exists("*SQL_SetType")
\ )
" Remove duplicates, since sqlanywhere.vim can exist in the
" sytax, indent and ftplugin directory, yet we only want
" syntax, indent and ftplugin directory, yet we only want
" to display the option once
let index = match(sqls, '.\{-}\ze\n')
while index > -1
@@ -204,7 +204,7 @@ if !exists("*SQL_SetType")
endif
let b:sql_type_override = new_sql_type
" Remove any cached SQL since a new sytax will have different
" Remove any cached SQL since a new syntax will have different
" items and groups
if !exists('g:loaded_sql_completion') || g:loaded_sql_completion >= 100
call sqlcomplete#ResetCacheSyntax()

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: OpenSSH client configuration file
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2008-07-09
" Language: OpenSSH client configuration file
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2008-07-09
if exists("b:did_ftplugin")
finish
@@ -11,9 +11,24 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
let b:undo_ftplugin = "setl com< cms< fo<"
setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
let b:undo_ftplugin = 'setlocal com< cms< fo<'
if has('unix') && executable('less')
if !has('gui_running')
command -buffer -nargs=1 Sman
\ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s+' . <q-args> . '$'' --hilite-search" man ' . 'ssh_config' |
\ redraw!
elseif has('terminal')
command -buffer -nargs=1 Sman
\ silent exe 'term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+' . <q-args> . '$', '\') . ''' --hilite-search" man ' . 'ssh_config'
endif
if exists(':Sman') == 2
setlocal iskeyword+=-
setlocal keywordprg=:Sman
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword<'
endif
endif
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -15,5 +15,21 @@ let b:undo_ftplugin = "setl com< cms< fo<"
setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
if has('unix') && executable('less')
if !has('gui_running')
command -buffer -nargs=1 Sman
\ silent exe '!' . 'LESS= MANPAGER="less --pattern=''\b' . <q-args> . '\b'' --hilite-search" man ' . 'sudoers' |
\ redraw!
elseif has('terminal')
command -buffer -nargs=1 Sman
\ silent exe ':term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('\b' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'sudoers'
endif
if exists(':Sman') == 2
setlocal iskeyword+=-
setlocal keywordprg=:Sman
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword<'
endif
endif
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -7,35 +7,30 @@ if !exists('b:did_ftplugin')
runtime! ftplugin/dosini.vim
endif
if !has('unix')
finish
endif
if !has('gui_running')
command! -buffer -nargs=1 Sman silent exe '!' . KeywordLookup_systemd(<q-args>) | redraw!
elseif has('terminal')
command! -buffer -nargs=1 Sman silent exe 'term ' . KeywordLookup_systemd(<q-args>)
else
finish
endif
if !exists('*KeywordLookup_systemd')
function KeywordLookup_systemd(keyword) abort
let matches = matchlist(getline(search('\v^\s*\[\s*.+\s*\]\s*$', 'nbWz')), '\v^\s*\[\s*(\k+).*\]\s*$')
if len(matches) > 1
let section = matches[1]
return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd.' . section
else
return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd'
if has('unix') && executable('less')
if !has('gui_running')
command -buffer -nargs=1 Sman silent exe '!' . KeywordLookup_systemd(<q-args>) | redraw!
elseif has('terminal')
command -buffer -nargs=1 Sman silent exe 'term ' . KeywordLookup_systemd(<q-args>)
endif
if exists(':Sman') == 2
if !exists('*KeywordLookup_systemd')
function KeywordLookup_systemd(keyword) abort
let matches = matchlist(getline(search('\v^\s*\[\s*.+\s*\]\s*$', 'nbWz')), '\v^\s*\[\s*(\k+).*\]\s*$')
if len(matches) > 1
let section = matches[1]
return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd.' . section
else
return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd'
endif
endfunction
endif
endfunction
endif
setlocal iskeyword+=-
setlocal keywordprg=:Sman
if !exists('b:undo_ftplugin') || empty(b:undo_ftplugin)
let b:undo_ftplugin = 'setlocal keywordprg< iskeyword<'
else
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword<'
setlocal iskeyword+=-
setlocal keywordprg=:Sman
if !exists('b:undo_ftplugin') || empty(b:undo_ftplugin)
let b:undo_ftplugin = 'setlocal keywordprg< iskeyword<'
else
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword<'
endif
endif
endif

View File

@@ -1,5 +1,5 @@
" Vim filetype plugin file
" Language: HMTL Tidy Configuration
" Language: HTML Tidy Configuration
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Sep 4

View File

@@ -15,5 +15,21 @@ let b:undo_ftplugin = "setl com< cms< fo<"
setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
if has('unix') && executable('less')
if !has('gui_running')
command -buffer -nargs=1 Sman
\ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s{,8}' . <q-args> . '\b'' --hilite-search" man ' . 'udev' |
\ redraw!
elseif has('terminal')
command -buffer -nargs=1 Sman
\ silent exe ':term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s{,8}' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'udev'
endif
if exists(':Sman') == 2
setlocal iskeyword+=-
setlocal keywordprg=:Sman
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword<'
endif
endif
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -17,7 +17,7 @@ compiler zig_build
" Match Zig builtin fns
setlocal iskeyword+=@-@
" Recomended code style, no tabs and 4-space indentation
" Recommended code style, no tabs and 4-space indentation
setlocal expandtab
setlocal tabstop=8
setlocal softtabstop=4

View File

@@ -1,7 +1,7 @@
" Vim indent file
" Language: bash
" Maintainer: Bram
" Last Change: 2019 Sep 27
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Aug 13
" Only load this indent file when no other was loaded.
if exists("b:did_indent")

View File

@@ -1,7 +1,7 @@
" Vim indent script for HTML
" Maintainer: Bram Moolenaar
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Original Author: Andy Wokula <anwoku@yahoo.de>
" Last Change: 2022 Jan 31
" Last Change: 2023 Aug 13
" Version: 1.0 "{{{
" Description: HTML indent script with cached state for faster indenting on a
" range of lines.

View File

@@ -27,6 +27,16 @@ if exists("*GetLuaIndent")
endif
function! GetLuaIndent()
let ignorecase_save = &ignorecase
try
let &ignorecase = 0
return GetLuaIndentIntern()
finally
let &ignorecase = ignorecase_save
endtry
endfunction
function! GetLuaIndentIntern()
" Find a non-blank line above the current line.
let prevlnum = prevnonblank(v:lnum - 1)
@@ -41,7 +51,7 @@ function! GetLuaIndent()
let prevline = getline(prevlnum)
let midx = match(prevline, '^\s*\%(if\>\|for\>\|while\>\|repeat\>\|else\>\|elseif\>\|do\>\|then\>\)')
if midx == -1
let midx = match(prevline, '{\s*$')
let midx = match(prevline, '{\s*\%(--\%([^[].*\)\?\)\?$')
if midx == -1
let midx = match(prevline, '\<function\>\s*\%(\k\|[.:]\)\{-}\s*(')
endif

View File

@@ -1,7 +1,7 @@
" Vim indent file
" Language: Mail
" Maintainer: Bram Moolenaar
" Last Change: 2021 Sep 26
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Aug 13
if exists("b:did_indent")
finish

View File

@@ -15,7 +15,7 @@ setlocal nosmartindent
setlocal noautoindent
setlocal indentexpr=GetNsisIndent(v:lnum)
setlocal indentkeys=!^F,o,O
setlocal indentkeys+==~${Else,=~${EndIf,=~${EndUnless,=~${AndIf,=~${AndUnless,=~${OrIf,=~${OrUnless,=~${Case,=~${Default,=~${EndSelect,=~${EndSwith,=~${Loop,=~${Next,=~${MementoSectionEnd,=~FunctionEnd,=~SectionEnd,=~SectionGroupEnd,=~PageExEnd,0=~!macroend,0=~!if,0=~!else,0=~!endif
setlocal indentkeys+==~${Else,=~${EndIf,=~${EndUnless,=~${AndIf,=~${AndUnless,=~${OrIf,=~${OrUnless,=~${Case,=~${Default,=~${EndSelect,=~${EndSwitch,=~${Loop,=~${Next,=~${MementoSectionEnd,=~FunctionEnd,=~SectionEnd,=~SectionGroupEnd,=~PageExEnd,0=~!macroend,0=~!if,0=~!else,0=~!endif
let b:undo_indent = "setl ai< inde< indk< si<"

View File

@@ -327,13 +327,13 @@ endfun
function! FindArrowIndent (lnum) " {{{
let parrentArrowPos = -1
let parentArrowPos = -1
let cursorPos = -1
let lnum = a:lnum
while lnum > 1
let last_line = getline(lnum)
if last_line =~ '^\s*->'
let parrentArrowPos = indent(a:lnum)
let parentArrowPos = indent(a:lnum)
break
else
@@ -355,28 +355,28 @@ function! FindArrowIndent (lnum) " {{{
else
endif
else
let parrentArrowPos = -1
let parentArrowPos = -1
break
end
endif
if cleanedLnum =~ '->'
call cursor(lnum, cursorPos == -1 ? strwidth(cleanedLnum) : cursorPos)
let parrentArrowPos = searchpos('->', 'cWb', lnum)[1] - 1
let parentArrowPos = searchpos('->', 'cWb', lnum)[1] - 1
break
else
let parrentArrowPos = -1
let parentArrowPos = -1
break
endif
endif
endwhile
if parrentArrowPos == -1
let parrentArrowPos = indent(lnum) + shiftwidth()
if parentArrowPos == -1
let parentArrowPos = indent(lnum) + shiftwidth()
end
return parrentArrowPos
return parentArrowPos
endfun "}}}
function! FindTheIfOfAnElse (lnum, StopAfterFirstPrevElse) " {{{

59
runtime/indent/qml.vim Normal file
View File

@@ -0,0 +1,59 @@
" Vim indent file
" Language: QML
" Maintainer: Chase Knowlden <haroldknowlden@gmail.com>
" Last Change: 2023 Aug 16
"
" Improved JavaScript indent script.
" Indent script in place for this already?
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
let b:undo_indent = "setlocal indentexpr< indentkeys<"
setlocal indentexpr=s:GetQmlIndent()
setlocal indentkeys=0{,0},0),0],:,!^F,o,O,e,*<Return>,=*/
" Only define functions once per session
if exists("*s:GetQmlIndent")
finish
endif
" Clean up a line of code by removing trailing '//' and '/* */' comments, and trimming
" whitespace
function! s:Trim(line)
return substitute(substitute(substitute(a:line, '// .*', '', ''), '/\* .* \*/', '', ''), '^\s*\|\s*$', '', 'g')
endfunction
function! s:GetQmlIndent()
let num = v:lnum
let line = s:Trim(getline(num))
let pnum = prevnonblank(num - 1)
if pnum == 0
return 0
endif
let pline = s:Trim(getline(pnum))
let ind = indent(pnum)
" bracket/brace/paren blocks
if pline =~ '[{[(]$'
let ind += &sw
endif
if line =~ '^[}\])]'
let ind -= &sw
endif
" '/*' comments
if pline =~ '^/\*.*\*/'
" no indent for single-line form
elseif pline =~ '^/\*'
let ind += 1
elseif pline =~ '^\*/'
let ind -= 1
endif
return ind
endfunction

View File

@@ -146,7 +146,7 @@ endfunction
" Returns the length of the line until a:str occur outside a string or
" comment. Search starts at string index a:startIdx.
" If a:str is a word also add word bounderies and case insesitivity.
" If a:str is a word also add word boundaries and case insensitivity.
" Note: rapidTodoComment and rapidDebugComment are not taken into account.
function s:RapidLenTilStr(lnum, str, startIdx) abort
@@ -179,8 +179,8 @@ function s:RapidLenTilStr(lnum, str, startIdx) abort
return -1
endfunction
" a:lchar shoud be one of (, ), [, ], { or }
" returns the number of opening/closing parenthesise which have no
" a:lchar should be one of (, ), [, ], { or }
" returns the number of opening/closing parentheses which have no
" closing/opening match in getline(a:lnum)
function s:RapidLoneParen(lnum,lchar) abort
if a:lchar == "(" || a:lchar == ")"
@@ -205,7 +205,7 @@ function s:RapidLoneParen(lnum,lchar) abort
endif
let l:opnParen = 0
" count opening brakets
" count opening brackets
let l:i = 0
while l:i >= 0
let l:i = s:RapidLenTilStr(a:lnum, l:opnParChar, l:i)
@@ -216,7 +216,7 @@ function s:RapidLoneParen(lnum,lchar) abort
endwhile
let l:clsParen = 0
" count closing brakets
" count closing brackets
let l:i = 0
while l:i >= 0
let l:i = s:RapidLenTilStr(a:lnum, l:clsParChar, l:i)
@@ -242,7 +242,7 @@ function s:RapidPreNoneBlank(lnum) abort
let nPreNoneBlank = prevnonblank(a:lnum)
while nPreNoneBlank>0 && getline(nPreNoneBlank) =~ '\v\c^\s*(\%\%\%|!)'
" Previouse none blank line irrelevant. Look further aback.
" Previous none blank line irrelevant. Look further aback.
let nPreNoneBlank = prevnonblank(nPreNoneBlank - 1)
endwhile

View File

@@ -132,6 +132,22 @@ function GetRustIndent(lnum)
return indent(prevlinenum) + 6
endif
"match newline after struct with generic bound like
"struct SomeThing<T>
"| <-- newline indent should same as prevline
if prevline[len(prevline) - 1] == ">"
\ && prevline =~# "\s*struct.*>$"
return indent(prevlinenum)
endif
"match newline after where like:
"struct SomeThing<T>
"where
" T: Display,
if prevline =~# '^\s*where$'
return indent(prevlinenum) + 4
endif
if prevline[len(prevline) - 1] == ","
\ && s:get_line_trimmed(a:lnum) !~ '^\s*[\[\]{}]'
\ && prevline !~ '^\s*fn\s'

View File

@@ -1,9 +1,11 @@
" Vim indent file
" Language: Solidity
" Acknowledgement: Based off of vim-javascript
" Maintainer: Cothi (jiungdev@gmail.com)
" Original Author: tomlion (https://github.com/tomlion/vim-solidity)
" Last Changed: 2022 Sep 27
" Language: Solidity
" Maintainer: Cothi (jiungdev@gmail.com)
" Original Author: tomlion (https://github.com/tomlion/vim-solidity)
" Last Change: 2022 Sep 27
" 2023 Aug 22 Vim Project (undo_indent)
"
" Acknowledgement: Based off of vim-javascript
"
" 0. Initialization {{{1
" =================
@@ -20,6 +22,8 @@ setlocal nosmartindent
setlocal indentexpr=GetSolidityIndent()
setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e
let b:undo_indent = "setlocal indentexpr< indentkeys< smartindent<"
" Only define the function once.
if exists("*GetSolidityIndent")
finish

View File

@@ -1,6 +1,6 @@
" Vim Keymap file for latin1 accents through dead characters
" Maintainer: Bram Moolenaar
" Last Change: 2006 Mar 29
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Aug 13
" All characters are given literally, conversion to another encoding (e.g.,
" UTF-8) should work.

View File

@@ -2,7 +2,7 @@
" Maintainer: Antonio Colombo <azc100@gmail.com>
" Vlad Sandrini <vlad.gently@gmail.com>
" Luciano Montanaro <mikelima@cirulla.net>
" Last Change: 2022 Jun 17
" Last Change: 2023 Aug 22
" Original translations
" Quit when menu translations have already been done.
@@ -20,7 +20,7 @@ menut &Help &Aiuto
menut &Overview<Tab><F1> &Panoramica<Tab><F1>
menut &User\ Manual Manuale\ &Utente
menut &How-to\ links Co&Me\.\.\.
menut &How-To\ Links Co&Me\.\.\.
menut &Find\.\.\. &Cerca\.\.\.
menut &Credits Cr&Editi
menut Co&pying C&Opie
@@ -29,7 +29,7 @@ menut O&rphans O&Rfani
menut &Version &Versione
menut &About &Intro
let g:menutrans_help_dialog = "Batti un comando o una parola per cercare aiuto:\n\nPremetti i_ per comandi in modo Input (p.es.: i_CTRL-X)\nPremetti c_ per comandi che editano la linea-comandi (p.es.: c_<Del>)\nPremetti ' per un nome di opzione (p.es.: 'shiftwidth')"
let g:menutrans_help_dialog = "Batti un comando o una parola per cercare aiuto su:\n\nPremetti i_ per comandi in modo Input (p.es.: i_CTRL-X)\nPremetti c_ per comandi che editano la linea-comandi (p.es.: c_<Del>)\nPremetti ' per un nome di opzione (p.es.: 'shiftwidth')"
" File / File
menut &File &File
@@ -68,7 +68,6 @@ menut Find\ and\ Rep&lace\.\.\.<Tab>:s &Sostituisci\.\.\.<Tab>:s
menut Settings\ &Window &Finestra\ Impostazioni
menut Startup\ &Settings Impostazioni\ di\ &Avvio
menut &Global\ Settings Impostazioni\ &Globali
menut Question Domanda
" Edit / Modifica / Impostazioni Globali
@@ -80,7 +79,7 @@ menut &Context\ lines &Linee\ di\ contesto
menut &Virtual\ Edit &Edit\ virtuale
menut Never Mai
menut Block\ Selection Selezione\ Blocco
menut Block\ Selection Seleziona\ Blocco
menut Insert\ mode Modo\ Insert
menut Block\ and\ Insert Selezione\ Blocco\ e\ Inserimento
menut Always Sempre
@@ -167,7 +166,7 @@ menut &File\ Format\.\.\. Formato\ &File\.\.\.
let g:menutrans_textwidth_dialog = "Batti nuova lunghezza linea (0 per inibire la formattazione): "
let g:menutrans_fileformat_dialog = "Scegli formato con cui scrivere il file"
let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Annullare "
let g:menutrans_fileformat_choices = " &Unix\n&Dos\n&Mac\n&Annullare "
menut Show\ C&olor\ Schemes\ in\ Menu Mostra\ Schemi\ C&olore\ in\ Menù
menut C&olor\ Scheme Schema\ c&Olori
@@ -180,8 +179,12 @@ menut evening sera
menut industry industria
menut morning mattino
menut peachpuff pesca
menut quiet quieto
menut shine brillante
menut sorbet sorbetto
menut slate ardesia
menut torte torta
menut wildcharm fascino\ selvaggio
menut BLUE BLÙ
menut DARKBLUE BLÙ\ SCURO
menut DESERT DESERTO
@@ -190,8 +193,12 @@ menut EVENING SERA
menut INDUSTRY INDUSTRIA
menut MORNING MATTINO
menut PEACHPUFF PESCA
menut QUIET QUIETO
menut SHINE BRILLANTE
menut SORBET SORBETTO
menut SLATE ARDESIA
menut TORTE TORTA
menut WILDCHARM FASCINO\ SELVAGGIO
menut Show\ &Keymaps\ in\ Menu Mostra\ Ma&ppe\ tastiera\ in\ Menù
menut &Keymap Ma&ppa\ tastiera
@@ -202,29 +209,105 @@ menut arabic arabo
menut armenian-eastern armeno-orientale
menut armenian-western armeno-occidentale
menut belarusian-jcuken bielorusso-jcuken
menut bulgarian-bds bulgaro-bds
menut bulgarian-phonetic bulgaro-fonetico
menut canfr-win franco-canadese-win
menut croatian croato
menut czech ceco
menut dvorak tastiera-dvorak
menut esperanto esperanto
menut french-azerty francese-azerty
menut german-qwertz tedesco-qwertz
menut greek greco
menut hebrew ebraico
menut hebrewp ebraicop
menut kana kana
menut kazakh-jcuken kazako-jcuken
menut korean coreano
menut korean-dubeolsik coreano-dubeolsik
menut lithuanian-baltic lituano-baltico
menut magyar ungherese
menut mongolian mongolo
menut oldturkic-orkhon turco-antico-orkhon
menut oldturkic-yenisei turco-antico-yenisei
menut persian persiano
menut persian-iranian persiano-iraniano
menut pinyin pinyin
menut polish-slash polacco-slash
menut russian-dvorak russo-dvorak
menut russian-jcuken russo-jcuken
menut russian-jcukenmac russo-jcukenmac
menut russian-jcukenwin russo-jcukenwin
menut russian-jcukenwintype russo-jcukenwintype
menut russian-typograph russo-tipografico
menut russian-yawerty russo-yawerty
menut serbian serbo
menut serbian-latin serbo-latino
menut sinhala singalese
menut sinhala-phonetic singalese-phonetic
menut slovak slovacco
menut tamil tamil
menut thaana thaana
menut thaana-phonetic thaana-fonetico
menut turkish-f turco-f
menut turkish-q turco-q
menut ukrainian-dvorak ukraino-dvorak
menut ukrainian-jcuken ukraino-jcuken
menut vietnamese-telex vietnamita-telex
menut vietnamese-viqr vietnamita-viqr
menut vietnamese-vni vietnamita-vni
menut ACCENTS ACCENTI
menut ARABIC ARABO
menut ARMENIAN-EASTERN ARMENO-ORIENTALE
menut ARMENIAN-WESTERN ARMENO-OCCIDENTALE
menut BELARUSIAN-JCUKEN BIELORUSSO-JCUKEN
menut BULGARIAN-BDS BULGARO-BDS
menut BULGARIAN-PHONETIC BULGARO-FONETICO
menut CANFR-WIN FRANCO-CANADESE-WIN
menut CROATIAN CROATO
menut CZECH CECO
menut DVORAK TASTIERA-DVORAK
menut ESPERANTO ESPERANTO
menut FRENCH-AZERTY FRANCESE-AZERTY
menut GERMAN-QWERTZ TEDESCO-QWERTZ
menut GREEK GRECO
menut HEBREW EBRAICO
menut HEBREWP EBRAICOP
menut KANA KANA
menut KAZAKH-JCUKEN KAZAKO-JCUKEN
menut KOREAN COREANO
menut KOREAN-DUBEOLSIK COREANO-DUBEOLSIK
menut LITHUANIAN-BALTIC LITUANO-BALTICO
menut MAGYAR UNGHERESE
menut MONGOLIAN MONGOLO
menut OLDTURKIC-ORKHON TURCO-ANTICO-ORKHON
menut OLDTURKIC-YENISEI TURCO-ANTICO-YENISEI
menut PERSIAN PERSIANO
menut PERSIAN-IRANIAN PERSIANO-IRANIANO
menut PINYIN PINYIN
menut POLISH-SLASH POLACCO-SLASH
menut RUSSIAN-DVORAK RUSSO-DVORAK
menut RUSSIAN-JCUKEN RUSSO-JCUKEN
menut RUSSIAN-JCUKENMAC RUSSO-JCUKENMAC
menut RUSSIAN-JCUKENWIN RUSSO-JCUKENWIN
menut RUSSIAN-JCUKENWINTYPE RUSSO-JCUKENWINTYPE
menut RUSSIAN-TYPOGRAPH RUSSO-TIPOGRAFICO
menut RUSSIAN-YAWERTY RUSSO-YAWERTY
menut SERBIAN SERBO
menut SERBIAN-LATIN SERBO-LATINO
menut SINHALA SINGALESE
menut SINHALA-PHONETIC SINGALESE-PHONETIC
menut SLOVAK SLOVACCO
menut TAMIL TAMIL
menut THAANA THAANA
menut THAANA-PHONETIC THAANA-FONETICO
menut TURKISH-F TURCO-F
menut TURKISH-Q TURCO-Q
menut UKRAINIAN-DVORAK UKRAINO-DVORAK
menut UKRAINIAN-JCUKEN UKRAINO-JCUKEN
menut VIETNAMESE-TELEX VIETNAMITA-TELEX
menut VIETNAMESE-VIQR VIETNAMITA-VIQR
menut VIETNAMESE-VNI VIETNAMITA-VNI
menut Select\ Fo&nt\.\.\. Scegli\ &Font\.\.\.
@@ -233,7 +316,7 @@ menut &Tools &Strumenti
menut &Jump\ to\ this\ tag<Tab>g^] &Vai\ a\ questa\ tag<Tab>g^]
menut Jump\ &back<Tab>^T Torna\ &Indietro<Tab>^T
menut Build\ &Tags\ File Costruisci\ file\ &Tags\
menut Build\ &Tags\ File Costruisci\ file\ &Tag\
" Menù ortografia / Spelling
menut &Spelling &Ortografia
@@ -243,6 +326,7 @@ menut To\ &Next\ error<Tab>]s Errore\ &Seguente<tab>]s
menut To\ &Previous\ error<Tab>[s Errore\ &Precedente<tab>[s
menut Suggest\ &Corrections<Tab>z= &Suggerimenti<Tab>z=
menut &Repeat\ correction<Tab>:spellrepall &Ripeti\ correzione<Tab>:spellrepall
menut Set\ language\ to Imposta\ lingua\ a
menut Set\ language\ to\ "en" Imposta\ lingua\ a\ "en"
menut Set\ language\ to\ "en_au" Imposta\ lingua\ a\ "en_au"
menut Set\ language\ to\ "en_ca" Imposta\ lingua\ a\ "en_ca"
@@ -255,25 +339,25 @@ menut &Find\ More\ Languages &Trova\ altre\ lingue
menut &Folding &Piegature
" apri e chiudi piegature
menut &Enable/Disable\ folds<Tab>zi Pi&egature\ Sì/No<Tab>zi
menut &View\ Cursor\ Line<Tab>zv &Vedi\ linea\ col\ Cursore<Tab>zv
menut Vie&w\ Cursor\ Line\ only<Tab>zMzx Vedi\ &Solo\ linea\ col\ Cursore<Tab>zMzx
menut C&lose\ more\ folds<Tab>zm C&Hiudi\ più\ piegature<Tab>zm
menut &Close\ all\ folds<Tab>zM &Chiudi\ tutte\ le\ piegature<Tab>zM
menut O&pen\ more\ folds<Tab>zr A&Pri\ più\ piegature<Tab>zr
menut &Open\ all\ folds<Tab>zR &Apri\ tutte\ le\ piegature<Tab>zR
menut &View\ Cursor\ Line<Tab>zv &Vedi\ linea\ col\ Cursore<Tab>zv
menut Vie&w\ Cursor\ Line\ only<Tab>zMzx Vedi\ &Solo\ linea\ col\ Cursore<Tab>zMzx
menut C&lose\ More\ folds<Tab>zm C&Hiudi\ più\ piegature<Tab>zm
menut &Close\ All\ folds<Tab>zM &Chiudi\ tutte\ le\ piegature<Tab>zM
menut O&pen\ More\ folds<Tab>zr A&Pri\ più\ piegature<Tab>zr
menut &Open\ All\ folds<Tab>zR &Apri\ tutte\ le\ piegature<Tab>zR
" metodo piegatura
menut Fold\ Met&hod Meto&Do\ piegatura
menut M&anual &Manuale
menut I&ndent &Nidificazione
menut E&xpression &Espressione\ Reg\.
menut E&xpression &Espressione\ Reg\.
menut S&yntax &Sintassi
menut &Diff &Differenza
menut Ma&rker Mar&Catura
" crea e cancella piegature
menut Create\ &Fold<Tab>zf Crea\ &Piegatura<Tab>zf
menut &Delete\ Fold<Tab>zd &Leva\ piegatura<Tab>zd
menut Delete\ &All\ Folds<Tab>zD Leva\ &Tutte\ le\ piegature<Tab>zD
menut &Delete\ Fold<Tab>zd &Togli\ piegatura<Tab>zd
menut Delete\ &All\ Folds<Tab>zD Togli\ &Tutte\ le\ piegature<Tab>zD
" movimenti all'interno delle piegature
menut Fold\ col&umn\ width Larghezza\ piegat&Ure\ in\ colonne
@@ -285,9 +369,9 @@ menut &Put\ Block &Esporta\ differenze
menut &Make<Tab>:make Esegui\ &Make<Tab>:make
menut &List\ Errors<Tab>:cl Lista\ &Errori<Tab>:cl
menut &List\ Errors<Tab>:cl Lista\ &Errori<Tab>:cl
menut L&ist\ Messages<Tab>:cl! Lista\ &Messaggi<Tab>:cl!
menut &Next\ Error<Tab>:cn Errore\ s&Uccessivo<Tab>:cn
menut &Next\ Error<Tab>:cn Errore\ s&Uccessivo<Tab>:cn
menut &Previous\ Error<Tab>:cp Errore\ &Precedente<Tab>:cp
menut &Older\ List<Tab>:cold Lista\ men&O\ recente<Tab>:cold
menut N&ewer\ List<Tab>:cnew Lista\ più\ rece&Nte<Tab>:cnew
@@ -302,11 +386,12 @@ menut &Convert\ to\ HEX<Tab>:%!xxd &Converti\ a\ esadecimale<Tab>:%!xxd
menut Conve&rt\ back<Tab>:%!xxd\ -r Conve&rti\ da\ esadecimale<Tab>:%!xxd\ -r
menut Se&T\ Compiler Impo&Sta\ Compilatore
menut Show\ Compiler\ Se&ttings\ in\ Menu Mostra\ Impos&Tazioni\ Compilatore\ nel\ Menù
" Buffers / Buffer
menut &Buffers &Buffer
menut &Refresh\ menu A&ggiorna\ menù
menut &Refresh\ menu A&Ggiorna\ menù
menut &Delete &Elimina
menut &Alternate &Alternato
menut &Next &Successivo
@@ -352,10 +437,10 @@ menut &Right\ side<Tab>^WL Lato\ &Destro<Tab>^WL
menut Rotate\ &Up<Tab>^WR Ruota\ verso\ l'&Alto<Tab>^WR
menut Rotate\ &Down<Tab>^Wr Ruota\ verso\ il\ &Basso<Tab>^Wr
menut &Equal\ Size<Tab>^W= &Uguale\ ampiezza<Tab>^W=
menut &Max\ Height<Tab>^W_ &Altezza\ massima<Tab>^W_
menut M&in\ Height<Tab>^W1_ A&Ltezza\ minima<Tab>^W1_
menut Max\ &Width<Tab>^W\| Larghezza\ massima<Tab>^W\|
menut Min\ Widt&h<Tab>^W1\| Larghezza\ minima<Tab>^W1\|
menut &Max\ Height<Tab>^W_ A&Ltezza\ massima<Tab>^W_
menut M&in\ Height<Tab>^W1_ Al&Tezza\ minima<Tab>^W1_
menut Max\ &Width<Tab>^W\| Lar&Ghezza\ massima<Tab>^W\|
menut Min\ Widt&h<Tab>^W1\| Larg&hhezza\ minima<Tab>^W1\|
" The popup menu
menut &Undo &Annulla
@@ -363,11 +448,13 @@ menut Cu&t &Taglia
menut &Copy &Copia
menut &Paste &Incolla
menut &Delete &Elimina
menut Select\ Blockwise Seleziona\ in\ blocco
menut Select\ Blockwise Seleziona\ Blocco
menut Select\ &Word Seleziona\ &Parola
menut Select\ &Line Seleziona\ &Linea
menut Select\ &Line Seleziona\ &Riga
menut Select\ &Block Seleziona\ &Blocco
menut Select\ &All Seleziona\ t&Utto
menut Select\ &All Seleziona\ &Tutto
menut Select\ &Sentence Seleziona\ &Frase
menut Select\ Pa&ragraph Seleziona\ Para&Grafo
" The GUI Toolbar / Barra Strumenti
menut Open Apri

View File

@@ -1,6 +1,6 @@
" Menu Translations: Nederlands
" Maintainer: Bram Moolenaar
" Last Change: 2012 May 01
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Aug 13
" Original translations
" Quit when menu translations have already been done.

View File

@@ -122,7 +122,7 @@ enddef
" File menu
an 10.310 &File.&Open\.\.\.<Tab>:e :browse confirm e<CR>
an 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp :browse sp<CR>
an 10.320 &File.Open\ Tab\.\.\.<Tab>:tabnew :browse tabnew<CR>
an 10.320 &File.Open\ &Tab\.\.\.<Tab>:tabnew :browse tabnew<CR>
an 10.325 &File.&New<Tab>:enew :confirm enew<CR>
an <silent> 10.330 &File.&Close<Tab>:close
\ :if winheight(2) < 0 && tabpagewinnr(2) == 0 <Bar>

View File

@@ -1,7 +1,7 @@
vim9script
# cfilter.vim: Plugin to filter entries from a quickfix/location list
# Last Change: Jun 30, 2022
# Last Change: August 16, 2023
# Maintainer: Yegappan Lakshmanan (yegappan AT yahoo DOT com)
# Version: 2.0
#
@@ -31,11 +31,11 @@ def Qf_filter(qf: bool, searchpat: string, bang: string)
if qf
Xgetlist = function('getqflist')
Xsetlist = function('setqflist')
cmd = ':Cfilter' .. bang
cmd = $':Cfilter{bang}'
else
Xgetlist = function('getloclist', [0])
Xsetlist = function('setloclist', [0])
cmd = ':Lfilter' .. bang
cmd = $':Lfilter{bang}'
endif
firstchar = searchpat[0]
@@ -62,7 +62,7 @@ def Qf_filter(qf: bool, searchpat: string, bang: string)
endif
items = filter(Xgetlist(), Cond)
title = cmd .. ' /' .. pat .. '/'
title = $'{cmd} /{pat}/'
Xsetlist([], ' ', {title: title, items: items})
enddef

View File

@@ -1,6 +1,6 @@
" Vim Plugin: Edit the file with an existing Vim if possible
" Maintainer: Bram Moolenaar
" Last Change: 2022 Jun 17
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Aug 13
" To use add ":packadd! editexisting" in your vimrc file.

View File

@@ -2,7 +2,7 @@
"
" Author: Bram Moolenaar
" Copyright: Vim license applies, see ":help license"
" Last Change: 2023 Jun 24
" Last Change: 2023 Aug 23
"
" WORK IN PROGRESS - The basics works stable, more to come
" Note: In general you need at least GDB 7.12 because this provides the
@@ -69,6 +69,7 @@ let s:pc_id = 12
let s:asm_id = 13
let s:break_id = 14 " breakpoint number is added to this
let s:stopped = 1
let s:running = 0
let s:parsing_disasm_msg = 0
let s:asm_lines = []
@@ -121,6 +122,10 @@ func s:GetCommand()
return type(cmd) == v:t_list ? copy(cmd) : [cmd]
endfunc
func s:Echoerr(msg)
echohl ErrorMsg | echom '[termdebug] ' .. a:msg | echohl None
endfunc
func s:StartDebug(bang, ...)
" First argument is the command to debug, second core file or process ID.
call s:StartDebug_internal({'gdb_args': a:000, 'bang': a:bang})
@@ -133,18 +138,21 @@ endfunc
func s:StartDebug_internal(dict)
if exists('s:gdbwin')
echoerr 'Terminal debugger already running, cannot run two'
call s:Echoerr('Terminal debugger already running, cannot run two')
return
endif
let gdbcmd = s:GetCommand()
if !executable(gdbcmd[0])
echoerr 'Cannot execute debugger program "' .. gdbcmd[0] .. '"'
call s:Echoerr('Cannot execute debugger program "' .. gdbcmd[0] .. '"')
return
endif
let s:ptywin = 0
let s:pid = 0
let s:asmwin = 0
let s:asmbuf = 0
let s:varwin = 0
let s:varbuf = 0
if exists('#User#TermdebugStartPre')
doauto <nomodeline> User TermdebugStartPre
@@ -153,7 +161,7 @@ func s:StartDebug_internal(dict)
" Uncomment this line to write logging in "debuglog".
" call ch_logfile('debuglog', 'w')
let s:sourcewin = win_getid(winnr())
let s:sourcewin = win_getid()
" Remember the old value of 'signcolumn' for each buffer that it's set in, so
" that we can restore the value for all buffers.
@@ -201,11 +209,17 @@ func s:StartDebug_internal(dict)
endif
if s:GetDisasmWindow()
let curwinid = win_getid(winnr())
let curwinid = win_getid()
call s:GotoAsmwinOrCreateIt()
call win_gotoid(curwinid)
endif
if s:GetVariablesWindow()
let curwinid = win_getid()
call s:GotoVariableswinOrCreateIt()
call win_gotoid(curwinid)
endif
if exists('#User#TermdebugStartPost')
doauto <nomodeline> User TermdebugStartPost
endif
@@ -215,13 +229,20 @@ endfunc
func s:CloseBuffers()
exe 'bwipe! ' . s:ptybuf
exe 'bwipe! ' . s:commbuf
if s:asmbuf > 0 && bufexists(s:asmbuf)
exe 'bwipe! ' . s:asmbuf
endif
if s:varbuf > 0 && bufexists(s:varbuf)
exe 'bwipe! ' . s:varbuf
endif
let s:running = 0
unlet! s:gdbwin
endfunc
func s:CheckGdbRunning()
let gdbproc = term_getjob(s:gdbbuf)
if gdbproc == v:null || job_status(gdbproc) !=# 'run'
echoerr string(s:GetCommand()[0]) . ' exited unexpectedly'
call s:Echoerr(string(s:GetCommand()[0]) . ' exited unexpectedly')
call s:CloseBuffers()
return ''
endif
@@ -235,11 +256,11 @@ func s:StartDebug_term(dict)
\ 'vertical': s:vertical,
\ })
if s:ptybuf == 0
echoerr 'Failed to open the program terminal window'
call s:Echoerr('Failed to open the program terminal window')
return
endif
let pty = job_info(term_getjob(s:ptybuf))['tty_out']
let s:ptywin = win_getid(winnr())
let s:ptywin = win_getid()
if s:vertical
" Assuming the source code window will get a signcolumn, use two more
" columns for that, thus one less for the terminal window.
@@ -257,7 +278,7 @@ func s:StartDebug_term(dict)
\ 'hidden': 1,
\ })
if s:commbuf == 0
echoerr 'Failed to open the communication terminal window'
call s:Echoerr('Failed to open the communication terminal window')
exe 'bwipe! ' . s:ptybuf
return
endif
@@ -298,11 +319,11 @@ func s:StartDebug_term(dict)
\ 'term_finish': 'close',
\ })
if s:gdbbuf == 0
echoerr 'Failed to open the gdb terminal window'
call s:Echoerr('Failed to open the gdb terminal window')
call s:CloseBuffers()
return
endif
let s:gdbwin = win_getid(winnr())
let s:gdbwin = win_getid()
" Wait for the "startupdone" message before sending any commands.
let try_count = 0
@@ -350,7 +371,7 @@ func s:StartDebug_term(dict)
" response can be in the same line or the next line
let response = line1 . line2
if response =~ 'Undefined command'
echoerr 'Sorry, your gdb is too old, gdb 7.12 is required'
call s:Echoerr('Sorry, your gdb is too old, gdb 7.12 is required')
" CHECKME: possibly send a "server show version" here
call s:CloseBuffers()
return
@@ -369,7 +390,7 @@ func s:StartDebug_term(dict)
endif
let try_count += 1
if try_count > 100
echoerr 'Cannot check if your gdb works, continuing anyway'
call s:Echoerr('Cannot check if your gdb works, continuing anyway')
break
endif
sleep 10m
@@ -390,7 +411,7 @@ func s:StartDebug_prompt(dict)
else
new
endif
let s:gdbwin = win_getid(winnr())
let s:gdbwin = win_getid()
let s:promptbuf = bufnr('')
call prompt_setprompt(s:promptbuf, 'gdb> ')
set buftype=prompt
@@ -428,10 +449,12 @@ func s:StartDebug_prompt(dict)
\ 'out_cb': function('s:GdbOutCallback'),
\ })
if job_status(s:gdbjob) != "run"
echoerr 'Failed to start gdb'
call s:Echoerr('Failed to start gdb')
exe 'bwipe! ' . s:promptbuf
return
endif
exe $'au BufUnload <buffer={s:promptbuf}> ++once ' ..
\ 'call job_stop(s:gdbjob, ''kill'')'
" Mark the buffer modified so that it's not easy to close.
set modified
let s:gdb_channel = job_getchannel(s:gdbjob)
@@ -447,11 +470,11 @@ func s:StartDebug_prompt(dict)
\ 'term_name': 'debugged program',
\ })
if s:ptybuf == 0
echoerr 'Failed to open the program terminal window'
call s:Echoerr('Failed to open the program terminal window')
call job_stop(s:gdbjob)
return
endif
let s:ptywin = win_getid(winnr())
let s:ptywin = win_getid()
let pty = job_info(term_getjob(s:ptybuf))['tty_out']
call s:SendCommand('tty ' . pty)
@@ -583,7 +606,7 @@ func s:PromptInterrupt()
" Using job_stop() does not work on MS-Windows, need to send SIGTRAP to
" the debugger program so that gdb responds again.
if s:pid == 0
echoerr 'Cannot interrupt gdb, did not find a process ID'
call s:Echoerr('Cannot interrupt gdb, did not find a process ID')
else
call debugbreak(s:pid)
endif
@@ -596,9 +619,16 @@ endfunc
func s:GdbOutCallback(channel, text)
call ch_log('received from gdb: ' . a:text)
" Disassembly messages need to be forwarded as-is.
if s:parsing_disasm_msg
call s:CommOutput(a:channel, a:text)
return
end
" Drop the gdb prompt, we have our own.
" Drop status and echo'd commands.
if a:text == '(gdb) ' || a:text == '^done' || a:text[0] == '&'
if a:text == '(gdb) ' || a:text == '^done' ||
\ (a:text[0] == '&' && a:text !~ '^&"disassemble')
return
endif
if a:text =~ '^\^error,msg='
@@ -615,7 +645,7 @@ func s:GdbOutCallback(channel, text)
return
endif
let curwinid = win_getid(winnr())
let curwinid = win_getid()
call win_gotoid(s:gdbwin)
" Add the output above the current prompt.
@@ -626,36 +656,38 @@ func s:GdbOutCallback(channel, text)
endfunc
" Decode a message from gdb. "quotedText" starts with a ", return the text up
" to the next ", unescaping characters:
" to the next unescaped ", unescaping characters:
" - remove line breaks (unless "literal" is v:true)
" - change \" to "
" - change \\t to \t (unless "literal" is v:true)
" - change \0xhh to \xhh (disabled for now)
" - change \ooo to octal
" - change \\ to \
func s:DecodeMessage(quotedText, literal)
if a:quotedText[0] != '"'
echoerr 'DecodeMessage(): missing quote in ' . a:quotedText
call s:Echoerr('DecodeMessage(): missing quote in ' . a:quotedText)
return
endif
let msg = a:quotedText
\ ->substitute('^"\|".*', '', 'g')
" multi-byte characters arrive in octal form
" NULL-values must be kept encoded as those break the string otherwise
\ ->substitute('^"\|[^\\]\zs".*', '', 'g')
\ ->substitute('\\"', '"', 'g')
"\ multi-byte characters arrive in octal form
"\ NULL-values must be kept encoded as those break the string otherwise
\ ->substitute('\\000', s:NullRepl, 'g')
\ ->substitute('\\\o\o\o', {-> eval('"' .. submatch(0) .. '"')}, 'g')
" Note: GDB docs also mention hex encodings - the translations below work
" but we keep them out for performance-reasons until we actually see
" those in mi-returns
" \ ->substitute('\\0x\(\x\x\)', {-> eval('"\x' .. submatch(1) .. '"')}, 'g')
" \ ->substitute('\\0x00', s:NullRepl, 'g')
"\ Note: GDB docs also mention hex encodings - the translations below work
"\ but we keep them out for performance-reasons until we actually see
"\ those in mi-returns
"\ \ ->substitute('\\0x\(\x\x\)', {-> eval('"\x' .. submatch(1) .. '"')}, 'g')
"\ \ ->substitute('\\0x00', s:NullRepl, 'g')
\ ->substitute('\\\\', '\', 'g')
\ ->substitute(s:NullRepl, '\\000', 'g')
if !a:literal
return msg
return msg
\ ->substitute('\\t', "\t", 'g')
\ ->substitute('\\n', '', 'g')
else
return msg
return msg
endif
endfunc
const s:NullRepl = 'XXXNULLXXX'
@@ -689,16 +721,22 @@ func s:EndTermDebug(job, status)
exe 'bwipe! ' . s:commbuf
unlet s:gdbwin
call s:EndDebugCommon()
endfunc
func s:EndDebugCommon()
let curwinid = win_getid(winnr())
let curwinid = win_getid()
if exists('s:ptybuf') && s:ptybuf
exe 'bwipe! ' . s:ptybuf
endif
if s:asmbuf > 0 && bufexists(s:asmbuf)
exe 'bwipe! ' . s:asmbuf
endif
if s:varbuf > 0 && bufexists(s:varbuf)
exe 'bwipe! ' . s:varbuf
endif
let s:running = 0
" Restore 'signcolumn' in all buffers for which it was set.
call win_gotoid(s:sourcewin)
@@ -746,12 +784,8 @@ func s:EndPromptDebug(job, status)
doauto <nomodeline> User TermdebugStopPre
endif
let curwinid = win_getid(winnr())
call win_gotoid(s:gdbwin)
set nomodified
close
if curwinid != s:gdbwin
call win_gotoid(curwinid)
if bufexists(s:promptbuf)
exe 'bwipe! ' . s:promptbuf
endif
call s:EndDebugCommon()
@@ -761,7 +795,6 @@ endfunc
" Disassembly window - added by Michael Sartain
"
" - CommOutput: disassemble $pc
" - CommOutput: &"disassemble $pc\n"
" - CommOutput: ~"Dump of assembler code for function main(int, char**):\n"
" - CommOutput: ~" 0x0000555556466f69 <+0>:\tpush rbp\n"
@@ -771,15 +804,14 @@ endfunc
" - CommOutput: ~"End of assembler dump.\n"
" - CommOutput: ^done
" - CommOutput: disassemble $pc
" - CommOutput: &"disassemble $pc\n"
" - CommOutput: &"No function contains specified address.\n"
" - CommOutput: ^error,msg="No function contains specified address."
func s:HandleDisasmMsg(msg)
if a:msg =~ '^\^done'
let curwinid = win_getid(winnr())
let curwinid = win_getid()
if win_gotoid(s:asmwin)
silent normal! gg0"_dG
silent! %delete _
call setline(1, s:asm_lines)
set nomodified
set filetype=asm
@@ -803,12 +835,12 @@ func s:HandleDisasmMsg(msg)
call s:SendCommand('disassemble $pc,+100')
endif
let s:parsing_disasm_msg = 0
elseif a:msg =~ '\&\"disassemble \$pc'
elseif a:msg =~ '^&"disassemble \$pc'
if a:msg =~ '+100'
" This is our second disasm attempt
let s:parsing_disasm_msg = 2
endif
else
elseif a:msg !~ '^&"disassemble'
let value = substitute(a:msg, '^\~\"[ ]*', '', '')
let value = substitute(value, '^=>[ ]*', '', '')
let value = substitute(value, '\\n\"\r$', '', '')
@@ -822,6 +854,49 @@ func s:HandleDisasmMsg(msg)
endif
endfunc
func s:ParseVarinfo(varinfo)
let dict = {}
let nameIdx = matchstrpos(a:varinfo, '{name="\([^"]*\)"')
let dict['name'] = a:varinfo[nameIdx[1] + 7 : nameIdx[2] - 2]
let typeIdx = matchstrpos(a:varinfo, ',type="\([^"]*\)"')
let dict['type'] = a:varinfo[typeIdx[1] + 7 : typeIdx[2] - 2]
let valueIdx = matchstrpos(a:varinfo, ',value="\(.*\)"}')
if valueIdx[1] == -1
let dict['value'] = 'Complex value'
else
let dict['value'] = a:varinfo[valueIdx[1] + 8 : valueIdx[2] - 3]
endif
return dict
endfunc
func s:HandleVariablesMsg(msg)
let curwinid = win_getid()
if win_gotoid(s:varwin)
silent! %delete _
let spaceBuffer = 20
call setline(1, 'Type' .
\ repeat(' ', 16) .
\ 'Name' .
\ repeat(' ', 16) .
\ 'Value')
let cnt = 1
let capture = '{name=".\{-}",\%(arg=".\{-}",\)\{0,1\}type=".\{-}"\%(,value=".\{-}"\)\{0,1\}}'
let varinfo = matchstr(a:msg, capture, 0, cnt)
while varinfo != ''
let vardict = s:ParseVarinfo(varinfo)
call setline(cnt + 1, vardict['type'] .
\ repeat(' ', max([20 - len(vardict['type']), 1])) .
\ vardict['name'] .
\ repeat(' ', max([20 - len(vardict['name']), 1])) .
\ vardict['value'])
let cnt += 1
let varinfo = matchstr(a:msg, capture, 0, cnt)
endwhile
endif
call win_gotoid(curwinid)
endfunc
" Handle a message received from gdb on the GDB/MI interface.
func s:CommOutput(chan, msg)
let msgs = split(a:msg, "\r")
@@ -849,9 +924,12 @@ func s:CommOutput(chan, msg)
call s:HandleEvaluate(msg)
elseif msg =~ '^\^error,msg='
call s:HandleError(msg)
elseif msg =~ '^disassemble'
elseif msg =~ '^&"disassemble'
let s:parsing_disasm_msg = 1
let s:asm_lines = []
call s:HandleDisasmMsg(msg)
elseif msg =~ '^\^done,variables='
call s:HandleVariablesMsg(msg)
endif
endif
endfor
@@ -892,11 +970,16 @@ func s:InstallCommands()
command Continue call term_sendkeys(s:gdbbuf, "continue\r")
endif
command -nargs=* Frame call s:Frame(<q-args>)
command -count=1 Up call s:Up(<count>)
command -count=1 Down call s:Down(<count>)
command -range -nargs=* Evaluate call s:Evaluate(<range>, <q-args>)
command Gdb call win_gotoid(s:gdbwin)
command Program call s:GotoProgram()
command Source call s:GotoSourcewinOrCreateIt()
command Asm call s:GotoAsmwinOrCreateIt()
command Var call s:GotoVariableswinOrCreateIt()
command Winbar call s:InstallWinbar(1)
let map = 1
@@ -910,6 +993,25 @@ func s:InstallCommands()
nnoremap K :Evaluate<CR>
endif
let map = 1
if exists('g:termdebug_config')
let map = get(g:termdebug_config, 'map_plus', 1)
endif
if map
let s:plus_map_saved = maparg('+', 'n', 0, 1)
nnoremap <expr> + $'<Cmd>{v:count1}Up<CR>'
endif
let map = 1
if exists('g:termdebug_config')
let map = get(g:termdebug_config, 'map_minus', 1)
endif
if map
let s:minus_map_saved = maparg('-', 'n', 0, 1)
nnoremap <expr> - $'<Cmd>{v:count1}Down<CR>'
endif
if has('menu') && &mouse != ''
call s:InstallWinbar(0)
@@ -950,7 +1052,7 @@ func s:InstallWinbar(force)
nnoremenu WinBar.Cont :Continue<CR>
nnoremenu WinBar.Stop :Stop<CR>
nnoremenu WinBar.Eval :Evaluate<CR>
call add(s:winbar_winids, win_getid(winnr()))
call add(s:winbar_winids, win_getid())
endif
endfunc
@@ -966,11 +1068,15 @@ func s:DeleteCommands()
delcommand Arguments
delcommand Stop
delcommand Continue
delcommand Frame
delcommand Up
delcommand Down
delcommand Evaluate
delcommand Gdb
delcommand Program
delcommand Source
delcommand Asm
delcommand Var
delcommand Winbar
if exists('s:k_map_saved')
@@ -981,10 +1087,26 @@ func s:DeleteCommands()
endif
unlet s:k_map_saved
endif
if exists('s:plus_map_saved')
if empty(s:plus_map_saved)
nunmap +
else
call mapset(s:plus_map_saved)
endif
unlet s:plus_map_saved
endif
if exists('s:minus_map_saved')
if empty(s:minus_map_saved)
nunmap -
else
call mapset(s:minus_map_saved)
endif
unlet s:minus_map_saved
endif
if has('menu')
" Remove the WinBar entries from all windows where it was added.
let curwinid = win_getid(winnr())
let curwinid = win_getid()
for winid in s:winbar_winids
if win_gotoid(winid)
aunmenu WinBar.Step
@@ -1083,7 +1205,7 @@ func s:ClearBreakpoint()
endif
echomsg 'Breakpoint ' . id . ' cleared from line ' . lnum . '.'
else
echoerr 'Internal error trying to remove breakpoint at line ' . lnum . '!'
call s:Echoerr('Internal error trying to remove breakpoint at line ' . lnum . '!')
endif
else
echomsg 'No breakpoint to remove at line ' . lnum . '.'
@@ -1097,6 +1219,37 @@ func s:Run(args)
call s:SendResumingCommand('-exec-run')
endfunc
" :Frame - go to a specfic frame in the stack
func s:Frame(arg)
" Note: we explicit do not use mi's command
" call s:SendCommand('-stack-select-frame "' . a:arg .'"')
" as we only get a "done" mi response and would have to open the file
" 'manually' - using cli command "frame" provides us with the mi response
" already parsed and allows for more formats
if a:arg =~ '^\d\+$' || a:arg == ''
" specify frame by number
call s:SendCommand('-interpreter-exec mi "frame ' . a:arg .'"')
elseif a:arg =~ '^0x[0-9a-fA-F]\+$'
" specify frame by stack address
call s:SendCommand('-interpreter-exec mi "frame address ' . a:arg .'"')
else
" specify frame by function name
call s:SendCommand('-interpreter-exec mi "frame function ' . a:arg .'"')
endif
endfunc
" :Up - go a:count frames in the stack "higher"
func s:Up(count)
" the 'correct' one would be -stack-select-frame N, but we don't know N
call s:SendCommand($'-interpreter-exec console "up {a:count}"')
endfunc
" :Down - go a:count frames in the stack "below"
func s:Down(count)
" the 'correct' one would be -stack-select-frame N, but we don't know N
call s:SendCommand($'-interpreter-exec console "down {a:count}"')
endfunc
func s:SendEval(expr)
" check for "likely" boolean expressions, in which case we take it as lhs
if a:expr =~ "[=!<>]="
@@ -1234,13 +1387,13 @@ func s:HandleError(msg)
return
endif
let msgVal = substitute(a:msg, '.*msg="\(.*\)"', '\1', '')
echoerr substitute(msgVal, '\\"', '"', 'g')
call s:Echoerr(substitute(msgVal, '\\"', '"', 'g'))
endfunc
func s:GotoSourcewinOrCreateIt()
if !win_gotoid(s:sourcewin)
new
let s:sourcewin = win_getid(winnr())
let s:sourcewin = win_getid()
call s:InstallWinbar(0)
endif
endfunc
@@ -1273,19 +1426,21 @@ func s:GotoAsmwinOrCreateIt()
exe 'new'
endif
let s:asmwin = win_getid(winnr())
let s:asmwin = win_getid()
setlocal nowrap
setlocal number
setlocal noswapfile
setlocal buftype=nofile
setlocal bufhidden=wipe
setlocal signcolumn=no
setlocal modifiable
let asmbuf = bufnr('Termdebug-asm-listing')
if asmbuf > 0
exe 'buffer' . asmbuf
if s:asmbuf > 0 && bufexists(s:asmbuf)
exe 'buffer' . s:asmbuf
else
exe 'file Termdebug-asm-listing'
silent file Termdebug-asm-listing
let s:asmbuf = bufnr('Termdebug-asm-listing')
endif
if s:GetDisasmWindowHeight() > 0
@@ -1306,17 +1461,75 @@ func s:GotoAsmwinOrCreateIt()
endif
endfunc
func s:GetVariablesWindow()
if exists('g:termdebug_config')
return get(g:termdebug_config, 'variables_window', 0)
endif
if exists('g:termdebug_disasm_window')
return g:termdebug_variables_window
endif
return 0
endfunc
func s:GetVariablesWindowHeight()
if exists('g:termdebug_config')
return get(g:termdebug_config, 'variables_window_height', 0)
endif
if exists('g:termdebug_variables_window') && g:termdebug_variables_window > 1
return g:termdebug_variables_window
endif
return 0
endfunc
func s:GotoVariableswinOrCreateIt()
if !win_gotoid(s:varwin)
if win_gotoid(s:sourcewin)
exe 'rightbelow new'
else
exe 'new'
endif
let s:varwin = win_getid()
setlocal nowrap
setlocal noswapfile
setlocal buftype=nofile
setlocal bufhidden=wipe
setlocal signcolumn=no
setlocal modifiable
if s:varbuf > 0 && bufexists(s:varbuf)
exe 'buffer' . s:varbuf
else
silent file Termdebug-variables-listing
let s:varbuf = bufnr('Termdebug-variables-listing')
endif
if s:GetVariablesWindowHeight() > 0
exe 'resize ' .. s:GetVariablesWindowHeight()
endif
endif
if s:running
call s:SendCommand('-stack-list-variables 2')
endif
endfunc
" Handle stopping and running message from gdb.
" Will update the sign that shows the current position.
func s:HandleCursor(msg)
let wid = win_getid(winnr())
let wid = win_getid()
if a:msg =~ '^\*stopped'
call ch_log('program stopped')
let s:stopped = 1
if a:msg =~ '^\*stopped,reason="exited-normally"'
let s:running = 0
endif
elseif a:msg =~ '^\*running'
call ch_log('program running')
let s:stopped = 0
let s:running = 1
endif
if a:msg =~ 'fullname='
@@ -1330,7 +1543,7 @@ func s:HandleCursor(msg)
if asm_addr != ''
let s:asm_addr = asm_addr
let curwinid = win_getid(winnr())
let curwinid = win_getid()
if win_gotoid(s:asmwin)
let lnum = search('^' . s:asm_addr)
if lnum == 0
@@ -1345,25 +1558,29 @@ func s:HandleCursor(msg)
endif
endif
if s:running && s:stopped && bufwinnr('Termdebug-variables-listing') != -1
call s:SendCommand('-stack-list-variables 2')
endif
if a:msg =~ '^\(\*stopped\|=thread-selected\)' && filereadable(fname)
let lnum = substitute(a:msg, '.*line="\([^"]*\)".*', '\1', '')
if lnum =~ '^[0-9]*$'
call s:GotoSourcewinOrCreateIt()
if expand('%:p') != fnamemodify(fname, ':p')
echomsg 'different fname: "' .. expand('%:p') .. '" vs "' .. fnamemodify(fname, ':p') .. '"'
augroup Termdebug
" Always open a file read-only instead of showing the ATTENTION
" prompt, since it is unlikely we want to edit the file.
" The file may be changed but not saved, warn for that.
au SwapExists * echohl WarningMsg
\ | echo 'Warning: file is being edited elsewhere'
\ | echohl None
\ | let v:swapchoice = 'o'
echomsg 'different fname: "' .. expand('%:p') .. '" vs "' .. fnamemodify(fname, ':p') .. '"'
augroup Termdebug
" Always open a file read-only instead of showing the ATTENTION
" prompt, since it is unlikely we want to edit the file.
" The file may be changed but not saved, warn for that.
au SwapExists * echohl WarningMsg
\ | echo 'Warning: file is being edited elsewhere'
\ | echohl None
\ | let v:swapchoice = 'o'
augroup END
if &modified
" TODO: find existing window
exe 'split ' . fnameescape(fname)
let s:sourcewin = win_getid(winnr())
let s:sourcewin = win_getid()
call s:InstallWinbar(0)
else
exe 'edit ' . fnameescape(fname)

View File

@@ -28,10 +28,16 @@ com! -nargs=0 VimballList call vimball#Vimball(0)
com! -nargs=* -complete=dir RmVimball call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
augroup Vimball
au!
au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif
au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz
\ if getline(1) =~ '^" Vimball Archiver' |
\ setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0, "Source this file to extract it! (:so %)")|endif |
\ endif
au SourceCmd *.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz let s:origfile=expand("%")|if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if s:origfile!=expand("<afile>")|close|endif
au SourceCmd *.vba if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif
au BufEnter *.vmb,*.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif
au BufEnter *.vmb,*.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz
\ if getline(1) =~ '^" Vimball Archiver' |
\ setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif |
\ endif
au SourceCmd *.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz let s:origfile=expand("%")|if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if s:origfile!=expand("<afile>")|close|endif
au SourceCmd *.vmb if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif
augroup END
@@ -41,3 +47,5 @@ augroup END
" vim: fdm=marker
let &cpo= s:keepcpo
unlet s:keepcpo
" vim: ts=4:

View File

@@ -363,7 +363,7 @@ syn region eighthComment start="\zs\\" end="$" contains=eighthTodo
if !exists("did_eighth_syntax_inits")
let did_eighth_syntax_inits=1
" The default methods for highlighting. Can be overriden later.
" The default methods for highlighting. Can be overridden later.
hi def link eighthTodo Todo
hi def link eighthOperators Operator
hi def link eighthMath Number

View File

@@ -118,7 +118,7 @@ syn match a65Section "\(^\|\s\)\.)\($\|\s\)"
" Strings
syn match a65String "\".*\""
" Programm Counter
" Program Counter
syn region a65PC start="\*=" end="\>" keepend
" HI/LO Byte

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: bash
" Maintainer: Bram
" Last Change: 2019 Sep 27
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Aug 13
" quit when a syntax file was already loaded
if exists("b:current_syntax")

View File

@@ -33,7 +33,7 @@ syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\
syn match zoneSpecial contained /^[@*.]\s/
syn match zoneTTL contained /\s\@<=\d[0-9WwDdHhMmSs]*\(\s\|$\)\@=/ nextgroup=zoneClass,zoneRRType skipwhite
syn keyword zoneClass contained IN CHAOS CH HS HESIOD nextgroup=zoneRRType,zoneTTL skipwhite
syn keyword zoneRRType contained A AAAA CERT CNAME DNAME DNSKEY DS HINFO LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RP RRSIG SSHFP SOA SPF SRV TLSA TXT nextgroup=zoneRData skipwhite
syn keyword zoneRRType contained A AAAA APL CAA CERT CNAME DNAME DNSKEY DS HINFO LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM OPENPGPKEY PTR RP RRSIG SMIMEA SOA SPF SRV SSHFP TLSA TXT nextgroup=zoneRData skipwhite
syn match zoneRData contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown
syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/
@@ -60,7 +60,7 @@ syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1,7}:\(\s\|;\|$\)\@=
syn match zoneText contained /"\([^"\\]\|\\.\)*"\(\s\|;\|$\)\@=/
syn match zoneNumber contained /\<[0-9]\+\(\s\|;\|$\)\@=/
syn match zoneSerial contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/
syn match zoneSerial contained /\<[0-9]\{1,10}\(\s\|;\|$\)\@=/
syn match zoneErrParen /)/
syn region zoneParen contained start="(" end=")" contains=zoneSerial,zoneTTL,zoneNumber,zoneComment

View File

@@ -61,7 +61,7 @@ syn region chaiscriptFunc matchgroup=chaiscriptFunc start="`" end="`"
" Intentionally leaving out all of the normal, well known operators
syn match chaiscriptOperator "\.\."
" Guard seperator as an operator
" Guard separator as an operator
syn match chaiscriptOperator ":"
" Comments

View File

@@ -335,7 +335,7 @@ syn keyword cmakeGeneratorExpressions contained
syn case ignore
syn keyword cmakeCommand
\ add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory break build_command cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue create_test_sourcelist ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload define_property enable_language enable_testing endfunction endmacro execute_process export file find_file find_library find_package find_path find_program fltk_wrap_ui function get_cmake_property get_directory_property get_filename_component get_property get_source_file_property get_target_property get_test_property include include_directories include_external_msproject include_guard include_regular_expression install link_directories list load_cache load_command macro mark_as_advanced math message option project qt_wrap_cpp qt_wrap_ui remove_definitions return separate_arguments set set_directory_properties set_property set_source_files_properties set_target_properties set_tests_properties site_name source_group string target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_libraries target_sources try_compile try_run unset variable_watch
\ add_compile_options add_compile_definitions add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory break build_command cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue create_test_sourcelist ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload define_property enable_language enable_testing endfunction endmacro execute_process export file find_file find_library find_package find_path find_program fltk_wrap_ui function get_cmake_property get_directory_property get_filename_component get_property get_source_file_property get_target_property get_test_property include include_directories include_external_msproject include_guard include_regular_expression install link_directories list load_cache load_command macro mark_as_advanced math message option project qt_wrap_cpp qt_wrap_ui remove_definitions return separate_arguments set set_directory_properties set_property set_source_files_properties set_target_properties set_tests_properties site_name source_group string target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_libraries target_sources try_compile try_run unset variable_watch
\ nextgroup=cmakeArguments
syn keyword cmakeCommandConditional

View File

@@ -5,7 +5,7 @@
" License: This file can be redistribued and/or modified under the same terms
" as Vim itself.
" Filenames: /tmp/crontab.* used by "crontab -e"
" Last Change: 2015-01-20
" Last Change: 2022-09-22
"
" crontab line format:
" Minutes Hours Days Months Days_of_Week Commands # comments
@@ -15,20 +15,20 @@ if exists("b:current_syntax")
finish
endif
syntax match crontabNick "^\s*@\(reboot\|yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\)\>" nextgroup=crontabCmd skipwhite
syntax match crontabNick "^\s*@\(reboot\|yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\|every_minute\|every_second\)\>" nextgroup=crontabCmd skipwhite
syntax match crontabVar "^\s*\k\w*\s*="me=e-1
syntax case ignore
syntax match crontabMin "^\s*[-0-9/,.*]\+" nextgroup=crontabHr skipwhite
syntax match crontabHr "\s[-0-9/,.*]\+" nextgroup=crontabDay skipwhite contained
syntax match crontabDay "\s[-0-9/,.*]\+" nextgroup=crontabMnth skipwhite contained
syntax match crontabMin "^\s*[-~0-9/,.*]\+" nextgroup=crontabHr skipwhite
syntax match crontabHr "\s[-~0-9/,.*]\+" nextgroup=crontabDay skipwhite contained
syntax match crontabDay "\s[-~0-9/,.*]\+" nextgroup=crontabMnth skipwhite contained
syntax match crontabMnth "\s[-a-z0-9/,.*]\+" nextgroup=crontabDow skipwhite contained
syntax match crontabMnth "\s[-~a-z0-9/,.*]\+" nextgroup=crontabDow skipwhite contained
syntax keyword crontabMnth12 contained jan feb mar apr may jun jul aug sep oct nov dec
syntax match crontabDow "\s[-a-z0-9/,.*]\+" nextgroup=crontabCmd skipwhite contained
syntax match crontabDow "\s[-~a-z0-9/,.*]\+" nextgroup=crontabCmd skipwhite contained
syntax keyword crontabDow7 contained sun mon tue wed thu fri sat
syntax region crontabCmd start="\S" end="$" skipwhite contained keepend contains=crontabPercent

View File

@@ -452,12 +452,12 @@ syn match cssAttrComma ","
" Pseudo class
" https://www.w3.org/TR/selectors-4/
syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssNoise,cssPseudoClassId,cssUnicodeEscape,cssVendor,cssPseudoClassFn
syn keyword cssPseudoClassId contained link visited active hover before after left right
syn keyword cssPseudoClassId contained root empty target enabled disabled checked invalid
syn keyword cssPseudoClassId contained link visited active hover before after left right any-link
syn keyword cssPseudoClassId contained root empty target enabled disabled checked invalid default defined autofill fullscreen host indeterminate in-range modal optional out-of-range picture-in-picture placeholder-shown paused playing read-only read-write required scope
syn match cssPseudoClassId contained "\<first-\(line\|letter\)\>"
syn match cssPseudoClassId contained "\<\(first\|last\|only\)-\(of-type\|child\)\>"
syn match cssPseudoClassId contained "\<focus\(-within\|-visible\)\=\>"
syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(not\|is\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")" contains=cssStringQ,cssStringQQ,cssTagName,cssAttributeSelector,cssClassName,cssIdentifier
syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(where\|has\|host\|not\|is\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")" contains=cssStringQ,cssStringQQ,cssTagName,cssAttributeSelector,cssClassName,cssIdentifier
" ------------------------------------
" Vendor specific properties
syn match cssPseudoClassId contained "\<selection\>"

View File

@@ -6,7 +6,7 @@
" Current Maintainer: Hong Xu <hong@topbug.net>
" Homepage: http://www.vim.org/scripts/script.php?script_id=3747
" Repository: https://github.com/xuhdev/syntax-dosini.vim
" Last Change: 2023 Jun 27
" Last Change: 2023 Aug 20
" quit when a syntax file was already loaded
@@ -14,6 +14,10 @@ if exists("b:current_syntax")
finish
endif
" using of line-continuation requires cpo&vim
let s:cpo_save = &cpo
set cpo&vim
" shut case off
syn case ignore
@@ -39,4 +43,7 @@ hi def link dosiniValue String
let b:current_syntax = "dosini"
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: sts=2 sw=2 et

View File

@@ -27,7 +27,7 @@ syn keyword euphoria4Debug includes inline warning define
" Keywords for conditional compilation - from $EUDIR/include/euphoria/keywords.e:
syn keyword euphoria4PreProc elsedef elsifdef ifdef
" Keywords (Statments) - from $EUDIR/include/euphoria/keywords.e:
" Keywords (Statements) - from $EUDIR/include/euphoria/keywords.e:
syn keyword euphoria4Keyword and as break by case constant continue do else
syn keyword euphoria4Keyword elsif end entry enum exit export
syn keyword euphoria4Keyword fallthru for function global goto if include

View File

@@ -67,10 +67,10 @@ syntax match flexwikiEmoticons /\((.)\|:[()|$@]\|:-[DOPS()\]|$@]\|;)\|:'(\)
" Aggregate all the regular text highlighting into flexwikiText
syntax cluster flexwikiText contains=flexwikiItalic,flexwikiBold,flexwikiCode,flexwikiDeEmphasis,flexwikiDelText,flexwikiInsText,flexwikiSuperScript,flexwikiSubScript,flexwikiCitation,flexwikiLink,flexwikiWord,flexwikiEmoticons
" single-line WikiPropertys
" single-line WikiProperties
syntax match flexwikiSingleLineProperty /^:\?[A-Z_][_a-zA-Z0-9]\+:/
" TODO: multi-line WikiPropertys
" TODO: multi-line WikiProperties
" Header levels, 1-6
syntax match flexwikiH1 /^!.*$/

View File

@@ -30,7 +30,7 @@ syn keyword gdbStatement contained search section set sharedlibrary shell show s
syn keyword gdbStatement contained stop target tbreak tdump tfind thbreak thread tp trace tstart tstatus tstop
syn keyword gdbStatement contained tty und[isplay] unset until up watch whatis where while ws x
syn match gdbFuncDef "\<define\>.*"
syn match gdbStatmentContainer "^\s*\S\+" contains=gdbStatement,gdbFuncDef
syn match gdbStatementContainer "^\s*\S\+" contains=gdbStatement,gdbFuncDef
syn match gdbStatement "^\s*info" nextgroup=gdbInfo skipwhite skipempty
" some commonly used abbreviations

View File

@@ -5,7 +5,7 @@
" go.vim: Vim syntax file for Go.
" Language: Go
" Maintainer: Billie Cleek <bhcleek@gmail.com>
" Latest Revision: 2023-02-19
" Latest Revision: 2023-08-21
" License: BSD-style. See LICENSE file in source repository.
" Repository: https://github.com/fatih/vim-go
@@ -130,8 +130,8 @@ hi def link goFloats Type
hi def link goComplexes Type
" Predefined functions and values
syn keyword goBuiltins append cap close complex copy delete imag len
syn keyword goBuiltins make new panic print println real recover
syn keyword goBuiltins append cap clear close complex copy delete imag len
syn keyword goBuiltins make max min new panic print println real recover
syn keyword goBoolean true false
syn keyword goPredefinedIdentifiers nil iota

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: gp (version 2.5)
" Language: gp (version 2.15)
" Maintainer: Karim Belabas <Karim.Belabas@math.u-bordeaux.fr>
" Last change: 2012 Jan 08
" Last change: 2023 Aug 22
" URL: http://pari.math.u-bordeaux.fr
" quit when a syntax file was already loaded
@@ -14,23 +14,29 @@ set cpo&vim
" control statements
syntax keyword gpStatement break return next
syntax keyword gpConditional if
syntax keyword gpRepeat until while for fordiv forell forprime
syntax keyword gpRepeat forsubgroup forstep forvec
syntax keyword gpConditional if iferr
syntax keyword gpRepeat until while for forcomposite fordiv
syntax keyword gpRepeat fordivfactored foreach forell forfactored
syntax keyword gpRepeat forpart forperm forprime forprimestep forqfvec
syntax keyword gpRepeat forsquarefree forstep forsubgroup forsubset
syntax keyword gpRepeat forvec
syntax keyword gpRepeat parfor parforeach parforprime parforprimestep
syntax keyword gpRepeat parforvec
" storage class
syntax keyword gpScope my local global
syntax keyword gpScope my local global export exportall
" defaults
syntax keyword gpInterfaceKey breakloop colors compatible
syntax keyword gpInterfaceKey datadir debug debugfiles debugmem
syntax keyword gpInterfaceKey echo factor_add_primes factor_proven format
syntax keyword gpInterfaceKey datadir debug debugfiles debugmem
syntax keyword gpInterfaceKey echo factor_add_primes factor_proven format
syntax keyword gpInterfaceKey graphcolormap graphcolors
syntax keyword gpInterfaceKey help histfile histsize
syntax keyword gpInterfaceKey lines linewrap log logfile new_galois_format
syntax keyword gpInterfaceKey output parisize path prettyprinter primelimit
syntax keyword gpInterfaceKey prompt prompt_cont psfile
syntax keyword gpInterfaceKey readline realprecision recover
syntax keyword gpInterfaceKey secure seriesprecision simplify strictmatch
syntax keyword gpInterfaceKey TeXstyle timer
syntax keyword gpInterfaceKey help histfile histsize
syntax keyword gpInterfaceKey lines linewrap log logfile nbthreads
syntax keyword gpInterfaceKey new_galois_format output parisize parisizemax
syntax keyword gpInterfaceKey path plothsizes prettyprinter primelimit prompt
syntax keyword gpInterfaceKey prompt_cont psfile readline realbitprecision
syntax keyword gpInterfaceKey realprecision recover secure seriesprecision
syntax keyword gpInterfaceKey simplify sopath strictmatch TeXstyle
syntax keyword gpInterfaceKey threadsize threadsizemax timer
syntax match gpInterface "^\s*\\[a-z].*"
syntax keyword gpInterface default
@@ -58,24 +64,23 @@ syntax region gpParen transparent start='(' end=')' contains=ALLBUT,gpParenErro
syntax match gpParenError ")"
syntax match gpInParen contained "[{}]"
hi def link gpConditional Conditional
hi def link gpConditional Conditional
hi def link gpRepeat Repeat
hi def link gpError Error
hi def link gpParenError gpError
hi def link gpParenError gpError
hi def link gpInParen gpError
hi def link gpStatement Statement
hi def link gpString String
hi def link gpComment Comment
hi def link gpInterface Type
hi def link gpInput Type
hi def link gpInterfaceKey Statement
hi def link gpInterfaceKey Statement
hi def link gpFunction Function
hi def link gpScope Type
" contained ones
hi def link gpSpecial Special
hi def link gpTodo Todo
hi def link gpArgs Type
hi def link gpTodo Todo
hi def link gpArgs Type
let b:current_syntax = "gp"
let &cpo = s:cpo_save

View File

@@ -362,7 +362,7 @@ exec "syn sync ccomment groovyComment minlines=" . groovy_minlines
" Mark these as operators
" Hightlight brackets
" Highlight brackets
" syn match groovyBraces "[{}]"
" syn match groovyBraces "[\[\]]"
" syn match groovyBraces "[\|]"

View File

@@ -108,6 +108,8 @@ syn match hsLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$" contain
syn region hsBlockComment start="{-" end="-}" contains=hsBlockComment,@Spell
syn region hsPragma start="{-#" end="#-}"
syn keyword hsTodo contained FIXME TODO XXX NOTE
" C Preprocessor directives. Shamelessly ripped from c.vim and trimmed
" First, see whether to flag directive-like lines or not
if (!exists("hs_allow_hash_operator"))

View File

@@ -52,11 +52,11 @@ syn match javaScriptNumber "\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\([eE]
syn region javaScriptRegexpString start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment oneline
syn keyword javaScriptConditional if else switch
syn keyword javaScriptRepeat while for do in
syn keyword javaScriptRepeat while for do in of
syn keyword javaScriptBranch break continue
syn keyword javaScriptOperator new delete instanceof typeof
syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp
syn keyword javaScriptStatement return with await
syn keyword javaScriptStatement return with await yield
syn keyword javaScriptBoolean true false
syn keyword javaScriptNull null undefined
syn keyword javaScriptIdentifier arguments this var let
@@ -103,7 +103,7 @@ hi def link javaScriptStringD String
hi def link javaScriptStringT String
hi def link javaScriptCharacter Character
hi def link javaScriptSpecialCharacter javaScriptSpecial
hi def link javaScriptNumber javaScriptValue
hi def link javaScriptNumber Number
hi def link javaScriptConditional Conditional
hi def link javaScriptRepeat Repeat
hi def link javaScriptBranch Conditional

View File

@@ -5,7 +5,7 @@
" Email: Subject: send syntax_vim.tgz
" Last Change: 2001 Mai 01
"
" Options lite_sql_query = 1 for SQL syntax highligthing inside strings
" Options lite_sql_query = 1 for SQL syntax highlighting inside strings
" lite_minlines = x to sync at least x lines backwards
" quit when a syntax file was already loaded

View File

@@ -330,7 +330,7 @@ syn match logtalkKeyword "\<t\(an\|runcate\)\ze("
syn match logtalkKeyword "\<ceiling\ze("
" Other arithemtic functors
" Other arithmetic functors
syn match logtalkOperator "\*\*"
syn match logtalkKeyword "\<s\(in\|qrt\)\ze("

View File

@@ -9,7 +9,7 @@ if exists("b:current_syntax")
endif
" This setup is probably atypical for a syntax highlighting file, because
" most of it is not really intended to be overrideable. Instead, the
" most of it is not really intended to be overridable. Instead, the
" highlighting is supposed to correspond to the highlighting specified by
" the .lss file entries themselves; ie. the "bold" keyword should be bold,
" the "red" keyword should be red, and so forth. The exceptions to this

View File

@@ -20,7 +20,9 @@ runtime! syntax/ctrlh.vim
syn case ignore
syn match manReference "\f\+([1-9][a-z]\=)"
" See notes about hyphenation in s:ParseIntoPageAndSection of
" autoload/dist/man.vim.
syn match manReference "\%(\f\+[\u2010-]\%(\n\|\r\n\=\)\s\+\)\=\f\+([1-9]\l*)"
syn match manSectionHeading "^\a.*$"
syn match manSubHeading "^\s\{3\}\a.*$"
syn match manOptionDesc "^\s*[+-][a-z0-9]\S*"

View File

@@ -5,7 +5,7 @@
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" very basic things only (based on the vgrindefs file).
" If you use this language, please improve it, and send me the patches!
" If you use this language, please improve it, and send patches!
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")

View File

@@ -1,11 +1,12 @@
" Vim syntax file
" Language: Nix
" Maintainer: James Fleming <james@electronic-quill.net>
" Maintainer: James Fleming <james@electronic-quill.net>
" (Github username: equill)
" Original Author: Daiderd Jordan <daiderd@gmail.com>
" Acknowledgement: Based on vim-nix maintained by Daiderd Jordan <daiderd@gmail.com>
" https://github.com/LnL7/vim-nix
" License: MIT
" Last Change: 2022 Dec 06
" Last Change: 2023 Aug 19
if exists("b:current_syntax")
finish
@@ -68,7 +69,8 @@ syn match nixAttribute "[a-zA-Z_][a-zA-Z0-9_'-]*\ze\%([^a-zA-Z0-9_'.-]\|$\)" con
syn region nixAttributeAssignment start="=" end="\ze;" contained contains=@nixExpr
syn region nixAttributeDefinition start=/\ze[a-zA-Z_"$]/ end=";" contained contains=nixComment,nixAttribute,nixInterpolation,nixSimpleString,nixAttributeDot,nixAttributeAssignment
syn region nixInheritAttributeScope start="(" end="\ze)" contained contains=@nixExpr
syn region nixInheritAttributeSubExpr start="("ms=e+1 end="\ze)" contained contains=nixAttributeDot,@nixExpr
syn region nixInheritAttributeScope start="\ze(" end=")" contained contains=nixInheritAttributeSubExpr
syn region nixAttributeDefinition matchgroup=nixInherit start="\<inherit\>" end=";" contained contains=nixComment,nixInheritAttributeScope,nixAttribute
syn region nixAttributeSet start="{" end="}" contains=nixComment,nixAttributeDefinition

View File

@@ -20,7 +20,7 @@ syn match pymanifestComment /\\\@1<!#.*/ contains=pymanifestTodo
" Commands
syn keyword pymanifestCommand
\ include exclude
\ recursive-include resursive-exclude
\ recursive-include recursive-exclude
\ global-include global-exclude
\ graft prune

1130
runtime/syntax/qml.vim Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -81,7 +81,7 @@ else
syn match yamlEscape contained '\\\%([\\"abefnrtv\^0_ NLP\n]\|x\x\x\|u\x\{4}\|U\x\{8}\)'
syn match yamlSingleEscape contained "''"
syn match yamlComment /#.*/ contained
" A second colon is a syntax error, unles within a string or following !expr
" A second colon is a syntax error, unless within a string or following !expr
syn match yamlColonError /:\s*[^'^"^!]*:/ contained
if &filetype == 'quarto'
syn region pandocYAMLHeader matchgroup=rmdYamlBlockDelim start=/\%(\%^\|\_^\s*\n\)\@<=\_^-\{3}\ze\n.\+/ end=/^---$/ keepend contains=rmdYamlFieldTtl,yamlFlowString,yamlComment,yamlColonError

View File

@@ -25,7 +25,7 @@ syn keyword sdcNonIdealities set_load set_min_capacitance set_max_capacitance
syn keyword sdcCreateOperations create_clock create_timing_netlist update_timing_netlist
" command flags highlighting
syn match sdcFlags "[[:space:]]-[[:alpha:]]*\>"
syn match sdcFlags "[[:space:]]-[[:alpha:]_]*\>"
" Define the default highlighting.
hi def link sdcCollections Repeat

View File

@@ -294,7 +294,7 @@ syn sync minlines=100
hi def link sgmlTodo Todo
hi def link sgmlTag Function
hi def link sgmlEndTag Identifier
" SGML specifig
" SGML specific
hi def link sgmlAbbrEndTag Identifier
hi def link sgmlEmptyTag Function
hi def link sgmlEntity Statement

View File

@@ -1,9 +1,9 @@
" Vim syntax file
" Language: TypeScript and TypeScriptReact
" Maintainer: Bram Moolenaar, Herrington Darkholme
" Last Change: 2021 Sep 22
" Maintainer: Herrington Darkholme
" Last Change: 2023 Aug 24
" Based On: Herrington Darkholme's yats.vim
" Changes: See https:github.com/HerringtonDarkholme/yats.vim
" Changes: See https://github.com/HerringtonDarkholme/yats.vim
" Credits: See yats.vim on github
if &cpo =~ 'C'
@@ -149,7 +149,7 @@ syntax match typescriptNumber /\<0[bB][01][01_]*\>/ nextgroup=@typescript
syntax match typescriptNumber /\<0[oO][0-7][0-7_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
syntax match typescriptNumber /\<0[xX][0-9a-fA-F][0-9a-fA-F_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
syntax match typescriptNumber /\<\%(\d[0-9_]*\%(\.\d[0-9_]*\)\=\|\.\d[0-9_]*\)\%([eE][+-]\=\d[0-9_]*\)\=\>/
\ nextgroup=typescriptSymbols skipwhite skipempty
\ nextgroup=@typescriptSymbols skipwhite skipempty
syntax region typescriptObjectLiteral matchgroup=typescriptBraces
\ start=/{/ end=/}/

View File

@@ -94,7 +94,7 @@ syn region slrnrcColorObjStr contained matchgroup=slrnrcColorObj start=+"+ end=
syn keyword slrnrcColorVal contained default
syn keyword slrnrcColorVal contained black blue brightblue brightcyan brightgreen brightmagenta brightred brown cyan gray green lightgray magenta red white yellow
syn region slrnrcColorValStr contained matchgroup=slrnrcColorVal start=+"+ end=+"+ oneline contains=slrnrcColorVal,slrnrcSpaceError
" Mathcing a function with three arguments
" Matching a function with three arguments
syn keyword slrnrcColor contained color
syn match slrnrcColorInit contained "^\s*color\s\+\S\+" skipwhite nextgroup=slrnrcColorVal\(Str\)\= contains=slrnrcColor\(Obj\|ObjStr\)\=
syn match slrnrcColorLine "^\s*color\s\+\S\+\s\+\S\+" skipwhite nextgroup=slrnrcColorVal\(Str\)\= contains=slrnrcColor\(Init\|Val\|ValStr\)

View File

@@ -1,10 +1,10 @@
" Vim syntax file
" Language: Solidity
" Maintainer: Cothi (jiungdev@gmail.com)
" Original Author: tomlion (https://github.com/tomlion/vim-solidity/blob/master/syntax/solidity.vim)
" Last Changed: 2022 Sep 27
" Language: Solidity
" Maintainer: Cothi (jiungdev@gmail.com)
" Original Author: tomlion (https://github.com/tomlion/vim-solidity/blob/master/syntax/solidity.vim)
" Last Change: 2022 Sep 27
"
" Additional contributors:
" Contributors:
" Modified by thesis (https://github.com/thesis/vim-solidity/blob/main/indent/solidity.vim)
if exists("b:current_syntax")

View File

@@ -56,7 +56,7 @@ syn match specListedFilesEtc contained '/etc/'me=e-1
syn match specListedFilesShare contained '/share/'me=e-1
syn cluster specListedFiles contains=specListedFilesBin,specListedFilesLib,specListedFilesDoc,specListedFilesEtc,specListedFilesShare,specListedFilesPrefix,specVariables,specSpecialChar
"specComands
"specCommands
syn match specConfigure contained '\./configure'
syn match specTarCommand contained '\<tar\s\+[cxvpzIf]\{,5}\s*'
syn keyword specCommandSpecial contained root
@@ -87,7 +87,7 @@ syn region specSectionMacroBracketArea oneline matchgroup=specSectionMacro start
"TODO %config valid parameters: missingok\|noreplace
"TODO %verify valid parameters: \(not\)\= \(md5\|atime\|...\)
syn region specFilesArea matchgroup=specSection start='^%[Ff][Ii][Ll][Ee][Ss]\>' skip='%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|license\|verify\|ghost\|exclude\)\>' end='^%[a-zA-Z]'me=e-2 contains=specFilesOpts,specFilesDirective,@specListedFiles,specComment,specCommandSpecial,specMacroIdentifier
"tip: remember to include new itens in specFilesArea above
"tip: remember to include new items in specFilesArea above
syn match specFilesDirective contained '%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|license\|verify\|ghost\|exclude\)\>'
"valid options for certain section headers

View File

@@ -162,7 +162,7 @@ hi def link sqlNumber Number
hi def link sqlBoolean Boolean
hi def link sqlString String
" === Statment syntax group ===
" === Statement syntax group ===
hi def link sqlStatement Statement
hi def link sqlConditional Conditional
hi def link sqlRepeat Repeat

View File

@@ -16,7 +16,7 @@ endif
" Read the Java syntax to start with
source <sfile>:p:h/java.vim
" SQLJ extentions
" SQLJ extensions
" The SQL reserved words, defined as keywords.
syn case ignore

View File

@@ -31,7 +31,7 @@ syn keyword squidConf cache_effective_user cache_host cache_host_acl
syn keyword squidConf cache_host_domain cache_log cache_mem
syn keyword squidConf cache_mem_high cache_mem_low cache_mgr
syn keyword squidConf cachemgr_passwd cache_peer cache_peer_access
syn keyword squidConf cahce_replacement_policy cache_stoplist
syn keyword squidConf cache_replacement_policy cache_stoplist
syn keyword squidConf cache_stoplist_pattern cache_store_log cache_swap
syn keyword squidConf cache_swap_high cache_swap_log cache_swap_low
syn keyword squidConf client_db client_lifetime client_netmask

View File

@@ -1,6 +1,6 @@
" Vim syntax file
" Language: TASM: turbo assembler by Borland
" Maintaner: FooLman of United Force <foolman@bigfoot.com>
" Maintainer: FooLman of United Force <foolman@bigfoot.com>
" Last Change: 2012 Feb 03 by Thilo Six, and 2018 Nov 27.
" quit when a syntax file was already loaded

View File

@@ -27,7 +27,7 @@ syn keyword tfVar bamf bg_output borg clearfull cleardone clock connect contai
syn keyword tfVar emulation end_color gag gethostbyname gpri hook hilite contained
syn keyword tfVar hiliteattr histsize hpri insert isize istrip kecho contained
syn keyword tfVar kprefix login lp lpquote maildelay matching max_iter contained
syn keyword tfVar max_recur mecho more mprefix oldslash promt_sec contained
syn keyword tfVar max_recur mecho more mprefix oldslash prompt_sec contained
syn keyword tfVar prompt_usec proxy_host proxy_port ptime qecho qprefix contained
syn keyword tfVar quite quitdone redef refreshtime scroll shpause snarf sockmload contained
syn keyword tfVar start_color tabsize telopt sub time_format visual contained

View File

@@ -83,11 +83,11 @@ syn keyword tsaltFunction vGetChrs vGetChrsA vPutChr vPutChrs
syn keyword tsaltFunction vPutChrsA vRstrArea vSaveArea
" Dynamic Data Exchange (DDE) Operations
syn keyword tsaltFunction DDEExecute DDEInitate DDEPoke DDERequest
syn keyword tsaltFunction DDEExecute DDEInitiate DDEPoke DDERequest
syn keyword tsaltFunction DDETerminate DDETerminateAll
"END FUNCTIONS
"PREDEFINED VARAIABLES
"PREDEFINED VARIABLES
syn keyword tsaltSysVar _add_lf _alarm_on _answerback_str _asc_rcrtrans
syn keyword tsaltSysVar _asc_remabort _asc_rlftrans _asc_scpacing
syn keyword tsaltSysVar _asc_scrtrans _asc_secho _asc_slpacing
@@ -106,7 +106,7 @@ syn keyword tsaltSysVar _scr_chk_key _script_dir _sound_on
syn keyword tsaltSysVar _strip_high _swap_bs _telix_dir _up_dir
syn keyword tsaltSysVar _usage_fname _zmodauto _zmod_rcrash
syn keyword tsaltSysVar _zmod_scrash
"END PREDEFINED VARAIABLES
"END PREDEFINED VARIABLES
"TYPE
syn keyword tsaltType str int

View File

@@ -1,9 +1,9 @@
" Vim syntax file
" Language: TypeScript
" Maintainer: Bram Moolenaar, Herrington Darkholme
" Last Change: 2019 Nov 30
" Maintainer: Herrington Darkholme
" Last Change: 2023 Aug 13
" Based On: Herrington Darkholme's yats.vim
" Changes: Go to https:github.com/HerringtonDarkholme/yats.vim for recent changes.
" Changes: Go to https://github.com/HerringtonDarkholme/yats.vim for recent changes.
" Origin: https://github.com/othree/yajs
" Credits: Kao Wei-Ko(othree), Jose Elera Campana, Zhao Yi, Claudio Fleiner, Scott Shattuck
" (This file is based on their hard work), gumnos (From the #vim

Some files were not shown because too many files have changed in this diff Show More