@markup-carve/carve-lsp 0.1.6 → 0.1.8

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 (99) hide show
  1. package/README.md +51 -22
  2. package/dist/analyze.js +46 -8
  3. package/dist/analyze.js.map +1 -1
  4. package/dist/analyze.test.js +8 -7
  5. package/dist/analyze.test.js.map +1 -1
  6. package/dist/definition.d.ts +1 -1
  7. package/dist/definition.js +76 -0
  8. package/dist/definition.js.map +1 -1
  9. package/dist/export-actions.d.ts +48 -0
  10. package/dist/export-actions.js +80 -0
  11. package/dist/export-actions.js.map +1 -0
  12. package/dist/export-actions.test.d.ts +1 -0
  13. package/dist/export-actions.test.js +77 -0
  14. package/dist/export-actions.test.js.map +1 -0
  15. package/dist/hover.js +3 -1
  16. package/dist/hover.js.map +1 -1
  17. package/dist/include-completion.js +226 -30
  18. package/dist/include-completion.js.map +1 -1
  19. package/dist/include-completion.test.js +266 -7
  20. package/dist/include-completion.test.js.map +1 -1
  21. package/dist/include-definition.js +31 -4
  22. package/dist/include-definition.js.map +1 -1
  23. package/dist/include-denial.d.ts +33 -0
  24. package/dist/include-denial.js +41 -0
  25. package/dist/include-denial.js.map +1 -0
  26. package/dist/include-denial.test.d.ts +1 -0
  27. package/dist/include-denial.test.js +126 -0
  28. package/dist/include-denial.test.js.map +1 -0
  29. package/dist/include-directive.js +118 -11
  30. package/dist/include-directive.js.map +1 -1
  31. package/dist/include-directive.test.js +42 -0
  32. package/dist/include-directive.test.js.map +1 -1
  33. package/dist/include-merge-diagnostics.test.d.ts +1 -0
  34. package/dist/include-merge-diagnostics.test.js +220 -0
  35. package/dist/include-merge-diagnostics.test.js.map +1 -0
  36. package/dist/include-path.d.ts +11 -6
  37. package/dist/include-path.js +10 -1
  38. package/dist/include-path.js.map +1 -1
  39. package/dist/include-path.test.js +23 -0
  40. package/dist/include-path.test.js.map +1 -1
  41. package/dist/include-resolver-guards.test.d.ts +1 -0
  42. package/dist/include-resolver-guards.test.js +227 -0
  43. package/dist/include-resolver-guards.test.js.map +1 -0
  44. package/dist/include-root-containment.test.d.ts +1 -0
  45. package/dist/include-root-containment.test.js +169 -0
  46. package/dist/include-root-containment.test.js.map +1 -0
  47. package/dist/include-seam-mapping.test.d.ts +1 -0
  48. package/dist/include-seam-mapping.test.js +181 -0
  49. package/dist/include-seam-mapping.test.js.map +1 -0
  50. package/dist/include-seam-navigation.test.d.ts +1 -0
  51. package/dist/include-seam-navigation.test.js +141 -0
  52. package/dist/include-seam-navigation.test.js.map +1 -0
  53. package/dist/include-security-conformance.test.js +281 -35
  54. package/dist/include-security-conformance.test.js.map +1 -1
  55. package/dist/include-selection-diagnostics.test.d.ts +1 -0
  56. package/dist/include-selection-diagnostics.test.js +120 -0
  57. package/dist/include-selection-diagnostics.test.js.map +1 -0
  58. package/dist/include-selection-navigation.test.d.ts +1 -0
  59. package/dist/include-selection-navigation.test.js +75 -0
  60. package/dist/include-selection-navigation.test.js.map +1 -0
  61. package/dist/include-selection.d.ts +14 -0
  62. package/dist/include-selection.js +67 -0
  63. package/dist/include-selection.js.map +1 -0
  64. package/dist/include-settings.d.ts +47 -2
  65. package/dist/include-settings.js +69 -6
  66. package/dist/include-settings.js.map +1 -1
  67. package/dist/include-settings.test.js +118 -0
  68. package/dist/include-settings.test.js.map +1 -1
  69. package/dist/includes.d.ts +112 -6
  70. package/dist/includes.js +375 -134
  71. package/dist/includes.js.map +1 -1
  72. package/dist/lsp-stdio-client.d.ts +33 -0
  73. package/dist/lsp-stdio-client.js +92 -0
  74. package/dist/lsp-stdio-client.js.map +1 -0
  75. package/dist/position-encoding.test.js +97 -1
  76. package/dist/position-encoding.test.js.map +1 -1
  77. package/dist/position.d.ts +11 -0
  78. package/dist/position.js +23 -0
  79. package/dist/position.js.map +1 -1
  80. package/dist/preview-includes.test.d.ts +1 -0
  81. package/dist/preview-includes.test.js +141 -0
  82. package/dist/preview-includes.test.js.map +1 -0
  83. package/dist/preview.d.ts +9 -0
  84. package/dist/preview.js +21 -0
  85. package/dist/preview.js.map +1 -0
  86. package/dist/semantic.js +58 -5
  87. package/dist/semantic.js.map +1 -1
  88. package/dist/semantic.test.js +32 -0
  89. package/dist/semantic.test.js.map +1 -1
  90. package/dist/server-capabilities.test.js +3 -56
  91. package/dist/server-capabilities.test.js.map +1 -1
  92. package/dist/server.js +50 -9
  93. package/dist/server.js.map +1 -1
  94. package/dist/settings.d.ts +1 -0
  95. package/dist/settings.js +2 -0
  96. package/dist/settings.js.map +1 -1
  97. package/dist/settings.test.js +2 -2
  98. package/dist/settings.test.js.map +1 -1
  99. package/package.json +2 -2
