244 lines
8.4 KiB
Plaintext
244 lines
8.4 KiB
Plaintext
|
import { Range, Position, DocumentUri, MarkupContent, MarkupKind, Color, ColorInformation, ColorPresentation, FoldingRange, FoldingRangeKind, SelectionRange, Diagnostic, DiagnosticSeverity, CompletionItem, CompletionItemKind, CompletionList, CompletionItemTag, InsertTextFormat, DefinitionLink, SymbolInformation, SymbolKind, DocumentSymbol, Location, Hover, MarkedString, CodeActionContext, Command, CodeAction, DocumentHighlight, DocumentLink, WorkspaceEdit, TextEdit, CodeActionKind, TextDocumentEdit, VersionedTextDocumentIdentifier, DocumentHighlightKind } from 'vscode-languageserver-types';
|
||
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
||
|
export { TextDocument, Range, Position, DocumentUri, MarkupContent, MarkupKind, Color, ColorInformation, ColorPresentation, FoldingRange, FoldingRangeKind, SelectionRange, Diagnostic, DiagnosticSeverity, CompletionItem, CompletionItemKind, CompletionList, CompletionItemTag, InsertTextFormat, DefinitionLink, SymbolInformation, SymbolKind, DocumentSymbol, Location, Hover, MarkedString, CodeActionContext, Command, CodeAction, DocumentHighlight, DocumentLink, WorkspaceEdit, TextEdit, CodeActionKind, TextDocumentEdit, VersionedTextDocumentIdentifier, DocumentHighlightKind };
|
||
|
export type LintSettings = {
|
||
|
[key: string]: any;
|
||
|
};
|
||
|
export interface CompletionSettings {
|
||
|
triggerPropertyValueCompletion: boolean;
|
||
|
completePropertyWithSemicolon?: boolean;
|
||
|
}
|
||
|
export interface LanguageSettings {
|
||
|
validate?: boolean;
|
||
|
lint?: LintSettings;
|
||
|
completion?: CompletionSettings;
|
||
|
hover?: HoverSettings;
|
||
|
importAliases?: AliasSettings;
|
||
|
}
|
||
|
export interface AliasSettings {
|
||
|
[key: string]: string;
|
||
|
}
|
||
|
export interface HoverSettings {
|
||
|
documentation?: boolean;
|
||
|
references?: boolean;
|
||
|
}
|
||
|
export interface PropertyCompletionContext {
|
||
|
propertyName: string;
|
||
|
range: Range;
|
||
|
}
|
||
|
export interface PropertyValueCompletionContext {
|
||
|
propertyName: string;
|
||
|
propertyValue?: string;
|
||
|
range: Range;
|
||
|
}
|
||
|
export interface URILiteralCompletionContext {
|
||
|
uriValue: string;
|
||
|
position: Position;
|
||
|
range: Range;
|
||
|
}
|
||
|
export interface ImportPathCompletionContext {
|
||
|
pathValue: string;
|
||
|
position: Position;
|
||
|
range: Range;
|
||
|
}
|
||
|
export interface MixinReferenceCompletionContext {
|
||
|
mixinName: string;
|
||
|
range: Range;
|
||
|
}
|
||
|
export interface ICompletionParticipant {
|
||
|
onCssProperty?: (context: PropertyCompletionContext) => void;
|
||
|
onCssPropertyValue?: (context: PropertyValueCompletionContext) => void;
|
||
|
onCssURILiteralValue?: (context: URILiteralCompletionContext) => void;
|
||
|
onCssImportPath?: (context: ImportPathCompletionContext) => void;
|
||
|
onCssMixinReference?: (context: MixinReferenceCompletionContext) => void;
|
||
|
}
|
||
|
export interface DocumentContext {
|
||
|
resolveReference(ref: string, baseUrl: string): string | undefined;
|
||
|
}
|
||
|
/**
|
||
|
* Describes what LSP capabilities the client supports
|
||
|
*/
|
||
|
export interface ClientCapabilities {
|
||
|
/**
|
||
|
* The text document client capabilities
|
||
|
*/
|
||
|
textDocument?: {
|
||
|
/**
|
||
|
* Capabilities specific to completions.
|
||
|
*/
|
||
|
completion?: {
|
||
|
/**
|
||
|
* The client supports the following `CompletionItem` specific
|
||
|
* capabilities.
|
||
|
*/
|
||
|
completionItem?: {
|
||
|
/**
|
||
|
* Client supports the follow content formats for the documentation
|
||
|
* property. The order describes the preferred format of the client.
|
||
|
*/
|
||
|
documentationFormat?: MarkupKind[];
|
||
|
};
|
||
|
};
|
||
|
/**
|
||
|
* Capabilities specific to hovers.
|
||
|
*/
|
||
|
hover?: {
|
||
|
/**
|
||
|
* Client supports the follow content formats for the content
|
||
|
* property. The order describes the preferred format of the client.
|
||
|
*/
|
||
|
contentFormat?: MarkupKind[];
|
||
|
};
|
||
|
};
|
||
|
}
|
||
|
export declare namespace ClientCapabilities {
|
||
|
const LATEST: ClientCapabilities;
|
||
|
}
|
||
|
export interface LanguageServiceOptions {
|
||
|
/**
|
||
|
* Unless set to false, the default CSS data provider will be used
|
||
|
* along with the providers from customDataProviders.
|
||
|
* Defaults to true.
|
||
|
*/
|
||
|
useDefaultDataProvider?: boolean;
|
||
|
/**
|
||
|
* Provide data that could enhance the service's understanding of
|
||
|
* CSS property / at-rule / pseudo-class / pseudo-element
|
||
|
*/
|
||
|
customDataProviders?: ICSSDataProvider[];
|
||
|
/**
|
||
|
* Abstract file system access away from the service.
|
||
|
* Used for dynamic link resolving, path completion, etc.
|
||
|
*/
|
||
|
fileSystemProvider?: FileSystemProvider;
|
||
|
/**
|
||
|
* Describes the LSP capabilities the client supports.
|
||
|
*/
|
||
|
clientCapabilities?: ClientCapabilities;
|
||
|
}
|
||
|
export type EntryStatus = 'standard' | 'experimental' | 'nonstandard' | 'obsolete';
|
||
|
export interface IReference {
|
||
|
name: string;
|
||
|
url: string;
|
||
|
}
|
||
|
export interface IPropertyData {
|
||
|
name: string;
|
||
|
description?: string | MarkupContent;
|
||
|
browsers?: string[];
|
||
|
restrictions?: string[];
|
||
|
status?: EntryStatus;
|
||
|
syntax?: string;
|
||
|
values?: IValueData[];
|
||
|
references?: IReference[];
|
||
|
relevance?: number;
|
||
|
atRule?: string;
|
||
|
}
|
||
|
export interface IAtDirectiveData {
|
||
|
name: string;
|
||
|
description?: string | MarkupContent;
|
||
|
browsers?: string[];
|
||
|
status?: EntryStatus;
|
||
|
references?: IReference[];
|
||
|
}
|
||
|
export interface IPseudoClassData {
|
||
|
name: string;
|
||
|
description?: string | MarkupContent;
|
||
|
browsers?: string[];
|
||
|
status?: EntryStatus;
|
||
|
references?: IReference[];
|
||
|
}
|
||
|
export interface IPseudoElementData {
|
||
|
name: string;
|
||
|
description?: string | MarkupContent;
|
||
|
browsers?: string[];
|
||
|
status?: EntryStatus;
|
||
|
references?: IReference[];
|
||
|
}
|
||
|
export interface IValueData {
|
||
|
name: string;
|
||
|
description?: string | MarkupContent;
|
||
|
browsers?: string[];
|
||
|
status?: EntryStatus;
|
||
|
references?: IReference[];
|
||
|
}
|
||
|
export interface CSSDataV1 {
|
||
|
version: 1 | 1.1;
|
||
|
properties?: IPropertyData[];
|
||
|
atDirectives?: IAtDirectiveData[];
|
||
|
pseudoClasses?: IPseudoClassData[];
|
||
|
pseudoElements?: IPseudoElementData[];
|
||
|
}
|
||
|
export interface ICSSDataProvider {
|
||
|
provideProperties(): IPropertyData[];
|
||
|
provideAtDirectives(): IAtDirectiveData[];
|
||
|
providePseudoClasses(): IPseudoClassData[];
|
||
|
providePseudoElements(): IPseudoElementData[];
|
||
|
}
|
||
|
export declare enum FileType {
|
||
|
/**
|
||
|
* The file type is unknown.
|
||
|
*/
|
||
|
Unknown = 0,
|
||
|
/**
|
||
|
* A regular file.
|
||
|
*/
|
||
|
File = 1,
|
||
|
/**
|
||
|
* A directory.
|
||
|
*/
|
||
|
Directory = 2,
|
||
|
/**
|
||
|
* A symbolic link to a file.
|
||
|
*/
|
||
|
SymbolicLink = 64
|
||
|
}
|
||
|
export interface FileStat {
|
||
|
/**
|
||
|
* The type of the file, e.g. is a regular file, a directory, or symbolic link
|
||
|
* to a file.
|
||
|
*/
|
||
|
type: FileType;
|
||
|
/**
|
||
|
* The creation timestamp in milliseconds elapsed since January 1, 1970 00:00:00 UTC.
|
||
|
*/
|
||
|
ctime: number;
|
||
|
/**
|
||
|
* The modification timestamp in milliseconds elapsed since January 1, 1970 00:00:00 UTC.
|
||
|
*/
|
||
|
mtime: number;
|
||
|
/**
|
||
|
* The size in bytes.
|
||
|
*/
|
||
|
size: number;
|
||
|
}
|
||
|
export interface FileSystemProvider {
|
||
|
stat(uri: DocumentUri): Promise<FileStat>;
|
||
|
readDirectory?(uri: DocumentUri): Promise<[string, FileType][]>;
|
||
|
}
|
||
|
export interface CSSFormatConfiguration {
|
||
|
/** indentation size. Default: 4 */
|
||
|
tabSize?: number;
|
||
|
/** Whether to use spaces or tabs */
|
||
|
insertSpaces?: boolean;
|
||
|
/** end with a newline: Default: false */
|
||
|
insertFinalNewline?: boolean;
|
||
|
/** separate selectors with newline (e.g. "a,\nbr" or "a, br"): Default: true */
|
||
|
newlineBetweenSelectors?: boolean;
|
||
|
/** add a new line after every css rule: Default: true */
|
||
|
newlineBetweenRules?: boolean;
|
||
|
/** ensure space around selector separators: '>', '+', '~' (e.g. "a>b" -> "a > b"): Default: false */
|
||
|
spaceAroundSelectorSeparator?: boolean;
|
||
|
/** put braces on the same line as rules (`collapse`), or put braces on own line, Allman / ANSI style (`expand`). Default `collapse` */
|
||
|
braceStyle?: 'collapse' | 'expand';
|
||
|
/** whether existing line breaks before elements should be preserved. Default: true */
|
||
|
preserveNewLines?: boolean;
|
||
|
/** maximum number of line breaks to be preserved in one chunk. Default: unlimited */
|
||
|
maxPreserveNewLines?: number;
|
||
|
/** maximum amount of characters per line (0/undefined = disabled). Default: disabled. */
|
||
|
wrapLineLength?: number;
|
||
|
/** add indenting whitespace to empty lines. Default: false */
|
||
|
indentEmptyLines?: boolean;
|
||
|
/** @deprecated Use newlineBetweenSelectors instead*/
|
||
|
selectorSeparatorNewline?: boolean;
|
||
|
}
|