Commit Graph

6234 Commits

Author SHA1 Message Date
Christian Clason
555f492ec6 vim-patch:347459423903
runtime(rmd) Update ftplugin and syntax files (vim/vim#13193)

ftplugin/rmd.vim:

  - Set 'commentstring' dynamically according to code region.

syntax/rmd.vim:

  - Include syntax highlighting of fenced languages dynamically.
  - Add conceal char for line break.

3474594239

Co-authored-by: Jakson Alves de Aquino <jalvesaq@gmail.com>
2023-09-27 22:20:03 +02:00
Rory Nesbitt
a66b0fdfaa
feat: NVIM_APPNAME supports relative paths #25233
Problem:
NVIM_APPNAME does not allow path separators in the name, so relative
paths can't be used:

    NVIM_APPNAME="neovim-configs/first-config" nvim
    NVIM_APPNAME="neovim-configs/second-config" nvim

Solution:
Let NVIM_APPNAME be a relative path. Absolute paths are not supported.

fix #23056
fix #24966
2023-09-27 10:09:55 -07:00
Justin M. Keyes
de93489789 refactor(tutor): cleanup 2023-09-26 06:41:53 -07:00
Leonardo Mello
bc6fc0123d
fix(tutor): Tutor steps don't work on Windows #25251
Problem:
Some steps in :Tutor don't work on Windows.

Solution:
Add support for `{unix:...,win:...}` format and transform the Tutor contents
depending on the platform.
Fix https://github.com/neovim/neovim/issues/24166
2023-09-26 06:31:35 -07:00
bfredl
fe95037cdb
Merge pull request #25229 from glepnir/20323
fix(highlight): add force in nvim_set_hl
2023-09-26 14:20:10 +02:00
glepnir
f8ea49cfe1 fix(highlight): add force in nvim_set_hl 2023-09-26 19:41:23 +08:00
Maria José Solano
4db77017fb fix(meta): add nil return types to lpeg functions 2023-09-26 09:43:44 +02:00
Maria José Solano
5198a2555d fix(meta): cleanup lpeg operators 2023-09-26 09:43:44 +02:00
Christian Clason
ddc147da2f vim-patch:54e1f56cf2a5
runtime(sh): only invoke bash help in ftplugin if it has been detected to be bash (vim/vim#13171)

54e1f56cf2

Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
2023-09-26 09:37:47 +02:00
ricardaxel
3387dc4a46
fix(runtime): add commentstring for D ftplugin (#25362)
Problem: No commentstring is set for D buffers after removing the
default C-style commentstring

Same solution than neovim#23039

Co-authored-by: Axel Ricard <axel.ricard@allegrodvt.com>
2023-09-26 06:13:58 +08:00
bfredl
c3d1d9445c refactor(options)!: graduate some more shortmess flags
A lot of updated places in the docs were already incorrect since long
since they did not reflect the default behaviour.

"[dos format]" could've been argued being better for discoverability
but that ship has already sailed as it is no longer displayed by default.
2023-09-25 18:23:15 +02:00
bfredl
ccd1a84a96
Merge pull request #25344 from gpanders/doc-shortmess
docs: remove "f" from default 'shortmess' value
2023-09-25 11:34:05 +02:00
Maria José Solano
db51548036
docs: do not use deprecated functions #25334 2023-09-24 21:39:59 -07:00
Gregory Anders
fdcb74fc4b docs: remove more references to shm-f 2023-09-24 19:40:00 -05:00
zeertzjq
2049e22f7f vim-patch:960822a11f70
runtime(doc): grammar fixes in doc (vim/vim#13164)

960822a11f

Co-authored-by: Dominique Pellé <dominique.pelle@gmail.com>
2023-09-25 06:39:35 +08:00
zeertzjq
57b84f6d64 vim-patch:790f9a890cee
runtime(doc): Add a missing '<' to the help of strutf16len() (vim/vim#13168)

790f9a890c

Co-authored-by: a5ob7r <12132068+a5ob7r@users.noreply.github.com>
2023-09-25 06:38:38 +08:00
Maria José Solano
f9944a78bc feat(meta): add types for vim.lpeg 2023-09-24 22:10:10 +02:00
Bogdan Grigoruță
d1bc6fca71
feat(health): list attached buffers in LSP report #23561
Problem:
Users using `vim.lsp.start` directly (instead of nvim-lspconfig) need
more visibility for troubleshooting. For example, troubleshooting
unnecesary servers or servers that aren't attaching to expected buffers.

Solution:
Mention attached buffers in the `:checkhealth lsp` report.

Example:

    vim.lsp: Active Clients ~
    - clangd (id=1, root_dir=~/dev/neovim, attached_to=[7])
    - lua_ls (id=2, root_dir=~/dev/neovim, attached_to=[10])
2023-09-24 11:43:16 -07:00
Tom Blake
3bbb0aa399
fix: checkhealth warning even if init.lua exists #25306
Problem:
`:checkhealth nvim` warns about missing vimrc if `init.lua` exists but
`init.vim` does not.

Solution:
Check for any of: init.vim, init.lua, $MYVIMRC.
Fix #25291
2023-09-24 10:43:55 -07:00
Gregory Anders
6fb1e0d499 docs: remove "f" from default 'shortmess' value
The "f" flag was removed in f7da472257.
The value of the "f" flag is no longer listed in the 'shortmess'
description and it cannot be disabled, so having it in the default value
is pointless and confusing.
2023-09-24 09:09:18 -05:00
zeertzjq
61ecb3e16c
fix(provider/pythonx): import the correct module (#25342) 2023-09-24 22:04:29 +08:00
zeertzjq
ac1c23442f
test(old): don't set options to default before every test (#25335)
Oldtests clean up after themselves, and the options that need operators
to align with Vim all deny duplicates, so there is no need to set them
to default.

Also make the variable name that test_listchars.vim uses to align with
Vim more obvious.
2023-09-24 11:20:23 +08:00
tj-moody
046c9a83f7
fix(ui): always use stl/stlnc fillchars when drawing statusline (#25267) 2023-09-24 10:49:47 +08:00
Maria José Solano
bc0bf9d030 docs: fix type warnings 2023-09-23 23:46:45 +01:00
bfredl
f7da472257 refactor(options)!: graduate shortmess+=f flag
Not everything needs to be crazy overconfigurable.

Also fixes a warning in latest clang which didn't approve of
the funky math switch statement in  append_arg_number
2023-09-23 18:13:05 +02:00
Jongwook Choi
7bd6bd1ef7
fix(provider): cannot detect python3.12 #25316
PROBLEM: The builtin python3 provider cannot auto-detect python3.12
when g:python3_host_prog is not set. As a result, when python3 on $PATH
is currently python 3.12, neovim will fail to load python3 provider
and result in `has("python3") == 0`, e.g.,
"Failed to load python3 host. You can try to see what happened by ..."

ROOT CAUSE: the `system()` call from `provider#pythonx#DetectByModule`
does not ignore python warnings, and `pkgutil.get_loader` will print
a warning message in the very first line:
```
<string>:1: DeprecationWarning: 'pkgutil.get_loader' is deprecated and
slated for removal in Python 3.14; use importlib.util.find_spec() instead
```

SOLUTION:
- Use `importlib.util.find_spec` instead (python >= 3.4)
- Use `-W ignore` option to prevent any potential warning messages
2023-09-23 02:49:34 -07:00
zeertzjq
c68c121f50
Merge pull request #25286 from rktjmp/doc-vim-schedule-wrap
docs: add more context to vim.schedule_wrap
2023-09-23 07:08:03 +08:00
Maria José Solano
dae6770b76 fix(meta): include vim.json 2023-09-22 23:02:45 +01:00
Oliver Marriott
44f698bb1a docs: update vim.schedule param name and type
Per https://github.com/neovim/neovim/pull/25286#discussion_r1332861721
and https://github.com/neovim/neovim/pull/25286#discussion_r1334318352
2023-09-23 01:54:24 +10:00
L Lllvvuu
e353c869ce fix(languagetree): don't treat unparsed nodes as occupying full range
This is incorrect in the following scenario:
1. The language tree is Lua > Vim > Lua.
2. An edit simultaneously wipes out the `_regions` of all nodes, while
   taking the Vim injection off-screen.
3. The Vim injection is not re-parsed, so the child Lua `_regions` is
   still `nil`.
4. The child Lua is assumed, incorrectly, to occupy the whole document.
5. This causes the injections to be parsed again, resulting in Lua > Vim
   > Lua > Vim.
6. Now, by the same process, Vim ends up with its range assumed over the
   whole document. Now the parse is broken and results in broken
   highlighting and poor performance.

It should be fine to instead treat an unparsed node as occupying
nothing (i.e. effectively non-existent). Since, either:
- The parent was just parsed, hence defining `_regions`
- The parent was not just parsed, in which case this node doesn't need
  to be parsed either.

Also, the name `has_regions` is confusing; it seems to simply
mean the opposite of "root" or "full_document". However, this PR does
not touch it.
2023-09-22 12:51:51 +01:00
Oliver Marriott
f413597f44 docs: clarify vim.schedule_wrap behaviour
- Remove the usage of the term "defer" to avoid confusion with
  `vim.defer_fn`, which also calls `vim.schedule_wrap` internally.
- Explicitly state that `vim.schedule_wrap` returns a function in the
  text.
- Mention that arguments are passed along.
- Include a usage example.
- Rename param to `fn`.
2023-09-22 18:38:28 +10:00
zeertzjq
fcfc87cb77
docs: small improvements to compl-autocomplete example (#25299)
- Don't complete when there is pending input.
- Use vim.list_contains() instead of vim.tbl_contains().
2023-09-22 06:51:47 +08:00
Sergey Slipchenko
345bd91db2
fix(lsp): handle absence of a trailing newline #25194
Fixes #24339

rust-analyzer sends "Invalid offset" error in such cases. Some other
servers handle it specially.

LSP spec mentions that "A range is comparable to a selection in an
editor". Most editors don't handle trailing newlines the same way
Neovim/Vim does, it's clearly visible if it's present or not. With that
in mind it's understandable why sending end position as simply the start
of the line after the last one is considered invalid in such cases.
2023-09-21 03:06:40 -07:00
Jaehwang Jung
8bd6f7c20b
fix(lsp): clear codelens on LspDetach (#24903)
Also fix incorrect parameters in on_detach callback.
2023-09-21 09:56:15 +02:00
zeertzjq
48410e8486
vim-patch:a7aba6ca5033 (#25285)
runtime(doc): format jumplist examples more consistently (vim/vim#13137)

a7aba6ca50
2023-09-21 15:06:06 +08:00
zeertzjq
f094db0e5c
vim-patch:9.0.1921: not possible to use the jumplist like a stack (#25278)
Problem:  not possible to use the jumplist like a stack
Solution: Add the 'jumpoptions' setting to make the jumplist
          a stack.

Add an option for using jumplist like tag stack

related: vim/vim#7738
closes: vim/vim#13134

ported from NeoVim:

- https://neovim.io/doc/user/motion.html#jumplist-stack
- neovim/neovim@39094b3
- https://vi.stackexchange.com/questions/18344/how-to-change-jumplist-behavior

Based on the feedback in the previous PR, it looks like many people like
this option.

87018255e3

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Co-authored-by: butwerenotthereyet <58348703+butwerenotthereyet@users.noreply.github.com>
2023-09-21 07:37:03 +08:00
Christian Clason
473d0aa3e6 vim-patch:9.0.1918
patch 9.0.1918: No filetype detection for Authzed filetypes

Problem:  No filetype detection for Authzed filetypes
Solution: Detect the *.zed file extension as authzed filetype

closes: vim/vim#13129

5790a54166

Co-authored-by: Matt Polzin <mpolzin@workwithopal.com>
2023-09-21 00:32:35 +02:00
Lewis Russell
877d04d0fb feat(lua): add vim.func._memoize
Memoizes a function, using a custom function to hash the arguments.

Private for now until:

- There are other places in the codebase that could benefit from this
  (e.g. LSP), but might require other changes to accommodate.
- Invalidation of the cache needs to be controllable. Using weak tables
  is an acceptable invalidation policy, but it shouldn't be the only
  one.
- I don't think the story around `hash_fn` is completely thought out. We
  may be able to have a good default hash_fn by hashing each argument,
  so basically a better 'concat'.
2023-09-20 13:42:41 +01:00
Justin M. Keyes
1b55f51d0d
docs: misc #24561
fix #24699
fix #25253
2023-09-20 04:15:23 -07:00
Eduardo Rittner Coelho
b6ef938c66
docs: document $XDG environment variables #25227 2023-09-20 02:04:30 -07:00
zeertzjq
c4f4c7a356
vim-patch:9.0.1915: r_CTRL-C works differently in visual mode (#25248)
Problem:  r_CTRL-C works differently in visual mode
Solution: Make r_CTRL-C behave consistent in visual mode
          in terminal and Windows GUI

in visual mode, r CTRL-C behaves strange in Unix like environments. It
seems to end visual mode, but still is waiting for few more chars,
however it never seems to replace it by any characters and eventually
just returns back into normal mode.

In contrast in Windows GUI mode, r_CTRL-C replaces in the selected area
all characters by a literal CTRL-C.

Not sure why it behaves like this. It seems in the Windows GUI, got_int
is not set and therefore behaves as if any other normal character has
been pressed.

So remove the special casing of what happens when got_int is set and
make it always behave like in Windows GUI mode. Add a test to verify it
always behaves like replacing in the selected area each selected
character by a literal CTRL-C.

closes: vim/vim#13091
closes: vim/vim#13112

476733f3d0

Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-09-20 06:37:29 +08:00
Maria José Solano
5a363ccac8 fix(lsp)!: deprecate trim_empty_lines 2023-09-19 14:47:37 +01:00
Maria José Solano
cfd4a9dfaf feat(lsp): use treesitter for stylize markdown 2023-09-19 14:47:37 +01:00
bfredl
1db45a9c1f
Merge pull request #25214 from bfredl/glyphcache
refactor(grid): change schar_T representation to be more compact
2023-09-19 12:32:41 +02:00
bfredl
2de5cddeb1
Merge pull request #25148 from glepnir/fixed_opt
fix(float): add fixed option
2023-09-19 11:49:59 +02:00
bfredl
8da986ea87 refactor(grid): change schar_T representation to be more compact
Previously, a screen cell would occupy 28+4=32 bytes per cell
as we always made space for up to MAX_MCO+1 codepoints in a cell.

As an example, even a pretty modest 50*80 screen would consume

50*80*2*32 = 256000, i e a quarter megabyte

With the factor of two due to the TUI side buffer, and even more when
using msg_grid and/or ext_multigrid.

This instead stores a 4-byte union of either:
- a valid UTF-8 sequence up to 4 bytes
- an escape char which is invalid UTF-8 (0xFF) plus a 24-bit index to a
  glyph cache

This avoids allocating space for huge composed glyphs _upfront_, while
still keeping rendering such glyphs reasonably fast (1 hash table lookup
+ one plain index lookup). If the same large glyphs are using repeatedly
on the screen, this is still a net reduction of memory/cache
consumption. The only case which really gets worse is if you blast
the screen full with crazy emojis and zalgo text and even this case
only leads to 4 extra bytes per char.

When only <= 4-byte glyphs are used, plus the 4-byte attribute code,
i e 8 bytes in total there is a factor of four reduction of memory use.
Memory which will be quite hot in cache as the screen buffer is scanned
over in win_line() buffer text drawing

A slight complication is that the representation depends on host byte
order. I've tested this manually by compling and running this
in qemu-s390x and it works fine. We might add a qemu based solution
to CI at some point.
2023-09-19 11:25:31 +02:00
zeertzjq
6405fa4b11
vim-patch:346ac1429c5a (#25239)
runtime(doc): add help tag describing object-selection

closes: vim/vim#13114

346ac1429c

Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-09-19 07:07:24 +08:00
glepnir
fd08fd3de3 fix(float): add fixd option 2023-09-18 18:21:14 +08:00
Christian Clason
9de5cb0b32 vim-patch:d8b86c937a41
runtime(netrw): fix filetype detection for remote editing files

closes: vim/vim#12990
closes: vim/vim#12992

this partially reverses commit 71badf9 by commenting out the line that
intentionally sets the filetype to an empty string.

d8b86c937a

Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-09-17 22:52:56 +02:00
Christian Clason
1b74d2bf0a vim-patch:e30d8e4ce01d
runtime(kotlin): Add Kotlin runtime files (vim/vim#13110)

Closes udalov/kotlin-vimvim/vim#39

e30d8e4ce0

Co-authored-by: dkearns <dougkearns@gmail.com>
2023-09-17 22:52:56 +02:00
Christian Clason
ed45aa835c vim-patch:9.0.1907: No support for liquidsoap filetypes
Problem:  No support for liquidsoap filetypes
Solution: Add liquidsoap filetype detection code

closes: vim/vim#13111

6b5efcdd8e

Co-authored-by: Romain Beauxis <toots@rastageeks.org>
2023-09-17 22:26:10 +02:00
Jaehwang Jung
71d9b7d15c fix(treesitter): _trees may not be list-like
Problem:
With incremental injection parsing, injected languages' parsers parse
only the relevant regions and stores the result in _trees with the index
of the corresponding region. Therefore, there can be holes in _trees.

Solution:
* Use generic table functions where appropriate.
* Fix type annotations and docs.
2023-09-17 19:52:35 +01:00
zeertzjq
71530cc972
feat(folds): support virtual text format for 'foldtext' (#25209)
Co-authored-by: Lewis Russell <lewis6991@gmail.com>
2023-09-17 20:29:18 +08:00
dundargoc
677df72e40 docs: remove joke from pronounce
N-Jim does not sounds like "Ninja", and the joke doesn't really land.
2023-09-17 12:33:01 +02:00
zeertzjq
aac85b8d6b
docs(tutor): clarify the meaning of ✗ and ✓ (#25204)
Also reformat tutor.tutor.json to use 2-space indent while at it.
2023-09-17 08:48:13 +08:00
Phelipe Teles
4ab9c5fa46
fix(lua): not using global value in vim.opt_global (#25196) 2023-09-17 06:35:12 +08:00
Maria José Solano
28f54a7878
feat(treesitter): add lang parameter to the query editor (#25181) 2023-09-16 19:05:59 +02:00
Jaehwang Jung
7e5ce42977 fix(treesitter): properly combine injection.combined regions
Problem:
It doesn't make much sense to flatten each region (= list of ranges).
This coincidentally worked for region with a single range.

Solution:
Custom function for combining regions.
2023-09-16 17:02:26 +01:00
Lewis Russell
f40a109716 fix(treesitter): fix trim predicate 2023-09-16 14:24:55 +01:00
Lewis Russell
b3342171d5 fix(typing): vim.fn.execute 2023-09-16 14:24:24 +01:00
L Lllvvuu
07080f67fe perf(treesitter): do not scan past given line for predicate match
Problem
---
If a highlighter query returns a significant number of predicate
non-matches, the highlighter will scan well past the end of the window.

Solution
---
In the iterator returned from `iter_captures`, accept an optional
parameter `end_line`. If no parameter provided, the behavior is
unchanged, hence this is a non-invasive tweak.

Fixes: #25113 nvim-treesitter/nvim-treesitter#5057
2023-09-16 13:52:42 +01:00
L Lllvvuu
908843df61 fix(languagetree): apply resolve_lang to metadata['injection.language']
`resolve_lang` is applied to `@injection.language` when it's supplied as a
capture:

f5953edbac/runtime/lua/vim/treesitter/languagetree.lua (L766-L768)

If we want to support `metadata['injection.language']` (as per #22518 and
[tree-sitter upstream](https://tree-sitter.github.io/tree-sitter/syntax-highlighting#language-injection))
then the behavior should be consistent.

Fixes: nvim-treesitter/nvim-treesitter#4918
2023-09-16 11:12:06 +01:00
Christian Clason
be10d65bfa vim-patch:c1f8bb37c6a8
runtime(forth): Fix :unlet error in ftplugin (vim/vim#13090)

Fixes vim/vim#13089.

c1f8bb37c6

Co-authored-by: dkearns <dougkearns@gmail.com>
2023-09-16 00:01:16 +02:00
Maria José Solano
6debb18523
refactor(treesitter): remove duplicated diagnostic code (#24976)
* refactor(treesitter): remove duplicated diagnostic code

* fixup!: fix type errors

* fixup!: add type namespace
2023-09-15 20:45:40 +01:00
Maria José Solano
28233bcb49
refactor(treesitter): rename "preview" => "edit" #25161
"Edit" more closely describes the generic application than "Preview", though
the buffer contents don't (yet) map to an actual file on disk.

https://github.com/neovim/neovim/pull/24703#discussion_r1321719133
2023-09-15 03:10:55 -07:00
Gregory Anders
2e92065686
docs: replace <pre> with ``` (#25136) 2023-09-14 08:23:01 -05:00
LW
9fc321c976
refactor(treesitter): deprecate for_each_child #25118
The name for_each_child is misleading and caused bugs.
After #25111, #25115, there are no more usages of `for_each_child` in Nvim.

In the future if we want to restore this functionality we can consider a
generalized vim.traverse(node, key, visitor) function.
2023-09-14 03:36:16 -07:00
L Lllvvuu
a4743487b7 fix(treesitter): language.add - only register parser if it exists
Fixes: #24531
2023-09-14 10:36:09 +01:00
Mathias Fußenegger
a49924a318
feat(lsp): remove notify from vim.lsp.buf_detach_client (#25140)
Closes https://github.com/neovim/neovim/issues/19838
2023-09-14 08:40:53 +02:00
dundargoc
a6e74c1f0a
docs: fix typos and other small fixes (#25005)
Co-authored-by: nuid64 <lvkuzvesov@proton.me>
Co-authored-by: Mike Smith <10135646+mikesmithgh@users.noreply.github.com>
Co-authored-by: XTY <xty@xty.io>
Co-authored-by: Empa <emanuel@empa.xyz>
Co-authored-by: kyu08 <49891479+kyu08@users.noreply.github.com>
2023-09-14 12:05:27 +08:00
Christian Clason
199cf5a526 vim-patch:8b2457a38198
runtime(swayconfig): improve syntax highlighting (vim/vim#13060)

* syntax(swayconfig): improved highlighting
* syntax(swayconfig): adapt to i3config structure

8b2457a381

Co-authored-by: Josef Litoš <54900518+JosefLitos@users.noreply.github.com>
2023-09-13 17:23:45 +02:00
Christian Clason
2dd5e472df vim-patch:fc93594d562d
runtime(rust): sync rust runtime files with upstream (vim/vim#13075)

fc93594d56

Co-authored-by: Gregory Anders <8965202+gpanders@users.noreply.github.com>
2023-09-13 17:23:45 +02:00
Christian Clason
b1d24ca760 vim-patch:f5356bf6751f
runtime(i3config): syntax structure cleanup (vim/vim#13080)

* syntax(i3config): improved i3config highlighting
* syntax(i3config): refactor structure

f5356bf675

Co-authored-by: Josef Litoš <54900518+JosefLitos@users.noreply.github.com>
2023-09-13 17:23:45 +02:00
Gregory Anders
27a566f3f8
feat(vimdoc): support Markdown code blocks (#25127)
Support Markdown code blocks in addition to <pre> blocks in Doxygen doc
comments.

Update doc comments in iter.lua as a test.
2023-09-13 08:38:28 -05:00
Jaehwang Jung
4607807f9f fix(treesitter): don't update fold if tree is unchanged
Problem:
Folds are opened when the visible range changes even if there are no
modifications to the buffer, e.g, when using zM for the first time. If
the parsed tree was invalid, on_win re-parses and gets empty tree
changes, which triggers fold updates.

Solution:
Don't update folds in on_changedtree if there are no changes.
2023-09-13 08:51:54 +01:00
Lewis Russell
1f551e068f fix(treesitter): fixup for InspectTree
Fixes #25120
2023-09-12 15:55:40 +01:00
Lewis Russell
7a76fb8547 fix(treesitter): remove more double recursion
Do not call `for_each_child` in functions that are already recursive.
2023-09-12 12:21:42 +01:00
bfredl
b04286a187 feat(extmark): support proper multiline ranges
The removes the previous restriction that nvim_buf_set_extmark()
could not be used to highlight arbitrary multi-line regions

The problem can be summarized as follows: let's assume an extmark with a
hl_group is placed covering the region (5,0) to (50,0) Now, consider
what happens if nvim needs to redraw a window covering the lines 20-30.
It needs to be able to ask the marktree what extmarks cover this region,
even if they don't begin or end here.

Therefore the marktree needs to be augmented with the information covers
a point, not just what marks begin or end there. To do this, we augment
each node with a field "intersect" which is a set the ids of the
marks which overlap this node, but only if it is not part of the set of
any parent. This ensures the number of nodes that need to be explicitly
marked grows only logarithmically with the total number of explicitly
nodes (and thus the number of of overlapping marks).

Thus we can quickly iterate all marks which overlaps any query position
by looking up what leaf node contains that position. Then we only need
to consider all "start" marks within that leaf node, and the "intersect"
set of that node and all its parents.

Now, and the major source of complexity is that the tree restructuring
operations (to ensure that each node has T-1 <= size <= 2*T-1) also need
to update these sets. If a full inner node is split in two, one of the
new parents might start to completely overlap some ranges and its ids
will need to be moved from its children's sets to its own set.
Similarly, if two undersized nodes gets joined into one, it might no
longer completely overlap some ranges, and now the children which do
needs to have the have the ids in its set instead. And then there are
the pivots! Yes the pivot operations when a child gets moved from one
parent to another.
2023-09-12 10:38:23 +02:00
L Lllvvuu
6b5f44817e fix(languagetree): remove double recursion in LanguageTree:parse
`LanguageTree:parse` is recursive, and calls
`LanguageTree:for_each_child`, which is also recursive.

That means that, starting from the third level (child of child of root),
nodes will be parsed twice.

Which then means that if the tree is N layers deep, there will be ~2^N
parses even if the branching factor is 1.

Now, why was the tree deepening with each character inserted? And why
did this only regress in #24647? These are mysteries for another time.

Fixes: #25104
2023-09-12 09:12:53 +02:00
Christian Clason
a9369e4b65 vim-patch:62145db91b10
syntax(i3config): improved i3config highlighting (vim/vim#13054)

62145db91b

Co-authored-by: Josef Litoš <54900518+JosefLitos@users.noreply.github.com>
2023-09-12 08:19:22 +02:00
zeertzjq
aab06edc63
vim-patch:f787ee8451a1 (#25103)
runtime(doc): Add g:c_syntax_for_h to filetype-overrule docs

closes: vim/vim#13074

f787ee8451

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-09-12 07:48:40 +08:00
zeertzjq
4b6023be7c
vim-patch:596ad66d1ddb (#25102)
runtime(doc): documentation updates

This is a collection of various improvements to the help pages

closes vim/vim#12790

596ad66d1d

Co-authored-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Houl <anwoku@yahoo.de>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Co-authored-by: Adri Verhoef <a3@a3.xs4all.nl>
2023-09-12 07:37:05 +08:00
Jaehwang Jung
65738202f8
fix(decorations): better approximation of botline #24794
Problem:
* The guessed botline might be smaller than the actual botline e.g. when
  there are folds and the user is typing in insert mode. This may result
  in incorrect treesitter highlights for injections.
* botline can be larger than the last line number of the buffer, which
  results in errors when placing extmarks.

Solution:
* Take a more conservative approximation. I am not sure if it is
  sufficient to guarantee correctness, but it seems to be good enough
  for the case mentioned above.
* Clamp it to the last line number.

Co-authored-by: Lewis Russell <me@lewisr.dev>
2023-09-11 12:29:39 -07:00
bfredl
616a9bac32
Merge pull request #24901 from faergeek/more-intuitive-cursor-update
fix(api): more intuitive cursor updates in nvim_buf_set_text
2023-09-11 10:45:45 +02:00
Christian Clason
60e5d0fbcc vim-patch:9.0.1891: No runtime support for Mojo
Problem:  No runtime support for Mojo
Solution: Add basic filetype and syntax plugins

closes: vim/vim#13062
closes: vim/vim#13063

0ce2c594d0

Co-authored-by: Mahmoud Abduljawad <mahmoud@masaar.com>
2023-09-11 10:05:54 +02:00
Christian Clason
60a39ada1b vim-patch:e7833e73471a
runtime(masm): add support for AVX-2 and AVX-512 (vim/vim#13061)

e7833e7347

Co-authored-by: Wu Yongwei <wuyongwei@gmail.com>
2023-09-11 10:05:54 +02:00
Christian Clason
ba1db8751c vim-patch:066103307534
runtime(scala): Fix Scala highlighting string literal as type param (vim/vim#13070)

Since https://docs.scala-lang.org/sips/42.type.html which is implemented
in Scala 2.13 and in Scala 3 it possible to use string literals as
singleton types. So code like
```
someFunc["abc"]
```
is valid. Currently this code is not hightlighted correctly and worse if
there is an unclosed `(` in the string it breaks the formating in the
rest of the file.

I also submitted this patch to the mentioned project for this runtime
file: https://github.com/derekwyatt/vim-scala/pull/173 But there are no
commits there over the last 2 years and no response in the week since I
created it. Also the last change to the Scala syntax file:
https://github.com/vim/vim/pull/9594 is yet to be backported to that
repo. Therefore I am opening this PR as well to get some feedback on how
to proceed to get this fixed.

0661033075

Co-authored-by: Emil Ejbyfeldt <eejbyfeldt@liveintent.com>
2023-09-11 10:05:54 +02:00
Sergey Slipchenko
d22172f36b
fix(api): more intuitive cursor updates in nvim_buf_set_text
Fixes #22526
2023-09-11 08:16:03 +04:00
bfredl
59d9f2413b
Merge pull request #25071 from bfredl/coxpcall
build(lua): vendor coxpcall
2023-09-10 12:35:32 +02:00
Christian Clason
1027b2881a vim-patch:733bbcde776e
runtime(nasm): updated syntax file

733bbcde77

Co-authored-by: Andrii Sokolov <andriy145@gmail.com>
2023-09-10 11:52:48 +02:00
bfredl
25e51d393a build(lua): vendor coxpcall
Do not require luarocks on PUC lua CI just because of this single lua file
2023-09-10 11:43:37 +02:00
Grace Petryk
5e3cf9fb4b
feat(lsp): improve control over placement of floating windows (#24494) 2023-09-10 10:02:23 +02:00
bfredl
d4e80a051e
Merge pull request #25039 from glepnir/fix_hl
fix(highlight): add create param in nvim_get_hl api function
2023-09-09 13:01:40 +02:00
zeertzjq
b9d9cd7742 vim-patch:partial:9.0.1886: Various Typos
Problem:  Various Typos
Solution: Fix Typos

This is a collection of typo related commits.

closes: vim/vim#12753
closes: vim/vim#13016

ee17b6f70d

Co-authored-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Adri Verhoef <a3@a3.xs4all.nl>
Co-authored-by: Viktor Szépe <viktor@szepe.net>
Co-authored-by: nuid64 <lvkuzvesov@proton.me>
Co-authored-by: Meng Xiangzhuo <aumo@foxmail.com>
Co-authored-by: Dominique Pellé <dominique.pelle@gmail.com>
2023-09-09 17:58:32 +08:00
glepnir
8afb3a49c0 fix(highlight): add create param in nvim_get_hl 2023-09-09 17:15:58 +08:00
Christian Clason
294ded9cf2 vim-patch:86cfb39030eb
runtime(tohtml): Update TOhtml to version 9.0v2 (vim/vim#13050)

Modified behavior:
  - Change default value of g:html_use_input_for_pc from "fallback" to
    "none". This means with default settings, only the standards-based
    method to make special text unselectable is used. The old method
    relying on unspecified browser behavior for <input> tags is now only
    used if a user specifically enables it.
  - Officially deprecate g:use_xhtml option (in favor of
    g:html_use_xhtml) by issuing a warning message when used.

Bugfixes:
  - Fix issue vim/vim#8547: LineNr and other special highlight groups did not
    get proper style rules defined when using "hi link".
  - Fix that diff filler was not properly added for deleted lines at the
    end of a buffer.

Other:
  - Refactored function definitions from long lists of strings to use
    :let-heredoc variable assignment instead.
  - Corrected deprecated "." string concatenation operator to ".."
    operator in more places.

86cfb39030

Co-authored-by: fritzophrenic <fritzophrenic@gmail.com>
2023-09-09 08:29:50 +02:00
Christian Clason
0bee75818e vim-patch:4e554d282c50
runtime(perl): Update ftplugin and indent files (vim/vim#13052)

4e554d282c

Co-authored-by: dkearns <dougkearns@gmail.com>
2023-09-09 08:29:50 +02:00
zeertzjq
d0d4160dd1
feat(runtime): highlight hl groups in syntax.txt (#25050)
- Add runtime/lua/vim/vimhelp.lua, which is a translation of Vim's
  runtime/import/dist/vimhelp.vim.
- Unlike Vim, run the highlighting from an ftplugin file instead of a
  syntax file, so that it is run even if using treesitter.
2023-09-08 21:05:35 +08:00
Tom Praschan
131a1ee82d
feat(lsp): add original LSP Location as item's user_data in locations_to_items (#23743) 2023-09-07 10:12:02 +02:00
Christian Clason
ec753cf40d vim-patch:f7ac0ef50988
runtime: don't execute external commands when loading ftplugins

This is a followup to 816fbcc262687b81fc46f82f7bbeb1453addfe0c (patch
9.0.1833: [security] runtime file fixes)

It basically disables that external commands are run on loading of the
filetype plugin, **unless** the user has set the `g:plugin_exec = 1`
global variable in their configuration or for a specific filetype the
variable g:<filetype>_exec=1.

There are a few more plugins, that may execute system commands like
debchangelog, gitcommit, sh, racket, zsh, ps1 but those do at least
do not run those commands by default during loading of the filetype plugin
(there the command is mostly run as convenience for auto-completion or
to provide documentation lookup).

closes: vim/vim#13034

f7ac0ef509

Co-authored-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Tim Pope <vim@tpope.org>
2023-09-07 09:06:35 +02:00
Christian Clason
5d1c1da3c9 vim-patch:67c951df4c95
runtime(ftplugin): allow to exec if curdir is in PATH

In case the current directory is present as valid $PATH entry, it is OK
to call the program from it, even if vim curdir is in that same
directory.

(Without that patch, for instance, you will not be able to open .zip
files while your current directory is /bin)

closes: vim/vim#13027

67c951df4c

Co-authored-by: Anton Sharonov <anton.sharonov@gmail.com>
2023-09-07 09:06:35 +02:00
Evgeni Chasnovski
d272143318
fix(diagnostic): always return copies of diagnostic items (#25010) 2023-09-06 12:54:18 -05:00
Lewis Russell
be8b15200d fix: windows timeouts have exit code 1 2023-09-05 17:10:04 +01:00
Lewis Russell
80d1333b73 refactor(vim.system): factor out on_exit handling 2023-09-05 17:10:04 +01:00
Lewis Russell
6d5f12efd2 fix(vim.system): make timeout work properly
Mimic the behaviour of timeout(1) from coreutils.
2023-09-05 17:10:01 +01:00
Lewis Russell
a44521f46e fix(vim.system): let on_exit handle cleanup after kill
Fixes #25000
2023-09-05 10:18:26 +01:00
Christian Clason
6abc608445 vim-patch:282a94be990f
runtime: Fix problem of checking wrong cwd for ruby ftplugin (vim/vim#13026)

282a94be99

Co-authored-by: Anton Sharonov (ant0sha) <109120102+ant0sha@users.noreply.github.com>
Co-authored-by: Anton Sharonov <anton.sharonov@gmail.com>
2023-09-05 08:48:47 +02:00
Christian Clason
109ff0a73f vim-patch:3170342af304
runtime(php): Update the php indent script to the 1.75 (from 1.70) (vim/vim#13025)

Changes:

1.75:
- Fix 2072/PHP-Indenting-for-VImvim/vim#87: The indent optimization was causing wrong indentation of lines
  preceded by a line ending with '}' when preceded by non white characters.
- Fix long standing non-reported regex escaping issue in cleaning end of line
  comments function. This should help fixing some other unreported issues when
  parts of codes are commented out at ends of lines...

1.74:
- Fix 2072/PHP-Indenting-for-VImvim/vim#86: Add support for `match` expression.

1.73:
- Fix 2072/PHP-Indenting-for-VImvim/vim#77 where multi line strings and true/false keywords at beginning of a
  line would cause indentation failures.

1.72:
- Fix vim/vimvim/vim#5722 where it was reported that the option PHP_BracesAtCodeLevel
  had not been working for the last 6 years.

1.71:
- Fix 2072/PHP-Indenting-for-VImvim/vim#75 where the indent script would hang on some multi-line quoted strings.

3170342af3

Co-authored-by: John Wellesz <john.wellesz@gmail.com>
2023-09-05 08:48:47 +02:00
dundargoc
54d357dce0
build: bump lpeg to 1.1.0 (#25016)
Release notes indicates it has better UTF8 handling which is relevant
for us.
2023-09-04 22:42:47 +02:00
zeertzjq
c431d820e7
vim-patch:9.0.1856: issues with formatting positional arguments (#25013)
Problem:  issues with formatting positional arguments
Solution: fix them, add tests and documentation

closes: vim/vim#12140
closes: vim/vim#12985

Tentatively fix message_test. Check NULL ptr.

aa90d4f031

Co-authored-by: Christ van Willegen <cvwillegen@gmail.com>
2023-09-04 08:49:50 +08:00
Christian Clason
4ea4d72af8 docs(luv): correct uv.spawn options.args docs about the first argument
045bf29b6f
2023-09-02 16:58:19 +02:00
Christian Clason
f02bfb6a2a vim-patch:acb91d3905cf
runtime(zserio): add zserio syntax (vim/vim#13005)

acb91d3905

Co-authored-by: Dominique Pellé <dominique.pelle@gmail.com>
2023-09-02 11:08:29 +02:00
Christian Clason
61ccdb2db6 vim-patch:da16a1b471aa
runtime(ruby): Update syntax, indent and ftplugin files

While making changes to the ruby ftplugin, slightly change the exepath()
conditional from patch 9.0.1833 and move it after the :cd invocation.

closes: 12981
closes: 12994

da16a1b471

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Co-authored-by: Tim Pope <code@tpope.net>
2023-09-02 11:08:29 +02:00
TheBlob42
597355deae
fix(lsp): wrong iterator in registerCapability handler (#24971) 2023-09-01 13:31:05 +02:00
zeertzjq
7bf0963d48
vim-patch:9.0.1833: [security] runtime file fixes (#24969)
Problem:  runtime files may execute code in current dir
Solution: only execute, if not run from current directory

The perl, zig and ruby filetype plugins and the zip and gzip autoload
plugins may try to load malicious executable files from the current
working directory.  This is especially a problem on windows, where the
current directory is implicitly in your $PATH and windows may even run a
file with the extension `.bat` because of $PATHEXT.

So make sure that we are not trying to execute a file from the current
directory. If this would be the case, error out (for the zip and gzip)
plugins or silently do not run those commands (for the ftplugins).

This assumes, that only the current working directory is bad. For all
other directories, it is assumed that those directories were
intentionally set to the $PATH by the user.

816fbcc262

Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-09-01 11:38:31 +08:00
Amaan Qureshi
845d5b8b64 feat(treesitter): improve query error message 2023-08-31 13:33:40 +01:00
Christian Clason
4afd33e69f vim-patch:0b8b145bf8bf
runtime(optwin): Fix for 'splitkeep' option (vim/vim#12974)

'spk' was used as a boolean, rather than a string option.

0b8b145bf8

Co-authored-by: xrandomname <141588647+xrandomname@users.noreply.github.com>
2023-08-31 10:58:54 +02:00
Christian Clason
2fad4c0b39 vim-patch:1610528cc305
runtime(forth): Update syntax and ftplugin files (vim/vim#12976)

1610528cc3

Co-authored-by: dkearns <dougkearns@gmail.com>
2023-08-31 10:58:54 +02:00
Jongwook Choi
0e7e25af20
refactor(lsp): add type annotation for lsp.Client.server_capabilities (#24925)
The class `lsp.Client` has a public member `server_capabilities`,
which is assumed to be non-nil once initialized, as documented in
`:help vim.lsp.client`. Due to the possibility that it may be nil
before initialization, `lsp.Client` was not having a proper lua type
annotations on the field `server_capabilities`.

Instead of having a nil `server_capabilities` until initialized in
the RPC response callback, we can have an initial value of empty table.
This CHANGES the behavior of the `server_capabilities` field in a way
that it is no longer `nil` until initialization. Note that, as
already documented, `server_capabilities` should never be nil when
it is once initialized and thus ready to be used in user configs.
2023-08-31 10:14:20 +02:00
Chris AtLee
c235959fd9
fix(lsp): only disable inlay hints / diagnostics if no other clients are connected (#24535)
This fixes the issue where the LspNotify handlers for inlay_hint /
diagnostics would end up refreshing all attached clients.

The handler would call util._refresh, which called
vim.lsp.buf_request, which calls the method on all attached clients.

Now util._refresh takes an optional client_id parameter, which is used
to specify a specific client to update.

This commit also fixes util._refresh's handling of the `only_visible`
flag. Previously if `only_visible` was false, two requests would be made
to the server: one for the visible region, and one for the entire file.

Co-authored-by: Stanislav Asunkin <1353637+stasjok@users.noreply.github.com>
Co-authored-by: Mathias Fußenegger <mfussenegger@users.noreply.github.com>
2023-08-31 10:00:24 +02:00
David Moberg
67fba9affa
fix(runtime/tutor): don't try to close fold when there is none (#24953)
Problem: When double clicking a line starting with a #, the code assumes
there is a fold there and tries to close it, resulting in an error if
there isn't a fold.
Solution: Check foldlevel before performing "zc".
2023-08-31 09:18:39 +08:00
zeertzjq
5d49542b56
vim-patch:9.0.1820: Rexx files may not be recognised (#24956)
Problem:  Rexx files may not be recognised
Solution: Add shebang detection and improve disambiguation of *.cls
	  files

closes: vim/vim#12951

e06afb7860

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-31 08:20:00 +08:00
zeertzjq
7914881356
vim-patch:9.0.1797: Vimball/Visual Basic filetype detection conflict (#24947)
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 vim/vim#2694.

closes: vim/vim#12899

f97f6bbf56

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-31 07:44:33 +08:00
zeertzjq
6463116818
vim-patch:9.0.1807: runtime: crystal scripts not recognised (#24949)
Problem:  runtime: crystal scripts not recognised
Solution: Filetype detect Crystal scripts by shebang line

closes: vim/vim#12935

9b73902dbe

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-31 04:38:28 +08:00
zeertzjq
497cf996eb
vim-patch:9.0.1803: runtime(filetype): Add norg language detection (#24948)
runtime(filetype): Add norg markup language detection

closes: vim/vim#12913

03e44a1d70

Co-authored-by: NTBBloodbath <bloodbathalchemist@protonmail.com>
2023-08-31 04:38:01 +08:00
Christian Clason
b2c3e9c72e vim-patch:9d8ef7cc4340
runtime: cleanup :Sman command via the undo_ftplugin mechanism (vim/vim#12967)

Regards to @dkearns as noticed in
2ac708b548

9d8ef7cc43

Co-authored-by: Enno <Konfekt@users.noreply.github.com>
2023-08-30 18:46:52 +02:00
Hongbo Liu
670c7609c8
fix(filetype): make sure buffer is valid before call nvim_buf_call (#24922) 2023-08-30 10:14:58 -05:00
Christian Clason
3fcd6da5b0 vim-patch:2ac708b54866
runtime(sh): Update ftplugin (vim/vim#12950)

Remove :Help command via the undo_ftplugin mechanism.

2ac708b548

Co-authored-by: dkearns <dougkearns@gmail.com>
2023-08-30 09:55:24 +02:00
Christian Clason
c4c5178b8e vim-patch:a5eb6785efcc
runtime(doc): mention special case of i_CTRL-R_-

closes: vim/vim#12947

a5eb6785ef

Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-08-30 09:55:24 +02:00
Christian Clason
88bf4204ef vim-patch:3ac2d3da5fdf
runtime(heex): Add HEEX comments to match_words in ftplugin (vim/vim#12957)

3ac2d3da5f

Co-authored-by: Jason King <jk@handle.it>
2023-08-30 09:55:24 +02:00
Jongwook Choi
da7178cbbf fix(builtin): fix incorrect optional fields for fn.sign_define
The field `icon` is not a mandatory field.
2023-08-30 07:51:26 +01:00
Christian Clason
ae7ab90159 vim-patch:0382f05dbd65
runtime: Set b:undo_indent where missing (vim/vim#12944)

0382f05dbd

Co-authored-by: dkearns <dougkearns@gmail.com>
2023-08-29 11:32:46 +02:00
Christian Clason
0e3ea0a262 vim-patch:f937ab32a1ac
runtime: Set b:undo_ftplugin where missing (vim/vim#12943)

f937ab32a1

Co-authored-by: dkearns <dougkearns@gmail.com>
2023-08-29 11:32:46 +02:00
Jaehwang Jung
ffb340bf63 fix(treesitter): update folds only once on InsertLeave
Problem:
With treesitter fold, InsertLeave can be slow, because a single session
of insert mode may schedule multiple fold updates in on_bytes and
on_changedtree.

Solution:
Don't create duplicate autocmds.
2023-08-29 10:02:02 +02:00
Gregory Anders
cffdf102d4
feat(terminal): allow :terminal to take modifiers (#15427)
The following modifiers are all now supported:

    :tab term
    :vertical term
    :horizontal term
    :botright term
    :topleft term

Fixes: https://github.com/neovim/neovim/issues/11385
2023-08-28 07:22:19 -05:00
Christian Clason
3a876bd41b vim-patch:535b9e12d02f
runtime(typescript): Fix highlighting symbols after number literal (vim/vim#12911)

fixes vim/vim#12831

535b9e12d0

Co-authored-by: Herrington Darkholme <2883231+HerringtonDarkholme@users.noreply.github.com>
2023-08-28 11:03:37 +09:00
Lewis Russell
abb8c2c453 fix(editorconfig): do not set 'endofline'
Problem:
  'endofline' can be used to detect if a file ends of <EOL>, however
  editorconfig can break this.

Solution:
  Set 'endofline' during BufWritePre

Fixes: #24869
2023-08-27 19:27:25 +01:00
zhaozg
63802a1dbf docs: update luvref.txt for version info
fixup: #24874
2023-08-27 23:40:09 +09:00
Lewis Russell
d3d7d763f3 feat(builtin): improve types 2023-08-27 13:07:04 +01:00
Maria José Solano
b7d5b55f74
fix(types): add some return/parameter type annotations (#24867)
* fix(types): add some return/parameter type annotations

* fix(types): narrow stdpath parameter further
2023-08-27 09:41:32 +01:00
Maria José Solano
2bf3e82676 fix(treesitter): validate window before updating preview highlights 2023-08-27 09:40:26 +01:00
Sanchayan Maity
874b8172a6 build(deps): bump tree-sitter-python to v0.20.4 2023-08-27 10:03:24 +09:00
zhaozg
c4728a5c46 build(deps): bump luv to HEAD dcd1a1c 2023-08-27 10:02:43 +09:00
Evgeni Chasnovski
986bf7e78d
feat(highlight): add FloatFooter highlight group
Problem: No clear separation of floating title and footer highlighting.

Solution: Add new `FloatFooter` highlight group.
2023-08-26 19:37:43 +03:00
Evgeni Chasnovski
35570e4a11
feat(float): implement footer
Problem: Now way to show text at the bottom part of floating window
  border (a.k.a. "footer").

Solution: Allows `footer` and `footer_pos` config fields similar to
  `title` and `title_pos`.
2023-08-26 19:37:43 +03:00
Alisue
b641fc3874
docs(megpack_rpc): add news entry for msgpack-rpc client type 2023-08-26 19:15:36 +09:00
Alisue
b46e93c5fd
docs(msgpack_rpc): add "msgpack-rpc" client type 2023-08-26 19:14:07 +09:00
zeertzjq
b1cfb299df
docs: various clarifications (#24876) 2023-08-26 08:35:05 +08:00
Maria José Solano
5d8ab32f38
feat(treesitter): add a query editor (#24703) 2023-08-25 13:17:36 -05:00
Sean Dewar
0bd82b540e
refactor(termdebug): reindent some things
Mostly to make it more consistent and to match Vim more where applicable.
2023-08-25 11:24:52 +01:00
Sean Dewar
e3b385bed5
vim-patch:3d3a9152fa6d
runtime(termdebug): more termdebug fixes and improvements (vim/vim#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.

3d3a9152fa
2023-08-25 11:05:18 +01:00
Sean Dewar
92ef2b2bcd
vim-patch:2ae7ffe0bc3c
runtime(termdebug): add frame related commands (vim/vim#12511)

implementing `:Frame`, `:Up` and `:Down'

2ae7ffe0bc

Use maparg() for saving K as it's since been ported (and supports Lua callbacks
and the other API fields).

Use the 3 argument variant of mapset(), as the single argument one isn't ported
yet (v8.2.4861).

Co-authored-by: Simon Sobisch <simonsobisch@web.de>
2023-08-25 11:05:18 +01:00
Sean Dewar
8aad4b8425
fix(termdebug): send SIGINT when interrupting prompt mode
Unlike Vim's job_stop(), Nvim's jobstop() does not take a signal argument, and
always sends SIGTERM/KILL.

:Stop and Ctrl-C in prompt mode is supposed to interrupt the program like in
terminal mode, not kill GDB.

Also, maybe libuv's kill() works on Windows? If so, the logic above could be
removed, but I don't have a Windows machine available to test that.

Also "set nomodified" when ending prompt mode, like Vim (avoids E37).
2023-08-25 11:04:41 +01:00
Sean Dewar
21477bdb27
vim-patch:a76f3221cdcf
runtime(termdebug): Fix various Termdebug issues (vim/vim#12875)

* Fix some Termdebug issues after vim/vim#12403
* Fix :Asm in Termdebug prompt mode
* Fix Termdebug s:DecodeMessage escaping logic

a76f3221cd

Adjust disassembly message forwarding for Nvim, as its callback can receive
many lines at once.

Currently, just forward each disassembly line individually to s:CommOutput();
it's possible to do this in batch instead, but this is simpler.

I suggested moving to a GDB MI-based approach for the disassemble stuff
upstream, which should simplify the logic a lot if implemented (and possibly
allow for getting rid of the `&"disassemble ...` special-casing).

Also, correct "(gdb)" to include a trailing space; the stray GDB prompts were
being ignored by s:CommOutput() anyway, so this had caused no ill effects.
2023-08-25 11:01:09 +01:00
Sean Dewar
c413b42c45
fix(termdebug): prompt mode breaks with &splitbelow set
Unlike Vim, termopen() doesn't split, so you can't use the modifier like that.
Remove the fragile :wincmd shenanigans.
2023-08-25 10:59:57 +01:00
Sean Dewar
af78060b18
fix(termdebug): trim suffixed "\r" in CommOutput
Vim splits lines on "\r", then trims any prefixed "\n".

But in Nvim, job output lines are split on "\n" (like readfile() in binary
mode), so trim any suffixed "\r" instead.

This gets rid of the trailing "^M" character in messages parsed from the jobs.
2023-08-25 10:59:56 +01:00
Sean Dewar
ec97128826
vim-patch:19968fc4ec2c
runtime(termdebug): re-indent lines (vim/vim#12857)

19968fc4ec

Co-authored-by: Shane-XB-Qian <shane.qian@foxmail.com>
2023-08-25 10:59:56 +01:00
Sean Dewar
464472b4f7
vim-patch:f6fb52b667ee
runtime(termdebug): refactor error printing (vim/vim#12856)

// vs not act like exception from vim or termdebug

f6fb52b667

Co-authored-by: Shane-XB-Qian <shane.qian@foxmail.com>
2023-08-25 10:59:56 +01:00
Sean Dewar
949dd14d8b
vim-patch:9f2962141514
Runtime(termdebug): Add support to view local and argument variables

closes: 12403

9f29621415

Rename the existing "s:running" (#16790) to "s:gdb_running" to not clash with
the "s:running" introduced in this patch (which instead relates to whether the
debugged program is currently running in gdb).

Keep the file `:retab`bed as before.

Co-authored-by: laburnumT <flo.striker@gmail.com>
2023-08-25 10:59:55 +01:00
Gregory Anders
af38b46a25 fix(filetype): return on_detect function when matching by file contents 2023-08-24 13:04:04 -05:00
Gregory Anders
020d1f626a fix(filetype): call on_detect before setting buffer filetype
The on_detect functions returned by filetype.lua set buffer local
variables which are often used by filetype plugins. For example, the
on_detect function for shell buffers sets variables such as b:is_bash or
b:is_sh, which are used by the sh ftplugin.

When called after setting the buffer's filetype, these variables cannot
be used by the ftplugin (because they are not yet defined). Instead,
call on_detect before setting the buffer filetype so that any buffer
variables set by on_detect can be used in the ftplugin.
2023-08-24 12:48:21 -05:00
Sean Dewar
daf7abbc42
docs(builtin): small fixes (#24861)
Also make gen_eval_files.lua render vimdoc helpExamples properly if the line
begins with the `>` marker.
2023-08-24 13:29:40 +01:00
Sean Dewar
53170579ce
Merge pull request #24702 from seandewar/vim-1688938dd5ac
vim-patch:1688938dd5ac,96d6c4aabed1,e8d6f03f6a61
2023-08-24 09:27:17 +01:00
Christian Clason
e2c10dea19 vim-patch:2f25e40b1f54
runtime: configure keywordpg for some file types (vim/vim#5566)

2f25e40b1f

Co-authored-by: Enno <Konfekt@users.noreply.github.com>
2023-08-24 11:33:06 +09:00
Christian Clason
327e3fab9e vim-patch:3fc7a7e44abd
runtime: Fix typos in various files

closes: vim/vim#12836

3fc7a7e44a

Co-authored-by: Viktor Szépe <viktor@szepe.net>
2023-08-24 11:33:06 +09:00
Christian Clason
1c961a9d62 vim-patch:e059fae10044
runtime(menu): define shortcut for File->Open Tab (vim/vim#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.

e059fae100

Co-authored-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Antonio Giovanni Colombo <azc100@gmail.com>
2023-08-24 11:33:06 +09:00
Christian Clason
1c709f5a61 vim-patch:6e93689bde73
runtime(bindzone): updated syntax file

- Add support for APL type in runtime/syntax/bindzone.vim
- all values between 0- 4294967295 are valid serials

closes: vim/vim#9743
closes: vim/vim#8382

6e93689bde

vim-patch:544b209a2d4b

runtime(scala): Link Scala highlighting groups using 'hi def link' in syntax script (vim/vim#9594)

They were linked using 'hi link' which made it impossible for color
schemes to override highlight groups.

544b209a2d

Co-authored-by: Oskar Stenman <oskar@cetex.se>
Co-authored-by: Job Noorman <job@noorman.info>
2023-08-24 11:33:06 +09:00
Christian Clason
660f9e6857 vim-patch:118f8e9da39e
runtime(cmake) Recognize add_compile_definitions in syntax script (vim/vim#10416)

118f8e9da3

Co-authored-by: MichaWiedenmann <mw-r1@gmx.de>
2023-08-24 11:33:06 +09:00
Christian Clason
9ab5fda99e vim-patch:cdd934439d08
runtime(crontab): add support for BSD specifics in syntax script (vim/vim#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

cdd934439d

Co-authored-by: Moviuro <moviuro@users.noreply.github.com>
2023-08-24 11:33:06 +09:00
Christian Clason
4ca8b90b14 vim-patch:b0d584d97ab6
runtime(go): Update Go syntax file with 1.21 builtins (vim/vim#12876)

* Update Go syntax file with 1.21 builtins

b0d584d97a

Co-authored-by: José-Paul D <fixed.combinator@gmail.com>
2023-08-24 11:33:06 +09:00
Christian Clason
0b7e1730bc vim-patch:e34b51e95fd0
runtime(solidity): add new ftplugin (vim/vim#12877)

Set undo_{ftplugin,indent}

closes vim/vim#11240

e34b51e95f

Co-authored-by: dkearns <dougkearns@gmail.com>
Co-authored-by: cothi <jiungdev@gmail.com>
2023-08-24 11:33:06 +09:00
Christian Clason
810428c4d5 vim-patch:c6d533b0ad56
runtime(gp): update gp.vim syntax file for the GP language (version 2.15) (vim/vim#12884)

- add missing defaults
- add missing control structures (incl. parallelism)
- add missing scope declarations
- whitespace edits (remove extra tabs)

c6d533b0ad

Co-authored-by: Karim Belabas <Karim.belabas@math.u-bordeaux.fr>
2023-08-24 11:33:06 +09:00
Amaan Qureshi
c6ec7fa8d7 feat(treesitter): add 'injection.self' and 'injection.parent'
Co-authored-by: ObserverOfTime <chronobserver@disroot.org>
2023-08-24 09:05:44 +09:00
Sean Dewar
23cc36bd99
vim-patch:e8d6f03f6a61
runtime: Remove Brams name from a few more runtime files (vim/vim#12780)

syntax/model.vim: minor wording improvement

e8d6f03f6a

Use the updated "Last Change" date for all.

Co-authored-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Adri Verhoef <a3@a3.xs4all.nl>
2023-08-23 20:36:16 +01:00
Sean Dewar
947e6d9346
vim-patch:96d6c4aabed1
runtime: Remove Brams email in indent/README.txt

96d6c4aabe

Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-08-23 20:31:08 +01:00
Sean Dewar
a5565499c8
vim-patch:1688938dd5ac
runtime: Add a few more remarks about Bram and new runtime files

1688938dd5

Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-08-23 20:31:07 +01:00
Lewis Russell
dc45fb4655 fix(editorconfig): only warn once on errors 2023-08-23 14:45:02 +01:00
zeertzjq
08fa71fd27
vim-patch:9.0.1773: cannot distinguish Forth and Fortran *.f files (#24841)
Problem:  cannot distinguish Forth and Fortran *.f files
Solution: Add Filetype detection Code

Also add *.4th as a Forth filetype

closes: vim/vim#12251

19a3bc3add

Don't remove filetype files from Vim patches:
- filetype.vim, script.vim, ft.vim usually contain useful changes
- script.vim and ft.vim don't even have their paths spelled correctly

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2023-08-23 19:32:11 +08:00
Lewis Russell
21152f7905 fix(types): add more annotations to eval.lua 2023-08-23 12:16:04 +01:00
zeertzjq
0ba27bb51d vim-patch:9.0.1710: scrolloff options work slightly different
Problem: sidescrolloff and scrolloff options work slightly
         different than other global-local options
Solution: Make it behave consistent for all global-local options

It was noticed, that sidescrolloff and scrolloff options behave
differently in comparison to other global-local window options like
'listchars'

So make those two behave like other global-local options. Also add some
extra documentation for a few special local-window options.

Add a few tests to make sure all global-local window options behave
similar

closes: vim/vim#12956
closes: vim/vim#12643

4a8eb6e7a9

Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-08-23 18:24:14 +08:00
zeertzjq
09910d5b35 vim-patch:9.0.0837: append() reports failure when not appending anything
Problem:    append() reports failure when not appending anything.
Solution:   Only report failure when appending something. (closes vim/vim#11498)

cd9c8d400c

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-08-22 18:56:43 +08:00
Christian Clason
b75659c8fb vim-patch:690963924956
runtime(dosini): save and restore cpo value in syntax script

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

6909639249

Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-08-21 22:34:48 +09:00
Christian Clason
54ddf56589 vim-patch:6d626c41842e
runtime(sdc): Add underscore to sdc flags in syntax file (vim/vim#6201)

6d626c4184

Co-authored-by: Jordi Altayó <jordialtayo@gmail.com>
2023-08-21 20:32:28 +09:00
Christian Clason
e2d3c1260e vim-patch:a0fddaa2f4b7
Runtime(javascript): add new document properties to completion file

closes: vim/vim#6536

a0fddaa2f4

Co-authored-by: Jay Sitter <jay@diameterstudios.com>
2023-08-21 20:32:28 +09:00
Christian Clason
36404fea4a vim-patch:5e6e4042b1c9
runtime(haskell): Add single quote to `iskeyword` in ftplugin (vim/vim#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

5e6e4042b1

Co-authored-by: Enrico Maria De Angelis <enricomaria.dean6elis@gmail.com>
2023-08-21 20:32:28 +09:00
Christian Clason
5b78a5c72a vim-patch:309ded19543c
runtime(css): Update pseudo-classes in syntax script (vim/vim#11595)

309ded1954

Co-authored-by: Adrian Heine né Lang <mail@adrianheine.de>
2023-08-21 20:32:28 +09:00
Christian Clason
c9764bf331 vim-patch:9fa35b1c38b8
runtime(lua): fix lua indentation of non-lowercase "keywords" (vim/vim#11759)

9fa35b1c38

Co-authored-by: beardedsakimonkey <54521218+beardedsakimonkey@users.noreply.github.com>
2023-08-21 20:32:28 +09:00
Christian Clason
60037feb56 vim-patch:e71e9d9ad368
runtime(javascript): fix default link of javaScriptNumber in syntax file (vim/vim#11788)

cool unused matching

e71e9d9ad3

Co-authored-by: Meqa <106783764+Meqativ@users.noreply.github.com>
2023-08-21 20:32:28 +09:00
Christian Clason
3f877657dd vim-patch:6633611f4280
runtime(lua): indent curly bracket followed by line comment (vim/vim#12306)

fixes vim/vim#12305

6633611f42

Co-authored-by: champignoom <66909116+champignoom@users.noreply.github.com>
2023-08-21 20:32:28 +09:00
Christian Clason
abc3721e4f vim-patch:478668013f06
runtime(rust): fix rust indent (vim/vim#12542)

478668013f

Co-authored-by: Raphael <glephunter@gmail.com>
2023-08-21 20:32:28 +09:00
Christian Clason
4a36ecd238 vim-patch:72904d5fda0a
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.

72904d5fda

Co-authored-by: James Fleming <james@electronic-quill.net>
2023-08-21 20:32:28 +09:00
zeertzjq
6bdfb890fd vim-patch:e46a44050562
Runtime file updates

e46a440505

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-08-21 17:24:54 +08:00
zeertzjq
0f48173ab5 vim-patch:589edb340454
Updte runtime files

589edb3404

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-08-21 17:16:10 +08:00
zeertzjq
7ce2acd59b vim-patch:8.1.2053: SafeStateAgain not triggered if callback uses feedkeys()
Problem:    SafeStateAgain not triggered if callback uses feedkeys().
Solution:   Check for safe state in the input loop.  Make log messages easier
            to find. Add 'S' flag to state().

d103ee7843

Include misc1.c change from patch 8.1.2062.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-08-21 14:16:16 +08:00
zeertzjq
64ccfdaafe vim-patch:8.1.2047: cannot check the current state
Problem:    Cannot check the current state.
Solution:   Add the state() function.

0e57dd859e

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-08-21 14:16:16 +08:00
zeertzjq
4956f26744 vim-patch:8.1.2046: SafeState may be triggered at the wrong moment
Problem:    SafeState may be triggered at the wrong moment.
Solution:   Move it up higher to after where messages are processed.  Add a
            SafeStateAgain event to tigger there.

69198cb8c0

SafeStateAgain is N/A.
Move SafeState functions to state.c.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-08-21 14:16:16 +08:00
zeertzjq
ab45d5bf6d vim-patch:8.1.2044: no easy way to process postponed work
Problem:    No easy way to process postponed work. (Paul Jolly)
Solution:   Add the SafeState autocommand event.

8aeec40207

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-08-21 14:16:15 +08:00
zeertzjq
91d8f2ac53
vim-patch:9.0.1767: '.-' no allowed in highlight group names (#24814)
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: vim/vim#12807

d4376dc3eb

Co-authored-by: Gregory Anders <greg@gpanders.com>
Co-authored-by: Sean Dewar <seandewar@users.noreply.github.com>
2023-08-21 10:25:41 +08:00
Christian Clason
eaad2f7806 vim-patch:9.0.1768: Runtime: no support for bicep files
Problem:  Runtime: no support for bicep files
Solution: Add filetype support for bicepparam

closes: vim/vim#12784

2d0988ef93

Co-authored-by: Scott McKendry <scott.c.mckendry@gmail.com>
2023-08-21 10:13:44 +09:00
Christian Clason
a5b6468e9b vim-patch:9.0.1766: Runtime: Missing QML support
Problem:  Runtime: Missing QML support
Solution: Add QML support to Vim

closes: vim/vim#12810

bedc69f9d6

Co-authored-by: ChaseKnowlden <haroldknowlden@gmail.com>
2023-08-21 10:13:44 +09:00
zeertzjq
694814cdd5
vim-patch:9.0.1774: no support for custom cmdline completion (#24808)
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: vim/vim#12228

92997dda78

Co-authored-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
2023-08-21 07:29:49 +08:00
zeertzjq
0c91cb4f03 vim-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: vim/vim#12861

654bdbbd32
2023-08-21 06:12:03 +08:00
zeertzjq
7485fd0518 vim-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: vim/vim#12593

b5f6fe9ca2

Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-08-21 06:11:16 +08:00
Christian Clason
18062f70d8 vim-patch:56bafd7a6a79
Runtime: add new sed ftplugin (vim/vim#12843)

56bafd7a6a

Co-authored-by: dkearns <dougkearns@gmail.com>
2023-08-20 17:31:27 +09:00
zeertzjq
4c7df98e4e vim-patch:9.0.1515: reverse() does not work for a String
Problem:    reverse() does not work for a String.
Solution:   Implement reverse() for a String. (Yegappan Lakshmanan,
            closes vim/vim#12179)

03ff1c2dde

vim-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: vim/vim#12847

4dd266cb66

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-19 18:05:46 +08:00
Christian Clason
8d7a2a1aea vim-patch:442d1746f4c6
bindzone runtime: add new DNS record types (vim/vim#7351)

Recognize some newer DNS record types - CAA (RFC8659, certificate authority authorization), OPENPGPKEY (RFC7929), SMIMEA (RFC8162). Sort SSHFP alphabetically while there.

442d1746f4

Co-authored-by: Stuart Henderson <sthen@users.noreply.github.com>
2023-08-18 07:48:42 +02:00
Christian Clason
f65be8c5f5 vim-patch:817db406bb12
Add TODO, FIXME to Haskell syntax file (vim/vim#8055)

Adding TODO, XXX, FIXME to Haskell syntax file vim/vim#8054

817db406bb

Co-authored-by: Bruno-366 <81762173+Bruno-366@users.noreply.github.com>
2023-08-18 07:48:42 +02:00
Christian Clason
f0b3defecb vim-patch:a5988f582e48
Keywords 'of' and 'yield' for Javascript. (vim/vim#7873)

* Keyword 'of' in for...of statement.

* Keyword 'yield' for generator function.

a5988f582e

Co-authored-by: Yuri Klimov <yuri@klimov.net>
2023-08-18 07:48:42 +02:00
zeertzjq
f8afa8023e
vim-patch:9.0.1728: missing winid argument for virtcol() (#24770)
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: vim/vim#12633

825cf813fa
2023-08-18 08:42:45 +08:00
Sean Dewar
88887a7be7
docs(builtin): fix some missing lines (#24759)
Some things got chopped off in the PR that removed method syntax examples.
These were all that I found.
2023-08-17 16:38:56 +01:00
zeertzjq
6267996f13 vim-patch:8.2.4455: accepting one and zero for second sort() argument is strange
Problem:    Accepting one and zero for the second sort() argument is strange.
Solution:   Disallow using one and zero in Vim9 script.

2007dd49f5

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-08-17 16:11:17 +08:00
zeertzjq
b193674b4a vim-patch:partial:8.2.3849: functions implementing reduce and map are too long
Problem:    Functions implementing reduce and map are too long.
Solution:   Use a function for each type of value.  Add a few more test cases
            and add to the help. (Yegappan Lakshmanan, closes vim/vim#9370)

389b72196e

Partial port as this doesn't include handling for non-materialized List.

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-17 15:37:32 +08:00
zeertzjq
c5576fcc80 vim-patch:8.2.3848: cannot use reduce() for a string
Problem:    Cannot use reduce() for a string.
Solution:   Make reduce() work with a string. (Naruhiko Nishino, closes vim/vim#9366)

0ccb5842f5

Omit tv_get_first_char() as it doesn't really save much code.

Co-authored-by: rbtnn <naru123456789@gmail.com>
2023-08-17 15:20:47 +08:00
zeertzjq
d9e7dad139 vim-patch:8.2.3818: cannot filter or map characters in a string
Problem:    Cannot filter or map characters in a string.
Solution:   Make filter() and map() work on a string. (Naruhiko Nishino,
            closes vim/vim#9327)

c479ce032f

Co-authored-by: rbtnn <naru123456789@gmail.com>
2023-08-17 13:14:32 +08:00
zeertzjq
3117dc70f1 vim-patch:1b884a005398
Update runtime files.

1b884a0053

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-08-17 11:21:10 +08:00
zeertzjq
8cbb2477cf vim-patch:8.2.1969: Vim9: map() may change the list or dict item type
Problem:    Vim9: map() may change the list or dict item type.
Solution:   Add mapnew().

ea696852e7

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-08-17 11:21:10 +08:00
Michael Strobel
e780177506
feat(diagnostic): filter diagnostics by specific severities (#24736)
Allow users to filter diagnostics by specifying severities
2023-08-16 08:49:14 -05:00
Gregory Anders
9cb7e00b97
feat(diagnostic): provide more control over virtual text display (#24724)
Allow users to pass virtual text options to nvim_buf_set_extmark through
the "virtual_text" table in vim.diagnostic.config().

Fixes: https://github.com/neovim/neovim/issues/16545
2023-08-16 08:21:32 -05:00
Pham Huy Hoang
54be7d6b45 docs(lua): add missing fields to treesitter/_meta
According to `:h TSNode` docs, there's also `TSNode:sexpr()` and
`TSNode:has_error()` that is part of `TSNode` class, but this wasn't
documented in `treesitter/_meta.lua`.

Adding missing fields in so the types is similar to `:h TSNode`
2023-08-16 08:18:03 +01:00
Christian Clason
0c23525b59 vim-patch:20b33b56ad5d
Update FreeBASIC syntax file (vim/vim#12781)

20b33b56ad

Co-authored-by: dkearns <dougkearns@gmail.com>
2023-08-16 09:15:39 +02:00
Christian Clason
f685303e6d vim-patch:636d32b32730
The keyboard layout "russian-typograph" has been updated to version 3.3 (vim/vim#12796)

Co-authored-by: RestorerZ <restorer@mail2k.ru>

636d32b327

Co-authored-by: Restorer <69863286+RestorerZ@users.noreply.github.com>
Co-authored-by: RestorerZ <restorer@mail2k.ru>
2023-08-16 09:15:39 +02:00
Christian Clason
93f9bb5924 vim-patch:10f23e10a9f0
Update syntax/muttrc.vim to latest mutt (vim/vim#12797)

Nothing complicated, just lots of tedium keeping the lines wrapped at
reasonable lengths.

10f23e10a9

Co-authored-by: lunasophia <104850249+lunasophia@users.noreply.github.com>
2023-08-16 09:15:39 +02:00
Christian Clason
36288578ee vim-patch:4868f637b84a
Update syntax/fortran.vim (vim/vim#12798)

Several small improvements including better discrimination of "real" used as a type and as an intrinsic

4868f637b8

Co-authored-by: Ajit-Thakkar <142174202+Ajit-Thakkar@users.noreply.github.com>
2023-08-16 09:15:39 +02:00
zeertzjq
a245dd79a2
vim-patch:9.0.1717: virtcol2col returns last byte of a multi-byte char (#24729)
Problem: virtcol2col returns last byte of a multi-byte char
Solution: Make it return the first byte for a multi-byte char

closes: vim/vim#12786
closes: vim/vim#12799

b209b86e66

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-08-16 06:28:52 +08:00
Gregory Anders
e72c0cd920
feat(highlight): Allow hyphens (-) in highlight group names (#24714)
Fixes: https://github.com/neovim/neovim/issues/23184
2023-08-15 09:25:51 -05:00
zeertzjq
842a47d6a4
vim-patch:9.0.1704: Cannot use positional arguments for printf() (#24719)
Problem: Cannot use positional arguments for printf()
Solution: Support positional arguments in string formatting

closes: vim/vim#12140

0c6181fec4

Co-authored-by: Christ van Willegen <cvwillegen@gmail.com>
2023-08-15 19:16:19 +08:00
Christian Clason
fc0ee871de fix(treesitter)!: remove deprecated legacy injection format 2023-08-14 00:14:35 +02:00
Christian Clason
11590543eb
Merge pull request #24681 from clason/update-c
feat(treesitter): update C parser and queries
2023-08-13 18:19:01 +02:00
Sean Dewar
cbf54ec2a5
vim-patch:e978b4534a5e (#24697)
Farewell to Bram and dedicate upcoming Vim 9.1 to him (vim/vim#12749)

e978b4534a

Also update the header for the following files that were converted to Vim9
script upstream:

- autoload/ccomplete.lua (vim9jitted)
- ftplugin.vim
- ftplugof.vim
- indent.vim
- indent/vim.vim
- makemenu.vim

This also updates the "Last Change" dates, even if some changes (due to rewrites
to Vim9 script) were not ported.

There's still a few other places where Bram is still mentioned as a maintainer
in the files we and Vim have:

- ftplugin/bash.vim
- indent/bash.vim
- indent/html.vim
- indent/mail.vim
- macros/accents.vim
- macros/editexisting.vim
- syntax/bash.vim
- syntax/shared/typescriptcommon.vim
- syntax/tar.vim
- syntax/typescript.vim
- syntax/typescriptreact.vim
- syntax/zimbu.vim

Maybe future patches will address that.

Also exclude changes to .po files that didn't apply automatically (the
`:messages` maintainer string isn't used in Nvim anyway).

Co-authored-by: Christian Brabandt <cb@256bit.org>
2023-08-13 13:25:10 +01:00
Justin M. Keyes
0fe921663f
Merge #15440 close 'shell' :terminal automatically 2023-08-13 05:23:15 -07:00
Christian Clason
3836eeb901 feat(treesitter): update C queries from upstream 2023-08-13 12:30:47 +02:00
Lewis Russell
8179d68dc1 fix(treesitter): logger memory leak 2023-08-13 11:23:17 +01:00
Christian Clason
380ffd6b7c vim-patch:9ad1bf7afd5c
runtime(pymanifest): fix mistake in syntax definition

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: ObserverOfTime <chronobserver@disroot.org>

9ad1bf7afd

Co-authored-by: ObserverOfTime <chronobserver@disroot.org>
2023-08-13 11:53:51 +02:00
Christian Clason
a600ac5263 vim-patch:2f339aad6c80
Add syntax & ftplugin for pymanifest (vim/vim#12773)

2f339aad6c

Co-authored-by: ObserverOfTime <chronobserver@disroot.org>
2023-08-13 11:53:51 +02:00
Christian Clason
4a936ad2dc vim-patch:f9c4c2f97db9
Update iss syntax file (vim/vim#11890)

- Add 'ExternalSize:' parameter
- Add 'setntfscompression' files flag
- Fix escaped left brace highlight
- Fix 'String:' parameter highlight
- Remove trailing whitespace

f9c4c2f97d

Co-authored-by: ObserverOfTime <chronobserver@disroot.org>
2023-08-13 11:53:51 +02:00
Lewis Russell
2ca076e45f feat(treesitter)!: incremental injection parsing
Problem:

Treesitter highlighting is slow for large files with lots of injections.

Solution:

Only parse injections we are going to render during a redraw cycle.

---

- `LanguageTree:parse()` will no longer parse injections by default and
  now requires an explicit range argument to be passed.

- `TSHighlighter` now parses injections incrementally during on_win
  callbacks for the line range being rendered.

- Plugins which require certain injections to be parsed must run
  `parser:parse({ start_row, end_row })` before using the tree.
2023-08-12 16:11:36 +01:00
Christian Clason
04aed08157 vim-patch:d8f981138aa0
Add commentstring for nix file format (vim/vim#12696)

d8f981138a

Co-authored-by: Keith Smiley <keithbsmiley@gmail.com>
2023-08-12 11:01:05 +02:00
zeertzjq
58a1ef8e6a
fix(events): avoid unnecessary CursorMoved (#24675)
Problem:    Temporarily changing current window in a script causes
            CursorMoved to be triggerd.
Solution:   Don't trigger CursorMoved if neither curwin nor cursor
            changed between two checks.
2023-08-12 09:50:17 +08:00
zeertzjq
6c07a189f2
vim-patch:9.0.1688: cannot store custom data in quickfix list (#24673)
Problem: cannot store custom data in quickfix list
Solution: add `user_data` field for the quickfix list

closes: vim/vim#11818

ca6ac99077

Co-authored-by: Tom Praschan <13141438+tom-anders@users.noreply.github.com>
2023-08-12 08:19:06 +08:00
zeertzjq
6e0c36ba0e
vim-patch:9.0.1686: undotree() only works for the current buffer (#24665)
Problem:    undotree() only works for the current buffer
Solution:   Add an optional "buffer number" parameter to undotree().  If
            omitted, use the current buffer for backwards compatibility.

closes: vim/vim#4001
closes: vim/vim#12292

5fee111149

Co-authored-by: Devin J. Pohly <djpohly@gmail.com>
2023-08-12 05:51:49 +08:00
Christian Clason
278805dfac vim-patch:21aaff3faa82
Update my name and email in runtime files (vim/vim#12763)

21aaff3faa

Co-authored-by: Lily Ballard <lily@ballards.net>
2023-08-11 22:06:37 +02:00
Christian Clason
35c8ad1c80 vim-patch:dd0ad2598898
Update syntax/dosini.vim to the latest version (vim/vim#12764)

The latest version is in https://github.com/xuhdev/syntax-dosini.vim/blob/master/syntax/dosini.vim. I've sent the file to Bram at the end of June, unfortunately it wasn't able to make into the Vim repository. RIP!

dd0ad25988

Co-authored-by: Hong Xu <hong@topbug.net>
2023-08-11 22:06:37 +02:00
Christian Clason
31c4ed26bc
feat(treesitter): add injection language fallback (#24659)
* feat(treesitter): add injection language fallback

Problem: injection languages are often specified via aliases (e.g.,
filetype or in upper case), requiring custom directives.

Solution: include lookup logic (try as parser name, then filetype, then
lowercase) in LanguageTree itself and remove `#inject-language`
directive.

Co-authored-by: Lewis Russell <me@lewisr.dev>
2023-08-11 17:05:17 +02:00
Raphael
72e64a1afe
fix(lsp): extra "." when completing with tsserver #24646
Problem:
With tsserver LSP, omni completion after "." inserts an extra "."

Solution:
Apply adjust_start_col() regardless of `filterText`.
adjust_start_col() is explained here:
0ea8dfeb3d/runtime/lua/vim/lsp.lua (L2334-L2351)

The `filterText` field is used in the following situations rather than as
a condition for obtaining column values:
1. Real-time filtering: When the user types characters in the editor, the
   language server can use the filterText field to filter the list of
   suggestions and only return suggestions that match the typed characters. This
   helps to provide more precise recommendations.
2. Fuzzy matching: The filterText field can be used to perform fuzzy matching,
   allowing matching in the middle or beginning of input characters, not limited
   to prefix matching. This can provide a more flexible code completion
   experience.

Inspecting usage of `filtertext` in vim-lsp and coc and lsp-mode:
- vim-lsp uses a `refresh_pattern` to judge filterText as completionitem word
  (although I think this is not the correct usage).
- coc uses it for filtering.

Fix #22803
2023-08-11 05:20:05 -07:00
Gregory Anders
3fb372eba4 Use Lua autocommand and make TermClose autocommand global 2023-08-10 09:53:56 -05:00
zeertzjq
3d948a4dc4
vim-patch:9.0.1683: Updated runtime files (#24638)
This is a collection of various PRs from github that all require a minor
patch number:

1) https://github.com/vim/vim/pull/12612

    Do not conflate dictionary key with end of block

2) https://github.com/vim/vim/pull/12729:

    When saving and restoring 'undolevels', the constructs `&undolevels` and
    `:set undolevels` are problematic.

    The construct `&undolevels` reads an unpredictable value; it will be the
    local option value (if one has been set), or the global option value
    (otherwise), making it unsuitable for saving a value for later
    restoration.

    Similarly, if a local option value has been set for 'undolevels',
    temporarily modifying the option via `:set undolevels` changes the local
    value as well as the global value, requiring extra work to restore both
    values.

    Saving and restoring the option value in one step via the construct
    `:let &undolevels = &undolevels` appears to make no changes to the
    'undolevels' option, but if a local option has been set to a different
    value than the global option, it has the unintended effect of changing
    the global 'undolevels' value to the local value.

    Update the documentation to explain these issues and recommend explicit
    use of global and local option values when saving and restoring.  Update
    some unit tests to use `g:undolevels`.

3) https://github.com/vim/vim/pull/12702:

    Problem:    Pip requirements files are not recognized.
    Solution:   Add a pattern to match pip requirements files.

4) https://github.com/vim/vim/pull/12688:

    Add indent file and tests for ABB Rapid

5) https://github.com/vim/vim/pull/12668:

    Use Lua 5.1 numeric escapes in tests and add to CI

    Only Lua 5.2+ and LuaJIT understand hexadecimal escapes in strings.  Lua
    5.1 only supports decimal escapes:

    > A character in a string can also be specified by its numerical value
    > using the escape sequence \ddd, where ddd is a sequence of up to three
    > decimal digits. (Note that if a numerical escape is to be followed by a
    > digit, it must be expressed using exactly three digits.) Strings in Lua
    > can contain any 8-bit value, including embedded zeros, which can be
    > specified as '\0'.

    To make sure this works with Lua 5.4 and Lua 5.1 change the Vim CI to
    run with Lua 5.1 as well as Lua 5.4

6) https://github.com/vim/vim/pull/12631:

    Add hurl filetype detection

7) https://github.com/vim/vim/pull/12573:

    Problem:   Files for haskell persistent library are not recognized
    Solution:  Add pattern persistentmodels for haskell persistent library

closes: vim/vim#12612
closes: vim/vim#12729
closes: vim/vim#12702
closes: vim/vim#12688
closes: vim/vim#12668
closes: vim/vim#12631
closes: vim/vim#12573

Already ported but wasn't marked: vim-patch:ad34abee2583

6efb198033

Co-authored-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: lacygoill <lacygoill@lacygoill.me>
Co-authored-by: Michael Henry <drmikehenry@drmikehenry.com>
Co-authored-by: ObserverOfTime <chronobserver@disroot.org>
Co-authored-by: KnoP-01 <knosowski@graeffrobotics.de>
Co-authored-by: James McCoy <jamessan@jamessan.com>
Co-authored-by: Jacob Pfeifer <jacob@pfeifer.dev>
Co-authored-by: Borys Lykah <lykahb@fastmail.com>
2023-08-10 17:45:36 +08:00
zeertzjq
a51ab112a6 vim-patch:81b8bf5b4a33
Update the vimscript code for restoring cursor position

Using xxd(1) to filter and edit binary files causes the input files
to have dual nature, so to speak, which effectively makes restoring
the cursor position broken.  Fix that by ignoring the "xxd" file type
in the code that restores the cursor position.

Interactive rebasing in git causes files to be edited in vim, which,
similarly to commit messages, are rarely the same as the last one
edited.  Thus, also add "gitrebase" to the list of file types for
which the cursor position isn't restored.

While there, refactor the code a bit to possibly save a few CPU cycles
and to keep the line lengths in check, and use the long form of the
commands and variables, to make the code slightly more consistent and
more understandable to newcomers.

Update the relevant comments in the code and the associated parts of
the documentation, to keep them in sync with the updated code.

Remove some redundant trailing whitespace as well, as spotted.

81b8bf5b4a

Co-authored-by: Dragan Simic' via vim_dev <vim_dev@googlegroups.com>
2023-08-10 17:28:04 +08:00
zeertzjq
5684c415b4 vim-patch:6a500661a9cb
Improve the vimscript code in ":h hex-editing"

Save and restore the view position before and after saving the buffer,
respectively, to keep the current view of the xxd(1)'s hex dump
unchanged after doing ":w", which previously caused the window to
scroll back to the very beginning of the buffer.  I believe it's
needless to say how annoying and counterproductive that was.

Get rid of the "Press ENTER or type command to continue" message, which
was previously displayed after opening larger binary files.  The use
of "silent" and "redraw" commands is tailored specifically to avoid
screen flickering, e.g. when doing ":w", which is caused by the buffer
being filtered by an external command.

Increase the number of octets per line, produced by xxd(1), from the
default value of 16 to 32.  This puts bigger chunks of the hex dump
on the screen and makes the whole thing much more usable.

While there, reformat the code to make it more readable, and use the
long form of the commands and variables to make the code slightly more
consistent and more understandable to newcomers.

6a500661a9

Co-authored-by: Dragan Simic' via vim_dev <vim_dev@googlegroups.com>
2023-08-10 17:28:02 +08:00
zeertzjq
72e619ca92
vim-patch:8f566fdb1e34 (#24636)
update .wast files syntax highlighting (vim/vim#12741)

8f566fdb1e

Co-authored-by: Linda_pp <rhysd@users.noreply.github.com>
2023-08-10 07:13:23 +08:00
Justin M. Keyes
1d81d7a268
feat(defaults): treat "•" as a list item prefix #24623
Problem:
Nvim docs use "•" as a list item prefix but `gw{motion}` doesn't format
such lists by default.

Solution:
Change the 'comments' option to include "fb:•" by default.
2023-08-09 15:33:53 -07:00