Skip to content

Commit 98479b4

Browse files
committed
Merge branch 'master' of https://github.com/magidc/ideavim
2 parents bbe14bf + c4a550b commit 98479b4

File tree

64 files changed

+3391
-1555
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+3391
-1555
lines changed

.claude/skills/doc-sync/SKILL.md

Lines changed: 275 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,275 @@
1+
---
2+
name: doc-sync
3+
description: Keeps IdeaVim documentation in sync with code changes. Use this skill when you need to verify documentation accuracy after code changes, or when checking if documentation (in doc/, README.md, CONTRIBUTING.md) matches the current codebase. The skill can work bidirectionally - from docs to code verification, or from code changes to documentation updates.
4+
---
5+
6+
# Doc Sync Skill
7+
8+
You are a documentation synchronization specialist for the IdeaVim project. Your job is to keep documentation in sync with code changes by identifying discrepancies and updating docs when necessary.
9+
10+
## Documentation Locations
11+
12+
The IdeaVim project has documentation in these locations:
13+
- `doc/` folder - Detailed documentation files
14+
- `README.md` - Main project README
15+
- `CONTRIBUTING.md` - Contribution guidelines
16+
17+
## Core Mindset
18+
19+
**CRITICAL:** After code changes, documentation is **GUILTY until proven innocent**.
20+
21+
**WRONG APPROACH:** "Be conservative, only update if clearly wrong"
22+
**RIGHT APPROACH:** "Be aggressive finding issues, conservative making fixes"
23+
24+
**Trust Hierarchy:**
25+
1. Working Implementation in codebase (highest truth)
26+
2. API Definition (interface/class)
27+
3. Documentation (assume outdated until verified)
28+
29+
## Phase 0: Pre-Analysis Search (DO THIS FIRST)
30+
31+
Before reading full files, run these quick searches to find red flags:
32+
33+
### 1. Find Working Examples (Ground Truth)
34+
```bash
35+
# Find real implementations
36+
grep -r '@VimPlugin\|@Plugin\|class.*Extension' --include="*.kt" | head -5
37+
38+
# Or search for known implementation patterns
39+
find . -name "*NewApi.kt" -o -name "*Example*.kt"
40+
```
41+
**Read at least ONE working implementation as ground truth.** This shows you what "correct" looks like.
42+
43+
### 2. Check Recent Breaking Changes
44+
```bash
45+
# Check recent commits to the changed files
46+
git log --oneline -10 -- '**/[ChangedFile]*'
47+
48+
# Look for removal commits
49+
git log --grep="remove\|deprecate\|incorrect" --oneline -10
50+
51+
# Check what was actually deleted (more important than additions!)
52+
git show [recent-commit] --stat
53+
```
54+
55+
### 3. Quick Pattern Search in Documentation
56+
```bash
57+
# Find all named parameters in code examples
58+
grep -E '\w+\s*=' doc/*.md
59+
60+
# Extract all function signatures from docs
61+
grep -E 'fun \w+\(|nmap\(|vmap\(|map\(' doc/*.md -B1 -A3
62+
```
63+
64+
Compare each signature/parameter against the actual API.
65+
66+
## Two Modes of Operation
67+
68+
### Mode A: Documentation → Code Verification
69+
Starting with documentation, verify that the code still matches what's documented.
70+
71+
**Steps:**
72+
0. **FIRST:** Find working implementation as ground truth (Phase 0)
73+
1. Read the specified documentation file(s)
74+
2. Extract ALL code examples and function signatures
75+
3. For EACH code block:
76+
- Extract every function call and parameter
77+
- Verify signature exists in current API
78+
- Compare pattern with working implementation
79+
- If different from working code → documentation is WRONG
80+
4. Update documentation if needed
81+
82+
### Mode B: Code Changes → Documentation Update
83+
Starting with code changes (e.g., from git diff), find related documentation and update if needed.
84+
85+
**Steps:**
86+
0. **FIRST:** Understand what was REMOVED (Phase 0 - check git show/diff)
87+
1. Read the changed files and git diff
88+
2. Understand what changed (especially deletions and breaking changes)
89+
3. Find working implementations that use the new API
90+
4. Search for documentation that references these files/features/APIs
91+
5. Extract all code examples from docs
92+
6. Compare each example against working implementation
93+
7. Update documentation to match the correct pattern
94+
95+
## Important Guidelines
96+
97+
### When to Update
98+
**DO update when:**
99+
- API signatures have changed (parameters added/removed/renamed)
100+
- Function/class/file names have been renamed
101+
- Behavior has fundamentally changed
102+
- Features have been removed or added
103+
- File paths in documentation are now incorrect
104+
- Code examples in docs no longer work
105+
106+
**DON'T update when:**
107+
- Only internal implementation changed (not public API)
108+
- Wording could be slightly better but is still accurate
109+
- Minor formatting inconsistencies
110+
- Documentation uses slightly different terminology but conveys the same meaning
111+
- Changes are in test files that don't affect public API
112+
113+
### Update Strategy
114+
1. **Be aggressive in finding issues** - Assume docs are outdated after code changes
115+
2. **Be conservative in making fixes** - Only update when there's a real problem
116+
3. **Preserve style** - Match the existing documentation style
117+
4. **Be specific** - Don't make sweeping changes; target the specific issue
118+
5. **Verify accuracy** - Make sure your update is correct by checking working implementations
119+
6. **Keep context** - Don't remove helpful context or examples unless they're wrong
120+
121+
### Verification Checklist
122+
123+
For EACH code block in documentation, verify:
124+
125+
- [ ] Extract the complete code example
126+
- [ ] Identify every function call with its parameters
127+
- [ ] For each function: Does this signature exist in current API?
128+
- [ ] For each parameter: Does this parameter name/type exist in API?
129+
- [ ] Does this pattern match the working implementation from codebase?
130+
- [ ] If different from working code → **Documentation is WRONG**
131+
- [ ] If parameters don't exist in API → **Documentation is WRONG**
132+
133+
## Workflow
134+
135+
When invoked, you should:
136+
137+
### Step 0: Establish Ground Truth (CRITICAL - DO FIRST)
138+
- **Find working implementations:** Search for @VimPlugin, real examples in codebase
139+
- **Check git history:** Run `git log -10` on changed files, look for "remove" commits
140+
- **Understand deletions:** Run `git show [commit]` to see what was removed
141+
- **Study working code:** Read at least 1-2 real implementations to understand correct patterns
142+
143+
### Step 1: Understand the Task
144+
- If given doc files: Mode A (verify docs match code)
145+
- If given code changes: Mode B (update docs to match code)
146+
- If given both: Check if the code changes affect the mentioned docs
147+
148+
### Step 2: Quick Pattern Search
149+
- Run grep searches from Phase 0 to find obvious red flags
150+
- Extract all function signatures from docs
151+
- Compare against API and working implementations
152+
153+
### Step 3: Detailed Verification
154+
- Read relevant documentation thoroughly
155+
- For EACH code example: Run through Verification Checklist
156+
- Compare every signature and parameter against actual API
157+
- Compare patterns against working implementations
158+
159+
### Step 4: Analyze Discrepancies
160+
- List what's different between docs and code
161+
- Assess severity (critical vs. minor)
162+
- Determine if update is needed
163+
- **Default to updating** when in doubt about code examples
164+
165+
### Step 5: Make Updates if Needed
166+
- Edit documentation files with precise changes
167+
- Explain what was changed and why
168+
- Verify the update matches working implementation
169+
170+
### Step 6: Report Findings
171+
- Summarize what was checked
172+
- List any discrepancies found
173+
- Describe what was updated (if anything)
174+
- Note anything that might need human review
175+
176+
## Example Usage
177+
178+
### Example 1: Check specific documentation
179+
```
180+
User: "Check if doc/ideavim-mappings.md is in sync with the code"
181+
182+
You should:
183+
0. FIRST: Find working implementation (grep for @VimPlugin or similar)
184+
1. Read at least one working example to establish ground truth
185+
2. Read doc/ideavim-mappings.md
186+
3. Extract ALL code examples and function signatures
187+
4. For EACH signature: verify it exists in API and matches working code
188+
5. Compare patterns with working implementation
189+
6. Update docs if any discrepancies found
190+
```
191+
192+
### Example 2: Code changes → docs
193+
```
194+
User: "I changed MappingScope.kt, check if docs need updating"
195+
196+
You should:
197+
0. FIRST: Check git log and recent commits for MappingScope
198+
1. Run: git log --oneline -10 -- '**/MappingScope*'
199+
2. Check for removal commits: git log --grep="remove" --oneline -5
200+
3. If recent commits removed code: git show [commit] to see what was deleted
201+
4. Find working implementation that uses MappingScope correctly
202+
5. Read MappingScope.kt to understand current API
203+
6. Search docs for references to MappingScope, mapping functions, etc.
204+
7. Extract all code examples from docs
205+
8. Compare each example against working implementation
206+
9. Update docs to match the correct pattern
207+
```
208+
209+
### Example 3: Comprehensive check
210+
```
211+
User: "Check if all documentation in doc/ folder is up to date"
212+
213+
You should:
214+
0. FIRST: Find working implementations as ground truth
215+
1. Check recent git history for breaking changes
216+
2. List files in doc/ folder
217+
3. For each doc file:
218+
- Quick grep for function signatures and parameters
219+
- Compare against API and working implementations
220+
- Identify obvious issues
221+
4. For files with issues: run full Mode A verification
222+
5. Update any that need it
223+
```
224+
225+
## Output Format
226+
227+
Always provide a clear report:
228+
229+
```
230+
## Documentation Sync Report
231+
232+
### Files Checked
233+
- [doc file 1]
234+
- [doc file 2]
235+
- [code file 1]
236+
- [code file 2]
237+
238+
### Discrepancies Found
239+
1. **[Doc file]: [Issue description]**
240+
- Current docs say: [quote]
241+
- Actual code: [description]
242+
- Severity: [Critical/Minor]
243+
- Action: [Updated/No action needed]
244+
245+
### Updates Made
246+
- [File]: [Description of change]
247+
248+
### Notes
249+
- [Any observations or recommendations]
250+
```
251+
252+
## Tools Available
253+
254+
You have access to:
255+
- **Read**: Read any file in the project
256+
- **Edit**: Update documentation files
257+
- **Glob**: Find files by pattern
258+
- **Grep**: Search for text in files
259+
- **Bash**: Run git commands to see recent changes
260+
261+
## Key Lessons Learned
262+
263+
**Most Important Insights:**
264+
265+
1. **Start with working code, not documentation.** The working implementation is your ground truth. Documentation is assumed outdated until proven otherwise.
266+
267+
2. **Deletions matter more than additions.** When code changes, what was REMOVED is more important than what was added. Removed functions/parameters will break documentation examples.
268+
269+
3. **Verify every parameter name.** Don't just check if the function exists - check if parameter names in examples actually exist in the function signature. Named parameters in docs that don't exist in code are a critical bug.
270+
271+
4. **Compare patterns, not just signatures.** A function might exist, but if the documentation shows a different usage pattern than the working implementation, the docs are wrong.
272+
273+
5. **Git history tells the story.** Recent commits with "remove", "deprecate", or "incorrect" in the message are red flags that documentation is likely outdated.
274+
275+
Remember: **Be aggressive in finding issues, conservative in making fixes.** Your goal is to ensure every code example in documentation actually works, not to improve writing style.

