Skip to content

code/editor/useDefinition

import { … } from 'zidane-ui/code/editor'ui/src/code/editor/useDefinition.ts

Functions#

useDefinitionFunction#

Wires go to definition into a code view: returns token enter/leave/click handlers for FileView or CodeEditor, linking for the pointer cursor, and goTo for a hover-card action.

TypeScript
function useDefinition<T extends { origin?: EditorRange }>(
  scope: string,
  enabled: boolean,
  resolve: (line: number, column: number) => Promise<readonly T[]>,
  navigate: (target: T) => void,
): { enabled: boolean; goTo: (line: number, column: number) => Promise<boolean>; linking: boolean; onClick: (t: CodeToken, e: MouseEvent) => void; onEnter: (t: CodeToken) => void; onLeave: () => void }
Type parameters
NameTypeDescription
Textends { origin?: EditorRange }
Parameters
NameTypeDescription
scopestring

Changes with the file shown: a slow answer for the previous one never navigates.

enabledboolean

Off: no underline, clicks pass through.

resolve(line: number, column: number) => Promise<readonly T[]>

Where the symbol at a 1-based (line, column) is defined, with the symbol's extent (origin) when known.

navigate(target: T) => void

Opens the first target.

{ enabled: boolean; goTo: (line: number, column: number) => Promise<boolean>; linking: boolean; onClick: (t: CodeToken, e: MouseEvent) => void; onEnter: (t: CodeToken) => void; onLeave: () => void }

ui/src/code/editor/useDefinition.ts:33