Skip to content

@jsvision/code-editor / CodeEditorController

Class: CodeEditorController

Defined in: code-editor/src/controller.ts:134

Owns public editor state and funnels every source mutation through document transactions.

Example

ts
const controller = new CodeEditorController({ document });

Constructors

Constructor

new CodeEditorController(options): CodeEditorController

Defined in: code-editor/src/controller.ts:174

Parameters

options

CreateCodeEditorControllerOptions

Returns

CodeEditorController

Properties

degradation

readonly degradation: CodeEditorDegradationState

Defined in: code-editor/src/controller.ts:137


document

readonly document: CodeEditorDocumentModel

Defined in: code-editor/src/controller.ts:135


limits

readonly limits: CodeEditorLimits

Defined in: code-editor/src/controller.ts:136


observations

readonly observations: CodeEditorObservabilityChannel

Defined in: code-editor/src/controller.ts:138

Accessors

diagnostics

Get Signature

get diagnostics(): readonly object[]

Defined in: code-editor/src/controller.ts:450

Maps sanitized LSP diagnostics into document-offset presentation spans.

Returns

readonly object[]


foldableRegions

Get Signature

get foldableRegions(): readonly object[]

Defined in: code-editor/src/controller.ts:340

Current validated multi-line structural regions, expressed as inclusive logical lines.

Returns

readonly object[]


folds

Get Signature

get folds(): readonly object[]

Defined in: code-editor/src/controller.ts:350

Current collapsed structural regions.

Stale language results never hide source: when the document revision advances, this getter returns an empty list until matching fresh analysis is installed.

Returns

readonly object[]

Set Signature

set folds(regions): void

Defined in: code-editor/src/controller.ts:361

Compatibility assignment for the original writable fold collection.

Only ranges that exactly match current parser-validated structures are accepted. New code should use the explicit fold commands so selection relocation and intent remain clear.

Parameters
regions

readonly object[]

Returns

void


languageResult

Get Signature

get languageResult(): LocalLanguageResult | undefined

Defined in: code-editor/src/controller.ts:329

Current validated local syntax/structure result, if available.

Returns

LocalLanguageResult | undefined


metrics

Get Signature

get metrics(): CodeEditorControllerMetrics

Defined in: code-editor/src/controller.ts:234

Returns a current immutable observability snapshot.

Returns

CodeEditorControllerMetrics


presentation

Get Signature

get presentation(): CodeEditorControllerPresentation

Defined in: code-editor/src/controller.ts:243

Returns the immutable assistance and service snapshot consumed by terminal views.

Returns

CodeEditorControllerPresentation


publicState

Get Signature

get publicState(): CodeEditorControllerPublicState

Defined in: code-editor/src/controller.ts:280

Returns current content-free state for status and accessibility adapters.

Returns

CodeEditorControllerPublicState


retainedState

Get Signature

get retainedState(): object

Defined in: code-editor/src/controller.ts:307

Returns content-free counters for controller-owned retained resources.

Returns

object

completions

readonly completions: number

diagnostics

readonly diagnostics: number

folds

readonly folds: number

historyBytes

readonly historyBytes: number

requests

readonly requests: number

symbols

readonly symbols: number

telemetryEvents

readonly telemetryEvents: number


snippets

Get Signature

get snippets(): readonly object[]

Defined in: code-editor/src/controller.ts:471

Maps current snippet placeholders into document-offset presentation spans.

Returns

readonly object[]

Methods

applyDocumentEdits()

applyDocumentEdits(edits, selection): boolean

Defined in: code-editor/src/controller.ts:566

Applies a validated editor transaction while recording which collapsed structures it touches.

This shared mutation boundary lets fresh parser analysis preserve a fold after one unrelated edit while conservatively expanding touched or ambiguously shifted structures.

Parameters

edits

readonly DocumentEditInput[]

Replacement list to apply as one typing transaction.

selection

DocumentSelectionInput

Selection installed after successful application.

Returns

boolean

true only when the complete transaction is accepted.


applyMutation()

applyMutation(input): DocumentMutationResult

