docrev 0.9.11 → 0.9.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/.claude/settings.local.json +9 -9
  2. package/.gitattributes +1 -1
  3. package/CHANGELOG.md +149 -149
  4. package/PLAN-tables-and-postprocess.md +850 -850
  5. package/README.md +391 -391
  6. package/bin/rev.js +11 -11
  7. package/bin/rev.ts +145 -145
  8. package/completions/rev.bash +127 -127
  9. package/completions/rev.ps1 +210 -210
  10. package/completions/rev.zsh +207 -207
  11. package/dev_notes/stress2/build_adversarial.ts +186 -186
  12. package/dev_notes/stress2/drift_matcher.ts +62 -62
  13. package/dev_notes/stress2/probe_anchors.ts +35 -35
  14. package/dev_notes/stress2/project/discussion.before.md +3 -3
  15. package/dev_notes/stress2/project/discussion.md +3 -3
  16. package/dev_notes/stress2/project/methods.before.md +20 -20
  17. package/dev_notes/stress2/project/methods.md +20 -20
  18. package/dev_notes/stress2/project/rev.yaml +5 -5
  19. package/dev_notes/stress2/project/sections.yaml +4 -4
  20. package/dev_notes/stress2/sections.yaml +5 -5
  21. package/dev_notes/stress2/trace_placement.ts +50 -50
  22. package/dev_notes/stresstest_boundaries.ts +27 -27
  23. package/dev_notes/stresstest_drift_apply.ts +43 -43
  24. package/dev_notes/stresstest_drift_compare.ts +43 -43
  25. package/dev_notes/stresstest_drift_v2.ts +54 -54
  26. package/dev_notes/stresstest_inspect.ts +54 -54
  27. package/dev_notes/stresstest_pstyle.ts +55 -55
  28. package/dev_notes/stresstest_section_debug.ts +23 -23
  29. package/dev_notes/stresstest_split.ts +70 -70
  30. package/dev_notes/stresstest_trace.ts +19 -19
  31. package/dev_notes/stresstest_verify_no_overwrite.ts +40 -40
  32. package/dist/lib/build.d.ts +50 -1
  33. package/dist/lib/build.d.ts.map +1 -1
  34. package/dist/lib/build.js +80 -30
  35. package/dist/lib/build.js.map +1 -1
  36. package/dist/lib/commands/build.d.ts.map +1 -1
  37. package/dist/lib/commands/build.js +38 -5
  38. package/dist/lib/commands/build.js.map +1 -1
  39. package/dist/lib/commands/utilities.js +164 -164
  40. package/dist/lib/commands/word-tools.js +8 -8
  41. package/dist/lib/grammar.js +3 -3
  42. package/dist/lib/import.d.ts.map +1 -1
  43. package/dist/lib/import.js +146 -24
  44. package/dist/lib/import.js.map +1 -1
  45. package/dist/lib/pdf-comments.js +44 -44
  46. package/dist/lib/plugins.js +57 -57
  47. package/dist/lib/pptx-themes.js +115 -115
  48. package/dist/lib/spelling.js +2 -2
  49. package/dist/lib/templates.js +387 -387
  50. package/dist/lib/themes.js +51 -51
  51. package/dist/lib/types.d.ts +20 -0
  52. package/dist/lib/types.d.ts.map +1 -1
  53. package/dist/lib/word-extraction.d.ts +6 -0
  54. package/dist/lib/word-extraction.d.ts.map +1 -1
  55. package/dist/lib/word-extraction.js +46 -3
  56. package/dist/lib/word-extraction.js.map +1 -1
  57. package/dist/lib/wordcomments.d.ts.map +1 -1
  58. package/dist/lib/wordcomments.js +23 -5
  59. package/dist/lib/wordcomments.js.map +1 -1
  60. package/eslint.config.js +27 -27
  61. package/lib/anchor-match.ts +276 -276
  62. package/lib/annotations.ts +644 -644
  63. package/lib/build.ts +1300 -1227
  64. package/lib/citations.ts +160 -160
  65. package/lib/commands/build.ts +833 -801
  66. package/lib/commands/citations.ts +515 -515
  67. package/lib/commands/comments.ts +1050 -1050
  68. package/lib/commands/context.ts +174 -174
  69. package/lib/commands/core.ts +309 -309
  70. package/lib/commands/doi.ts +435 -435
  71. package/lib/commands/file-ops.ts +372 -372
  72. package/lib/commands/history.ts +320 -320
  73. package/lib/commands/index.ts +87 -87
  74. package/lib/commands/init.ts +259 -259
  75. package/lib/commands/merge-resolve.ts +378 -378
  76. package/lib/commands/preview.ts +178 -178
  77. package/lib/commands/project-info.ts +244 -244
  78. package/lib/commands/quality.ts +517 -517
  79. package/lib/commands/response.ts +454 -454
  80. package/lib/commands/section-boundaries.ts +82 -82
  81. package/lib/commands/sections.ts +451 -451
  82. package/lib/commands/sync.ts +706 -706
  83. package/lib/commands/text-ops.ts +449 -449
  84. package/lib/commands/utilities.ts +448 -448
  85. package/lib/commands/verify-anchors.ts +272 -272
  86. package/lib/commands/word-tools.ts +340 -340
  87. package/lib/comment-realign.ts +517 -517
  88. package/lib/config.ts +84 -84
  89. package/lib/crossref.ts +781 -781
  90. package/lib/csl.ts +191 -191
  91. package/lib/dependencies.ts +98 -98
  92. package/lib/diff-engine.ts +465 -465
  93. package/lib/doi-cache.ts +115 -115
  94. package/lib/doi.ts +897 -897
  95. package/lib/equations.ts +506 -506
  96. package/lib/errors.ts +346 -346
  97. package/lib/format.ts +541 -541
  98. package/lib/git.ts +326 -326
  99. package/lib/grammar.ts +303 -303
  100. package/lib/image-registry.ts +180 -180
  101. package/lib/import.ts +911 -792
  102. package/lib/journals.ts +543 -543
  103. package/lib/merge.ts +633 -633
  104. package/lib/orcid.ts +144 -144
  105. package/lib/pdf-comments.ts +263 -263
  106. package/lib/pdf-import.ts +524 -524
  107. package/lib/plugins.ts +362 -362
  108. package/lib/postprocess.ts +188 -188
  109. package/lib/pptx-color-filter.lua +37 -37
  110. package/lib/pptx-template.ts +469 -469
  111. package/lib/pptx-themes.ts +483 -483
  112. package/lib/protect-restore.ts +520 -520
  113. package/lib/rate-limiter.ts +94 -94
  114. package/lib/response.ts +197 -197
  115. package/lib/restore-references.ts +240 -240
  116. package/lib/review.ts +327 -327
  117. package/lib/schema.ts +417 -417
  118. package/lib/scientific-words.ts +73 -73
  119. package/lib/sections.ts +335 -335
  120. package/lib/slides.ts +756 -756
  121. package/lib/spelling.ts +334 -334
  122. package/lib/templates.ts +526 -526
  123. package/lib/themes.ts +742 -742
  124. package/lib/trackchanges.ts +247 -247
  125. package/lib/tui.ts +450 -450
  126. package/lib/types.ts +550 -530
  127. package/lib/undo.ts +250 -250
  128. package/lib/utils.ts +69 -69
  129. package/lib/variables.ts +179 -179
  130. package/lib/word-extraction.ts +806 -759
  131. package/lib/word.ts +643 -643
  132. package/lib/wordcomments.ts +817 -798
  133. package/package.json +137 -137
  134. package/scripts/postbuild.js +28 -28
  135. package/skill/REFERENCE.md +431 -431
  136. package/skill/SKILL.md +258 -258
  137. package/tsconfig.json +26 -26
  138. package/types/index.d.ts +525 -525
