Commit Graph
10430 Commits
Author SHA1 Message Date
Matt Ellis 115937f642 Consolidate unary expressions 2025-11-07 15:56:39 +02:00
Matt Ellis 3278b5e8cf Add tests for expression precedence 2025-11-07 15:56:39 +02:00
Matt Ellis 5d96a682f6 Fix test base classes 2025-11-07 15:56:39 +02:00
Matt Ellis 63cbb5b736 Fix use of is operator as variable name 2025-11-07 15:56:39 +02:00
Matt Ellis fc6f2905be Fix is and isnot operators
The parser was treating `is` and `isnot` as identifiers instead of operators
2025-11-07 15:56:39 +02:00
claude[bot]andClaude dec2a89643 Remove dead code from VimStateMachineImpl
The companion function `modeToMappingMode` was not used anywhere in the codebase.
The extension function `toMappingMode()` serves the same purpose and is used throughout.
Also removed unused import and extra blank line for cleaner code formatting.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 15:14:35 +02:00
claude[bot]andClaude 3f2b716e72 Remove unused VimEditorGroupBase class
VimEditorGroupBase has been unused since its creation in April 2022. Unlike other
*Base classes in the api package (VimApplicationBase, VimMessagesBase, etc.),
VimEditorGroupBase is never extended. The actual EditorGroup implementation
directly implements the VimEditorGroup interface instead of extending this base class.

