summaryrefslogtreecommitdiffstatshomepage
path: root/runtime/lua/vim
AgeCommit message (Collapse)AuthorFiles
2023-12-18feat(api): add forward and back mouse buttonsAmanda Graven1
2023-12-18refactor: soft-deprecate diagnostic signs configured with :sign-define (#26618)Gregory Anders1
Diagnostic signs should now be configured with vim.diagnostic.config(), but "legacy" sign definitions should go through the standard deprecation process to minimize the impact from breaking changes.
2023-12-17docs(diagnostic): add return value of `vim.diagnostic.config()` (#26615)Yi Ming1
2023-12-17perf(treesitter): filter out trees outside the visible range earlyJaehwang Jung1
Problem: Treesitter highlighter's on_line was iterating all the parsed trees, which can be quite a lot when injection is used. This may slow down scrolling and cursor movement in big files with many comment injections (e.g., lsp/_meta/protocol.lua). Solution: In on_win, collect trees inside the visible range, and use them in on_line. NOTE: This optimization depends on the correctness of on_win's botline_guess parameter (i.e., it's always greater than or equal to the line numbers passed to on_line). The documentation does not guarantee this, but I have never noticed a problem so far.
2023-12-17refactor(lsp): move changetracking to separate file (#26577)Lewis Russell3
* refactor(lsp): move changetracking to separate file - Prefixed changetracking types with `vim.lsp.` * fixup!: make _reset_timer a local function * fixup!: remove @private annotations * fixup!: changetracking.lua -> _changetracking.lua * fixup! types * fixup! add send_changes_for_group
2023-12-16refactor: only reload colorscheme if &bg changed (#26598)Gregory Anders1
Currently, setting &bg at all re-initializes highlights and reloads the active colorscheme, even if the actual value of &bg has not changed. With https://github.com/neovim/neovim/pull/26595 this causes a regression since &bg is set unconditionally based on the value detected from the terminal. Instead, only reload the colorscheme if the actual value of &bg has changed.
2023-12-16vim-patch:82f19734bfcbChristian Clason1
runtime(doc): remove deprecation warning for gdefault Deprecated can be misunderstood as being slated for removal; slightly change wording to be clearer. https://github.com/vim/vim/commit/82f19734bfcbddbaee8d5d837f7b7a7119366020 Co-authored-by: dundargoc <gocdundar@gmail.com>
2023-12-16feat(ui): completeopt support popup like vimmathew4
2023-12-15refactor(defaults): always set options, even if value hasn't changed (#26595)Gregory Anders1
Comparing against the old value before setting matched the original C implementation, but there is no reason to use this restriction. In particular, this inhibits using OptionSet to determine when the option was set. If users need to handle a case where the option _changed_, it is easy to do so in an OptionSet autocommand using v:option_new and v:option_old (and friends).
2023-12-15Merge pull request #26579 from gpanders/defer-set-tgcGregory Anders2
refactor(defaults): defer setting 'termguicolors' until after VimEnter
2023-12-15vim-patch:17dca3cb97cd (#26584)zeertzjq1
runtime(doc): grammar & typo fixes closes: vim/vim#13654 https://github.com/vim/vim/commit/17dca3cb97cdd7835e334b990565c8c0b93b1284 Co-authored-by: Dominique Pellé <dominique.pelle@tomtom.com>
2023-12-14refactor(defaults): defer setting 'termguicolors' until after VimEnterGregory Anders1
This ensures that any OptionSet autocommands will fire when the value is changed.
2023-12-14fix(termcap): set 'nested' on TermResponse autocommandGregory Anders1
2023-12-14refactor(diagnostic): use named namespaces (#26568)Gregory Anders1
Anonymous namespaces are more difficult to extend or hook into since they do not appear in the output of nvim_get_namespaces(). Use named namespaces instead.
2023-12-14docs: add comment for OSC 11 tmux passthrough (#26566)Gregory Anders1
2023-12-14feat(lsp): more annotationsLewis Russell15
2023-12-14feat(nvim_open_term): convert LF => CRLF (#26384)Raphael2
Problem: Unlike termopen(), nvim_open_term() PTYs do not carriage-return the cursor on newline ("\n") input. nvim --clean :let chan_id = nvim_open_term(1, {}) :call chansend(chan_id, ["here", "are", "some", "lines"]) Actual behavior: here are some lines Expected behaviour: here are some lines Solution: Add `force_crlf` option, and enable it by default.
2023-12-14fix(defaults): background detection in tmux (#26557)Jaehwang Jung1
Wrap the query with passthrough sequence
2023-12-13feat(diagnostics): support numhl and linehl for diagnostic signsGregory Anders1
2023-12-13docs(diagnostic): fix typo in exampleGregory Anders1
2023-12-13fix(diagnostic): check for sign namespace instead of sign groupGregory Anders1
2023-12-13refactor(diagnostic): set sign by using extmark (#26193)Raphael1
after sign implementation refactor by using extmark, we can use `nvim_buf_set_extmark` to set diagnostic sign instead use `sign_define`
2023-12-13fix(termcap): only call callback for requested capabilities (#26546)Gregory Anders1
If multiple XTGETTCAP requests are active at once (for example, for requesting the Ms capability and truecolor capabilities), then the TermResponse autocommand may fire for capabilities that were not requested. Instead, make sure that the provided callback is only called for capabilities that were actually requested.
2023-12-12feat(iter): add `Iter.take` (#26525)Will Hopkins1
2023-12-11Merge pull request #26506 from tomtomjhj/tsfoldLewis Russell1
fix(treesitter): improve vim.treesitter.foldexpr
2023-12-12fix(treesitter): improve vim.treesitter.foldexprJaehwang Jung1
* Collect on_bytes and flush at the invocation of the scheduled callback to take account of commands that triggers multiple on_bytes. * More accurately track movement of folds so that foldexpr returns reasonable values even when the scheduled computation is not run yet. * Start computing folds from the line above (+ foldminlines) the changed lines to handle the folds that are removed due to the size limit. * Shrink folds that end at the line at which another fold starts to assign proper level to that line. * Use level '=' for lines that are not computed yet.
2023-12-12fix(treesitter): fix indexing in foldexprJaehwang Jung1
2023-12-11feat(gen_lsp.lua): validate CLI args #26514Jongwook Choi1
- Improve CLI argument parsing, rejects invalid argument and commands as early as possible. Also prints USAGE in the command line. - No longer allows `--<outfile>`, use `--out <outfile>` instead. - Print a little bit of verbose messages to better know what's going on rather than remaining silent at all times. - Add type annotation `gen_lsp._opt` to avoid type warnings.
2023-12-08fix(snippet): remove misleading comment about TM_FILENAME_BASE (#26465)Maria José Solano1
2023-12-06Merge pull request #26407 from gpanders/default-tgcGregory Anders4
feat(defaults): enable 'termguicolors' by default when supported by terminal
2023-12-06feat(defaults): enable 'termguicolors' by default when supported by terminalGregory Anders4
Enable 'termguicolors' automatically when Nvim can detect that truecolor is supported by the host terminal. If $COLORTERM is set to "truecolor" or "24bit", or the terminal's terminfo entry contains capabilities for Tc, RGB, or setrgbf and setrgbb, then we assume that the terminal supports truecolor. Otherwise, the terminal is queried (using both XTGETTCAP and SGR + DECRQSS). If the terminal's response to these queries (if any) indicates that it supports truecolor, then 'termguicolors' is enabled.
2023-12-06fix(json): allow objects with empty keys #25564Emanuel1
Problem: Empty string is a valid JSON key, but json_decode() treats an object with empty key as ":help msgpack-special-dict". #20757 :echo json_decode('{"": "1"}') {'_TYPE': [], '_VAL': [['', '1']]} Note: vim returns `{'': '1'}`. Solution: Allow empty string as an object key. Note that we still (currently) disallow empty keys in object_to_vim() (since 7c01d5ff9286d262097484c680e3a4eab49e2911): https://github.com/neovim/neovim/blob/f64e4b43e1191ff30d902730f752875aa55682ce/src/nvim/api/private/converter.c#L333-L334 Fix #20757 Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
2023-12-05feat(lua): implement Iter:join() (#26416)Gregory Anders1
2023-12-05refactor(api): complete conversion from `Dictionary` to `Dict(opts)` (#26365)Riccardo Mazzarini2
2023-12-05vim-patch:9.0.2148: Vim does not detect pacman.log fileChristian Clason1
Problem: Vim does not detect pacman.log file Solution: Detect pacmanlogs and add syntax highlighting pacman.log is a filetype common to Arch Liux and related distributions. Add some simple syntax highlighting for the pacmanlog filetype. closes: vim/vim#13618 https://github.com/vim/vim/commit/1e5d66408ef85c750a5af03bbf5cc19b5de7a6bc Co-authored-by: Ronan Pigott <ronan@rjp.ie>
2023-12-04fix(treesitter): allow passing lang to vim.treesitter.get_node() now ↵Jongwook Choi1
correctly takes opts.lang (#26360) PROBLEM: `vim.treesitter.get_node()` does not recognize the `lang` in the option table. This option was used in somewhere else, for instance, `vim.treesitter.dev` (for `inspect_tree`) but was never implemented. SOLUTION: Make `get_node()` correctly use `opts.lang` when getting a treesitter parser.
2023-12-02vim-patch:9.0.2139: html.angular ft is problematic (#26357)zeertzjq1
Problem: html.angular ft is problematic Solution: partly revert v9.0.2137 The html.angular filetype causes issues and does not trigger FileType autocommands for the html or angular filetypes. So let's roll back that particular change and detect this only as html file related: https://github.com/vim/vim/pull/13594#issuecomment-1834465890 closes: vim/vim#13604 https://github.com/vim/vim/commit/4f3480c94358e3b938594fc3574477e780525cd7 Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-11-30fix: use BEL to terminate OSC 11 request (#26335)Gregory Anders1
2023-11-30vim-patch:9.0.2137: Can't detect angular & mustache filetypesObserverOfTime1
Problem: Can't detect angular & mustache filetypes Solution: Detect *.mustache as Mustache filetype; detect *.component.html as html.angular filetype closes: vim/vim#13594 https://github.com/vim/vim/commit/7bed263c343c62129c5d8f51796895a28db1b312
2023-11-30fix: Remove nested for_each_tree in TSTreeView (#26328)Pham Huy Hoang1
Problem: `LanguageTree:for_each_tree` calls itself for child nodes, so when we calls `for_each_tree` inside `for_each_tree`, this quickly leads to exponential tree calls. Solution: Use `pairs(child:trees())` directly in this case, as we don't need the extra callback for each children, this is already handled from the outer `for_each_tree` call
2023-11-30fix(treesitter): fix parens stacking in inspector display (#26304)Gregory Anders1
When first opened, the tree-sitter inspector traverses all of the nodes in the buffer to calculate an array of nodes. This traversal is done only once, and _all_ nodes (both named and anonymous) are included. Toggling anonymous nodes in the inspector only changes how the tree is drawn in the buffer, but does not affect the underlying data structure at all. When the buffer is traversed and the list of nodes is calculated, we don't know whether or not anonymous nodes will be displayed in the inspector or not. Thus, we cannot determine during traversal where to put closing parentheses. Instead, this must be done when drawing. When we draw, the tree structure has been flatted into a single array, so we lose parent-child relationships that would otherwise make determining the number of closing parentheses straightforward. However, we can instead rely on the fact that a delta between the depth of a node and the depth of the successive node _must_ mean that more closing parentheses are required: (foo (bar) (baz) ↑ │ └ (bar) and (baz) have different depths, so (bar) must have an extra closing parenthesis This does not depend on whether or not anonymous nodes are displayed and so works in both cases.
2023-11-29fix(treesitter): adjust indentation in inspector highlights (#26302)Gregory Anders1
2023-11-29fix(termcap): escape escapes in passthrough sequence (#26301)Gregory Anders1
When using the tmux passthrough sequence any escape characters in the inner sequence must be escaped by adding another escape character.
2023-11-29fix(defaults): wait until VimEnter to set background (#26284)Gregory Anders1
The OptionSet autocommand does not fire until Vim has finished starting, so setting 'background' before the VimEnter event would not fire the OptionSet event. The prior implementation also waited until VimEnter to set 'background', so this was a regression introduced when moving background detection into Lua.
2023-11-29docs: document TSNode:byte_length() (#26287)Gregory Anders2
Also update the type annotation of TSNode:id(), which returns a string, not an integer.
2023-11-29fix(treesitter): make InspectTree correctly handle nested injections (#26085)Pham Huy Hoang1
Problem: Only injections under the top level tree are found. Solution: Iterate through all trees to find injections. When two injections are contained within the same node in the parent tree, prefer the injection with the larger byte length.
2023-11-29fix(treesitter): use proper query syntax for inspector (#26274)Gregory Anders1
2023-11-29refactor: move some constants out of vim_defs.h (#26298)zeertzjq1
2023-11-29vim-patch:9.0.2135: No test for mode() when executing Ex commands (#26282)zeertzjq1
Problem: No test for mode() when executing Ex commands Solution: Add some test cases and simplify several other test cases. Also add a few more test cases for ModeChanged. closes: vim/vim#13588 https://github.com/vim/vim/commit/fcaeb3d42b228e73c669b2fce78f1d3fe112769f
2023-11-28fix(termcap): use tmux passthrough sequence when running in tmux (#26281)Gregory Anders1
tmux intercepts and ignores XTGETTCAP so wrap the query in the tmux passthrough sequence to make sure the query arrives at the "host" terminal. Users must still set the 'allow-passthrough' option in their tmux.conf.