@@ -0,0 +1,80 @@
1
+ import { CodeActionKind, CreateFile, Position, Range, TextDocumentEdit, TextEdit, } from 'vscode-languageserver/node.js';
2
+ export const EXPORT_KIND = `${CodeActionKind.Source}.export`;
3
+ const FORMATS = {
4
+ markdown: { title: 'Export as Markdown', extension: '.md' },
5
+ html: { title: 'Export as HTML', extension: '.html' },
6
+ };
7
+ export function exportSupport(capabilities) {
8
+ const workspaceEdit = capabilities.workspace?.workspaceEdit;
9
+ return {
10
+ createFile: (workspaceEdit?.resourceOperations ?? []).includes('create'),
11
+ resolveEdit: (capabilities.textDocument?.codeAction?.resolveSupport?.properties ?? []).includes('edit'),
12
+ };
13
+ }
14
+ /** The sibling file an export writes: `notes.crv` becomes `notes.md`. */
15
+ export function exportTarget(uri, format) {
16
+ if (!uri.startsWith('file:'))
17
+ return null;
18
+ const { extension } = FORMATS[format];
19
+ return /\.crv$/i.test(uri) ? uri.replace(/\.crv$/i, extension) : `${uri}${extension}`;
20
+ }
21
+ /**
22
+ * Source actions that write the rendered document next to the source. With
23
+ * resolve support the action carries only `data` and the render happens in
24
+ * `resolveExportAction`, so a cursor move never pays for a full render.
25
+ */
26
+ export function exportCodeActions(uri, support, only, render, existing) {
27
+ if (!support.createFile)
28
+ return [];
29
+ if (only && !only.some((kind) => EXPORT_KIND === kind || EXPORT_KIND.startsWith(`${kind}.`)))
30
+ return [];
31
+ const actions = [];
32
+ for (const format of Object.keys(FORMATS)) {
33
+ if (!exportTarget(uri, format))
34
+ continue;
35
+ const action = { title: FORMATS[format].title, kind: EXPORT_KIND };
36
+ if (support.resolveEdit) {
37
+ action.data = { carveExport: format, uri };
38
+ }
39
+ else {
40
+ action.edit = exportEdit(uri, format, render(format), existing) ?? undefined;
41
+ }
42
+ actions.push(action);
43
+ }
44
+ return actions;
45
+ }
46
+ export function isExportAction(data) {
47
+ const candidate = data;
48
+ return typeof candidate?.uri === 'string'
49
+ && (candidate.carveExport === 'markdown' || candidate.carveExport === 'html');
50
+ }
51
+ export function resolveExportAction(action, render, existing) {
52
+ if (!isExportAction(action.data))
53
+ return action;
54
+ const { uri, carveExport } = action.data;
55
+ const content = render(uri, carveExport);
56
+ if (content === null)
57
+ return action;
58
+ const edit = exportEdit(uri, carveExport, content, existing);
59
+ return edit ? { ...action, edit } : action;
60
+ }
61
+ /**
62
+ * Replace an existing target wholesale; create a missing one. `overwrite` on
63
+ * `CreateFile` is not enough: Zed keeps the old content and the insert lands
64
+ * in front of it.
65
+ */
66
+ export function exportEdit(uri, format, content, existing) {
67
+ const target = exportTarget(uri, format);
68
+ if (!target)
69
+ return null;
70
+ const current = existing(target);
71
+ const fill = TextDocumentEdit.create({ uri: target, version: null }, [
72
+ TextEdit.replace(Range.create(Position.create(0, 0), endOf(current ?? '')), content),
73
+ ]);
74
+ return { documentChanges: current === null ? [CreateFile.create(target), fill] : [fill] };
75
+ }
76
+ function endOf(text) {
77
+ const lines = text.split(/\r\n|\r|\n/);
78
+ return Position.create(lines.length - 1, lines[lines.length - 1].length);
79
+ }
80
+ //# sourceMappingURL=export-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-actions.js","sourceRoot":"","sources":["../src/export-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,77 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { EXPORT_KIND, exportCodeActions, exportSupport, exportTarget, resolveExportAction, } from './export-actions.js';
4
+ const full = { createFile: true, resolveEdit: true };
5
+ const render = (format) => `rendered ${format}`;
6
+ const missing = () => null;
7
+ test('derives the sibling target from the source uri', () => {
8
+ assert.equal(exportTarget('file:///docs/notes.crv', 'markdown'), 'file:///docs/notes.md');
9
+ assert.equal(exportTarget('file:///docs/NOTES.CRV', 'html'), 'file:///docs/NOTES.html');
10
+ assert.equal(exportTarget('file:///docs/notes', 'markdown'), 'file:///docs/notes.md');
11
+ assert.equal(exportTarget('untitled:Untitled-1', 'markdown'), null);
12
+ });
13
+ test('reads create and resolve support from client capabilities', () => {
14
+ assert.deepEqual(exportSupport({}), { createFile: false, resolveEdit: false });
15
+ assert.deepEqual(exportSupport({
16
+ workspace: { workspaceEdit: { documentChanges: true, resourceOperations: ['create', 'rename'] } },
17
+ textDocument: { codeAction: { resolveSupport: { properties: ['edit'] } } },
18
+ }), { createFile: true, resolveEdit: true });
19
+ // Neovim's declaration: create without documentChanges.
20
+ assert.equal(exportSupport({ workspace: { workspaceEdit: { resourceOperations: ['rename', 'create', 'delete'] } } }).createFile, true);
21
+ assert.equal(exportSupport({ workspace: { workspaceEdit: { documentChanges: true } } }).createFile, false);
22
+ });
23
+ test('offers nothing when the client cannot create files', () => {
24
+ assert.deepEqual(exportCodeActions('file:///a.crv', { createFile: false, resolveEdit: true }, undefined, render, missing), []);
25
+ });
26
+ test('defers rendering to resolve when the client supports it', () => {
27
+ let renders = 0;
28
+ const actions = exportCodeActions('file:///a.crv', full, undefined, (format) => {
29
+ renders++;
30
+ return render(format);
31
+ }, missing);
32
+ assert.equal(renders, 0);
33
+ assert.deepEqual(actions.map((action) => [action.title, action.kind, action.edit]), [
34
+ ['Export as Markdown', EXPORT_KIND, undefined],
35
+ ['Export as HTML', EXPORT_KIND, undefined],
36
+ ]);
37
+ const resolved = resolveExportAction(actions[0], (uri, format) => `${uri} as ${format}`, missing);
38
+ assert.deepEqual(resolved.edit, {
39
+ documentChanges: [
40
+ { kind: 'create', uri: 'file:///a.md' },
41
+ {
42
+ textDocument: { uri: 'file:///a.md', version: null },
43
+ edits: [{ range: { start: { line: 0, character: 0 }, end: { line: 0, character: 0 } }, newText: 'file:///a.crv as markdown' }],
44
+ },
45
+ ],
46
+ });
47
+ });
48
+ test('renders eagerly without resolve support', () => {
49
+ const [markdown] = exportCodeActions('file:///a.crv', { createFile: true, resolveEdit: false }, undefined, render, missing);
50
+ const fill = markdown?.edit?.documentChanges?.[1];
51
+ assert.ok(fill && 'edits' in fill);
52
+ assert.equal(fill.edits[0]?.newText, 'rendered markdown');
53
+ });
54
+ test('honors the requested kinds filter', () => {
55
+ assert.equal(exportCodeActions('file:///a.crv', full, ['quickfix'], render, missing).length, 0);
56
+ assert.equal(exportCodeActions('file:///a.crv', full, ['source'], render, missing).length, 2);
57
+ assert.equal(exportCodeActions('file:///a.crv', full, [EXPORT_KIND], render, missing).length, 2);
58
+ });
59
+ test('leaves foreign actions and vanished documents untouched', () => {
60
+ const foreign = { title: 'other', data: { something: 1 } };
61
+ assert.equal(resolveExportAction(foreign, () => 'x', missing), foreign);
62
+ const [action] = exportCodeActions('file:///a.crv', full, undefined, render, missing);
63
+ assert.equal(resolveExportAction(action, () => null, missing).edit, undefined);
64
+ });
65
+ test('replaces an existing target instead of creating it again', () => {
66
+ const [action] = exportCodeActions('file:///a.crv', full, undefined, render, missing);
67
+ const resolved = resolveExportAction(action, () => 'new', () => 'old line\nsecond line\n');
68
+ assert.deepEqual(resolved.edit, {
69
+ documentChanges: [
70
+ {
71
+ textDocument: { uri: 'file:///a.md', version: null },
72
+ edits: [{ range: { start: { line: 0, character: 0 }, end: { line: 2, character: 0 } }, newText: 'new' }],
73
+ },
74
+ ],
75
+ });
76
+ });
77
+ //# sourceMappingURL=export-actions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-actions.test.js","sourceRoot":"","sources":["../src/export-actions.test.ts"],"names":[],"mappings":"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"}
package/dist/hover.js CHANGED
@@ -160,7 +160,9 @@ function collectBlock(matches, node, position, resolveRef) {
160
160
  case 'table':
161
161
  if (node.caption)
162
162
  collectInline(matches, node.caption, position, resolveRef);
163
- node.rows.forEach((row) => row.cells.forEach((cell) => collectInline(matches, cell.children, position, resolveRef)));
163
+ // A cell carries EITHER inline children or imported `blocks` (carve-js#1980), never both.
164
+ // Carve source always yields the inline half, and this server only ever parses source.
165
+ node.rows.forEach((row) => row.cells.forEach((cell) => collectInline(matches, cell.children ?? [], position, resolveRef)));
164
166
  break;
165
167
  }
