Commit Graph
10562 Commits
Author SHA1 Message Date
Alex Plate e407d9ebad Add beads workflow tracking 2026-01-13 07:18:38 +02:00
Alex PlateandClaude Opus 4.5 275475755d Add --console=plain note for gradle tasks in CLAUDE.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 07:09:37 +02:00
Alex PlateandClaude Opus 4.5 9ef7ce1d36 Add Neovim installation to Claude Code workflows
Install Neovim in workflows that run tests:
- testsMaintenance.yml: deals with @TestWithoutNeovim annotations
- codebaseMaintenance.yml: can run gradle tests
- youtrackAutoAnalysis.yml: uses TDD for bug fixes and features

Also add guidance in testsMaintenance to verify actual Neovim behavior
when working with skip reasons, and allow nvim/echo bash commands.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 07:05:27 +02:00
Claude 381dc2684b Remove unused SkipNeovimReason.CMD
This enum value had no documentation, a vague name, and was not used
anywhere in the codebase.
2026-01-13 06:43:22 +02:00
Alex PlateandClaude Opus 4.5 26154061f7 Add clear output when Neovim testing is enabled
Print "NEOVIM TESTING ENABLED" message when running tests with -Dnvim
flag so AI can verify Neovim testing is actually active.

Also fix skill documentation to use correct -Dnvim flag.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 14:04:43 +02:00
Alex PlateandClaude Opus 4.5 fa2b54bc2d Deprecate SkipNeovimReason.UNCLEAR
Similar to DIFFERENT, UNCLEAR is too vague and should be replaced
with a more specific reason after investigation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 14:00:59 +02:00
Alex PlateandClaude Opus 4.5 85ccfcd4b0 Add instructions for handling deprecated DIFFERENT annotation
Document the process for tests-maintenance skill:
1. Try removing annotation and running with Neovim first
2. If test passes, remove the outdated annotation
3. If test fails, replace with a more specific reason

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 13:58:56 +02:00
Alex PlateandClaude Opus 4.5 3c967d1f03 Fix Neovim test annotations in SearchGroupTest
- Change `test negative lookbehind regression` to use IDEAVIM_API_USED
  (test uses internal search() helper that calls VimPlugin API directly)
- Remove outdated TestWithoutNeovim annotations from 5 tests that now
  pass with Neovim: smartcase/ignorecase search tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 13:55:04 +02:00
Alex PlateandClaude Opus 4.5 47215cfda1 Deprecate SkipNeovimReason.DIFFERENT in favor of more specific reasons
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 13:55:04 +02:00
Alex PlateandClaude Opus 4.5 20f86bc0b4 Add explanations for disabled tests in MultipleCaretsTest
Document why each disabled test is disabled:
- testCopyVisualText: CopyTextCommand processes carets sequentially,
  causing document shifts that corrupt subsequent caret operations
- testPutVisualLines: Multi-caret :put with visual selection only
  processes one caret (also fixed invokeAndWait wrapper)