This removal cleans up dead code and reduces maintenance overhead.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 15:12:26 +02:00
Alex Plate a1032c55c0 Adjust codebase maintenance cron schedule to run weekly 2025-11-07 15:11:01 +02:00
dependabot[bot] e98ad5aff3 Bump org.junit.jupiter:junit-jupiter from 6.0.0 to 6.0.1
Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.0.0...r6.0.1)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 17:38:16 +02:00
dependabot[bot] b76c242af5 Bump com.squareup.okhttp3:okhttp from 5.0.0 to 5.3.0
Bumps [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) from 5.0.0 to 5.3.0.
- [Changelog](https://github.com/square/okhttp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/square/okhttp/compare/parent-5.0.0...parent-5.3.0)

---
updated-dependencies:
- dependency-name: com.squareup.okhttp3:okhttp
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 17:19:51 +02:00
dependabot[bot] 86cc1259ad Bump io.ktor:ktor-serialization-kotlinx-json from 3.3.1 to 3.3.2
Bumps [io.ktor:ktor-serialization-kotlinx-json](https://github.com/ktorio/ktor) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/3.3.1...3.3.2)

---
updated-dependencies:
- dependency-name: io.ktor:ktor-serialization-kotlinx-json
  dependency-version: 3.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 17:19:36 +02:00
dependabot[bot] 9dc3c341bd Bump org.junit.vintage:junit-vintage-engine from 6.0.0 to 6.0.1
Bumps [org.junit.vintage:junit-vintage-engine](https://github.com/junit-team/junit-framework) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.0.0...r6.0.1)

---
updated-dependencies:
- dependency-name: org.junit.vintage:junit-vintage-engine
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 17:19:14 +02:00
dependabot[bot] 7e27c1eb92 Bump org.junit:junit-bom from 6.0.0 to 6.0.1
Bumps [org.junit:junit-bom](https://github.com/junit-team/junit-framework) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.0.0...r6.0.1)

---
updated-dependencies:
- dependency-name: org.junit:junit-bom
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 17:18:32 +02:00
dependabot[bot] 3024c21f86 Bump org.jetbrains.kotlin:kotlin-stdlib from 2.2.20 to 2.2.21
Bumps [org.jetbrains.kotlin:kotlin-stdlib](https://github.com/JetBrains/kotlin) from 2.2.20 to 2.2.21.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.20...v2.2.21)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-stdlib
  dependency-version: 2.2.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 02:34:14 +02:00
dependabot[bot] fdb8642e28 Bump org.eclipse.jgit:org.eclipse.jgit.ssh.apache
Bumps [org.eclipse.jgit:org.eclipse.jgit.ssh.apache](https://github.com/eclipse-jgit/jgit) from 7.3.0.202506031305-r to 7.4.0.202509020913-r.
- [Commits](https://github.com/eclipse-jgit/jgit/compare/v7.3.0.202506031305-r...v7.4.0.202509020913-r)

---
updated-dependencies:
- dependency-name: org.eclipse.jgit:org.eclipse.jgit.ssh.apache
  dependency-version: 7.4.0.202509020913-r
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 02:17:44 +02:00
dependabot[bot] 731cf6fdfa Bump org.jetbrains.intellij.platform from 2.9.0 to 2.10.2
Bumps org.jetbrains.intellij.platform from 2.9.0 to 2.10.2.

---
updated-dependencies:
- dependency-name: org.jetbrains.intellij.platform
  dependency-version: 2.10.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 02:17:16 +02:00
dependabot[bot] 398eba76ff Bump io.ktor:ktor-serialization-kotlinx-json from 3.3.0 to 3.3.1
Bumps [io.ktor:ktor-serialization-kotlinx-json](https://github.com/ktorio/ktor) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/3.3.0...3.3.1)

---
updated-dependencies:
- dependency-name: io.ktor:ktor-serialization-kotlinx-json
  dependency-version: 3.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 02:16:57 +02:00
dependabot[bot] 3be99ba2e6 Bump com.google.devtools.ksp:symbol-processing-api
Bumps [com.google.devtools.ksp:symbol-processing-api](https://github.com/google/ksp) from 2.1.21-2.0.2 to 2.3.0.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.1.21-2.0.2...2.3.0)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp:symbol-processing-api
  dependency-version: 2.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 02:16:31 +02:00
Alex Plate 77a83d779a Pass project directory as argument to integrationsTest
- Updated `integrationsTest` script to accept project directory as an argument.
- Modified `build.gradle.kts` to pass project root directory to the `integrationsTest` task.
- Improved flexibility and reusability by allowing dynamic project directory input.
2025-10-29 13:24:44 +02:00
Alex Plate 46b0769bb9 Remove YouTrack-related logic and cleanup build.gradle.kts
- Removed all YouTrack-related helper functions from `build.gradle.kts`.
- Simplified the build script by eliminating unused code and redundant tasks.
- Improved maintainability by reducing script complexity.
2025-10-27 12:10:37 +02:00
Alex Plate ebac7f458e Refactor integrationsTest into a standalone Kotlin script
- Moved `integrationsTest` logic from `build.gradle.kts` to `scripts/integrationsTest.kt`.
- Registered `integrationsTest` as a `JavaExec` task in `scripts/build.gradle.kts`.
- Improved modularity by isolating test logic into a dedicated script.
- Simplified task structure and maintained existing functionality.
2025-10-27 12:02:39 +02:00
Alex Plate 3e28cecab1 Refactor releaseActions into a standalone Kotlin script and improve YouTrack integration
- Extracted `releaseActions` logic from `build.gradle.kts` into `scripts/releaseActions.kt`.
- Registered `releaseActions` as a `JavaExec` task in `scripts/build.gradle.kts`.
- Added helper functions for YouTrack version management (`addReleaseToYoutrack`, `getVersionIdByName`, `setYoutrackFixVersion`, etc.).
- Simplified coroutine usage and modularized task logic for maintainability.
2025-10-27 11:59:14 +02:00
Alex Plate 80454c7f2d Refactor changelog update logic into standalone Kotlin script
- Extracted `updateChangelog` functionality from `build.gradle.kts` into `scripts/updateChangelog.kt`.
- Registered `updateChangelog` as a `JavaExec` task in `scripts/build.gradle.kts`.
- Improved modularity and reusability by isolating changelog update logic.
- Consolidated shared changelog utilities in `scripts/changelogUtils.kt`.
2025-10-27 11:49:06 +02:00
Alex Plate 65ed2b2f7a Refactor updateMergedPr into a standalone Kotlin script
- Extracted `updateMergedPr` logic from `build.gradle.kts` into `scripts/updateMergedPr.kt`.
- Registered `updateMergedPr` as a `JavaExec` task in `scripts/build.gradle.kts`.
- Improved modularity and reusability by moving update logic to a dedicated script.
- Updated task to accept arguments for `prId` and project directory.
2025-10-27 11:43:05 +02:00
Alex Plate 588dd56679 Refactor updateAuthors functionality into a standalone Kotlin script
- Extracted `updateAuthors` logic from `build.gradle.kts` into `scripts/updateAuthors.kt`.
- Registered `updateAuthors` as a `JavaExec` task in `scripts/build.gradle.kts`.
- Updated dependencies to include required libraries (`github-api` and `markdown`).
- Improved modularity and reusability of the `updateAuthors` implementation.
2025-10-27 11:39:33 +02:00
Alex Plate b6808aee17 Extract Slack notification functionality into a standalone Kotlin script
- Moved `slackNotification` logic from `build.gradle.kts` to `scripts/slackNotification.kt`.
- Refactored notification handling for better modularity and reusability.
- Added task registration in `scripts/build.gradle.kts` to execute the standalone script.
- Updated dependencies to include `mark-down-to-slack` for Slack message formatting.
2025-10-27 11:33:17 +02:00
Alex Plate db277e3d2b Add new IdeaVim plugin dependency for vim-cmdfloat and update compatibility checks 2025-10-27 11:25:40 +02:00
Alex Plate 0b512dc293 Refactor YouTrack update script for better modularity and task integration
- Replaced `updateYoutrackOnCommit` function in build script with a dedicated Kotlin `main()` entry point.
- Simplified task registration with `JavaExec` in `scripts/build.gradle.kts`.
- Integrated argument support for specifying project directory.
- Removed duplicate and redundant code for Change processing.
- Adjusted GitHub workflow to use the new task structure.
2025-10-27 11:17:46 +02:00
Alex Plate 5edf6ea857 Skip github-actions bot emails and clean up AUTHORS.md
- Exclude emails from github-actions bot in the build script.
- Remove redundant github-actions bot entries from AUTHORS.md.
2025-10-27 11:06:27 +02:00
Alex Plate 9d2e3b102a Improve doc-sync skill based on lessons learned
The skill was too passive and didn't guide me to find documentation issues
proactively. Updated based on the MappingScope documentation sync experience.

Key improvements:
- Add "Phase 0: Pre-Analysis Search" to find red flags before deep reading
- Establish "ground truth" from working implementations first
- Change mindset from "be conservative" to "be aggressive finding issues"
- Add explicit checklist for verifying each code example
- Emphasize checking what was REMOVED (deletions matter more than additions)
- Add step-by-step workflow with git history checks
- Include "Key Lessons Learned" section with critical insights

The skill now prioritizes finding working code as ground truth and assumes
documentation is outdated after code changes, rather than assuming it's
correct until proven otherwise.
2025-10-27 11:00:05 +02:00
Alex Plate d5b0896e7f Fix Plugin API documentation to use correct mapping signatures
The documentation was showing incorrect function signatures with non-existent
parameters (keys, label, isRepeatable) and not following the 2-step <Plug>
mapping pattern established in d288a52ef.

Changes:
- Remove non-existent parameters from all mapping examples
- Update all examples to use the correct 2-step pattern:
  1. nnoremap("<Plug>...") for non-recursive <Plug> → action mappings
  2. nmap("key", "<Plug>...") for recursive key → <Plug> mappings
- Add explanation of the 2-step pattern and its benefits in the tutorial
- Remove non-existent shortPath parameter from @VimPlugin annotation

This ensures documentation matches the actual MappingScope API and teaches
users the best practice pattern for creating mappings that can be overridden
in .ideavimrc.
2025-10-27 11:00:05 +02:00
Alex Plate 163bbe3935 Add doc-sync skill for documentation synchronization
Create a new agent skill that keeps IdeaVim documentation in sync with code
changes. The skill can work bidirectionally:

- Mode A: Verify documentation matches current code
- Mode B: Update documentation after code changes

Features:
- Checks doc/, README.md, and CONTRIBUTING.md
- Conservative updates (only when truly needed)
- Identifies API changes, renamed functions, behavior changes
- Provides structured reports of findings and updates

The skill follows proper formatting with YAML frontmatter and is located
in .claude/skills/doc-sync/SKILL.md as per Claude Code conventions.
2025-10-27 11:00:05 +02:00
Alex Plate 2de7394aa6 Add hasmapto functions for all modes
Implement mode-specific hasmapto functions following the MappingScope style:
- hasmapto() - checks nvo modes
- nhasmapto() - checks normal mode
- vhasmapto() - checks visual mode
- xhasmapto() - checks visual exclusive mode
- shasmapto() - checks select mode
- ohasmapto() - checks operator pending mode
- ihasmapto() - checks insert mode
- chasmapto() - checks command line mode

These functions check if any mapping exists that maps TO the given string,
which is essential for plugins to detect if users have already mapped to
their <Plug> mappings. This enables the common pattern: "only create default
key mapping if user hasn't already mapped to the <Plug> mapping".

Implementation delegates to VimKeyGroup.hasmapto().
2025-10-27 11:00:05 +02:00
Alex Plate 4c8c1cfcf2 Fix map/noremap/unmap to only affect nvo modes
The map/noremap/unmap functions should only affect Normal, Visual, Select,
and Operator-pending modes (nvo), not all modes including Insert and
Command-line. This matches Vim's behavior where :map affects nvo modes only.

Changed from MappingMode.ALL to MappingMode.NVO.
2025-10-27 11:00:04 +02:00
Alex Plate 2c383b4ad8 Reorganize MappingScope functions by mode type
Group mapping functions by mode instead of by operation type for better
organization and readability. Each mode group now contains:
- Recursive mapping (map variants)
- Non-recursive mapping (noremap variants)
- Unmap function

Order: map, nmap, vmap, xmap, smap, omap, imap, cmap

This makes the API more discoverable and easier to navigate.
2025-10-27 11:00:04 +02:00
Alex Plate e71e9714c2 Remove incorrect 3-argument mapping functions from API
The 3-argument mapping functions (e.g., nmap(keys, actionName, action)) had
incorrect implementation that used recursive mappings for both sub-mappings.
Also, this approach makes it impossible to implement other mapping features
such as skipping mapping registration if the mapping is already defined in
.ideavimrc.

A different solution for convenient mapping patterns will be implemented later.

Changes:
- Remove 16 three-argument function declarations from MappingScope interface
- Remove 16 three-argument function implementations from MappingScopeImpl
- Update ReplaceWithRegister plugins to use correct 2-step pattern:
  1. nnoremap("<Plug>...") for non-recursive <Plug> → action
  2. nmap("key", "<Plug>...") for recursive key → <Plug>

Total: 374 lines deleted, 18 lines added
2025-10-27 11:00:03 +02:00
IdeaVim Bot 80f30f3f20 Add github-actions[bot], azjf to contributors list 2025-10-25 09:01:55 +00:00
Xinhe Wang 7b561bc275 Support hints for status bar widgets
The project switching and version control menus in the top-left corner remain unavailable due to accessibility issues (failure to implement the Accessible interface, specifically) with the ToolbarComboButton component in the IntelliJ platform.
2025-10-24 15:41:30 +03:00
Xinhe Wang 057a54c63d Specify hint action in HintGenerator instead of actionPerformed 2025-10-24 15:41:30 +03:00
Xinhe Wang 5893718c1b Click target center instead of invoking accessible action if hint is selected 2025-10-24 15:41:30 +03:00
chylexandAlex Plãte 1a8d5e0b66 Improve support for recording macros with code completion (#1332)
Fixes wrong recorded inputs when code completion introduces an import.

Fixes wrong recorded inputs when completing a static member with a partial type name. Example: `WiE.A` -> `WindowEvent.ACTION_EVENT_MASK`

Co-authored-by: Alex Plãte <aleksei.plate@jetbrains.com>
2025-10-24 15:24:43 +03:00
claude[bot]andClaude cc3c132ccb Maintenance: Java tests - Improve null safety in fold region handling
Replace unsafe non-null assertions (!!) with explicit null checks that provide
meaningful error messages when fold regions are not found. This makes test
failures easier to debug by clearly indicating what was expected.

Changes:
- ChangeActionJavaTest: Fixed 4 instances in testInsertAfterToggleFold and testInsertBeforeFold
- VisualInsertActionJavaTest: Fixed 1 instance in test block insert after folds

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 14:39:39 +03:00
claude[bot]andAlex Plãte 13fb2d53f1 Maintenance: LenFunctionTest - Address review feedback
- Remove duplicate empty dictionary test (already covered at line 28)
- Rename 'test len with zero' to 'test len with zero number' for clarity
- Rename 'test len with negative number' to 'test len with negative numbers' (plural)

Co-authored-by: Alex Plãte <AlexPl292@users.noreply.github.com>
2025-10-24 14:38:49 +03:00
claude[bot]andClaude c803a1cf24 Maintenance: LenFunctionTest - Add comprehensive edge case coverage
What was inspected:
- LenFunctionTest.kt and its corresponding implementation LenFunctionHandler.kt

Issues found:
- Test coverage was limited to basic happy path scenarios
- Missing tests for important edge cases: empty strings, zero, negative numbers,
  large numbers, empty collections, and special character handling
- No tests distinguishing between single-quoted and double-quoted string behavior
  in Vimscript

Changes made:
- Added 9 new test methods covering:
  * Empty strings (both single and double quoted)
  * Empty lists and dictionaries
  * Zero and negative numbers
  * Large numbers
  * Multi-element collections
  * Strings with escape sequences (documenting Vim's single vs double quote behavior)

Why this improves the code:
- Ensures len() function handles all data type edge cases correctly
- Documents expected behavior for Vimscript string quoting conventions
- Provides regression protection against future changes
- Aligns with testing best practices by covering boundary conditions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 14:38:49 +03:00
Alex Plate 1d60e47bb8 Remove the PR pre-fetch 2025-10-24 14:38:37 +03:00
Alex Plate 664c433ee9 Add test for Visual mode inclusive caret positioning in templates
Adds a test to verify that when using 'idearefactormode=visual' with
inclusive selection (default), the caret is correctly positioned at the
inclusive end of the selection (on the last character) rather than the
exclusive end (after the last character).

This test covers the caret adjustment logic in IdeaSpecifics.kt that
moves the caret from IntelliJ's exclusive end position to Vim's
inclusive end position for Visual mode when 'selection' doesn't contain
"exclusive".
2025-10-24 14:32:03 +03:00
Alex Plate 67a44b4d25 Fix boundary check and null safety in mapleader parsing
Adds length validation before accessing string indices and replaces unsafe
!! operator with proper null handling to prevent crashes on invalid mapleader values.
2025-10-24 14:31:23 +03:00
Matt Ellis b4915d08cd Remove redundant code
The template listener is called immediately for the first variable, which will do the same thing.
2025-10-24 14:29:58 +03:00
Matt Ellis 6b7b18d947 Switch to Normal when accepting an inline rename
The 'idearefactormode' default of Select would leave an inline rename in Insert mode, and hitting Escape to return to Normal frequently cancelled the rename.

Also fixes various edge cases when moving between template variables. Often, this works due to a change in selection, but if there's an empty template variable and no current selection, there's no change in selection, and the mode isn't updated.
2025-10-24 14:29:58 +03:00
Matt Ellis 54cc89f641 Fix missing read action exceptions 2025-10-24 14:29:58 +03:00