@markup-carve/carve-lsp 0.1.10 → 0.1.12
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.
- package/README.md +119 -7
- package/dist/analyze.d.ts +1 -1
- package/dist/analyze.js +85 -93
- package/dist/analyze.js.map +1 -1
- package/dist/ast-walk.d.ts +24 -0
- package/dist/ast-walk.js +35 -0
- package/dist/ast-walk.js.map +1 -0
- package/dist/ast-walk.test.d.ts +1 -0
- package/dist/ast-walk.test.js +23 -0
- package/dist/ast-walk.test.js.map +1 -0
- package/dist/attribute-completion.test.d.ts +1 -0
- package/dist/attribute-completion.test.js +18 -0
- package/dist/attribute-completion.test.js.map +1 -0
- package/dist/browser-entry.test.d.ts +1 -0
- package/dist/browser-entry.test.js +52 -0
- package/dist/browser-entry.test.js.map +1 -0
- package/dist/browser.d.ts +25 -0
- package/dist/browser.js +26 -0
- package/dist/browser.js.map +1 -0
- package/dist/captions.js +25 -42
- package/dist/captions.js.map +1 -1
- package/dist/codelens.d.ts +4 -4
- package/dist/codelens.js +13 -35
- package/dist/codelens.js.map +1 -1
- package/dist/colon-fences.d.ts +1 -1
- package/dist/colon-fences.js +34 -10
- package/dist/colon-fences.js.map +1 -1
- package/dist/colon-fences.test.js +37 -0
- package/dist/colon-fences.test.js.map +1 -1
- package/dist/completion.d.ts +1 -1
- package/dist/completion.js +123 -22
- package/dist/completion.js.map +1 -1
- package/dist/completion.test.js +58 -1
- package/dist/completion.test.js.map +1 -1
- package/dist/composite-figure-crossref.test.js +1 -1
- package/dist/composite-figure-crossref.test.js.map +1 -1
- package/dist/corpus-through-server.test.js +18 -4
- package/dist/corpus-through-server.test.js.map +1 -1
- package/dist/definition.d.ts +2 -1
- package/dist/definition.js +76 -180
- package/dist/definition.js.map +1 -1
- package/dist/document-highlights.d.ts +1 -1
- package/dist/document-highlights.js +1 -1
- package/dist/document-highlights.js.map +1 -1
- package/dist/document-links.d.ts +2 -2
- package/dist/document-links.js +35 -18
- package/dist/document-links.js.map +1 -1
- package/dist/export-actions.d.ts +1 -1
- package/dist/export-actions.js +1 -1
- package/dist/export-actions.js.map +1 -1
- package/dist/folding.d.ts +22 -4
- package/dist/folding.js +94 -33
- package/dist/folding.js.map +1 -1
- package/dist/format.d.ts +56 -1
- package/dist/format.js +582 -8
- package/dist/format.js.map +1 -1
- package/dist/format.test.js +132 -2
- package/dist/format.test.js.map +1 -1
- package/dist/hover.d.ts +1 -1
- package/dist/hover.js +21 -65
- package/dist/hover.js.map +1 -1
- package/dist/include-completion.d.ts +1 -1
- package/dist/include-completion.js +8 -2
- package/dist/include-completion.js.map +1 -1
- package/dist/include-definition.d.ts +1 -1
- package/dist/include-definition.js +18 -4
- package/dist/include-definition.js.map +1 -1
- package/dist/include-merge-diagnostics.test.js +1 -1
- package/dist/include-merge-diagnostics.test.js.map +1 -1
- package/dist/include-paths.d.ts +13 -0
- package/dist/include-paths.js +18 -0
- package/dist/include-paths.js.map +1 -0
- package/dist/include-selection.d.ts +1 -1
- package/dist/include-settings.js +2 -1
- package/dist/include-settings.js.map +1 -1
- package/dist/includes.d.ts +3 -0
- package/dist/includes.js +0 -28
- package/dist/includes.js.map +1 -1
- package/dist/inlay-hints.d.ts +1 -1
- package/dist/inlay-hints.js +17 -19
- package/dist/inlay-hints.js.map +1 -1
- package/dist/lint-actions.d.ts +1 -1
- package/dist/lint-actions.js +11 -6
- package/dist/lint-actions.js.map +1 -1
- package/dist/lint-actions.test.js +17 -0
- package/dist/lint-actions.test.js.map +1 -1
- package/dist/list-continuation.test.d.ts +1 -0
- package/dist/list-continuation.test.js +325 -0
- package/dist/list-continuation.test.js.map +1 -0
- package/dist/list-indent.test.d.ts +1 -0
- package/dist/list-indent.test.js +138 -0
- package/dist/list-indent.test.js.map +1 -0
- package/dist/list-items.d.ts +65 -0
- package/dist/list-items.js +162 -0
- package/dist/list-items.js.map +1 -0
- package/dist/list-marker-hints.d.ts +16 -0
- package/dist/list-marker-hints.js +42 -0
- package/dist/list-marker-hints.js.map +1 -0
- package/dist/list-marker-hints.test.d.ts +1 -0
- package/dist/list-marker-hints.test.js +105 -0
- package/dist/list-marker-hints.test.js.map +1 -0
- package/dist/lsp-stdio-client.d.ts +4 -0
- package/dist/lsp-stdio-client.js +11 -2
- package/dist/lsp-stdio-client.js.map +1 -1
- package/dist/migration-actions.d.ts +1 -1
- package/dist/migration-actions.js +1 -1
- package/dist/migration-actions.js.map +1 -1
- package/dist/node-include-paths.d.ts +3 -0
- package/dist/node-include-paths.js +17 -0
- package/dist/node-include-paths.js.map +1 -0
- package/dist/parse-cache.d.ts +4 -0
- package/dist/parse-cache.js +27 -0
- package/dist/parse-cache.js.map +1 -0
- package/dist/position.js +35 -12
- package/dist/position.js.map +1 -1
- package/dist/position.test.js +30 -0
- package/dist/position.test.js.map +1 -1
- package/dist/reference-sites.d.ts +48 -0
- package/dist/reference-sites.js +223 -0
- package/dist/reference-sites.js.map +1 -0
- package/dist/references.d.ts +1 -1
- package/dist/references.js +95 -311
- package/dist/references.js.map +1 -1
- package/dist/register-capability-refused.test.d.ts +1 -0
- package/dist/register-capability-refused.test.js +34 -0
- package/dist/register-capability-refused.test.js.map +1 -0
- package/dist/rename.d.ts +1 -1
- package/dist/rename.js +25 -51
- package/dist/rename.js.map +1 -1
- package/dist/selection.d.ts +1 -1
- package/dist/semantic.js +58 -11
- package/dist/semantic.js.map +1 -1
- package/dist/server.js +54 -10
- package/dist/server.js.map +1 -1
- package/dist/settings.d.ts +2 -0
- package/dist/settings.js +8 -0
- package/dist/settings.js.map +1 -1
- package/dist/settings.test.js +13 -1
- package/dist/settings.test.js.map +1 -1
- package/dist/spec-0-1-4-constructs.test.js +18 -11
- package/dist/spec-0-1-4-constructs.test.js.map +1 -1
- package/dist/structure-views.test.d.ts +1 -0
- package/dist/structure-views.test.js +105 -0
- package/dist/structure-views.test.js.map +1 -0
- package/dist/table-diagnostics.d.ts +7 -2
- package/dist/table-diagnostics.js +34 -38
- package/dist/table-diagnostics.js.map +1 -1
- package/dist/table-diagnostics.test.js +18 -7
- package/dist/table-diagnostics.test.js.map +1 -1
- package/dist/workspace-graph.js +1 -1
- package/dist/workspace-graph.js.map +1 -1
- package/dist/workspace-index.d.ts +6 -3
- package/dist/workspace-index.js +65 -97
- package/dist/workspace-index.js.map +1 -1
- package/dist/workspace-index.test.js +5 -5
- package/dist/workspace-index.test.js.map +1 -1
- package/dist/workspace-navigation.test.d.ts +1 -0
- package/dist/workspace-navigation.test.js +205 -0
- package/dist/workspace-navigation.test.js.map +1 -0
- package/package.json +8 -3
package/README.md
CHANGED
|
@@ -25,16 +25,16 @@ The server communicates over **stdio** (`--stdio` flag).
|
|
|
25
25
|
| Diagnostics | Push, document-pull, and workspace-pull diagnostics for syntax, migration hazards, silent failures, include failures, table metadata, dead references, and duplicate declarations |
|
|
26
26
|
| Symbols | Nested document outline plus queryable workspace symbols, including included files |
|
|
27
27
|
| Hover | Markup, cross-reference, include, citation, and table-marker explanations |
|
|
28
|
-
| Completion |
|
|
28
|
+
| Completion | Container kinds (admonitions, placement markers, extension containers), code fence languages, attributes, semantic spans, citations, references, heading titles as `[Heading][]` links, workspace anchors, and contained include paths, sections and options |
|
|
29
29
|
| Navigation | Document links, go-to-definition, highlights, and references for anchors, captions, footnotes, citations, and link labels |
|
|
30
|
-
| Rename |
|
|
30
|
+
| Rename | Namespace-aware rename: anchors, captions and citation keys across the workspace, footnote and link labels within their document; generated heading ids become explicit when renamed |
|
|
31
31
|
| Code actions | Migration and lint quick-fixes, table marker repair, creation of missing definitions, and export to Markdown or HTML |
|
|
32
32
|
| Code lens | Reference counts for anchors, captions, citations, footnotes, and link labels |
|
|
33
33
|
| Selection and folding | Syntax-aware selection expansion and folding, with tolerant fallbacks during incomplete edits |
|
|
34
|
-
| Formatting | Conservative document/range formatting, on-type continuation, or explicit migration formatting |
|
|
34
|
+
| Formatting | Conservative document/range formatting, on-type continuation (see below), or explicit migration formatting |
|
|
35
35
|
| Semantic tokens | Full, ranged, and delta token updates, including table structure and alignment metadata |
|
|
36
|
-
| Inlay hints | Generated heading ids (configurable) |
|
|
37
|
-
| Commands | Preview/AST output
|
|
36
|
+
| Inlay hints | Generated heading ids, colon-fence closers, and a `list item` / `task` hint after a bare list marker on the line being edited (configurable) |
|
|
37
|
+
| Commands | Preview/AST output, list indent/outdent (`carve.listIndent`), workspace graph, backlinks, generated navigation, and transitive rebuild impact |
|
|
38
38
|
| File inclusion | Resolves `{{ path }}` directives, watches dependencies, and reports failures as diagnostics - **off by default**, see below |
|
|
39
39
|
|
|
40
40
|
Workspace navigation is backed by a versioned `.crv` index. The initial scan
|
|
@@ -46,6 +46,84 @@ The same index exposes `carve.workspaceGraph`, `carve.backlinks`,
|
|
|
46
46
|
usage, document links, includes, and local asset dependencies; unresolved edges
|
|
47
47
|
are reported separately for migration and build tooling.
|
|
48
48
|
|
|
49
|
+
## On-type continuation
|
|
50
|
+
|
|
51
|
+
The server answers `textDocument/onTypeFormatting` for Enter. VS Code sends
|
|
52
|
+
it only with `editor.formatOnType` on.
|
|
53
|
+
|
|
54
|
+
| Line before Enter | Result |
|
|
55
|
+
|---|---|
|
|
56
|
+
| `- item`, `* item` | next line starts with the same bullet |
|
|
57
|
+
| `1. item`, `a) item`, `ii. item`, `. item` | next marker in the same style: `2. `, `b) `, `iii. `, `. ` |
|
|
58
|
+
| `- [x] item` | `- [ ] ` |
|
|
59
|
+
| `-{.c} item`, `1.{.c} item` | a plain next marker: `- `, `2. ` (attributes are not copied) |
|
|
60
|
+
| `- `, `2. `, `- [ ] ` (marker only) | the marker is removed and the list ends |
|
|
61
|
+
| `> - item`, `[^a]: - item`, `: - item` | the next marker after the container prefix: `> - `, ` - `, ` - ` |
|
|
62
|
+
| `> - ` (marker only, in a quote) | the line becomes `>` and the next line starts with `> ` |
|
|
63
|
+
| `:: term`, `: definition` | the next definition: `: `, keeping the separator width (`: def` continues as `: `) |
|
|
64
|
+
| `: ` (marker only, in a description list) | the marker is removed and the list ends |
|
|
65
|
+
| `> quote`, `\| cell` | the matching prefix |
|
|
66
|
+
| `> ` (quote prefix only) | one quote level is dropped: `> ` becomes an empty line, `> > ` becomes `>` with `> ` on the next line |
|
|
67
|
+
| `::: note`, ```` ```js ````, `~~~` | the matching closer below the cursor, unless the block is already closed |
|
|
68
|
+
|
|
69
|
+
The new marker keeps the indent and, where the marker's width allows, the
|
|
70
|
+
content column of the previous item (`9. item` continues as `10. `). Lists
|
|
71
|
+
inside quotes, divs, footnote bodies and descriptions continue too, including
|
|
72
|
+
nested combinations such as `> > - a` or a quote inside a list item; the quote
|
|
73
|
+
prefix and the marker arrive as one edit. Ending a quoted list leaves a blank
|
|
74
|
+
`>` line, so the quote stays open for the next paragraph. A line
|
|
75
|
+
starting with `+` (the continuation marker), `(1)`, and list lines inside code
|
|
76
|
+
or raw blocks are not continued. A lone `-` without a separator is left alone,
|
|
77
|
+
since it may be prose.
|
|
78
|
+
|
|
79
|
+
Closers are inserted only for an opener that has none yet, so Enter on the
|
|
80
|
+
opener of a closed container or code block adds nothing. A fence line that
|
|
81
|
+
closes a block, or one inside a code block, gets no closer; a code fence
|
|
82
|
+
inside a quote or list item continues with its container prefix instead. A
|
|
83
|
+
browser host that removes a content-less marker on Backspace, or hides it from
|
|
84
|
+
a preview, can test the text after the quote prefix and indent with the
|
|
85
|
+
exported `BARE_CONTINUATION_MARKER`.
|
|
86
|
+
|
|
87
|
+
## Completion
|
|
88
|
+
|
|
89
|
+
| Typed | Offered |
|
|
90
|
+
|---|---|
|
|
91
|
+
| `::: ` | admonition kinds, `figure`, the placement markers (`toc`, `footnotes`, `references`, `bibliography`, `glossary`, `index`), the extension containers (`details`, `spoiler`, `tabs`, `tab`, `list-table`, `code-group`), and the symbol forms `>`, `\|`, `\` before a word is started |
|
|
92
|
+
| ```` ``` ````, `~~~` | common code languages, `math`, `mermaid`, `svg`, and the raw formats `=html`, `=latex` (not inside a code block) |
|
|
93
|
+
| `[` and at least one character | headings whose text starts with it, inserted as a collapsed reference `[Heading][]` |
|
|
94
|
+
| `{{ ` | include paths, sections and options (with file inclusion on); never attributes |
|
|
95
|
+
|
|
96
|
+
The heading list stays empty until the text after `[` matches a heading, so
|
|
97
|
+
ordinary link text and bracketed prose get no popup. `![`, `[[`, `\[`, `[^`
|
|
98
|
+
and `[@` are left to their own completions.
|
|
99
|
+
|
|
100
|
+
## List indent and outdent
|
|
101
|
+
|
|
102
|
+
Hosts indent a line by a fixed amount, but Carve nests a list item only when
|
|
103
|
+
its marker reaches the content column of the item above (`1. a` needs three
|
|
104
|
+
spaces before `- b`, `10. a` needs four). The `carve.listIndent` command does
|
|
105
|
+
it the Carve way, for a host to bind to Tab and Shift+Tab:
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{ "command": "carve.listIndent", "arguments": [{ "uri": "file:///notes.crv", "line": 4, "direction": "indent" }] }
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
- `indent` nests the item under its previous sibling, at that sibling's
|
|
112
|
+
content column. `outdent` moves it to its parent's level.
|
|
113
|
+
- The item's continuation lines and children move with it.
|
|
114
|
+
- A bullet keeps its character. An ordered item that starts a child list
|
|
115
|
+
restarts at the style's first ordinal (`1.`, `a.`, `i.`); joining an existing
|
|
116
|
+
child list, or outdenting into an ordered parent list, takes the next ordinal.
|
|
117
|
+
- It works on a content-less marker (`- ` right after Enter) and inside quotes,
|
|
118
|
+
divs, footnote bodies and descriptions. Each edit is checked against the
|
|
119
|
+
parser: the item must reparse at the intended depth.
|
|
120
|
+
|
|
121
|
+
The result is the `TextEdit[]` for that document, which the host applies
|
|
122
|
+
(as one undo step when several lines move), or `null` when there is nothing to
|
|
123
|
+
do: the first item of a list has nothing to nest under, a top-level item cannot
|
|
124
|
+
be outdented, or the line is not a list item. On `null` the host should run its
|
|
125
|
+
own Tab.
|
|
126
|
+
|
|
49
127
|
## Language settings
|
|
50
128
|
|
|
51
129
|
Clients can send these under `carve` in initialization options or
|
|
@@ -57,7 +135,7 @@ watches it for changes.
|
|
|
57
135
|
|---|---|---|
|
|
58
136
|
| `platforms` | `[]` | Extra platform lint profiles. Currently supports `"github"`. |
|
|
59
137
|
| `extensions` | `[]` | Enabled extension names, for example `"semantic-span"`. |
|
|
60
|
-
| `inlayHints` | `true` | Show generated heading identifiers. |
|
|
138
|
+
| `inlayHints` | `true` | Show inlay hints: generated heading identifiers, colon-fence closers, and the bare list marker hint. `false` turns all of them off; an object such as `{ "bareListMarkers": false }` keeps the others and turns that one off. |
|
|
61
139
|
| `exportActions` | `true` | Offer the *Export as Markdown* / *Export as HTML* source actions. Editors with their own export commands can turn this off. |
|
|
62
140
|
| `formatter` | `"conservative"` | Use whitespace-only conservative formatting; `"migration"` opts into canonical whole-document conversion. |
|
|
63
141
|
| `severities` | `{}` | Override a diagnostic code with `"error"`, `"warning"`, `"information"`, `"hint"`, or `"off"`. |
|
|
@@ -69,13 +147,25 @@ Example `.carverc.json`:
|
|
|
69
147
|
"carve": {
|
|
70
148
|
"platforms": ["github"],
|
|
71
149
|
"extensions": ["semantic-span"],
|
|
72
|
-
"inlayHints": true,
|
|
150
|
+
"inlayHints": { "bareListMarkers": true },
|
|
73
151
|
"formatter": "conservative",
|
|
74
152
|
"severities": { "table-width-total": "error" }
|
|
75
153
|
}
|
|
76
154
|
}
|
|
77
155
|
```
|
|
78
156
|
|
|
157
|
+
### Bare list marker hint
|
|
158
|
+
|
|
159
|
+
A list marker with no content after it (`- `, `2. `, `- [ ] `) is paragraph
|
|
160
|
+
text, not an empty list item. While a new item is being typed, the server shows
|
|
161
|
+
`list item` (or `task` for `- [ ] `) as an inlay hint after the marker. The
|
|
162
|
+
hint appears only on the line the last edit touched, and only when the marker
|
|
163
|
+
belongs to a list (it is lazy text of an item, or would continue a list once
|
|
164
|
+
content lands, also inside a quote, div, footnote or description), so a lone
|
|
165
|
+
`- ` in prose is never hinted
|
|
166
|
+
and the hint goes away once the author edits elsewhere. Turn it off on its own
|
|
167
|
+
with `"inlayHints": { "bareListMarkers": false }`.
|
|
168
|
+
|
|
79
169
|
## File inclusion
|
|
80
170
|
|
|
81
171
|
Carve's `{{ path }}` directive is a processor-level feature (PART 9 §19 of the
|
|
@@ -246,6 +336,28 @@ Any editor with LSP support can start the server as an external process:
|
|
|
246
336
|
- **File extension:** `.crv` (language ID: `carve`)
|
|
247
337
|
- **Root pattern:** `.git` or the project root
|
|
248
338
|
|
|
339
|
+
## Browser use
|
|
340
|
+
|
|
341
|
+
`@markup-carve/carve-lsp/browser` exports the analysis functions without the
|
|
342
|
+
language-server transport or any Node.js built-in, for an editor that runs
|
|
343
|
+
them in the page (a CodeMirror or Monaco playground):
|
|
344
|
+
|
|
345
|
+
```js
|
|
346
|
+
import { analyzeCarve, completionAt, hoverAt, listContinuationEdits } from '@markup-carve/carve-lsp/browser'
|
|
347
|
+
|
|
348
|
+
const { diagnostics, symbols } = analyzeCarve(source)
|
|
349
|
+
const items = completionAt(source, { line: 3, character: 4 })
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
Positions are LSP positions (0-based line, UTF-16 character). File inclusion
|
|
353
|
+
stays off unless you pass `includes` with a `resolver` of your own; give it a
|
|
354
|
+
`paths` implementation too if your children are not plain file paths. The
|
|
355
|
+
exported set covers diagnostics, outline symbols, completion, hover, folding,
|
|
356
|
+
selection ranges, links, highlights, references, definitions, rename, inlay
|
|
357
|
+
hints, on-type continuation (`listContinuationEdits`, `continuationPrefix`,
|
|
358
|
+
`BARE_CONTINUATION_MARKER`) and list indent, quick fixes, table checks and
|
|
359
|
+
code lenses.
|
|
360
|
+
|
|
249
361
|
## Development
|
|
250
362
|
|
|
251
363
|
Contributor setup, testing, and maintenance notes are in the [development guide](docs/development.md).
|
package/dist/analyze.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DocumentSymbol, SymbolInformation, type Diagnostic, type Range } from 'vscode-languageserver
|
|
1
|
+
import { DocumentSymbol, SymbolInformation, type Diagnostic, type Range } from 'vscode-languageserver-types';
|
|
2
2
|
import { type LintPlatform } from '@markup-carve/carve';
|
|
3
3
|
import { type IncludeDependency, type IncludeOptions } from './includes.js';
|
|
4
4
|
import type { IncludeParseCache } from './include-cache.js';
|
package/dist/analyze.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import { DiagnosticSeverity, SymbolKind, } from 'vscode-languageserver
|
|
1
|
+
import { DiagnosticSeverity, SymbolKind, } from 'vscode-languageserver-types';
|
|
2
2
|
import { djotMigrationWarnings, lintCarve, parse, resolve, } from '@markup-carve/carve';
|
|
3
|
-
import
|
|
4
|
-
import { pathToFileURL } from 'node:url';
|
|
3
|
+
import { portableIncludePaths } from './include-paths.js';
|
|
5
4
|
import { smartPunctuationText } from './inline-text.js';
|
|
6
5
|
import { panelLetter } from './captions.js';
|
|
7
6
|
import { includeDenialCode } from './include-denial.js';
|
|
8
7
|
import { resolveIncludes, } from './includes.js';
|
|
9
8
|
import { tableDiagnostics } from './table-diagnostics.js';
|
|
10
9
|
import { colonFenceStructure } from './colon-fences.js';
|
|
11
|
-
import { astOffsetToIndex } from './position.js';
|
|
10
|
+
import { astOffsetToIndex, sourceLines } from './position.js';
|
|
11
|
+
import { walkNodes } from './ast-walk.js';
|
|
12
|
+
import { headingSections } from './folding.js';
|
|
13
|
+
import { resolvedDocument } from './parse-cache.js';
|
|
12
14
|
export function analyzeCarve(source, options = {}) {
|
|
13
15
|
const diagnostics = [];
|
|
14
16
|
let doc = null;
|
|
15
17
|
try {
|
|
16
|
-
doc =
|
|
18
|
+
doc = resolvedDocument(source);
|
|
17
19
|
}
|
|
18
20
|
catch (error) {
|
|
19
21
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -59,12 +61,12 @@ export function analyzeCarve(source, options = {}) {
|
|
|
59
61
|
platforms: options.lint?.platforms,
|
|
60
62
|
extensions: lintExtensions,
|
|
61
63
|
})) {
|
|
62
|
-
|
|
64
|
+
// `start`/`end` are UTF-16 offsets into the source as given; `column` counts codepoints.
|
|
63
65
|
const diagnostic = {
|
|
64
66
|
severity: DiagnosticSeverity.Warning,
|
|
65
67
|
range: {
|
|
66
|
-
start:
|
|
67
|
-
end:
|
|
68
|
+
start: positionAt(source, warning.start),
|
|
69
|
+
end: positionAt(source, Math.max(warning.start + 1, warning.end)),
|
|
68
70
|
},
|
|
69
71
|
source: 'carve',
|
|
70
72
|
code: warning.rule,
|
|
@@ -93,8 +95,9 @@ export function analyzeCarve(source, options = {}) {
|
|
|
93
95
|
// in an untrusted or unconfigured workspace keeps its `{{ … }}` literal and
|
|
94
96
|
// nothing on disk is touched.
|
|
95
97
|
const includes = resolveIncludes(norm, options.includes ?? {});
|
|
98
|
+
const paths = options.includes?.paths ?? portableIncludePaths;
|
|
96
99
|
for (const warning of includes.warnings) {
|
|
97
|
-
const child = childLocation(warning, includes.documents);
|
|
100
|
+
const child = childLocation(warning, includes.documents, paths);
|
|
98
101
|
diagnostics.push({
|
|
99
102
|
severity: DiagnosticSeverity.Warning,
|
|
100
103
|
range: {
|
|
@@ -110,7 +113,7 @@ export function analyzeCarve(source, options = {}) {
|
|
|
110
113
|
// resolver's own error out of author-visible text, and it routinely
|
|
111
114
|
// carries absolute host paths. The attributed child is named relative to
|
|
112
115
|
// the include root for the same reason - never as an absolute path.
|
|
113
|
-
message: attributeToChild(warning.message, warning.file, options.includes),
|
|
116
|
+
message: attributeToChild(warning.message, warning.file, options.includes, paths),
|
|
114
117
|
// The child is NAMED in the message for a client that renders none of
|
|
115
118
|
// this, and LOCATED here for one that does. Both, because dropping the
|
|
116
119
|
// prose regresses every client without related information, and dropping
|
|
@@ -120,9 +123,9 @@ export function analyzeCarve(source, options = {}) {
|
|
|
120
123
|
}
|
|
121
124
|
return {
|
|
122
125
|
diagnostics: configuredDiagnostics(diagnostics, options.lint?.severities),
|
|
123
|
-
symbols: doc ? documentSymbols(doc) : tolerantHeadingSymbols(source),
|
|
126
|
+
symbols: doc ? documentSymbols(doc, source) : tolerantHeadingSymbols(source),
|
|
124
127
|
dependencies: includes.dependencies,
|
|
125
|
-
includedSymbols: includedSymbols(includes.documents, options.includedParseCache),
|
|
128
|
+
includedSymbols: includedSymbols(includes.documents, options.includedParseCache, paths),
|
|
126
129
|
};
|
|
127
130
|
}
|
|
128
131
|
function configuredDiagnostics(diagnostics, overrides) {
|
|
@@ -187,7 +190,7 @@ function firstDuplicateDeclaration(source, rule, message, repeatedLine) {
|
|
|
187
190
|
}
|
|
188
191
|
return declarations[0] ?? null;
|
|
189
192
|
}
|
|
190
|
-
function includedSymbols(documents, cache) {
|
|
193
|
+
function includedSymbols(documents, cache, paths) {
|
|
191
194
|
const symbols = [];
|
|
192
195
|
for (const child of documents) {
|
|
193
196
|
let document = child.version === undefined ? undefined : cache?.get(child.id, child.version);
|
|
@@ -201,19 +204,20 @@ function includedSymbols(documents, cache) {
|
|
|
201
204
|
if (child.version !== undefined)
|
|
202
205
|
cache?.set(child.id, child.version, document);
|
|
203
206
|
}
|
|
204
|
-
const uri =
|
|
205
|
-
|
|
207
|
+
const uri = paths.toUri(child.id);
|
|
208
|
+
const lines = sourceLines(child.source);
|
|
209
|
+
for (const entry of walkOutline(document)) {
|
|
206
210
|
// An INCLUDED file contributes its headings, flat. A composite figure is
|
|
207
211
|
// a landmark inside its own file rather than a navigable entry in
|
|
208
212
|
// another one, so it stays out of this list.
|
|
209
213
|
if (entry.type !== 'heading')
|
|
210
214
|
continue;
|
|
211
|
-
const symbol = headingSymbol(entry);
|
|
215
|
+
const symbol = headingSymbol(entry, lines);
|
|
212
216
|
symbols.push({
|
|
213
217
|
name: symbol.name,
|
|
214
218
|
kind: symbol.kind,
|
|
215
219
|
location: { uri, range: symbol.range },
|
|
216
|
-
containerName:
|
|
220
|
+
containerName: paths.basename(child.id),
|
|
217
221
|
});
|
|
218
222
|
}
|
|
219
223
|
}
|
|
@@ -231,7 +235,7 @@ function includedSymbols(documents, cache) {
|
|
|
231
235
|
* `/virtual/child.crv`, which `path.isAbsolute` accepts and which no editor can
|
|
232
236
|
* open. `watch` is only set by a resolver that read the target off a disk.
|
|
233
237
|
*/
|
|
234
|
-
function childLocation(warning, documents) {
|
|
238
|
+
function childLocation(warning, documents, paths) {
|
|
235
239
|
const { file, within } = warning;
|
|
236
240
|
if (file === undefined || within === undefined)
|
|
237
241
|
return undefined;
|
|
@@ -239,7 +243,7 @@ function childLocation(warning, documents) {
|
|
|
239
243
|
if (child?.watch === undefined)
|
|
240
244
|
return undefined;
|
|
241
245
|
return {
|
|
242
|
-
uri:
|
|
246
|
+
uri: paths.toUri(child.watch),
|
|
243
247
|
range: {
|
|
244
248
|
start: positionAt(child.source, astOffsetToIndex(child.source, within.start)),
|
|
245
249
|
end: positionAt(child.source, astOffsetToIndex(child.source, within.end)),
|
|
@@ -251,31 +255,20 @@ function childLocation(warning, documents) {
|
|
|
251
255
|
* root. A warning raised in the document the client already has open adds
|
|
252
256
|
* nothing and is left alone.
|
|
253
257
|
*/
|
|
254
|
-
function attributeToChild(message, file, includes) {
|
|
258
|
+
function attributeToChild(message, file, includes, paths) {
|
|
255
259
|
if (file === undefined || file === includes?.sourcePath)
|
|
256
260
|
return message;
|
|
257
|
-
|
|
261
|
+
const root = includes?.includeRoot;
|
|
262
|
+
return `${message} (in ${root === undefined ? file : paths.relativeToRoot(file, root)})`;
|
|
258
263
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
* segment-wise, so a sibling directory named `..foo` is not mistaken for an
|
|
262
|
-
* escape. A file that is not under the root at all is named as it came, since
|
|
263
|
-
* inventing a relative form for it would be a lie.
|
|
264
|
-
*/
|
|
265
|
-
function relativeToRoot(file, root) {
|
|
266
|
-
if (root === undefined)
|
|
267
|
-
return file;
|
|
268
|
-
const relative = path.relative(root, file);
|
|
269
|
-
if (!relative || path.isAbsolute(relative))
|
|
270
|
-
return file;
|
|
271
|
-
if (relative.split(path.sep)[0] === '..')
|
|
272
|
-
return file;
|
|
273
|
-
return relative;
|
|
274
|
-
}
|
|
275
|
-
function documentSymbols(doc) {
|
|
264
|
+
function documentSymbols(doc, source) {
|
|
265
|
+
const lines = sourceLines(source);
|
|
276
266
|
const stack = [];
|
|
277
267
|
const roots = [];
|
|
278
268
|
const place = (symbol) => {
|
|
269
|
+
// A section that ended (its container closed) cannot hold what follows.
|
|
270
|
+
while (stack.length && stack[stack.length - 1].symbol.range.end.line < symbol.range.start.line)
|
|
271
|
+
stack.pop();
|
|
279
272
|
const parent = stack[stack.length - 1];
|
|
280
273
|
if (parent) {
|
|
281
274
|
parent.symbol.children ??= [];
|
|
@@ -285,61 +278,49 @@ function documentSymbols(doc) {
|
|
|
285
278
|
roots.push(symbol);
|
|
286
279
|
}
|
|
287
280
|
};
|
|
288
|
-
|
|
281
|
+
const sections = new Map(headingSections(doc, lines).map((section) => [section.heading, section.endLine]));
|
|
282
|
+
for (const entry of walkOutline(doc)) {
|
|
289
283
|
if (entry.type === 'figure_group') {
|
|
290
284
|
// A composite figure is a structural landmark: one figure holding
|
|
291
285
|
// ordered panels (PART 9 §4c). It takes NO level, so it never pops the
|
|
292
286
|
// heading stack - it hangs under the section it appears in, the way a
|
|
293
287
|
// heading's own children do.
|
|
294
|
-
place(figureGroupSymbol(entry));
|
|
288
|
+
place(figureGroupSymbol(entry, lines));
|
|
295
289
|
continue;
|
|
296
290
|
}
|
|
297
291
|
while (stack.length && stack[stack.length - 1].level >= entry.level) {
|
|
298
292
|
stack.pop();
|
|
299
293
|
}
|
|
300
|
-
const symbol = headingSymbol(entry);
|
|
294
|
+
const symbol = headingSymbol(entry, lines, sections.get(entry));
|
|
301
295
|
place(symbol);
|
|
302
296
|
stack.push({ level: entry.level, symbol });
|
|
303
297
|
}
|
|
304
298
|
return roots;
|
|
305
299
|
}
|
|
306
300
|
/**
|
|
307
|
-
* The outline's entries in source order: headings, and composite figures
|
|
301
|
+
* The outline's entries in source order: headings, and composite figures, at
|
|
302
|
+
* any depth (list items, definitions and footnote bodies included).
|
|
308
303
|
*
|
|
309
304
|
* A group is worth an entry where a plain figure is not, because it is a
|
|
310
305
|
* CONTAINER an author folds, navigates and loses their place inside - the same
|
|
311
306
|
* reason it folds. Its panels come with it, so the outline says how many there
|
|
312
307
|
* are without scrolling the fence.
|
|
313
308
|
*/
|
|
314
|
-
function
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
// them. A panel can wrap a quote holding headings, and skipping the panel
|
|
323
|
-
// node dropped those headings out of the outline entirely.
|
|
324
|
-
yield* walkOutline(node.children);
|
|
325
|
-
continue;
|
|
326
|
-
}
|
|
327
|
-
if ('children' in node && Array.isArray(node.children)) {
|
|
328
|
-
yield* walkOutline(node.children.filter(isBlockNode));
|
|
329
|
-
}
|
|
330
|
-
if (node.type === 'figure') {
|
|
331
|
-
if ('children' in node.target && Array.isArray(node.target.children)) {
|
|
332
|
-
yield* walkOutline(node.target.children.filter(isBlockNode));
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
}
|
|
309
|
+
function walkOutline(doc) {
|
|
310
|
+
const entries = [];
|
|
311
|
+
walkNodes([doc.children, doc.footnoteDefs], (node) => {
|
|
312
|
+
if (node.type === 'heading' || node.type === 'figure_group')
|
|
313
|
+
entries.push(node);
|
|
314
|
+
return node.type !== 'heading' && node.type !== 'paragraph';
|
|
315
|
+
});
|
|
316
|
+
return entries.sort((a, b) => (a.pos?.startLine ?? 0) - (b.pos?.startLine ?? 0));
|
|
336
317
|
}
|
|
337
318
|
/** A group's panels are its direct `figure` and `table` children (§4c). */
|
|
338
319
|
function isPanel(node) {
|
|
339
320
|
return node.type === 'figure' || node.type === 'table';
|
|
340
321
|
}
|
|
341
|
-
function figureGroupSymbol(group) {
|
|
342
|
-
const range = blockRange(group);
|
|
322
|
+
function figureGroupSymbol(group, lines) {
|
|
323
|
+
const range = blockRange(group, lines);
|
|
343
324
|
const panels = group.children.filter(isPanel);
|
|
344
325
|
return {
|
|
345
326
|
name: (group.caption ? plainText(group.caption) : '') || 'Composite figure',
|
|
@@ -347,7 +328,7 @@ function figureGroupSymbol(group) {
|
|
|
347
328
|
kind: SymbolKind.Struct,
|
|
348
329
|
range,
|
|
349
330
|
selectionRange: range,
|
|
350
|
-
children: panels.map((panel, index) => panelSymbol(panel, index)),
|
|
331
|
+
children: panels.map((panel, index) => panelSymbol(panel, index, lines)),
|
|
351
332
|
};
|
|
352
333
|
}
|
|
353
334
|
/**
|
|
@@ -355,9 +336,9 @@ function figureGroupSymbol(group) {
|
|
|
355
336
|
* would use for it (§4c) - not to a number, which would read as a figure number
|
|
356
337
|
* the panel does not have.
|
|
357
338
|
*/
|
|
358
|
-
function panelSymbol(panel, index) {
|
|
339
|
+
function panelSymbol(panel, index, lines) {
|
|
359
340
|
const caption = panel.caption;
|
|
360
|
-
const range = blockRange(panel);
|
|
341
|
+
const range = blockRange(panel, lines);
|
|
361
342
|
return {
|
|
362
343
|
name: (caption ? plainText(caption) : '') || `Panel ${panelLetter(index)}`,
|
|
363
344
|
kind: panel.type === 'table' ? SymbolKind.Array : SymbolKind.Object,
|
|
@@ -366,33 +347,32 @@ function panelSymbol(panel, index) {
|
|
|
366
347
|
children: [],
|
|
367
348
|
};
|
|
368
349
|
}
|
|
369
|
-
function blockRange(node) {
|
|
350
|
+
function blockRange(node, lines) {
|
|
370
351
|
if (!node.pos) {
|
|
371
352
|
return { start: { line: 0, character: 0 }, end: { line: 0, character: 0 } };
|
|
372
353
|
}
|
|
354
|
+
return lineSpan(lines, node.pos.startLine - 1, node.pos.endLine - 1);
|
|
355
|
+
}
|
|
356
|
+
/** Whole lines `start` through `end`, 0-based and inclusive. */
|
|
357
|
+
function lineSpan(lines, start, end) {
|
|
373
358
|
return {
|
|
374
|
-
start: { line:
|
|
375
|
-
end: { line:
|
|
359
|
+
start: { line: start, character: 0 },
|
|
360
|
+
end: { line: end, character: lines[end]?.length ?? 0 },
|
|
376
361
|
};
|
|
377
362
|
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
}
|
|
387
|
-
: {
|
|
388
|
-
start: { line: 0, character: 0 },
|
|
389
|
-
end: { line: 0, character: 0 },
|
|
390
|
-
};
|
|
363
|
+
/** `range` spans the section when `sectionEnd` is known; `selectionRange` is the heading's own lines. */
|
|
364
|
+
function headingSymbol(heading, lines, sectionEnd) {
|
|
365
|
+
const selectionRange = heading.pos
|
|
366
|
+
? lineSpan(lines, heading.pos.startLine - 1, heading.pos.endLine - 1)
|
|
367
|
+
: { start: { line: 0, character: 0 }, end: { line: 0, character: 0 } };
|
|
368
|
+
const range = heading.pos && sectionEnd !== undefined && sectionEnd >= selectionRange.end.line
|
|
369
|
+
? lineSpan(lines, selectionRange.start.line, sectionEnd)
|
|
370
|
+
: selectionRange;
|
|
391
371
|
return {
|
|
392
372
|
name: plainText(heading.children) || `Heading ${heading.level}`,
|
|
393
373
|
kind: SymbolKind.String,
|
|
394
374
|
range,
|
|
395
|
-
selectionRange
|
|
375
|
+
selectionRange,
|
|
396
376
|
children: [],
|
|
397
377
|
};
|
|
398
378
|
}
|
|
@@ -426,14 +406,26 @@ function plainText(nodes) {
|
|
|
426
406
|
}
|
|
427
407
|
return out.trim();
|
|
428
408
|
}
|
|
409
|
+
let locatedSource;
|
|
410
|
+
let lineStarts = [];
|
|
411
|
+
/** An offset to an LSP position; any line ending counts as one break. */
|
|
429
412
|
function positionAt(source, offset) {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
413
|
+
if (source !== locatedSource) {
|
|
414
|
+
locatedSource = source;
|
|
415
|
+
lineStarts = [0];
|
|
416
|
+
for (const match of source.matchAll(/\r\n?|\n/g))
|
|
417
|
+
lineStarts.push(match.index + match[0].length);
|
|
418
|
+
}
|
|
419
|
+
let low = 0;
|
|
420
|
+
let high = lineStarts.length - 1;
|
|
421
|
+
while (low < high) {
|
|
422
|
+
const middle = (low + high + 1) >> 1;
|
|
423
|
+
if (lineStarts[middle] <= offset)
|
|
424
|
+
low = middle;
|
|
425
|
+
else
|
|
426
|
+
high = middle - 1;
|
|
427
|
+
}
|
|
428
|
+
return { line: low, character: offset - lineStarts[low] };
|
|
437
429
|
}
|
|
438
430
|
function rangeAt(source, index, length) {
|
|
439
431
|
const before = source.slice(0, index);
|
package/dist/analyze.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../src/analyze.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../src/analyze.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Walks every node of a parsed Carve document, parents before children.
|
|
3
|
+
*
|
|
4
|
+
* Blocks do not all hang off `children`: list items sit in `items`, a
|
|
5
|
+
* description list's bodies in `items[].definitions`, and footnote bodies in
|
|
6
|
+
* the document's `footnoteDefs`. A walker that follows `children` alone sees
|
|
7
|
+
* only some of them, so this one descends into every property except `pos`
|
|
8
|
+
* and `attrs`.
|
|
9
|
+
*/
|
|
10
|
+
export interface AstNode {
|
|
11
|
+
type?: string;
|
|
12
|
+
pos?: {
|
|
13
|
+
startLine?: number;
|
|
14
|
+
startColumn?: number;
|
|
15
|
+
endLine?: number;
|
|
16
|
+
endColumn?: number;
|
|
17
|
+
startOffset?: number;
|
|
18
|
+
endOffset?: number;
|
|
19
|
+
};
|
|
20
|
+
children?: unknown;
|
|
21
|
+
[key: string]: unknown;
|
|
22
|
+
}
|
|
23
|
+
/** Return `false` from `visit` to skip the node's subtree. `ancestors` holds the enclosing typed nodes, outermost first. */
|
|
24
|
+
export declare function walkNodes(root: unknown, visit: (node: AstNode, ancestors: readonly AstNode[]) => boolean | void): void;
|