- testMoveText* tests: MoveTextCommand explicitly throws exception
  for multiple carets

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 13:55:04 +02:00
claude[bot]andClaude Sonnet 4.5 7fa5ebb80c Update changelog: Add VimScript functions, fix high CPU
Added changelog entries for:
- New VimScript functions (20+ List/Dictionary/String functions)
- High CPU usage fix while showing command line
- String/Number comparison fix in VimScript

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-12 13:47:56 +02:00
Matt Ellis 9bffb4f42f Fix min arity for remove() function 2026-01-09 19:12:27 +02:00
Matt Ellis 3cdea85df4 Move common functions to collectionFunctions
Add a new package for functions that apply to both List and Dictionary, as well as some String functions (where a String is treated like a collection of characters). Trying to group some functions that shouldn't just sit at top level
2026-01-09 19:12:27 +02:00
Matt Ellis cc1122b3b6 Rename file 2026-01-09 19:12:27 +02:00
Matt Ellis 5adff67ec8 Add List uniq() function 2026-01-09 19:12:27 +02:00
Matt Ellis 8340be8459 Add List sort() function 2026-01-09 19:12:27 +02:00
Matt Ellis 9fbee06890 Add filter() function 2026-01-09 19:12:27 +02:00
Matt Ellis 4bf947a143 Fix comparison of String and Number 2026-01-09 19:12:27 +02:00
Matt Ellis 5225c409d8 Add List reduce() function 2026-01-09 19:12:27 +02:00
Matt Ellis 17eddab2ac Add map() and mapnew() functions 2026-01-09 19:12:27 +02:00
Matt Ellis 00fee97117 Add List indexof() function 2026-01-09 19:12:27 +02:00
Matt Ellis fd9b283df1 Add call() function
Vim lists call() as part of List functions. We document it the same way so we can cross-reference, but it's not really a List function, so it's implemented with varFunctions
2026-01-09 19:12:27 +02:00
Matt Ellis e6b863f1ca Add List+Dictionary foreach() function 2026-01-09 19:12:27 +02:00
Matt Ellis ea209d5c94 Refactor function and funcref functions 2026-01-09 19:12:27 +02:00
Matt Ellis 88fa7c2a29 Add doc comment 2026-01-09 19:12:27 +02:00
Matt Ellis 648cebf8d5 Encapsulate calling named function 2026-01-09 19:12:27 +02:00
Matt Ellis e2adf0af51 Handle range for builtin functions 2026-01-09 19:12:27 +02:00
Matt Ellis 1333051ad8 Make range an argument instead of a field 2026-01-09 19:12:27 +02:00
Matt Ellis bd0edb01b6 Introduce BuiltinFunctionHandler base class 2026-01-09 19:12:27 +02:00
Matt Ellis 0f9923128d Update doc comment 2026-01-09 19:12:27 +02:00
Matt Ellis 7600d96d0a Improve handling of dictionary functions
VimFuncref is no longer mutable, since the instance can be shared between variables. A dictionary function must be invoked with a Funcref that captures the dictionary; when accessing a dictionary entry that is a function, the returned value is a newly created partial function that captures the dictionary. This helps fix some issues when printing a dictionary and/or dictionary function with `echo`, including a stack overflow.
2026-01-09 19:12:27 +02:00
Matt Ellis 5e5005f068 Rename FunctionCallExpression for clarity 2026-01-09 19:12:27 +02:00
Matt Ellis 603d7bc886 Remove function from public API 2026-01-09 19:12:27 +02:00
Matt Ellis 1f4e8f110e Fix missing parameter for resource 2026-01-09 19:12:27 +02:00
Matt Ellis 5e74cfdad7 Rename file 2026-01-09 19:12:27 +02:00
Matt Ellis df48c41904 Add List flattennew() function 2026-01-09 19:12:27 +02:00
Matt Ellis 95d3aad9ff Add List flatten() function 2026-01-09 19:12:27 +02:00
Matt Ellis 1afd730083 Add error handling to reverse() function 2026-01-09 19:12:27 +02:00
Matt Ellis 3e23903d95 Rename file 2026-01-09 19:12:27 +02:00
Matt Ellis 5d4dd891e6 Add List+Dictionary extendnew() function 2026-01-09 19:12:27 +02:00
Matt Ellis f27cafbae3 Add List+Dictionary extend() function 2026-01-09 19:12:27 +02:00
Matt Ellis e1ddf7780f Add List+String slice() function 2026-01-09 19:12:27 +02:00
Matt Ellis 4103291d1a Add List+Dictionary+String items() function 2026-01-09 19:12:27 +02:00
Matt Ellis 727b94e6ff Add Dictionary values() function 2026-01-09 19:12:27 +02:00
Matt Ellis d07a154a77 Add Dictionary keys() function 2026-01-09 19:12:27 +02:00
Matt Ellis 94736d2339 Add List+Dictionary remove() function 2026-01-09 19:12:27 +02:00
Matt Ellis dc335e5178 Add List insert() function 2026-01-09 19:12:27 +02:00
Matt Ellis 52a1774f11 Add Dictionary has_key() function 2026-01-09 19:12:27 +02:00
Matt Ellis 6f553ec3c0 Add List add() function 2026-01-09 19:12:27 +02:00
Matt Ellis ed50fa28f5 Refactor argument handling for functions 2026-01-09 19:12:27 +02:00