UNPKG

@unisnips/ultisnips

Version:

Utilities for converting ultisnips in unisnips project

111 lines (110 loc) 3.33 kB
import { OrNull, TokenNode } from '@unisnips/core'; import { TextPosition } from '../util/position'; import { Token, TabStopToken } from '../parse/tokenizer'; export declare type MarkerClass = new (opts: MarkerInitOpts) => Marker; declare type MarkerInitOpts<T = Token> = { parent: Marker; token?: T; start?: TextPosition; end?: TextPosition; tieBreaker?: TextPosition; initialText?: string; }; /** * Represents any object in the text that has a span in any ways. */ export declare class Marker<T extends Token = Token> { start: TextPosition; end: TextPosition; initialText: string; tabStops: { [key: number]: TabStop; }; parent: OrNull<Marker>; token: OrNull<T>; /** * useful in nested tabstops, * e.g. '${11:good}', innerContentOffset should be '${12:'.length */ innerContentOffset: number; protected children: Marker[]; protected tieBreaker: TextPosition; constructor(opts: MarkerInitOpts<T>); addChild(child: Marker): void; /** * will be serialized to TokenNode */ get markerType(): string; getTokenNodeData(): {}; toTokenNode(): TokenNode<any>; /** @abstract */ protected init(opts: MarkerInitOpts): void; } /** * This base class represents any object in the text that can be changed by * the user. */ declare class EditableMarker<T = Token> extends Marker { get editableChildren(): Marker<Token>[]; } declare class NoneditableMarker extends Marker { } export declare class Transform extends Marker { protected regex: RegExp; protected replace: any; protected search: string; protected options: string; get markerType(): string; getTokenNodeData(): Pick<any, "replace" | "search" | "options">; initTransformation(opts: { search: string; options: string; replace: string; }): void; protected transformText(text: string): string; } export declare class TransformableMarker<T = Token> extends EditableMarker<T> { transform?: Transform; search: string; replace: string; options: any; getTokenNodeData(): any; protected parseTransform(text: string): void; } export declare class TabStop<T = TabStopToken> extends TransformableMarker { number: number; get markerType(): string; init(opts: MarkerInitOpts<TabStopToken>): void; } export declare class SnippetInstance extends EditableMarker { visualContent: string; get markerType(): string; init(opts: MarkerInitOpts): void; } export declare class Mirror extends Marker { protected tabStop: TabStop; get markerType(): string; init(opts: MarkerInitOpts): void; } export declare class UniSnipsVariable extends NoneditableMarker { get name(): string; } /** * A ${VISUAL} placeholder that will use the text that was last visually * selected and insert it here. * * If there was no text visually selected, this will be the empty string. */ export declare class Visual extends TransformableMarker { text: string; /** QUESTION: may be related to vim's mode? */ mode: string; init(opts: MarkerInitOpts): void; get markerType(): string; } export declare class ScriptCode extends NoneditableMarker { get code(): string; get scriptType(): string; get markerType(): string; } export {};