@adecore/editor-react 0.22.1 → 0.23.0
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/dist/CallHierarchyPanel.d.ts +6 -0
- package/dist/CallHierarchyPanel.js +88 -0
- package/dist/CompletionPopup.js +11 -3
- package/dist/DiffView.d.ts +22 -0
- package/dist/DiffView.js +203 -0
- package/dist/EditorContextMenu.js +1 -0
- package/dist/EditorView.js +18 -1
- package/dist/FindReplace.d.ts +1 -1
- package/dist/FindReplace.js +41 -11
- package/dist/HoverCard.js +2 -2
- package/dist/LanguagePopups.js +4 -1
- package/dist/Markdown.d.ts +2 -1
- package/dist/Markdown.js +8 -4
- package/dist/PeekPanel.d.ts +3 -0
- package/dist/PeekPanel.js +2 -3
- package/dist/PickPopup.js +15 -2
- package/dist/RenameCard.js +10 -5
- package/dist/RenderedDocs.d.ts +9 -0
- package/dist/RenderedDocs.js +84 -0
- package/dist/SplitDiffView.d.ts +9 -0
- package/dist/SplitDiffView.js +276 -0
- package/dist/SymbolPicker.d.ts +3 -0
- package/dist/SymbolPicker.js +4 -3
- package/dist/call-hierarchy-model.d.ts +52 -0
- package/dist/call-hierarchy-model.js +99 -0
- package/dist/call-hierarchy.d.ts +42 -0
- package/dist/call-hierarchy.js +399 -0
- package/dist/code-actions-model.d.ts +2 -0
- package/dist/code-actions-model.js +12 -10
- package/dist/code-actions.js +3 -1
- package/dist/completion-model.d.ts +14 -4
- package/dist/completion-model.js +40 -33
- package/dist/completion.d.ts +4 -0
- package/dist/completion.js +257 -42
- package/dist/diagnostics.js +8 -6
- package/dist/diff-expansion.d.ts +9 -0
- package/dist/diff-expansion.js +41 -0
- package/dist/diff-overlays.d.ts +15 -0
- package/dist/diff-overlays.js +28 -0
- package/dist/diff-syntax.d.ts +16 -0
- package/dist/diff-syntax.js +49 -0
- package/dist/diff-wordmarks.d.ts +5 -0
- package/dist/diff-wordmarks.js +26 -0
- package/dist/doc-comment-model.d.ts +23 -0
- package/dist/doc-comment-model.js +291 -0
- package/dist/editor-language.d.ts +13 -1
- package/dist/editor-language.js +14 -4
- package/dist/editor-react.css +79 -0
- package/dist/format-on-type.d.ts +14 -0
- package/dist/format-on-type.js +96 -0
- package/dist/host-types.d.ts +17 -0
- package/dist/hover.d.ts +4 -0
- package/dist/hover.js +15 -2
- package/dist/index.d.ts +19 -5
- package/dist/index.js +9 -1
- package/dist/inlay-hints.d.ts +47 -2
- package/dist/inlay-hints.js +353 -16
- package/dist/language-ids.js +4 -2
- package/dist/locales/en.json +114 -3
- package/dist/locales/nl.json +114 -3
- package/dist/models.d.ts +6 -2
- package/dist/models.js +5 -1
- package/dist/patch-decorations.d.ts +27 -0
- package/dist/patch-decorations.js +182 -0
- package/dist/patch-layout.d.ts +40 -0
- package/dist/patch-layout.js +304 -0
- package/dist/peek.js +1 -0
- package/dist/pick.d.ts +1 -0
- package/dist/pick.js +11 -1
- package/dist/popups.d.ts +17 -0
- package/dist/popups.js +1 -0
- package/dist/project-language.d.ts +8 -0
- package/dist/project-language.js +34 -2
- package/dist/refresher.d.ts +1 -0
- package/dist/refresher.js +5 -0
- package/dist/rename-model.d.ts +1 -1
- package/dist/rename-model.js +3 -7
- package/dist/rename.js +5 -8
- package/dist/rendered-docs.d.ts +62 -0
- package/dist/rendered-docs.js +368 -0
- package/dist/row-host.d.ts +2 -0
- package/dist/row-host.js +11 -3
- package/dist/semantic-delta.d.ts +2 -0
- package/dist/semantic-delta.js +27 -0
- package/dist/semantic-model.js +16 -0
- package/dist/semantic-tokens.d.ts +26 -1
- package/dist/semantic-tokens.js +174 -14
- package/dist/shortcut-keys.d.ts +2 -0
- package/dist/shortcut-keys.js +6 -2
- package/dist/signature.js +1 -1
- package/dist/snippet-field-transforms.d.ts +30 -0
- package/dist/snippet-field-transforms.js +116 -0
- package/dist/snippet-indent.d.ts +2 -0
- package/dist/snippet-indent.js +49 -0
- package/dist/snippet-range-order.d.ts +3 -0
- package/dist/snippet-range-order.js +19 -0
- package/dist/snippet-session.d.ts +42 -6
- package/dist/snippet-session.js +650 -53
- package/dist/snippet-transform-client.d.ts +19 -0
- package/dist/snippet-transform-client.js +66 -0
- package/dist/snippet-transform-format.d.ts +15 -0
- package/dist/snippet-transform-format.js +302 -0
- package/dist/snippet-transform-protocol.d.ts +45 -0
- package/dist/snippet-transform-protocol.js +8 -0
- package/dist/snippet-transform-queue.d.ts +32 -0
- package/dist/snippet-transform-queue.js +173 -0
- package/dist/snippet-transform-worker.d.ts +10 -0
- package/dist/snippet-transform-worker.js +41 -0
- package/dist/snippet-variable-names.d.ts +1 -0
- package/dist/snippet-variable-names.js +36 -0
- package/dist/snippet-variables.d.ts +7 -0
- package/dist/snippet-variables.js +66 -0
- package/dist/snippet.d.ts +30 -3
- package/dist/snippet.js +402 -87
- package/dist/split-alignment.d.ts +6 -0
- package/dist/split-alignment.js +38 -0
- package/dist/split-scroll.d.ts +14 -0
- package/dist/split-scroll.js +45 -0
- package/dist/symbols.d.ts +2 -1
- package/dist/symbols.js +39 -7
- package/dist/testing.d.ts +5 -1
- package/dist/testing.js +12 -0
- package/dist/workspace-edit.d.ts +25 -3
- package/dist/workspace-edit.js +282 -143
- package/package.json +10 -5
- package/src/CallHierarchyPanel.tsx +238 -0
- package/src/CompletionPopup.tsx +12 -1
- package/src/DiffView.tsx +262 -0
- package/src/EditorContextMenu.tsx +1 -0
- package/src/EditorView.tsx +21 -2
- package/src/FindReplace.tsx +51 -13
- package/src/HoverCard.tsx +23 -21
- package/src/LanguagePopups.tsx +5 -0
- package/src/Markdown.tsx +10 -3
- package/src/PeekPanel.tsx +2 -3
- package/src/PickPopup.tsx +18 -2
- package/src/RenameCard.tsx +18 -0
- package/src/RenderedDocs.tsx +155 -0
- package/src/SplitDiffView.tsx +337 -0
- package/src/SymbolPicker.tsx +4 -3
- package/src/call-hierarchy-model.ts +158 -0
- package/src/call-hierarchy.ts +441 -0
- package/src/code-actions-model.ts +17 -11
- package/src/code-actions.ts +3 -1
- package/src/completion-model.ts +61 -35
- package/src/completion.ts +302 -42
- package/src/diagnostics.ts +8 -6
- package/src/diff-expansion.ts +49 -0
- package/src/diff-overlays.tsx +69 -0
- package/src/diff-syntax.ts +67 -0
- package/src/diff-wordmarks.ts +31 -0
- package/src/doc-comment-model.ts +336 -0
- package/src/editor-language.ts +21 -5
- package/src/editor-react.css +79 -0
- package/src/format-on-type.ts +111 -0
- package/src/host-types.ts +19 -0
- package/src/hover.ts +18 -3
- package/src/index.ts +27 -4
- package/src/inlay-hints.ts +394 -18
- package/src/language-ids.ts +4 -2
- package/src/locales/en.json +114 -3
- package/src/locales/nl.json +114 -3
- package/src/models.ts +40 -1
- package/src/patch-decorations.ts +224 -0
- package/src/patch-layout.ts +388 -0
- package/src/peek.ts +1 -0
- package/src/pick.ts +12 -1
- package/src/popups.ts +24 -0
- package/src/project-language.ts +43 -2
- package/src/refresher.ts +6 -0
- package/src/rename-model.ts +4 -8
- package/src/rename.ts +5 -8
- package/src/rendered-docs.ts +422 -0
- package/src/row-host.ts +12 -3
- package/src/semantic-delta.ts +29 -0
- package/src/semantic-model.ts +17 -0
- package/src/semantic-tokens.ts +202 -19
- package/src/shortcut-keys.ts +6 -2
- package/src/signature.ts +1 -1
- package/src/snippet-field-transforms.ts +144 -0
- package/src/snippet-indent.ts +53 -0
- package/src/snippet-range-order.ts +19 -0
- package/src/snippet-session.ts +797 -56
- package/src/snippet-transform-client.ts +84 -0
- package/src/snippet-transform-format.ts +325 -0
- package/src/snippet-transform-protocol.ts +24 -0
- package/src/snippet-transform-queue.ts +199 -0
- package/src/snippet-transform-worker.ts +58 -0
- package/src/snippet-variable-names.ts +36 -0
- package/src/snippet-variables.ts +74 -0
- package/src/snippet.ts +452 -89
- package/src/split-alignment.ts +45 -0
- package/src/split-scroll.ts +54 -0
- package/src/symbols.ts +43 -7
- package/src/testing.ts +25 -0
- package/src/workspace-edit.ts +347 -169
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { TextEdit } from '@adecore/lsp';
|
|
2
|
+
import type { EditorTextChange } from '@adecore/editor';
|
|
3
|
+
import { comparePositions } from './diagnostics-model.ts';
|
|
4
|
+
import type { EditorLanguage } from './editor-language.ts';
|
|
5
|
+
|
|
6
|
+
const METHOD = 'textDocument/onTypeFormatting';
|
|
7
|
+
/* A line break with the indentation the editor put after it, which is how Enter reaches the server. */
|
|
8
|
+
const LINE_BREAK = /^\r?\n[ \t]*(\r?\n[ \t]*)?$/;
|
|
9
|
+
/* A closer with the whitespace the editor replaced in front of it when it moved the closer back to its opener's indentation. */
|
|
10
|
+
const DEDENTED = /^[ \t]+(\S)$/u;
|
|
11
|
+
|
|
12
|
+
/* The overlapping edits of a server answer have no single meaning, so an answer that has them is not applied. */
|
|
13
|
+
function overlaps(edits: readonly TextEdit[]): boolean {
|
|
14
|
+
const ordered = [...edits].sort((left, right) => comparePositions(left.range.start, right.range.start));
|
|
15
|
+
return ordered.some((edit, index) => index > 0 && comparePositions(ordered[index - 1]!.range.end, edit.range.start) > 0);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/*
|
|
19
|
+
* Formatting while typing: after a person types one of the characters the server named in
|
|
20
|
+
* `firstTriggerCharacter` and `moreTriggerCharacter`, the server is asked what to change around the caret, and its
|
|
21
|
+
* edits are applied.
|
|
22
|
+
*
|
|
23
|
+
* Only typing counts: one change that is the trigger character alone, the closer the editor moved back to its
|
|
24
|
+
* opener's indentation, or a line break with its indentation for `\n`, which the editor reports as typed though
|
|
25
|
+
* Enter runs as a command. A character the editor types over an existing closer changes no text and asks nothing. A paste, undo, a completion or an external change does not ask, and neither does a
|
|
26
|
+
* second caret, a read-only editor or a snippet session, whose tab stops an edit could move. An answer is applied
|
|
27
|
+
* only while the text is exactly what it was asked about, and the caret where it was.
|
|
28
|
+
*
|
|
29
|
+
* The edits join the undo step of the typed character, so one undo takes both back. On by default where the server offers it; `configure(false)`
|
|
30
|
+
* turns it off for a host that has a setting for it.
|
|
31
|
+
*/
|
|
32
|
+
export class FormatOnTypeFeature {
|
|
33
|
+
private readonly language: EditorLanguage;
|
|
34
|
+
private enabled = true;
|
|
35
|
+
/* Raised by every change of the text, so an answer for an older text is told from the one for the text that is. */
|
|
36
|
+
private revision = 0;
|
|
37
|
+
private controller = new AbortController();
|
|
38
|
+
|
|
39
|
+
constructor(language: EditorLanguage) {
|
|
40
|
+
this.language = language;
|
|
41
|
+
const off = language.editor.onTextChange((change) => this.typed(change));
|
|
42
|
+
language.onDispose(() => {
|
|
43
|
+
off();
|
|
44
|
+
this.controller.abort();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
get isEnabled(): boolean {
|
|
49
|
+
return this.enabled;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Whether the server of this document formats on type and the service can ask it. */
|
|
53
|
+
get supported(): boolean {
|
|
54
|
+
const { project, uri } = this.language;
|
|
55
|
+
return project.service.onTypeFormatting !== undefined && project.service.supports(METHOD, uri);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
configure(enabled: boolean): void {
|
|
59
|
+
this.enabled = enabled;
|
|
60
|
+
if (!enabled) {
|
|
61
|
+
this.controller.abort();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* The characters that ask the server, the first one and the more. */
|
|
66
|
+
triggerCharacters(): readonly string[] {
|
|
67
|
+
const options = this.language.project.service.providerOptions(METHOD, this.language.uri);
|
|
68
|
+
return options === undefined
|
|
69
|
+
? []
|
|
70
|
+
: [...(options.firstTriggerCharacter === undefined ? [] : [options.firstTriggerCharacter]), ...(options.moreTriggerCharacter ?? [])];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private typed(change: EditorTextChange): void {
|
|
74
|
+
const revision = ++this.revision;
|
|
75
|
+
this.controller.abort();
|
|
76
|
+
if (!this.enabled || (change.source !== 'input' && change.typed !== true) || change.changes.length !== 1 || !this.supported) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const { editor, snippets } = this.language;
|
|
80
|
+
const { text } = change.changes[0]!;
|
|
81
|
+
const typed = LINE_BREAK.test(text) ? '\n' : Array.from(text).length === 1 ? text : (DEDENTED.exec(text)?.[1] ?? null);
|
|
82
|
+
if (typed === null || !this.triggerCharacters().includes(typed)) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (snippets.isActive || editor.isReadOnly?.() === true || editor.getSelections().length !== 1) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
this.controller = new AbortController();
|
|
89
|
+
void this.ask(revision, typed, editor.getCaret(), this.controller.signal);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
private async ask(revision: number, typed: string, caret: { line: number; character: number }, signal: AbortSignal): Promise<void> {
|
|
93
|
+
const { editor, project, uri, document } = this.language;
|
|
94
|
+
try {
|
|
95
|
+
// The change of the typed character reaches the server before this question does.
|
|
96
|
+
await document.ready;
|
|
97
|
+
const edits = await project.service.onTypeFormatting!(uri, caret, typed, { ...editor.getIndentation() }, { signal });
|
|
98
|
+
const here = editor.getCaret();
|
|
99
|
+
const stale = revision !== this.revision || this.language.isDisposed || comparePositions(here, caret) !== 0;
|
|
100
|
+
if (stale || edits === null || edits.length === 0 || overlaps(edits)) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
editor.applyEdits(
|
|
104
|
+
edits.map((edit) => ({ range: edit.range, text: edit.newText })),
|
|
105
|
+
{ mergeUndo: true }
|
|
106
|
+
);
|
|
107
|
+
} catch {
|
|
108
|
+
// A refusal or a failing server is not worth a notice per keystroke; the next trigger character asks again.
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
package/src/host-types.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { WorkerRequestPort } from '@adecore/editor/worker-client';
|
|
2
|
+
import type { EditorPosition, EditorRange } from '@adecore/editor';
|
|
1
3
|
import type { i18n } from 'i18next';
|
|
2
4
|
import type { Keymap } from '@adecore/editor/keymap';
|
|
3
5
|
import type { ProjectFiles } from './workspace-edit.ts';
|
|
@@ -37,7 +39,22 @@ export interface RenameSuggestionsRequest {
|
|
|
37
39
|
uses: readonly string[];
|
|
38
40
|
}
|
|
39
41
|
|
|
42
|
+
export interface SnippetVariableContext {
|
|
43
|
+
readonly uri: string;
|
|
44
|
+
readonly languageId: string;
|
|
45
|
+
readonly position: EditorPosition;
|
|
46
|
+
readonly selection: EditorRange;
|
|
47
|
+
readonly selectedText: string;
|
|
48
|
+
readonly currentLine: string;
|
|
49
|
+
readonly currentWord: string;
|
|
50
|
+
readonly cursorIndex: number;
|
|
51
|
+
readonly cursorCount: number;
|
|
52
|
+
readonly folder?: string;
|
|
53
|
+
readonly path?: string;
|
|
54
|
+
}
|
|
55
|
+
|
|
40
56
|
export interface LanguageHost {
|
|
57
|
+
readonly snippetTransformWorker?: () => WorkerRequestPort;
|
|
41
58
|
/* The instance the app hands `UIProvider`, which the features read their words from too; the default instance without one. */
|
|
42
59
|
readonly i18n?: i18n;
|
|
43
60
|
readonly folder?: string;
|
|
@@ -48,5 +65,7 @@ export interface LanguageHost {
|
|
|
48
65
|
pathOfUri?(uri: string): string | null;
|
|
49
66
|
serverNames?(uri: string): readonly string[];
|
|
50
67
|
notify?(notification: EditorNotification): void;
|
|
68
|
+
/* Synchronous overrides; undefined delegates to built-ins or an editable unknown-variable placeholder. */
|
|
69
|
+
resolveSnippetVariable?(name: string, context: SnippetVariableContext): string | undefined;
|
|
51
70
|
suggestNames?(request: RenameSuggestionsRequest, signal: AbortSignal): Promise<readonly string[]>;
|
|
52
71
|
}
|
package/src/hover.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { EditorHover, EditorPosition, EditorRange } from '@adecore/editor';
|
|
2
2
|
import type { EditorLanguage } from './editor-language.ts';
|
|
3
3
|
import { rangeHolds, type Problem } from './diagnostics-model.ts';
|
|
4
|
-
import { hoverTextOf, isEmptyHover, locationsOf } from './hover-content.ts';
|
|
4
|
+
import { hoverTextOf, isEmptyHover, locationsOf, type HoverText } from './hover-content.ts';
|
|
5
5
|
import { lineTextOf } from './line-text.ts';
|
|
6
6
|
import { wordRangeAt } from './rename-model.ts';
|
|
7
7
|
import type { HoverInfo } from './popups.ts';
|
|
8
8
|
import { isShortcut } from './shortcut-keys.ts';
|
|
9
9
|
import { realTimers, type Timers } from './timers.ts';
|
|
10
10
|
|
|
11
|
-
const SHOW_DELAY_MS = 300;
|
|
11
|
+
export const SHOW_DELAY_MS = 300;
|
|
12
12
|
const HIDE_DELAY_MS = 250;
|
|
13
13
|
/* How long a card has to stay up before the references of its symbol are counted, which can be a request over the whole project. */
|
|
14
14
|
const COUNT_DELAY_MS = 500;
|
|
@@ -67,7 +67,7 @@ export class HoverFeature {
|
|
|
67
67
|
this.quickInfo();
|
|
68
68
|
return true;
|
|
69
69
|
}
|
|
70
|
-
if (event.key === 'Escape' && this.language.popups.getState().hover !== null) {
|
|
70
|
+
if (event.key === 'Escape' && this.language.popups.getState().hover !== null && this.language.popups.getState().callHierarchy == null) {
|
|
71
71
|
this.hide();
|
|
72
72
|
return true;
|
|
73
73
|
}
|
|
@@ -125,6 +125,17 @@ export class HoverFeature {
|
|
|
125
125
|
this.present(range.start, [], null, range);
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
+
/* A card of text another feature brings, such as the tooltip of an inlay hint, which goes the way any hover card does. */
|
|
129
|
+
showText(position: EditorPosition, text: HoverText): void {
|
|
130
|
+
this.hide();
|
|
131
|
+
this.present(position, [], { text, definition: null, word: '', references: null, plain: true }, null);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* The pointer left what a card was opened for: it closes unless the pointer reaches the card in time. */
|
|
135
|
+
release(): void {
|
|
136
|
+
this.scheduleHide();
|
|
137
|
+
}
|
|
138
|
+
|
|
128
139
|
hide(): void {
|
|
129
140
|
this.pinned = false;
|
|
130
141
|
this.held = false;
|
|
@@ -214,6 +225,10 @@ export class HoverFeature {
|
|
|
214
225
|
}
|
|
215
226
|
if (problems.length === 0 && info === null) {
|
|
216
227
|
this.hide();
|
|
228
|
+
if (pinned && (await this.language.inlayHints.showTooltipAt(position))) {
|
|
229
|
+
this.pinned = true;
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
217
232
|
if (pinned) {
|
|
218
233
|
this.language.project.host.notify?.({ id: TOAST_ID, kind: 'error', title: this.language.project.i18n.t('editor:language.hover.none') });
|
|
219
234
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
export { EditorLanguage } from './editor-language.ts';
|
|
2
|
-
export {
|
|
1
|
+
export { EditorLanguage, type EditorLanguageOptions } from './editor-language.ts';
|
|
2
|
+
export { DEFAULT_RANGE_LINES, DEFAULT_RANGE_CHARACTERS, type SemanticTokensOptions } from './semantic-tokens.ts';
|
|
3
|
+
export { ProjectLanguage, type FileOperationTarget } from './project-language.ts';
|
|
3
4
|
export type { LanguageDocumentHandle } from './project-language.ts';
|
|
4
|
-
export type {
|
|
5
|
+
export type {
|
|
6
|
+
SnippetVariableContext,
|
|
7
|
+
LanguageHost,
|
|
8
|
+
DiskText,
|
|
9
|
+
GitBlameCommit,
|
|
10
|
+
GitBlameResult,
|
|
11
|
+
EditorNotification,
|
|
12
|
+
RenameSuggestionsRequest
|
|
13
|
+
} from './host-types.ts';
|
|
5
14
|
export { EditorView } from './EditorView.tsx';
|
|
6
15
|
export { createHolder } from './holder.ts';
|
|
7
16
|
export type { EditorViewProps } from './EditorView.tsx';
|
|
@@ -13,8 +22,14 @@ export { SignatureCard } from './SignatureCard.tsx';
|
|
|
13
22
|
export { RenameCard } from './RenameCard.tsx';
|
|
14
23
|
export { PickPopup } from './PickPopup.tsx';
|
|
15
24
|
export { PeekPanel } from './PeekPanel.tsx';
|
|
25
|
+
export { CallHierarchyPanel } from './CallHierarchyPanel.tsx';
|
|
16
26
|
export { SymbolPicker } from './SymbolPicker.tsx';
|
|
17
27
|
export { CodeAuthorsCard } from './CodeAuthorsCard.tsx';
|
|
28
|
+
export { RenderedDocs } from './RenderedDocs.tsx';
|
|
29
|
+
export { RenderedDocsFeature } from './rendered-docs.ts';
|
|
30
|
+
export type { RenderedDocEntry, RenderedDocsSettings } from './rendered-docs.ts';
|
|
31
|
+
export { parseDocComment, sectionsOf, htmlToMarkdown, DOC_LINK_PREFIX } from './doc-comment-model.ts';
|
|
32
|
+
export type { DocTagEntry, DocTagSection, ParsedDocComment } from './doc-comment-model.ts';
|
|
18
33
|
export { EditorContextMenu } from './EditorContextMenu.tsx';
|
|
19
34
|
export { EditorRenderingProvider } from './rendering.tsx';
|
|
20
35
|
export type { EditorRendering } from './rendering-context.ts';
|
|
@@ -23,7 +38,7 @@ export { ChangeReview } from './ChangeReview.tsx';
|
|
|
23
38
|
export type { ChangeReviewProps } from './ChangeReview.tsx';
|
|
24
39
|
export { ProjectProblems, countsOf, compareRows } from './project-problems.ts';
|
|
25
40
|
export type { ProblemFile, ProblemRow } from './project-problems.ts';
|
|
26
|
-
export { applyWorkspaceEdit } from './workspace-edit.ts';
|
|
41
|
+
export { applyWorkspaceEdit, supportedResourceOperations } from './workspace-edit.ts';
|
|
27
42
|
export type { ProjectFiles, StagedFile, WorkspaceEditHost } from './workspace-edit.ts';
|
|
28
43
|
export { useProblemCounts } from './use-problem-counts.ts';
|
|
29
44
|
export type { ProblemCounts } from './diagnostics.ts';
|
|
@@ -41,6 +56,7 @@ export type {
|
|
|
41
56
|
RenameView,
|
|
42
57
|
RenameFileView,
|
|
43
58
|
PeekView,
|
|
59
|
+
CallHierarchyView,
|
|
44
60
|
PickView,
|
|
45
61
|
PickGroup,
|
|
46
62
|
PickRow,
|
|
@@ -61,3 +77,10 @@ export { AttributionCard } from './AttributionCard.tsx';
|
|
|
61
77
|
export type { AttributionCardProps } from './AttributionCard.tsx';
|
|
62
78
|
export { ReviewGroup, joinReviewGroup } from './review-group.ts';
|
|
63
79
|
export type { ReviewMember } from './review-group.ts';
|
|
80
|
+
export { DiffView } from './DiffView.tsx';
|
|
81
|
+
export type { DiffViewProps } from './DiffView.tsx';
|
|
82
|
+
export type { DiffLimits } from './diff-expansion.ts';
|
|
83
|
+
export { diffSyntaxDocument } from './diff-syntax.ts';
|
|
84
|
+
export type { DiffSourceSide, DiffSourceTokens, DiffSyntaxSources } from './diff-syntax.ts';
|
|
85
|
+
export { decoratePatch, usePatchDecorations } from './patch-decorations.ts';
|
|
86
|
+
export type { PatchDecoration, PatchDecorationOptions, PatchLineLabels, PatchTimer } from './patch-decorations.ts';
|