Commit Graph

9609 Commits

Author SHA1 Message Date
Rob Pilling
ce27423132 feat: ":wall ++p" creates parent dirs for each buf #36121
`:wall ++p` will create parent directories if they do not exist, for
each modified buffer
2025-10-11 08:27:58 -07:00
phanium
f40672be99 fix(undotree): clear autocmd correctly #36124
Problem: nvim_clear_autocmds clear some other autocmd unexpectedly

Solution: clear it correctly
2025-10-10 21:09:51 -07:00
glepnir
fafc329bbd feat(ui): 'pumborder' (popup menu border) #25541
Problem:
Popup menu cannot have a border.

Solution:
Support 'pumborder' option.
Generalize `win_redr_border` to `grid_redr_border`,
which redraws border for window grid and pum grid.
2025-10-10 07:14:50 -07:00
phanium
9c89212de1 fix(undotree): sync scroll pos with undo #36117
Problem: when undo in buffer, undotree window is not updated to
position of correct node

Solution: schedule nvim_win_set_cursor
2025-10-10 07:07:01 -07:00
luukvbaal
d8cea8d45d fix(ui2): don't scroll beyond eob in dialog window #36116
Problem:  Forward page scrolling reveals eob lines in the dialog window.
Solution: Check if the end of the buffer is visible before scrolling down.
2025-10-10 07:05:40 -07:00
zeertzjq
f81014f25c vim-patch:1388fa6: runtime(doc): Add reference to 'wildoptions' in fuzzy-matching docs
The docs for fuzzy matching seems to try to list every possible use
case, but misses this one. It's a good idea to be consistent.

closes: vim/vim#18525

1388fa62d2

Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2025-10-10 07:21:09 +08:00
zeertzjq
ec8405c473 vim-patch:partial:7dba04f: runtime(doc,vim): Update base syntax, match full :syntime command
- Use the optional tail command-name spec at :help :syntime.
- Match full :syntime command and highlight args.

7dba04f15c