Defined in: code-editor/src/controller.ts:509

Applies one origin-aware transaction and publishes exactly one accepted document event.

Rejected, stale, overlapping, read-only, and over-limit requests remain semantically inert and do not notify parsers, protocol synchronization, or terminal views.

Parameters

input

CodeEditorMutationInput

Untrusted mutation request to snapshot, validate, and apply atomically.

Returns

DocumentMutationResult

The accepted result or a typed reason for an inert rejection.

Example

ts
controller.applyMutation({
  edits: [{ range: { from: 0, to: 0 }, text: 'const ' }],
  origin: 'external',
});

caretChanged()

caretChanged(): void

Defined in: code-editor/src/controller.ts:813

Dismisses caret-context overlays after a local selection or caret change.

Returns

void

Example

ts
document.setSelection({ anchor: 4, head: 4 });
controller.caretChanged();

dismissAssistance()

dismissAssistance(): void

Defined in: code-editor/src/controller.ts:724

Dismisses completion and other transient assistance without changing the document.

Returns

void


dispose()

dispose(): void

Defined in: code-editor/src/controller.ts:1183

Releases controller-owned presentation, callback, and protocol resources.

Returns

void


fold()

fold(): void

Defined in: code-editor/src/controller.ts:871

Collapses the structural region starting at the active line, when one exists.

Returns

void


foldAll()

foldAll(): void

Defined in: code-editor/src/controller.ts:885

Collapses every currently validated structural region.

Returns

void


foldLine()

foldLine(line): void

Defined in: code-editor/src/controller.ts:908

Collapses a validated structural region by its logical header line.

Parameters

line

number

Returns

void


hostAction()

hostAction(kind): Promise<boolean>

Defined in: code-editor/src/controller.ts:571

Sends a bounded, typed editor action to the embedding host.

Parameters

kind

"save" | "close" | "navigate"

Returns

Promise<boolean>


navigateBack(): boolean

Defined in: code-editor/src/controller.ts:863

Returns to the latest bounded same-document navigation origin.

Returns

boolean

true when a previous location was restored.

Example

ts
if (controller.navigateBack()) {
  // The document caret now points at the previous local location.
}

navigateDiagnostic(direction): boolean

Defined in: code-editor/src/controller.ts:832

Moves to the next or previous diagnostic and opens its sanitized detail row.

Parameters

direction

-1 | 1

1 selects the next diagnostic; -1 selects the previous one.

Returns

boolean

true when a diagnostic was available.

Example

ts
controller.navigateDiagnostic(1);

openCompletion()

openCompletion(items): boolean

Defined in: code-editor/src/controller.ts:703

Opens one bounded manual completion list in the controller-owned assistance model.

Parameters

items

readonly CodeEditorCompletionItem[]

Host candidates to sanitize, detach, and retain within configured limits.

Returns

boolean

true when the list is safe, including a safe empty list.

Example

ts
controller.openCompletion([{ label: 'console', insertText: 'console' }]);

replaceSelection()

replaceSelection(text): boolean

Defined in: code-editor/src/controller.ts:482

Applies one text replacement at the current selection.

Parameters

text

string

Returns

boolean


requestAssistance()

requestAssistance(): void

Defined in: code-editor/src/controller.ts:613

Requests completion through the optional document-scoped LSP coordinator.

Returns

void


requestClose()

requestClose(): Promise<boolean>

Defined in: code-editor/src/controller.ts:601

Requests host confirmation to close the current clean or modified document.

Returns

Promise<boolean>


requestDefinition()

requestDefinition(): boolean

Defined in: code-editor/src/controller.ts:685

Requests definition navigation at the current caret.

Returns

boolean

true when a language-service request was issued.

Example

ts
if (!controller.requestDefinition()) await controller.hostAction('navigate');

requestDocumentSymbols()

requestDocumentSymbols(): void

Defined in: code-editor/src/controller.ts:669

Requests a bounded document-symbol chooser through the optional language service.

Returns

void

Example

ts
controller.requestDocumentSymbols();

requestFormatting()

requestFormatting(): void