@@ -1,210 +1,210 @@
1
- # PowerShell completion for rev (docrev)
2
- # Install: Add to $PROFILE:
3
- # . (rev completions powershell)
4
- # Or copy output to profile manually
5
-
6
- $script:revCommands = @(
7
- 'build', 'new', 'import', 'sections', 'extract', 'review', 'status',
8
- 'comments', 'resolve', 'reply', 'strip', 'refs', 'migrate', 'config',
9
- 'install', 'doi', 'citations', 'equations', 'figures', 'response',
10
- 'anonymize', 'validate', 'merge', 'diff', 'history', 'help', 'init',
11
- 'split', 'sync', 'word-count', 'wc', 'stats', 'search', 'backup',
12
- 'archive', 'export', 'preview', 'watch', 'lint', 'grammar', 'spelling',
13
- 'annotate', 'apply', 'comment', 'completions', 'clean', 'check', 'open',
14
- 'next', 'prev', 'first', 'last', 'todo', 'accept', 'reject',
15
- 'pdf-comments', 'install-cli-skill', 'uninstall-cli-skill', 'doctor', 'upgrade'
16
- )
17
-
18
- $script:buildFormats = @('pdf', 'docx', 'tex', 'all')
19
- $script:doiActions = @('check', 'lookup', 'fetch', 'add')
20
- $script:eqActions = @('list', 'extract', 'convert', 'from-word')
21
- $script:helpTopics = @('workflow', 'syntax', 'commands')
22
- $script:previewFormats = @('pdf', 'docx')
23
- $script:shells = @('bash', 'zsh', 'powershell')
24
-
25
- Register-ArgumentCompleter -Native -CommandName rev -ScriptBlock {
26
- param($wordToComplete, $commandAst, $cursorPosition)
27
-
28
- $tokens = $commandAst.CommandElements
29
- $command = $null
30
-
31
- # Find the subcommand (skip 'rev' itself)
32
- if ($tokens.Count -gt 1) {
33
- $command = $tokens[1].Extent.Text
34
- }
35
-
36
- # Get the current word being completed
37
- $currentWord = $wordToComplete
38
-
39
- # If we're completing the first argument (subcommand)
40
- if ($tokens.Count -le 2 -and -not $currentWord.StartsWith('-')) {
41
- $script:revCommands | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
42
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
43
- }
44
- return
45
- }
46
-
47
- # Context-specific completions
48
- switch ($command) {
49
- 'build' {
50
- if ($currentWord.StartsWith('-')) {
51
- @('--toc', '--show-changes', '--clean', '--dual') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
52
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
53
- }
54
- } else {
55
- $script:buildFormats | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
56
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
57
- }
58
- }
59
- }
60
- 'new' {
61
- @('--list', '--template', '-s') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
62
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
63
- }
64
- }
65
- 'doi' {
66
- $script:doiActions | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
67
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
68
- }
69
- }
70
- { $_ -in @('equations', 'eq') } {
71
- $script:eqActions | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
72
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
73
- }
74
- }
75
- 'validate' {
76
- @('--list', '--journal') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
77
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
78
- }
79
- }
80
- 'help' {
81
- $script:helpTopics | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
82
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
83
- }
84
- }
85
- 'config' {
86
- @('user', 'sections') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
87
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
88
- }
89
- }
90
- { $_ -in @('word-count', 'wc') } {
91
- @('--limit', '--journal') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
92
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
93
- }
94
- }
95
- 'preview' {
96
- $script:previewFormats | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
97
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
98
- }
99
- }
100
- 'watch' {
101
- if ($currentWord.StartsWith('-')) {
102
- @('--no-open') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
103
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
104
- }
105
- } else {
106
- @('pdf', 'docx', 'all') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
107
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
108
- }
109
- }
110
- }
111
- 'completions' {
112
- $script:shells | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
113
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
114
- }
115
- }
116
- 'comments' {
117
- @('--pending', '-p', '--resolved', '-r', '--export', '-e', '--author') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
118
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
119
- }
120
- # Also complete .md files
121
- Get-ChildItem -Filter "*.md" -ErrorAction SilentlyContinue | ForEach-Object {
122
- if ($_.Name -like "$currentWord*") {
123
- [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
124
- }
125
- }
126
- }
127
- { $_ -in @('resolve', 'reply') } {
128
- @('-n', '-m', '--number', '--message', '--author', '-a') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
129
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
130
- }
131
- Get-ChildItem -Filter "*.md" -ErrorAction SilentlyContinue | ForEach-Object {
132
- if ($_.Name -like "$currentWord*") {
133
- [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
134
- }
135
- }
136
- }
137
- { $_ -in @('accept', 'reject') } {
138
- @('-n', '-a', '--all') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
139
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
140
- }
141
- Get-ChildItem -Filter "*.md" -ErrorAction SilentlyContinue | ForEach-Object {
142
- if ($_.Name -like "$currentWord*") {
143
- [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
144
- }
145
- }
146
- }
147
- 'pdf-comments' {
148
- @('--append', '-a', '--json', '--by-page', '--by-author') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
149
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
150
- }
151
- Get-ChildItem -Filter "*.pdf" -ErrorAction SilentlyContinue | ForEach-Object {
152
- if ($_.Name -like "$currentWord*") {
153
- [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
154
- }
155
- }
156
- }
157
- 'grammar' {
158
- @('--learn', '--forget', '--list', '--rules', '--no-scientific', '--severity') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
159
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
160
- }
161
- }
162
- 'spelling' {
163
- @('--british', '--learn', '--learn-project', '--list') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
164
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
165
- }
166
- }
167
- 'sync' {
168
- Get-ChildItem -Filter "*.docx" -ErrorAction SilentlyContinue | ForEach-Object {
169
- if ($_.Name -like "$currentWord*") {
170
- [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
171
- }
172
- }
173
- Get-ChildItem -Filter "*.pdf" -ErrorAction SilentlyContinue | ForEach-Object {
174
- if ($_.Name -like "$currentWord*") {
175
- [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
176
- }
177
- }
178
- }
179
- 'archive' {
180
- @('--by', '--dry-run') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
181
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
182
- }
183
- }
184
- 'backup' {
185
- @('--name', '--output') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
186
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
187
- }
188
- }
189
- 'todo' {
190
- @('--by-author') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
191
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
192
- }
193
- }
194
- default {
195
- # Default file completion for most commands that take files
196
- if (-not $currentWord.StartsWith('-')) {
197
- Get-ChildItem -Filter "*.md" -ErrorAction SilentlyContinue | ForEach-Object {
198
- if ($_.Name -like "$currentWord*") {
199
- [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
200
- }
201
- }
202
- Get-ChildItem -Filter "*.docx" -ErrorAction SilentlyContinue | ForEach-Object {
203
- if ($_.Name -like "$currentWord*") {
204
- [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
205
- }
206
- }
207
- }
208
- }
209
- }
210
- }
1
+ # PowerShell completion for rev (docrev)
2
+ # Install: Add to $PROFILE:
3
+ # . (rev completions powershell)
4
+ # Or copy output to profile manually
5
+
6
+ $script:revCommands = @(
7
+ 'build', 'new', 'import', 'sections', 'extract', 'review', 'status',
8
+ 'comments', 'resolve', 'reply', 'strip', 'refs', 'migrate', 'config',
9
+ 'install', 'doi', 'citations', 'equations', 'figures', 'response',
10
+ 'anonymize', 'validate', 'merge', 'diff', 'history', 'help', 'init',
11
+ 'split', 'sync', 'word-count', 'wc', 'stats', 'search', 'backup',
12
+ 'archive', 'export', 'preview', 'watch', 'lint', 'grammar', 'spelling',
13
+ 'annotate', 'apply', 'comment', 'completions', 'clean', 'check', 'open',
14
+ 'next', 'prev', 'first', 'last', 'todo', 'accept', 'reject',
15
+ 'pdf-comments', 'install-cli-skill', 'uninstall-cli-skill', 'doctor', 'upgrade'
16
+ )
17
+
18
+ $script:buildFormats = @('pdf', 'docx', 'tex', 'all')
19
+ $script:doiActions = @('check', 'lookup', 'fetch', 'add')
20
+ $script:eqActions = @('list', 'extract', 'convert', 'from-word')
21
+ $script:helpTopics = @('workflow', 'syntax', 'commands')
22
+ $script:previewFormats = @('pdf', 'docx')
23
+ $script:shells = @('bash', 'zsh', 'powershell')
24
+
25
+ Register-ArgumentCompleter -Native -CommandName rev -ScriptBlock {
26
+ param($wordToComplete, $commandAst, $cursorPosition)
27
+
28
+ $tokens = $commandAst.CommandElements
29
+ $command = $null
30
+
31
+ # Find the subcommand (skip 'rev' itself)
32
+ if ($tokens.Count -gt 1) {
33
+ $command = $tokens[1].Extent.Text
34
+ }
35
+
36
+ # Get the current word being completed
37
+ $currentWord = $wordToComplete
38
+
39
+ # If we're completing the first argument (subcommand)
40
+ if ($tokens.Count -le 2 -and -not $currentWord.StartsWith('-')) {
41
+ $script:revCommands | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
42
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
43
+ }
44
+ return
45
+ }
46
+
47
+ # Context-specific completions
48
+ switch ($command) {
49
+ 'build' {
50
+ if ($currentWord.StartsWith('-')) {
51
+ @('--toc', '--show-changes', '--clean', '--dual') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
52
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
53
+ }
54
+ } else {
55
+ $script:buildFormats | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
56
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
57
+ }
58
+ }
59
+ }
60
+ 'new' {
61
+ @('--list', '--template', '-s') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
62
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
63
+ }
64
+ }
65
+ 'doi' {
66
+ $script:doiActions | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
67
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
68
+ }
69
+ }
70
+ { $_ -in @('equations', 'eq') } {
71
+ $script:eqActions | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
72
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
73
+ }
74
+ }
75
+ 'validate' {
76
+ @('--list', '--journal') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
77
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
78
+ }
79
+ }
80
+ 'help' {
81
+ $script:helpTopics | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
82
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
83
+ }
84
+ }
85
+ 'config' {
86
+ @('user', 'sections') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
87
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
88
+ }
89
+ }
90
+ { $_ -in @('word-count', 'wc') } {
91
+ @('--limit', '--journal') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
92
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
93
+ }
94
+ }
95
+ 'preview' {
96
+ $script:previewFormats | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
97
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
98
+ }
99
+ }
100
+ 'watch' {
101
+ if ($currentWord.StartsWith('-')) {
102
+ @('--no-open') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
103
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
104
+ }
105
+ } else {
106
+ @('pdf', 'docx', 'all') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
107
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
108
+ }
109
+ }
110
+ }
111
+ 'completions' {
112
+ $script:shells | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
113
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
114
+ }
115
+ }
116
+ 'comments' {
117
+ @('--pending', '-p', '--resolved', '-r', '--export', '-e', '--author') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
118
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
119
+ }
120
+ # Also complete .md files
121
+ Get-ChildItem -Filter "*.md" -ErrorAction SilentlyContinue | ForEach-Object {
122
+ if ($_.Name -like "$currentWord*") {
123
+ [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
124
+ }
125
+ }
126
+ }
127
+ { $_ -in @('resolve', 'reply') } {
128
+ @('-n', '-m', '--number', '--message', '--author', '-a') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
129
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
130
+ }
131
+ Get-ChildItem -Filter "*.md" -ErrorAction SilentlyContinue | ForEach-Object {
132
+ if ($_.Name -like "$currentWord*") {
133
+ [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
134
+ }
135
+ }
136
+ }
137
+ { $_ -in @('accept', 'reject') } {
138
+ @('-n', '-a', '--all') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
139
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
140
+ }
141
+ Get-ChildItem -Filter "*.md" -ErrorAction SilentlyContinue | ForEach-Object {
142
+ if ($_.Name -like "$currentWord*") {
143
+ [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
144
+ }
145
+ }
146
+ }
147
+ 'pdf-comments' {
148
+ @('--append', '-a', '--json', '--by-page', '--by-author') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
149
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
150
+ }
151
+ Get-ChildItem -Filter "*.pdf" -ErrorAction SilentlyContinue | ForEach-Object {
152
+ if ($_.Name -like "$currentWord*") {
153
+ [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
154
+ }
155
+ }
156
+ }
157
+ 'grammar' {
158
+ @('--learn', '--forget', '--list', '--rules', '--no-scientific', '--severity') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
159
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
160
+ }
161
+ }
162
+ 'spelling' {
163
+ @('--british', '--learn', '--learn-project', '--list') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
164
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
165
+ }
166
+ }
167
+ 'sync' {
168
+ Get-ChildItem -Filter "*.docx" -ErrorAction SilentlyContinue | ForEach-Object {
169
+ if ($_.Name -like "$currentWord*") {
170
+ [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
171
+ }
172
+ }
173
+ Get-ChildItem -Filter "*.pdf" -ErrorAction SilentlyContinue | ForEach-Object {
174
+ if ($_.Name -like "$currentWord*") {
175
+ [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
176
+ }
177
+ }
178
+ }
179
+ 'archive' {
180
+ @('--by', '--dry-run') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
181
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
182
+ }
183
+ }
184
+ 'backup' {
185
+ @('--name', '--output') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
186
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
187
+ }
188
+ }
189
+ 'todo' {
190
+ @('--by-author') | Where-Object { $_ -like "$currentWord*" } | ForEach-Object {
191
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
192
+ }
193
+ }
194
+ default {
195
+ # Default file completion for most commands that take files
196
+ if (-not $currentWord.StartsWith('-')) {
197
+ Get-ChildItem -Filter "*.md" -ErrorAction SilentlyContinue | ForEach-Object {
198
+ if ($_.Name -like "$currentWord*") {
199
+ [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
200
+ }
201
+ }
202
+ Get-ChildItem -Filter "*.docx" -ErrorAction SilentlyContinue | ForEach-Object {
203
+ if ($_.Name -like "$currentWord*") {
204
+ [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ProviderItem', $_.Name)
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
210
+ }