Documentation changes only.

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-10-10 07:21:09 +08:00
Mickaël RAYBAUD-ROIG
8e740db70c fix(vim.pack): skip checkout on bad version #36038
Refs: #36037
2025-10-09 13:40:26 -07:00
Mike J McGuirk
4598305e0b fix(undotree): mark title field annotation as optional (#36102)
* fix(undotree): mark title field annotation as optional

* fix(doc): run make doc for undotree annotation change
2025-10-09 10:49:49 -04:00
Tristan Kapous
645206e87f fix(undotree): error on undotree.open() with title as string #36085 2025-10-08 19:49:21 -07:00
Mike J McGuirk
81d2d88f70 feat(undotree): set 'filetype' #36091 2025-10-09 02:34:44 +00:00
zeertzjq
c401999e47 vim-patch:143686b: runtime(java): Fold adjacent "import" declarations (#36095)
Also, distinguish (by abbreviating their names) and manage
foldable kinds of syntax items: blocks of code ("b"), plain
comments ("c"), Javadoc comments ("d"), adjacent "import"
declarations ("i").  Fold all qualifying items by default;
otherwise, do not fold items of explicitly delisted kinds.
For example,
------------------------------------------------------------
	let g:java_ignore_folding = "bcdi"
------------------------------------------------------------

Resolves zzzyxwvut/java-vim#12.

closes: vim/vim#18492

143686b3c4

Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
2025-10-09 07:49:35 +08:00
zeertzjq
f21295d596 vim-patch:ec19075: runtime(doc): Normalise ellipsis dots in syntax.txt (#36094)
Use three dots rather than two.

closes: vim/vim#18521

ec19075f61

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-10-09 07:49:14 +08:00
zeertzjq
6969534935 vim-patch:ce5f9f4: runtime(vim): Update base syntax, allow legacy script comments after :eval
closes: vim/vim#18522

ce5f9f45af

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-10-09 07:13:10 +08:00
zeertzjq
e47529ab56 vim-patch:9.1.1834: MS-Windows: not possible to highlight the title bar
Problem:  MS-Windows: not possible to highlight the title bar
Solution: Make the title/caption bar configurable by introducing the
          'go-C' option value which allows to highlight it using the
          TitleBar and TitleBarNC highlighting groups (Mao-Yining).

Introduce titlebar color customization for Windows 11 GUI through
highlight groups and new 'guioptions' flag:

- Add 'C' flag to enable titlebar color customization (opt-in)
- New highlight groups: TitleBar (active) and TitleBarNC (inactive)
- Uses DWMWA_CAPTION_COLOR and DWMWA_TEXT_COLOR DWM attributes
- Dynamically loads dwmapi.dll for Windows 11 compatibility
- Defaults to system colors when set to NONE or feature disabled

closes: vim/vim#18449

2c09368273

Co-authored-by: Mao-Yining <mao.yining@outlook.com>
2025-10-09 07:11:24 +08:00
Igor Lacerda
f67306cc67 fix(lsp): typos in method names #36077 2025-10-07 20:44:57 -07:00
zeertzjq
c58cc46094 vim-patch:f8b9251: runtime(doc): Fix typos in syntax.txt (#36073)
closes: vim/vim#18504

f8b9251d8f

Co-authored-by: Elijah Greenstein <197816462+elijahgreenstein@users.noreply.github.com>
2025-10-08 08:28:10 +08:00
altermo
9e1d3f4870 feat(runtime): undotree #35627
Problem
No builtin way to visualize and navigate the undo-tree.

Solution
Include an "opt" plugin.
2025-10-07 14:32:22 -07:00
Evgeni Chasnovski
3b860653ca fix(pack): handle lockfile in case of install errors #36064
Problem: If plugin was intended to install but there were errors (like
  if there is a typo in `src`), lockfile still includes its entry.
  This leads to all source of problems (like not correct `get()` output,
  not working `update()`, etc.).

Solution: Explicitly account for plugins that were not installed.
  Alternative solution might be to write a safe
  `lock_set(plug, field, value)` wrapper (which sets field for a correct
  `plugins` entry in the lockfile Lua table) and use it after install
  to detect the change in `version`. However, this always requires
  an extra pass through plugins on every startup, which is suboptimal.
  Optimizing for the "happy path" should be a priority in `add()`.
2025-10-07 12:24:23 -07:00
Maria Solano
006101360d fix(lsp): use LSP method type in more places (#36069) 2025-10-07 11:17:40 -04:00
zeertzjq
facde3dcbe vim-patch:8824526: runtime(zip): add *.pkpass to list of zip extensions (#36061)
Similar to a359c9c25e5c3c1e543fc720223aa7256e6f72cf.
See https://developer.apple.com/documentation/walletpasses/building-a-pass#Sign-the-Pass-and-Create-the-Bundle,
which explicitly mentions that pkpasses are just renamed ZIPs.

closes: vim/vim#18501

882452644c

Co-authored-by: MultisampledNight <contact@multisamplednight.com>
2025-10-07 00:08:22 +00:00
zeertzjq
1c4e0e5044 vim-patch:cd6e209: runtime(kerml): update KerML comments to handle more cases (#36060)
closes: vim/vim#18502

cd6e209651

Co-authored-by: Daumantas Kavolis <daumantas.kavolis@sensmetry.com>
2025-10-06 23:53:47 +00:00
zeertzjq
c2a196f19b vim-patch:adc729c: runtime(doc): fix typo in :h credits section (#36048)
adc729cd32

Co-authored-by: Christian Brabandt <cb@256bit.org>
2025-10-05 23:32:59 +00:00
zeertzjq
a4a8838178 vim-patch:9.1.1829: filetype: KerML and SysML files are not recognized (#36042)
Problem:  filetype: KerML and SysML files are not recognized
Solution: Detect *.kerml as kerml filetype, detect *.sysml as sysml
          filetype, include a kerml and sysml filetype plugin
          (Daumantas Kavolis)

closes: vim/vim#18476

b73ccf7ff0

Co-authored-by: Daumantas Kavolis <daumantas.kavolis@sensmetry.com>
2025-10-06 06:07:41 +08:00
Maria Solano
729e0acd26 feat(lsp): pass client ID in code action filter (#36046) 2025-10-05 15:02:00 -07:00
Maria Solano
bcc9242bc7 fix: remove quotes around nil deprecation alternatives (#36047) 2025-10-05 14:39:23 -07:00
Evgeni Chasnovski
98e3a571dd feat(pack): add code actions in confirmation buffer
Problem: No way to granularly operate on plugins when inside
confirmation buffer.

Solution: Implement code actions for in-process LSP that act on "plugin
at cursor":
  - Update (if has updates).
  - Skip updating (if has updates).
  - Delete.

  Activate via default `gra` or `vim.lsp.buf.code_action()`.
2025-10-05 19:20:06 +03:00
Evgeni Chasnovski
2728b4efe0 feat(pack): add [[ and ]] mappings in confirmation buffer
Problem: No easy/robust way to jump between plugin sections.

Solution: Add `[[` and `]]` mappings.
2025-10-05 19:20:05 +03:00
phanium
913b05bf63 fix(lsp): format_item should return string (#36025)
Problem: format_item return two value
Solution: `:h vim.ui.select()` say format_item should return string
2025-10-05 09:00:04 -07:00
zeertzjq
91cb1b182b vim-patch:a76ea52: runtime(doc): Use the optional tail command-name spec at :help :sign (#36041)
closes: vim/vim#18489

a76ea52a48

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-10-05 22:16:13 +08:00
Maria Solano
b938638d2d fix(lsp): deprecate vim.lsp.protocol.Methods (#35998) 2025-10-04 21:09:13 -07:00
zeertzjq
2f35221774 fix(excmd): :trust executed even when inside false condition (#36032)
Problem:  :trust is executed even when inside false condition.
Solution: Make skip_cmd() return true for CMD_trust, as ex_trust() does
          not handle eap->skip itself.
2025-10-05 10:21:44 +08:00
Justin M. Keyes
ea124068f2 feat(vim.pack): lockfile support #35827 2025-10-04 12:48:29 -04:00
Evgeni Chasnovski
dc8235c48c feat(pack): prefer using revision from lockfile during install
Problem: Installing plugin always pulls latest `version` changes
  (usually from the default branch or "latest version tag"). It is more
  robust to prefer initial installation to use the latest recorded
  (i.e. "working") revision.

Solution: Prefer using revision from the lockfile (if present) during
  install. The extra `update()` will pull the latest changes.
2025-10-04 16:15:54 +03:00
Evgeni Chasnovski
cfbc03a954 feat(pack)!: make update() include not active plugins by default
Problem: Running `update()` by default doesn't include not active
  plugins, because there was no way to get relevant `version` to get
  updates from. This might be a problem in presence of lazy loaded
  plugins, i.e. ones that can be "not *yet* active" but still needed to
  be updated.

Solution: Include not active plugins by default since their `version` is
  tracked via lockfile.
2025-10-04 16:13:39 +03:00
Evgeni Chasnovski
a31f63f661 feat(pack)!: update get() to return revision regardless of opts.info
Problem: The revision data is returned behind `opts.info` flag because
  it required extra Git calls. With lockfile it is not the case.

Solution: Use lockfile to always set `rev` field in output of `get()`.
2025-10-04 16:13:38 +03:00
Evgeni Chasnovski
2c0b70e559 fix(pack)!: use lockfile in get() for data about non-active plugins
Problem: `get()` doesn't return `spec.version` about not-yet-active
  plugins (because there was no way to know that without `add()`).

Solution: Use lockfile data to set `spec.version` of non-active plugins.
2025-10-04 16:13:36 +03:00
Evgeni Chasnovski
d7db552394 feat(pack): add initial lockfile tracking
Problem: Some use cases require or benefit from persistent on disk
  storage of plugin data (a.k.a. "lockfile"):

  1. Allow `update()` to act on not-yet-active plugins. Currently if
    `add()` is not yet called, then plugin's version is unknown
    and `update()` can't decide where to look for changes.

  2. Efficiently know plugin's dependencies without having to read
    'pkg.json' files on every load for every plugin. This is for the
    future, after there is `packspec` support (or other declaration of
    dependencies on plugin's side).

  3. Allow initial install to check out the exact latest "working" state
    for a reproducible setup. Currently it pulls the latest available
    `version.`

  4. Ensure that all declared plugins are installed, even if lazy loaded.
    So that later `add()` does not trigger auto-install (when there
    might be no Internet connection, for example) and there is no issues
    with knowing which plugins are used in the config (so even never
    loaded rare plugins are still installed and can be updated).

  5. Allow `add()` to detect if plugin's spec has changed between
    Nvim sessions and act accordingly. I.e. either set new `src` as
    origin or enforce `version.` This is not critical and can be done
    during `update()`, but it might be nice to have.

Solution: Add lockfile in JSON format that tracks (adds, updtes,
  removes) necessary data for described use cases. Here are the required
  data that enables each point:

    1. `name` -> `version` map.
    2. `name` -> `dependencies` map.
    3. `name` -> `rev` map. Probably also requires `name` -> `src` map
       to ensure that commit comes from correct origin.
    4. `name` -> `src` map. It would be good to also track the order,
       but that might be too many complications and redundant together
       with point 2.
    5. Map from `name` to all relevant spec fields. I.e. `name` -> `src`
       and `name` -> `version` for now. Storing data might be too much,
       but can be discussed, of course.

  This commit only adds lockfile tracking without implementing actual
  use cases. It is stored in user's config directory and is suggested to
  be tracked via version control.

  Example of a lockfile:

  ```json
  {
    # Extra nesting to more future proof.
    "plugins": {
      "plug-a": {
        "ref": "abcdef1"
        "src": "https://github.com/user/plug-a",
        # No `version` means it was `nil` (infer default branch later)
      },
      "plug-b": {
        "dependencies": ["plugin-a", "plug-c"],
        "src": "https://github.com/user/plug-b",
        "ref": "bcdefg2",
        # Enclose string `version` in quotes
        "version": "'dev'"
      },
      "plug-c": {
        "src": "https://github.com/user/plug-c",
        "ref": "cdefgh3",
        # Store `vim.version.Range` via its `tostring()` output
        "version": ">=0.0.0",
      }
    }
  }
  ```
2025-10-04 16:13:32 +03:00
zeertzjq
b4513442a1 vim-patch:420923c: runtime(doc): update credits section (#36021)
closes: vim/vim#18485

420923c0c5

Co-authored-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Girish Palya <girishji@gmail.com>
2025-10-04 12:35:53 +00:00
zeertzjq
8db42b3b86 vim-patch:bfcf638: runtime(java): Make changes for JDK 25 (#36017)
- Add to the list of java.lang classes three new types: IO,
  ScopedValue, and ScopedValue.Carrier.
- Add to the list of java.lang interfaces a new type:
  ScopedValue.CallableOp.
- "Demote" RuntimePermission from the list of java.lang
  class types to javaLangDeprecated.
- Reintroduce supported syntax-preview-feature numbers 455
  and 488 as _a new number_ 507.

References:
https://bugs.openjdk.org/browse/JDK-8353641
https://openjdk.org/jeps/506 (Scoped Values)
https://openjdk.org/jeps/507 (Primitive Types in Patterns etc.)
https://openjdk.org/jeps/512 (Compact Source Files etc.)

closes: vim/vim#18479

bfcf638c73

Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
2025-10-04 19:15:48 +08:00
zeertzjq
b6b80824cc vim-patch:9.1.1819: Cannot configure the inner foldlevel indicator (#36010)
Problem:  Cannot configure the inner foldlevel indicator for the
          foldcolumn
Solution: Add "foldinner" suboption value to the 'fillchar' option
          (Maria José Solano).

closes: vim/vim#18365

1a691afd27

Co-authored-by: Maria José Solano <majosolano99@gmail.com>
2025-10-03 23:53:29 +00:00
zeertzjq
2c76a50e20 vim-patch:9.1.1821: filetype: Not all PKL files are recognized (#36008)
Problem:  filetype: Not all PKL files are recognized
Solution: Detect *.pcf as pkl filetype, detect using the pkl-lsp://
          protocol as pkl filetype, include PKL syntax script
          (Jan Claußen)

This adds basic syntax support for the new PKL language by Apple.

What works:
- Shebang support
- Comment support
- Integers (decimal, hex, octal and binary) support
- Floating point support including exponentials
- Basic datatype support
- Unicode escape delimiters
- Escape code support
- String interpolation
- Support up to five pounds for custom delimiters
- Folding of multi-line comments and blocks

What doesn't work:

  The language heavily uses parameterized type declarations, which can get
  very complex. It is very hard to highlight this properly. There is
  official Tree-sitter support for this. Since it is hard to pull this off
  in a vim syntax file, I opted for basic support of the data types.

References:
  https://github.com/apple/pkl-pantry

fixes: vim/vim#18271
closes: vim/vim#18274

67a8f2945e

Co-authored-by: Jan Claußen <jan.claussen10@web.de>
2025-10-04 06:01:16 +08:00
zeertzjq
0124481c80 vim-patch:0a8b4ef: runtime(log): remove domain highlight (#36002)
The domain highlight is eazy to be confused and useless. Because we can
catch URL as a much obvious syntax.

closes: vim/vim#18467

0a8b4ef8b2

Co-authored-by: Mao-Yining <mao.yining@outlook.com>
2025-10-03 17:30:40 +08:00
zeertzjq
1939ec1763 vim-patch:09b1ce0: runtime(doc): fix typo after commit cfcf1a57cbef (#36001)
related: vim/vim#18452

09b1ce0860

Co-authored-by: Christian Brabandt <cb@256bit.org>
2025-10-03 17:30:24 +08:00
zeertzjq
e4d8474ad9 vim-patch:12da242: runtime(new-tutor): fix mismatched line numbers in vim-02-beginner
closes: vim/vim#18466

12da2427c7
2025-10-03 16:16:52 +08:00
zeertzjq
c755172a34 vim-patch:9d57fe2: runtime(new-tutor): Updated English new tutor
This updates the new tutor with the changes from commit
b87f133b0724f7328e7dd41dd611af67f4ae3e39

closes: vim/vim#18461

9d57fe278f

Link to :checkhealth for clipboard support.

Co-authored-by: RestorerZ <restorer@mail2k.ru>
2025-10-03 16:16:26 +08:00
Yi Ming
18d6436ad2 fix(lsp): inlineCompletion: ignore out-of-range items #35990 2025-10-02 16:00:39 -07:00
Riley Bruins
ac15b384a6 refactor(treesitter): use scratch buffer for string parser #35988
This commit changes `languagetree.lua` so that it creates a scratch
buffer under the hood when dealing with string parsers. This will make
it much easier to just use extmarks whenever we need to track injection
trees in `languagetree.lua`. This also allows us to remove the
`treesitter.c` code for parsing a string directly.

Note that the string parser's scratch buffer has `set noeol nofixeol` so
that the parsed source exactly matches the passed in string.
2025-10-02 15:33:18 -07:00
Gregory Anders
8eb0964537 feat(tui): native progress bars for Progress events #35973 2025-10-02 14:51:26 -07:00
zeertzjq
9f33b69cfd vim-patch:cfcf1a5: runtime(doc): Clarify use of "noselect" in 'completeopt'
closes: vim/vim#18452

cfcf1a57cb

Co-authored-by: Girish Palya <girishji@gmail.com>
Co-authored-by: Tomasz N <przepompownia@users.noreply.github.com>
2025-10-02 11:40:36 +08:00