Defined in: code-editor/src/controller.ts:786

Requests range formatting for a selection, or whole-document formatting without one.

Read-only documents and unavailable coordinators are left unchanged.

Returns

void

Example

ts
controller.requestFormatting();

requestHover()

requestHover(): void

Defined in: code-editor/src/controller.ts:652

Requests hover information for the current caret through the optional language service.

Returns

void

Example

ts
controller.requestHover();

resolveExternalChange()

resolveExternalChange(input): Promise<CodeEditorExternalChangeResult>

Defined in: code-editor/src/controller.ts:607

Resolves an already-detected external change using one explicit host decision.

Parameters

input

CodeEditorExternalChangeInput

Returns

Promise<CodeEditorExternalChangeResult>


revealOffset()

revealOffset(offset): boolean

Defined in: code-editor/src/controller.ts:939

Expands a collapsed structure when an editor action targets one of its hidden lines.

Parameters

offset

number

Returns

boolean

true when a fold was expanded.


routeAssistanceKey()

routeAssistanceKey(key): "completion" | "snippet" | "editor" | "unhandled" | "dismissal"

Defined in: code-editor/src/controller.ts:745

Routes assistance navigation before editor commands and text insertion.

Manual and protocol completion share selection, acceptance, dismissal, and stale-revision behavior even though the coordinator retains protocol-specific edit validation.

Parameters

key

Canonical terminal key routed by the active editor.

key

string

shift?

boolean

text?

string

Returns

"completion" | "snippet" | "editor" | "unhandled" | "dismissal"

The interaction owner that consumed the key, or unhandled.


save()

save(): Promise<boolean>

Defined in: code-editor/src/controller.ts:595

Saves one exact current revision through the host-owned persistence boundary.

Returns

Promise<boolean>


setLanguageResult()

setLanguageResult(result): void

Defined in: code-editor/src/controller.ts:391

Replaces local presentation data only when it matches the active document identity.

Fold ranges are treated as hostile adapter output even though the TypeScript contract is typed. Invalid, crossing, duplicate, single-line, and over-limit ranges are removed before any presentation consumer can hide source.

Parameters

result

LocalLanguageResult | undefined

Returns

void


subscribe()

subscribe(listener): CodeEditorDisposable

Defined in: code-editor/src/controller.ts:265

Subscribes to coalesced presentation and accepted-document changes.

Notifications normally run in a microtask. Accepted mutations retain their order, while a presentation update in the same logical operation is folded into the final mutation event. A hostile synchronous burst is drained at a fixed ceiling instead of growing without bound.

Parameters

listener

(event) => void

Callback invoked for each accepted mutation and coalesced presentation update.

Returns

CodeEditorDisposable

An idempotent handle that stops future callbacks.

Throws

When the bounded listener capacity has been reached.

Example

ts
const subscription = controller.subscribe(() => render());
subscription.dispose();

toggleFold()

toggleFold(): void

Defined in: code-editor/src/controller.ts:901

Toggles the structural region at the active line.

Returns

void


toggleFoldLine()

toggleFoldLine(line): void

Defined in: code-editor/src/controller.ts:927

Toggles a structural region by its logical header line.

Parameters

line

number

Returns

void


triggerAssistance()

triggerAssistance(character): void

Defined in: code-editor/src/controller.ts:635

Requests completion or signature help after one accepted trigger-character insertion.

Call this only after the document has accepted the typed character. The coordinator orders the request behind the corresponding document synchronization.

Parameters

character

string

The single inserted character to compare with negotiated trigger sets.

Returns

void

Example

ts
if (editor.insertText('.')) controller.triggerAssistance('.');

unfold()

unfold(): void

Defined in: code-editor/src/controller.ts:878

Expands the collapsed structural region starting at the active line.

Returns

void


unfoldAll()

unfoldAll(): void

Defined in: code-editor/src/controller.ts:893

Expands every collapsed structural region.

Returns

void


unfoldLine()

unfoldLine(line): void

Defined in: code-editor/src/controller.ts:917

Expands a collapsed structural region by its logical header line.

Parameters

line

number

Returns

void