166
168
  }
package/dist/hover.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hover.js","sourceRoot":"","sources":["../src/hover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hover.js","sourceRoot":"","sources":["../src/hover.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,138 @@
1
+ /**
2
+ * Completion inside a `{{ … }}` include directive: the path, the `#section`
3
+ * it selects, and the option names and value shapes.
4
+ *
5
+ * Every slot is recognized against the SAME grammar the scanner enforces
6
+ * (`./include-directive.js`). A completion that inserts a spelling the scanner
7
+ * rejects is worse than no completion at all: the directive silently stops
8
+ * being a directive, with no include and no diagnostic - the exact failure
9
+ * this feature exists to prevent.
10
+ */
1
11
  import { readdirSync, readFileSync, realpathSync } from 'node:fs';
2
12
  import path from 'node:path';
3
- import { CompletionItemKind } from 'vscode-languageserver/node.js';
4
- import { scanDocument } from './workspace-index.js';
13
+ import { CompletionItemKind, } from 'vscode-languageserver/node.js';
14
+ import { lineCount, sections } from './include-selection.js';
15
+ /**
16
+ * The option names §19 defines, with the value shapes worth offering. The
17
+ * line range has no fixed values, so its shape is completed from the child's
18
+ * own length; the shift offset does, and `auto` is the one authors do not
19
+ * discover on their own.
20
+ */
21
+ const OPTION_NAMES = [
22
+ { name: 'lines', detail: 'Select a line range, N-M' },
23
+ { name: 'shift', detail: 'Shift heading levels by N, or auto' },
24
+ ];
25
+ /** Text between the innermost unclosed `{{` and the cursor, or null. */
26
+ function directiveInner(prefix) {
27
+ const open = prefix.lastIndexOf('{{');
28
+ if (open < 0)
29
+ return null;
30
+ const inner = prefix.slice(open + 2);
31
+ return inner.includes('}}') ? null : inner;
32
+ }
33
+ /**
34
+ * A complete path token, in every spelling the scanner accepts: bare, straight
35
+ * quoted, or curly quoted. A quoted path is the only way to name a file whose
36
+ * name contains a space, so a pattern that only matched the bare form would
37
+ * drop completion on exactly the directives that need the quotes.
38
+ */
39
+ const PATH_TOKEN = '(?:"(?:\\\\.|[^"\\\\])*"|\u201c[^\u201d]*\u201d|[^\\s#@}"\u201c]+)';
40
+ /** `{{ <path>` with nothing selected yet. */
41
+ const PATH_RE = /^(\s*)([^\s#@}"\u201c]*)$/;
42
+ /**
43
+ * `{{ "<path>` mid-typing, before the closing quote exists. The opening
44
+ * delimiter is captured because the two quote styles do not close each other:
45
+ * a curly-opened path closed with a straight quote is not a directive.
46
+ */
47
+ const QUOTED_PATH_RE = /^\s*(["\u201c])([^"\u201d]*)$/;
48
+ const CLOSING_QUOTE = { '"': '"', '\u201c': '\u201d' };
49
+ /** `{{ <path> #<fragment>`, and the ungrammatical `{{ <path>#<fragment>`. */
50
+ const FRAGMENT_RE = new RegExp(`^\\s*(${PATH_TOKEN})(\\s*)#([A-Za-z_][\\w-]*)?$`);
51
+ /** The leading path of a directive, however it is spelled. */
52
+ const LEADING_PATH_RE = new RegExp(`^\\s*(${PATH_TOKEN})`);
53
+ /**
54
+ * Everything that may legally precede an option: a path, an optional section,
55
+ * and options that are themselves complete. Without this an option would be
56
+ * offered after arbitrary text (`{{ ch1.crv nonsense @`), and taking it would
57
+ * leave a token the scanner refuses - the directive silently becoming prose,
58
+ * which is the one outcome this module exists to avoid.
59
+ */
60
+ const OPTION_PREFIX_RE = new RegExp(`^\\s*${PATH_TOKEN}(?:\\s+#[A-Za-z_][\\w-]*)?(?:\\s+@[A-Za-z_][\\w-]*:[^\\s#@}]+)*\\s*$`);
61
+ /** `{{ <path> … @<name>`, with whatever separator precedes the sigil. */
62
+ const OPTION_NAME_RE = /(\s*)@([A-Za-z_][\w-]*)?$/;
63
+ /** `{{ <path> … @<name>:<value>` */
64
+ const OPTION_VALUE_RE = /@([A-Za-z_][\w-]*):([^\s#@}]*)$/;
65
+ /** A path token as the scanner reads it: quotes stripped, escapes undone. */
66
+ function decodePath(token) {
67
+ if (token.startsWith('"')) {
68
+ return token.slice(1, token.endsWith('"') ? -1 : undefined).replace(/\\(["\\])/g, '$1');
69
+ }
70
+ if (token.startsWith('\u201c'))
71
+ return token.slice(1, token.endsWith('\u201d') ? -1 : undefined);
72
+ return token;
73
+ }
5
74
  export function includeCompletions(source, position, options) {
6
75
  if (!options?.sourcePath || !options.includeRoot)
7
76
  return [];
8
77
  const line = source.replace(/\r\n?/g, '\n').split('\n')[position.line] ?? '';
9
- const prefix = line.slice(0, position.character);
10
- const match = /\{\{\s*([^\s}@]*)$/.exec(prefix);
11
- if (!match)
78
+ const inner = directiveInner(line.slice(0, position.character));
79
+ if (inner === null)
12
80
  return [];
13
- const authored = match[1];
14
- const [filePart, fragment] = authored.split('#', 2);
15
81
  const root = realpathSafe(options.includeRoot);
16
82
  if (!root)
17
83
  return [];
18
- const base = path.resolve(path.dirname(options.sourcePath), path.dirname(filePart || '.'));
84
+ const value = OPTION_VALUE_RE.exec(inner);
85
+ if (value) {
86
+ return OPTION_PREFIX_RE.test(inner.slice(0, value.index))
87
+ ? optionValues(inner, value, position, options, root)
88
+ : [];
89
+ }
90
+ const name = OPTION_NAME_RE.exec(inner);
91
+ if (name) {
92
+ return OPTION_PREFIX_RE.test(inner.slice(0, name.index))
93
+ ? optionNames(inner, name, position)
94
+ : [];
95
+ }
96
+ const fragment = FRAGMENT_RE.exec(inner);
97
+ if (fragment)
98
+ return fragments(fragment, position, options, root);
99
+ const quoted = QUOTED_PATH_RE.exec(inner);
100
+ if (quoted)
101
+ return paths(quoted[2], position, options, root, CLOSING_QUOTE[quoted[1]]);
102
+ const asPath = PATH_RE.exec(inner);
103
+ return asPath ? paths(asPath[2], position, options, root, undefined) : [];
104
+ }
105
+ /** A path the bare token cannot spell, so the directive has to quote it. */
106
+ function needsQuoting(value) {
107
+ return /["\u201c\u201d#@}\s]/.test(value);
108
+ }
109
+ function escapeQuoted(value) {
110
+ return value.replace(/(["\\])/g, '\\$1');
111
+ }
112
+ function quote(value) {
113
+ return `"${escapeQuoted(value)}"`;
114
+ }
115
+ /**
116
+ * Files and directories under the containment root, filtered to `.crv`.
117
+ *
118
+ * `closer` is set when the author already opened a quoted path: the edit then
119
+ * stays inside the quotes and closes them with the delimiter that MATCHES the
120
+ * opening one, once a FILE is chosen. A name that cannot be spelled bare is
121
+ * quoted on the author's behalf instead, whole path and all - quoting is a
122
+ * property of the token, not of its last segment.
123
+ */
124
+ function paths(filePart, position, options, root, closer) {
125
+ // Split on the last separator rather than through `path.dirname`, which maps
126
+ // a trailing "sub/" to "." and would list the PARENT of the directory the
127
+ // author just opened. The backslash counts only where the platform treats it
128
+ // as a separator; on POSIX it is a legal character in a file name.
129
+ const slash = Math.max(filePart.lastIndexOf('/'), path.sep === '\\' ? filePart.lastIndexOf('\\') : -1);
130
+ const prefix = slash < 0 ? '' : filePart.slice(0, slash + 1);
131
+ const partial = slash < 0 ? filePart : filePart.slice(slash + 1);
132
+ const base = path.resolve(path.dirname(options.sourcePath), prefix || '.');
19
133
  const contained = realpathSafe(base);
20
134
  if (!contained || !isInside(root, contained))
21
135
  return [];
22
- const replaceStart = position.character - (fragment === undefined ? path.basename(filePart) : fragment).length;
23
- if (fragment !== undefined) {
24
- const target = realpathSafe(path.resolve(path.dirname(options.sourcePath), filePart));
25
- if (!target || !isInside(root, target))
26
- return [];
27
- let targetSource;
28
- try {
29
- targetSource = readFileSync(target, 'utf8');
30
- }
31
- catch {
32
- return [];
33
- }
34
- return scanDocument(target, targetSource)
35
- .filter((token) => token.kind === 'heading' && token.declaration)
36
- .map((token) => item(token.key, CompletionItemKind.Reference, position, replaceStart, 'Section in included file'));
37
- }
38
- const partial = path.basename(filePart);
39
136
  let entries;
40
137
  try {
41
138
  entries = readdirSync(contained, { withFileTypes: true });
@@ -45,13 +142,112 @@ export function includeCompletions(source, position, options) {
45
142
  }
46
143
  return entries
47
144
  .filter((entry) => entry.name.startsWith(partial) && (entry.isDirectory() || entry.name.endsWith('.crv')))
48
- .map((entry) => item(entry.name + (entry.isDirectory() ? '/' : ''), entry.isDirectory() ? CompletionItemKind.Folder : CompletionItemKind.File, position, replaceStart, 'Contained include path'));
145
+ .map((entry) => {
146
+ const directory = entry.isDirectory();
147
+ const label = entry.name + (directory ? '/' : '');
148
+ const full = prefix + label;
149
+ let start = position.character - partial.length;
150
+ let newText = label;
151
+ if (closer !== undefined) {
152
+ // Stay inside the quotes the author opened, and close them only once a
153
+ // FILE is chosen - a directory is a step on the way, not a whole path.
154
+ start = position.character - filePart.length;
155
+ newText = directory ? full : `${full}${closer}`;
156
+ }
157
+ else if (needsQuoting(full)) {
158
+ start = position.character - filePart.length;
159
+ newText = directory ? `"${escapeQuoted(full)}` : quote(full);
160
+ }
161
+ return item(label, directory ? CompletionItemKind.Folder : CompletionItemKind.File, position, start, 'Contained include path', newText);
162
+ });
163
+ }
164
+ /**
165
+ * Heading ids in the file the directive already names.
166
+ *
167
+ * The inserted text always carries the separating space, whether or not the
168
+ * author typed one. `{{ ch1.crv#intro }}` is NOT a directive - the scanner's
169
+ * path token stops at `#` and the remainder parses as a bad option - so
170
+ * completing into that spelling would hand back literal text. Detecting it and
171
+ * repairing it turns the trigger character into a fix rather than a trap.
172
+ */
173
+ function fragments(match, position, options, root) {
174
+ const filePart = decodePath(match[1]);
175
+ const tail = match[2].length + 1 + (match[3] ?? '').length;
176
+ const target = realpathSafe(path.resolve(path.dirname(options.sourcePath), filePart));
177
+ if (!target || !isInside(root, target))
178
+ return [];
179
+ const source = readSafe(target);
180
+ if (source === null)
181
+ return [];
182
+ const start = position.character - tail;
183
+ return sections(source).map((section) => item(`#${section.id}`, CompletionItemKind.Reference, position, start, 'Section in included file', ` #${section.id}`));
184
+ }
185
+ /**
186
+ * Option names §19 defines, minus any the directive already carries.
187
+ *
188
+ * Options are whitespace-separated, so the inserted text carries the separator
189
+ * whether or not the author typed one - `{{ ch1.crv @shift:1@lines:2-3 }}` is
190
+ * one unparsable option token, not two, and completing into it would hand back
191
+ * literal text for the same reason the unspaced fragment does.
192
+ */
193
+ function optionNames(inner, match, position) {
194
+ const separator = match[1];
195
+ const typed = match[2] ?? '';
196
+ const tail = separator.length + 1 + typed.length;
197
+ const before = inner.slice(0, inner.length - tail);
198
+ const start = position.character - tail;
199
+ return OPTION_NAMES.filter((option) => !new RegExp(`@${option.name}:`).test(before)).map((option) => item(`@${option.name}:`, CompletionItemKind.Property, position, start, option.detail, ` @${option.name}:`));
200
+ }
201
+ /** Value shapes for the option being typed. */
202
+ function optionValues(inner, match, position, options, root) {
203
+ const name = match[1];
204
+ const start = position.character - match[2].length;
205
+ if (name === 'shift') {
206
+ return [
207
+ item('auto', CompletionItemKind.Value, position, start, 'Fit heading levels to the include site'),
208
+ item('+1', CompletionItemKind.Value, position, start, 'Shift headings one level deeper'),
209
+ item('-1', CompletionItemKind.Value, position, start, 'Shift headings one level shallower'),
210
+ ];
211
+ }
212
+ if (name !== 'lines')
213
+ return [];
214
+ // The only range worth guessing is the whole file, and it is only worth
215
+ // offering because it also tells the author how long the child actually is.
216
+ const token = LEADING_PATH_RE.exec(inner)?.[1];
217
+ if (!token)
218
+ return [];
219
+ const filePart = decodePath(token);
220
+ const target = realpathSafe(path.resolve(path.dirname(options.sourcePath), filePart));
221
+ if (!target || !isInside(root, target))
222
+ return [];
223
+ const source = readSafe(target);
224
+ if (source === null)
225
+ return [];
226
+ const total = lineCount(source);
227
+ // An empty target has no line to select, and `1-0` is not a range the
228
+ // scanner accepts, so there is nothing honest to offer.
229
+ if (total === 0)
230
+ return [];
231
+ return [item(`1-${total}`, CompletionItemKind.Value, position, start, `Whole file (${total} lines)`)];
49
232
  }
50
- function item(label, kind, position, start, detail) {
51
- return { label, kind, detail, textEdit: {
233
+ function item(label, kind, position, start, detail, newText = label) {
234
+ return {
235
+ label,
236
+ kind,
237
+ detail,
238
+ textEdit: {
52
239
  range: { start: { line: position.line, character: start }, end: position },
53
- newText: label,
54
- } };
240
+ newText,
241
+ },
242
+ };
243
+ }
244
+ function readSafe(target) {
245
+ try {
246
+ return readFileSync(target, 'utf8');
247
+ }
248
+ catch {
249
+ return null;
250
+ }
55
251
  }
56
252
  function realpathSafe(value) {
57
253
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"include-completion.js","sourceRoot":"","sources":["../src/include-completion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"include-completion.js","sourceRoot":"","sources":["../src/include-completion.ts"],"names":[],"mappings":"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"}