summaryrefslogtreecommitdiffstats
path: root/runtime
AgeCommit message (Collapse)Author
2023-08-29patch 9.0.1820: Rexx files may not be recognisedv9.0.1820Doug Kearns
Problem: Rexx files may not be recognised Solution: Add shebang detection and improve disambiguation of *.cls files closes: #12951 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-29runtime(heex): Add HEEX comments to match_words in ftplugin (#12957)Jason King
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-29patch 9.0.1818: dynamically linking perl is brokenv9.0.1818Christian Brabandt
Problem: dynamically linking perl is broken Solution: Fix all issues This is a combination of several commits: 1) Fix if_perl.xs not being able to build on all versions of Perl (5.30) This fixes the dynamic builds of Perl interface. The Perl interface file previously had to manually copy and paste misc inline functions verbatim from the Perl headers, because we defined `PERL_NO_INLINE_FUNCTIONS` which prevents us form getting some function definitions. The original reason we defined it was because those inline functions would reference Perl functions that would cause linkage errors. This is a little fragile as every time a new version of Perl comes out, we inevitably have to copy over new versions of inline functions to our file, and it's also easy to miss updates to existing functions. Instead, remove the `PERL_NO_INLINE_FUNCTIONS` define, remove the manual copy-pasted inline functions. Simply add stub implementations of the missing linked functions like `Perl_sv_free2` and forward them to the DLL version of the function at runtime. There are only a few functions that need this treatment, and it's a simple stub so there is very low upkeep compared to copying whole implementations to the file. Also, fix the configure script so that if we are using dynamic linkage, we don't pass `-lperl` to the build flags, to avoid accidental external linkage while using dynamic builds. This is similar to how Python integration works. 2) Fix GIMME_V deprecation warnings in Perl 5.38 Just use GIMME_V, and only use GIMME when using 5.30 to avoid needing to link Perl_block_gimme. We could provide a stub like the other linked functions like Perl_sv_free2, but simply using GIMME is the simplest and it has always worked before. 3) Fix Perl 5.38 issues Fix two issues: 3.1. Perl 5.38 links against more functions in their inline headers, so we need to stub them too. 3.2. Perl 5.38 made Perl_get_context an inline function, but *only* for non-Windows build. Fix that. Note that this was happening in Vim currently, as it would build, but fail to run Perl code at runtime. 4) Fix Perl 5.36/5.38 when thread local is used Perl 5.36 introduced using `_Thread_local` for the current context, which causes inline functions to fail. Create a stub `PL_current_context` thread local variable to satisfy the linker for inlined functions. Note that this is going to result in a different `PL_current_context` being used than the one used in the library, but so far from testing it seems to work. 5) Add docs for how to build Perl for dynamic linking to work closes: #12827 closes: #12914 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-08-29runtime(doc): mention special case of i_CTRL-R_-Christian Brabandt
closes: #12947 Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-29runtime(editorconfig): generate helptags, remove unused filesChristian Brabandt
Remove the test suite and a few other non-used files from the EditorConfig CI project related: #12902 closes: #12941 Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-28runtime(tags): update helptagsChristian Brabandt
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-28runtime: Set b:undo_indent where missing (#12944)dkearns
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-28runtime: Set b:undo_ftplugin where missing (#12943)dkearns
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-27patch 9.0.1807: runtime: crystal scripts not recognisedv9.0.1807Doug Kearns
Problem: runtime: crystal scripts not recognised Solution: Filetype detect Crystal scripts by shebang line closes: #12935 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-27runtime: Remove outdated scripts.vim comment (#12934)dkearns
Problem: Comment in scripts.vim is outdated Solution: Delete the comment runtime/autoload/dist/script.vim is now Vim9 script so =~ does not use 'ignorecase'. Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-27translation(it): updated Italian manpageAntonio Giovanni Colombo
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-27patch 9.0.1804: Vim9: no support for private object methodsv9.0.1804Yegappan Lakshmanan
Problem: Vim9: no support for private object methods Solution: Add support for private object/class methods closes: #12920 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-27patch 9.0.1803: runtime(filetype): Add norg language detectionv9.0.1803NTBBloodbath
runtime(filetype): Add norg markup language detection closes: #12913 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: NTBBloodbath <bloodbathalchemist@protonmail.com>
2023-08-27patch 9.0.1799: Russian menu translation can be improvedv9.0.1799RestorerZ
Problem: Russian menu translation can be improved Solution: update the Russian menu files closes: #12903 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: RestorerZ <restorer@mail2k.ru>
2023-08-27runtime: Distribute the editorconfig with vim (#12902)Christian Brabandt
This is the editorconfig-vim plugin Commit e014708e917b457e8f6c57f357d55dd3826880d4 from https://github.com/editorconfig/editorconfig-vim closes: #2286 related: https://github.com/editorconfig/editorconfig-vim/issues/223 Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-27patch 9.0.1797: Vimball/Visual Basic filetype detection conflictv9.0.1797Doug Kearns
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-26runtime(typescript): Fix highlighting symbols after number literal (#12911)Herrington Darkholme
fixes #12831 Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-24runtime(todo): Update todo.txt to remove recently addressed issues (#12910)Yegappan Lakshmanan
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-23runtime: configure keywordpg for some file types (#5566)Enno
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-23runtime: Remove Brams name from a few more runtime files (#12780)Christian Brabandt
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-23runtime: Fix typos in various filesViktor Szépe
closes: #12836 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Viktor Szépe <viktor@szepe.net>
2023-08-23patch 9.0.1786: Vim9: need instanceof() functionv9.0.1786LemonBoy
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-23runtime(termdebug): more termdebug fixes and improvements (#12892)Sean Dewar
- 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-23runtime(menu): define shortcut for File->Open Tab (#12895)Christian Brabandt
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-22runtime(bindzone): updated syntax fileOskar Stenman
- 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-22runtime(cmake) Recognize add_compile_definitions in syntax script (#10416)MichaWiedenmann
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-22runtime(crontab): add support for BSD specifics in syntax script (#11196)Moviuro
* 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-22runtime(termdebug): add frame related commands (#12511)Simon Sobisch
implementing `:Frame`, `:Up` and `:Down' partially fixing #10393 Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-22Translations(it): Update po and menus for itAntonio Giovanni Colombo
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-22patch 9.0.1782: prop_list() does not return text_padding_leftv9.0.1782Yegappan Lakshmanan
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-22patch 9.0.1780: Vim9 type not defined during object creationv9.0.1780Yegappan Lakshmanan
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-22runtime(termdebug): Fix various Termdebug issues (#12875)Sean Dewar
* 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-22runtime(go): Update Go syntax file with 1.21 builtins (#12876)José-Paul D
* Update Go syntax file with 1.21 builtins
2023-08-22runtime(solidity): add new ftplugin (#12877)dkearns
Set undo_{ftplugin,indent} closes #11240 Co-authored-by: cothi <jiungdev@gmail.com>
2023-08-22runtime(gp): update gp.vim syntax file for the GP language (version 2.15) ↵Karim Belabas
(#12884) - add missing defaults - add missing control structures (incl. parallelism) - add missing scope declarations - whitespace edits (remove extra tabs)
2023-08-21runtime(dosini): save and restore cpo value in syntax scriptChristian Brabandt
Commit dd0ad2598898c2b4641c4acd5b70b6184fa698ed 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-20runtime(sdc): Add underscore to sdc flags in syntax file (#6201)Jordi Altayó
2023-08-20Runtime(javascript): add new document properties to completion fileJay Sitter
closes: #6536 Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-08-20runtime(haskell): Add single quote to `iskeyword` in ftplugin (#8191)Enrico Maria De Angelis
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-20runtime(css): Update pseudo-classes in syntax script (#11595)Adrian Heine né Lang
2023-08-20runtime(lua): fix lua indentation of non-lowercase "keywords" (#11759)beardedsakimonkey
2023-08-20runtime(javascript): fix default link of javaScriptNumber in syntax file ↵Meqa
(#11788) cool unused matching
2023-08-20patch 9.0.1776: No support for stable Python 3 ABIv9.0.1776Yee Cheng Chin
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-20patch 9.0.1774: no support for custom cmdline completionv9.0.1774Shougo Matsushita
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-20patch 9.0.1773: cannot distinguish Forth and Fortran *.f filesv9.0.1773Doug Kearns
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-20runtime(lua): indent curly bracket followed by line comment (#12306)champignoom
fixes #12305
2023-08-20runtime(rust): fix rust indent (#12542)Raphael
2023-08-20runtime(man): remove backslashes in man pages using Vim script (#12557)lifecrisis
Closes: vim/vim#12301 Co-authored-by: Jason Franklin <jason@oneway.dev>
2023-08-20runtime(termdebug): refactor error printing (#12856)Shane-XB-Qian
// vs not act like exception from vim or termdebug Signed-off-by: shane.xb.qian <shane.qian@foxmail.com>
2023-08-20runtime(termdebug): re-indent lines (#12857)Shane-XB-Qian
Signed-off-by: shane.xb.qian <shane.qian@foxmail.com>