| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch introduces a new global option `userregfunc`, allowing users
to define custom behavior for registers not handled by Neovim
internally. This enables programmable registers using any Unicode
character — including multibyte characters.
- A new register slot `USER_REGISTER` is introduced. Any register not
matching the standard set (`0-9a-zA-Z"+-*%#/:.=`, etc.) is routed
through this system.
- When such a register is accessed, the function defined in
`userregfunc` is called with three arguments:
1. `{action}` (string): either `"yank"` or `"put"`
2. `{register}` (string): UTF-8 character name of the register
3. `{content}`:
- If `action == "yank"`: a dictionary with these keys:
- `lines` (list of strings): the yanked text
- `type` (string): one of `"v"` (charwise), `"V"` (linewise), or `"b"` (blockwise)
- `width` (number, optional): present if `type == "b"`
- `additional_data` (dict, optional): user-extensible metadata
- If `action == "put"`: this is always `v:null`
- The function may return either:
- A **string** (used as a charwise register), or
- A **dictionary** matching the structure above
- Internally, `read_userregister()` and `write_userregister()` convert
between `yankreg_T` and typval dictionaries.
- Messages and internal logic fully support multibyte register names via
UTF-8.
- A new `USER_REGISTER` slot is used for logical separation in the
register table.
Included in this patch is an extensible Lua framework (`vim.userregs`)
for defining user register handlers in Lua. It provides per-register
handlers via `register_handler(registers, handler)`
The global function `_G.def_userreg_func` is registered as the default
implementation of `'userregfunc'`, enabling seamless integration with
the Lua framework.
- Register `λ` dynamically inserts the current date
- Register `&` reads and writes from a "global register" file under
`stdpath("run")`
- Register `?` returns the result of a shell command
- Registers that auto-adjust based on filetype, cursor context, or
Treesitter nodes
This change expands the register model into a programmable abstraction —
fully scriptable and extensible — without breaking compatibility.
|
|
|
|
|
|
| |
Problem: vim.lsp.buf.hover allows a bold border size which hasn't been
defined
Solution: Define the bold border size for vim.lsp.buf.hover
|
|
|
|
|
|
|
|
| |
Problem:
As checkhealth grows, it is increasingly hard to quickly glance through
the information.
Solution:
Show a summary of ok, warn, and error outputs per section.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Greatly improve detection and highlighting of command/shell regions,
input-device key labels, escape sequences (@joelim-work)
- Add ftplugin for formatoptions, toggling comment areas
(@andis-sprinkis)
- Add a few missing lf option keywords, rm. old non-working code, misc.
formatting (@andis-sprinkis)
closes: vim/vim#17078
https://github.com/vim/vim/commit/7517a8cadfd0e70d0422955cbad4767f6a40f29d
Co-authored-by: Andis Spriņķis <andis@sprinkis.com>
|
|
|
|
|
|
|
|
|
|
| |
Problem: Using wrong window in ll_resize_stack()
(after v9.1.1287)
Solution: Use "wp" instead of "curwin", even though they are always the
same value. Fix typos in documentation (zeertzjq).
closes: vim/vim#17080
https://github.com/vim/vim/commit/b71f1309a210bf8f61a24f4eda336de64c6f0a07
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: quickfix and location-list stack is limited to 10 items
Solution: add the 'chistory' and 'lhistory' options to configure a
larger quickfix/location list stack
(64-bitman)
closes: vim/vim#16920
https://github.com/vim/vim/commit/88d41ab270a8390a43da97a903b1a4d76b89d330
Co-authored-by: 64-bitman <60551350+64-bitman@users.noreply.github.com>
Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
| |
includes ":" (#33377)
Problem: Help files not detected when 'iskeyword' includes ":".
Solution: Do not use \< and \> in the pattern (zeertzjq).
fixes: vim/vim#17069
closes: vim/vim#17071
https://github.com/vim/vim/commit/e370141bf41919642061ee2e78340dca84678712
|
|
|
|
|
|
|
|
|
| |
(#33378)
related: vim/vim#17049
https://github.com/vim/vim/commit/2ffb4d0298426f6c57f3ec3caae4480024e4372d
Co-authored-by: Christian Brabandt <cb@256bit.org>
|
|
|
|
|
|
|
|
| |
Problem: In some cases, when treesitter is enabled, deleting a
line below virtualtext will not refresh all updated lines.
https://github.com/neovim/neovim/issues/33358
Solution: Revert a part of https://github.com/neovim/neovim/pull/31324
to ensure that the full range (with virtual lines) is refreshed.
|
|
|
|
|
|
|
| |
Problem:
55e4301036bb938474fc9768c41e28df867d9286 changed the program name but not the function name.
Solution:
Fix the healthcheck.
|
|
|
|
|
|
|
|
| |
closes: vim/vim#17049
https://github.com/vim/vim/commit/00b927b295c11e61942d34f7e1c384f1c6af9513
Co-authored-by: Konfekt <Konfekt@users.noreply.github.com>
|
|
|
|
|
|
|
|
|
| |
closes: vim/vim#17020
https://github.com/vim/vim/commit/9cd6d82fbb1693aff2878d851571aa0126b3cb38
Co-authored-by: Radu Dineiu <radu.dineiu@gmail.com>
Co-authored-by: Christian Brabandt <cb@256bit.org>
|
|
|
|
|
|
|
|
|
|
| |
plugin
closes: vim/vim#17052
https://github.com/vim/vim/commit/9adb310cf34be232c8d71a93cabdf76b7f71a9cb
Co-authored-by: 231tr0n <zeltronsrikar@gmail.com>
|
|
|
|
|
|
|
|
| |
Problem:
`client_is_stopped(…)` is an alias for `not get_client_by_id(…)`.
And it's not used anywhere in our codebase.
Solution:
Deprecate it.
|
|
|
|
|
|
|
| |
Problem:
nvim_buf_del_extmark error if buffer is destroyed before timer stops
Solution:
check nvim_buf_is_valid.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(#33323)
Problem: inline word diff treats multibyte chars as word char
(after 9.1.1243)
Solution: treat all non-alphanumeric characters as non-word characters
(Yee Cheng Chin)
Previously inline word diff simply used Vim's definition of keyword to
determine what is a word, which leads to multi-byte character classes
such as emojis and CJK (Chinese/Japanese/Korean) characters all
classifying as word characters, leading to entire sentences being
grouped as a single word which does not provide meaningful information
in a diff highlight.
Fix this by treating all non-alphanumeric characters (with class number
above 2) as non-word characters, as there is usually no benefit in using
word diff on them. These include CJK characters, emojis, and also
subscript/superscript numbers. Meanwhile, multi-byte characters like
Cyrillic and Greek letters will still continue to considered as words.
Note that this is slightly inconsistent with how words are defined
elsewhere, as Vim usually considers any character with class >=2 to be
a "word".
related: vim/vim#16881 (diff inline highlight)
closes: vim/vim#17050
https://github.com/vim/vim/commit/9aa120f7ada592ed03b37f4de8ee413c5385f123
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
|
|
|
|
|
|
|
| |
closes: vim/vim#17036
https://github.com/vim/vim/commit/b8d5c8509998f3a97ffe42f674352b07749cd119
Co-authored-by: Christian Brabandt <cb@256bit.org>
|
|
|
|
| |
It's not used anywhere.
|
|
|
|
| |
`stripped` and `markdown_lines` are iterated together so must have the same length.
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
First rtp directory is unpredictable and not in line with XDG
base spec.
Solution:
Use stdpath('data')/spell as directory if 'spellfile' is not set.
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: filetype: Power Query files are not recognized
Solution: detect '*.pq' as pq filetype, include pq syntax and filetype
plugin (Anarion Dunedain)
Microsoft Power Query provides a powerful data import experience that
encompasses many features. Power Query works with desktop Analysis
Services, Excel, and Power BI workbooks, in addition to many online
services, such as Fabric, Power BI service, Power Apps, Microsoft 365
Customer Insights, and more. A core capability of Power Query is to
filter and combine, that is, to mash-up data from one or more of a rich
collection of supported data sources. Any such data mashup is expressed
using the Power Query M formula language. The M language is a
functional, case sensitive language similar to F#.
Reference:
- Power Query M formula language overview:
https://learn.microsoft.com/en-us/powerquery-m/
closes: vim/vim#17045
https://github.com/vim/vim/commit/e74ec3f523a152f62a37cc3ab476f0e5a2e812c6
Co-authored-by: Anarion Dunedain <anarion80@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
opening paren at EOL
Allow the opening parenthesis of a command substitution to appear at
EOL.
This fixes the issue raised in
https://github.com/vim/vim/issues/17026#issuecomment-2774112284.
closes: vim/vim#17044
https://github.com/vim/vim/commit/6099db9a60d1c047bf9c8feee3e1689c4e653250
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
|
|
|
|
|
|
|
| |
Problem: `severity` field is recognized by
`vim.diagnostic.Opts.VirtualLines`, but it is not explicitly
documented.
Solution: document it.
|
|
|
|
|
|
|
|
|
| |
Problem: Currently vim.hl.range only allows one timed highlight.
Creating another one, removes the old one.
Solution: vim.hl.range now returns a timer and a function. The timer
keeps track of how much time is left in the highlight and the function
allows you to clear it, letting the user decide what to do with old
highlights.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: filetype: dax files are not recognized
Solution: detect "*.dax" as dax filetype, include dax filetype and
syntax plugin (Anarion Dunedain)
Data Analysis Expressions (DAX) is a formula expression language used in
Analysis Services, Power BI, and Power Pivot in Excel. DAX formulas
include functions, operators, and values to perform advanced
calculations and queries on data in related tables and columns in
tabular data models.
DAX language overview:
- https://learn.microsoft.com/en-us/dax/dax-overview
closes: vim/vim#17035
https://github.com/vim/vim/commit/7f518e044fbc60cffdf2c0f611cc8c4dc35c338c
Co-authored-by: Anarion Dunedain <anarion80@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commits adds the extension *.whl to the list of zip extensions.
Wheel (WHL) files are binary distribution files for python packages.
Reference:
https://packaging.python.org/en/latest/specifications/binary-distribution-format/
fixes: vim/vim#17038
https://github.com/vim/vim/commit/a359c9c25e5c3c1e543fc720223aa7256e6f72cf
Co-authored-by: Christian Brabandt <cb@256bit.org>
|
|
|
|
|
|
|
|
|
|
| |
file extensions
closes: vim/vim#17037
https://github.com/vim/vim/commit/8293574c8b116382ed6e0c3c709a04406f07cfd5
Co-authored-by: Christian Brabandt <cb@256bit.org>
|
|\
| |
| | |
perf(lsp): improve rpc loop performance (with shim)
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Avoids some table allocations.
In a quick test over 50000 iterations it reduces the time from 130ms to
74 ms
For the test setup details see:
https://github.com/mfussenegger/nvim-dap/pull/1394#issue-2725352391
|
| |
| |
| |
| |
| |
| | |
- No redundant `:gsub` to turn `-` in `Content-Length` into `_`
- No table allocations only to add and later get the content-length
header
|
| |
| |
| |
| | |
Match maparg's return type.
|
| |
| |
| |
| |
| |
| |
| | |
These occurrences also accept string, which is used like in getline.
Also make the lnum field of vim.fn.sign_placelist.list.item optional, as it can
be omitted like vim.fn.sign_place.dict's.
|
|/
|
|
|
|
|
| |
closes: vim/vim#16967
https://github.com/vim/vim/commit/4ac995bf9366c6624a0724d19b2226f4c95694b3
Co-authored-by: Konfekt <Konfekt@users.noreply.github.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
If a config name contains "*" it causes rtp discovery of `lsp/` to
consider the `*` as a wildcard and could lead to strange and unintended
behaviour. For example, accessing the `'*'` config from a `lsp/` file
would cause an infinite loop.
Solution:
- Explicitly disallow a config name from containing wildcards, with the
exception of `'*'`.
- When Resolving `'*'` config, skip the rtp step.
|
|
|
|
|
|
|
|
|
|
|
| |
duke (#33207)
https://lists.debian.org/debian-devel-announce/2025/01/msg00004.html
closes: vim/vim#17010
https://github.com/vim/vim/commit/649a237bc886a2b702e95d5d45f661d8db6025f8
Co-authored-by: James McCoy <jamessan@jamessan.com>
|
| |
|
|
|
| |
This enables y]] to copy a command and its output.
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
Upon receiving a deadly signal, Nvim doesn't write buffers even if
the option 'autowriteall' is set.
Solution:
Write to all writable buffers upon SIGHUP or SIGQUIT (but not
SIGTERM), if the option 'autowriteall' is set.
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
|
|
|
|
|
| |
Problem: repeated gO in markdown etc. adds extra toc indentation
Solution: don't memoize heading table which gets modified
|
|
|
| |
fix #33075
|
|
|
|
|
|
|
| |
Problem:
:terminal shell prompt jump mappings ]]/[[ don't work in visual mode.
Solution:
Also define them for in visual mode.
|
|
|
|
|
|
|
|
|
|
| |
Problem:
Some language servers do not work properly without a workspace folder.
Solution:
Add `workspace_required`, which skips starting the lsp client if no
workspace folder is found.
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
|
| |
|
|
|
|
|
|
|
|
| |
Problem:
Nvim needlessly requests inlay_hints even if they are disabled for a given buffer.
Solution:
Add the missing `enabled` check in `on_refresh`.
Rest of the code has this check already so that's the only needed one to fix this.
|
|
|
|
|
|
| |
Problem:
- `health#check()` seems to have been removed for a while, but `:h faq`
still refers to it.
- `news-0.11.txt` doesn't mention #33044
|
|
|
| |
Fixes #33174, a regression from #22962.
|
|
|
|
|
|
|
| |
Problem:
Health status can be much more visually distinct.
Solution:
Use emoji next to each status.
|