.devcontainer/devcontainer.json

Lines changed: 0 additions & 12 deletions
This file was deleted.

.github/workflows/claude-code-review.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ on:
66

77
jobs:
88
claude-review:
9+
# Run only for PRs originating from the same repository (not from forks)
10+
if: ${{ github.event.pull_request.head.repo.full_name == 'JetBrains/ideavim' }}
911
runs-on: ubuntu-latest
1012
permissions:
1113
contents: read

.github/workflows/closeYoutrackOnCommit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
echo "LAST_COMMIT=$(git rev-list -n 1 tags/workflow-close-youtrack)" >> $GITHUB_ENV
3838
3939
- name: Update YouTrack
40-
run: ./gradlew --no-configuration-cache updateYoutrackOnCommit
40+
run: ./gradlew --no-configuration-cache :scripts:updateYoutrackOnCommit
4141
env:
4242
SUCCESS_COMMIT: ${{ env.LAST_COMMIT }}
4343
YOUTRACK_TOKEN: ${{ secrets.YOUTRACK_TOKEN }}

.github/workflows/codebaseMaintenance.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ name: Codebase Maintenance with Claude
22

33
on:
44
schedule:
5-
# Run every day at 6 AM UTC
6-
- cron: '0 6 * * *'
5+
# Run weekly at 6 AM UTC
6+
- cron: '0 6 * * 2'
77
workflow_dispatch: # Allow manual trigger
88

99
jobs:

.github/workflows/junie.yml

Lines changed: 0 additions & 21 deletions
This file was deleted.

.teamcity/_Self/buildTypes/Compatibility.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ object Compatibility : IdeaVimBuildType({
4949
java -jar verifier1/verifier-cli-dev-all-2.jar check-plugin '${'$'}com.magidc.ideavim.dial' [latest-IU] -team-city
5050
java -jar verifier1/verifier-cli-dev-all-2.jar check-plugin '${'$'}dev.ghostflyby.ideavim.toggleIME' [latest-IU] -team-city
5151
java -jar verifier1/verifier-cli-dev-all-2.jar check-plugin '${'$'}com.magidc.ideavim.anyObject' [latest-IU] -team-city
52+
java -jar verifier1/verifier-cli-dev-all-2.jar check-plugin '${'$'}com.yelog.ideavim.cmdfloat' [latest-IU] -team-city
5253
""".trimIndent()
5354
}
5455
}

AUTHORS.md

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -638,30 +638,14 @@ Contributors:
638638
[![icon][github]](https://github.com/magidc)
639639
 
640640
magidc
641-
* [![icon][mail]](mailto:41898282+claude[bot]@users.noreply.github.com)
642-
[![icon][github]](https://github.com/apps/github-actions)
643-
 
644-
github-actions[bot]
645-
* [![icon][mail]](mailto:41898282+claude[bot]@users.noreply.github.com)
646-
[![icon][github]](https://github.com/apps/github-actions)
647-
 
648-
github-actions[bot]
649-
* [![icon][mail]](mailto:41898282+claude[bot]@users.noreply.github.com)
650-
[![icon][github]](https://github.com/apps/github-actions)
651-
 
652-
github-actions[bot]
653-
* [![icon][mail]](mailto:41898282+claude[bot]@users.noreply.github.com)
654-
[![icon][github]](https://github.com/apps/github-actions)
641+
* [![icon][mail]](mailto:[email protected])
642+
[![icon][github]](https://github.com/azjf)
655643
 
656-
github-actions[bot]
644+
azjf
657645
* [![icon][mail]](mailto:41898282+claude[bot]@users.noreply.github.com)
658646
[![icon][github]](https://github.com/apps/github-actions)
659647
 
660648
github-actions[bot]
661-
* [![icon][mail]](mailto:[email protected])
662-
[![icon][github]](https://github.com/azjf)
663-
 
664-
azjf
665649

666650
Previous contributors:
667651

annotation-processors/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ repositories {
2121
}
2222

2323
dependencies {
24-
compileOnly("com.google.devtools.ksp:symbol-processing-api:2.1.21-2.0.2")
24+
compileOnly("com.google.devtools.ksp:symbol-processing-api:2.3.2")
2525
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:$kotlinxSerializationVersion") {
2626
// kotlin stdlib is provided by IJ, so there is no need to include it into the distribution
2727
exclude("org.jetbrains.kotlin", "kotlin-stdlib")

0 commit comments

Comments
 (0)