coc.nvim
Version:
LSP based intellisense engine for neovim & vim8.
309 lines (308 loc) • 10.8 kB
TypeScript
import { NeovimClient as Neovim } from '@chemzqm/neovim';
import { CreateFileOptions, DeleteFileOptions, DidChangeTextDocumentParams, Disposable, DocumentSelector, Event, FormattingOptions, Location, LocationLink, Position, Range, RenameFileOptions, TextDocument, WorkspaceEdit, WorkspaceFolder, WorkspaceFoldersChangeEvent } from 'vscode-languageserver-protocol';
import { URI } from 'vscode-uri';
import Configurations from './configuration';
import DB from './model/db';
import Document from './model/document';
import FileSystemWatcher from './model/fileSystemWatcher';
import Mru from './model/mru';
import Task from './model/task';
import { TextDocumentContentProvider } from './provider';
import { Autocmd, ConfigurationChangeEvent, ConfigurationTarget, EditerState, Env, IWorkspace, KeymapOption, MapMode, MsgTypes, OutputChannel, PatternType, QuickfixItem, StatusBarItem, StatusItemOption, Terminal, TerminalOptions, TerminalResult, TextDocumentWillSaveEvent, WorkspaceConfiguration } from './types';
export declare class Workspace implements IWorkspace {
readonly nvim: Neovim;
readonly version: string;
readonly keymaps: Map<string, [Function, boolean]>;
bufnr: number;
private resolver;
private rootPatterns;
private _workspaceFolders;
private messageLevel;
private willSaveUntilHandler;
private statusLine;
private _insertMode;
private _env;
private _root;
private _cwd;
private _blocking;
private _initialized;
private _attached;
private buffers;
private autocmds;
private terminals;
private creatingSources;
private outputChannels;
private schemeProviderMap;
private namespaceMap;
private disposables;
private setupDynamicAutocmd;
private watchedOptions;
private _disposed;
private _onDidOpenDocument;
private _onDidCloseDocument;
private _onDidChangeDocument;
private _onWillSaveDocument;
private _onDidSaveDocument;
private _onDidChangeWorkspaceFolders;
private _onDidChangeConfiguration;
private _onDidWorkspaceInitialized;
private _onDidOpenTerminal;
private _onDidCloseTerminal;
readonly onDidCloseTerminal: Event<Terminal>;
readonly onDidOpenTerminal: Event<Terminal>;
readonly onDidChangeWorkspaceFolders: Event<WorkspaceFoldersChangeEvent>;
readonly onDidOpenTextDocument: Event<TextDocument>;
readonly onDidCloseTextDocument: Event<TextDocument>;
readonly onDidChangeTextDocument: Event<DidChangeTextDocumentParams>;
readonly onWillSaveTextDocument: Event<TextDocumentWillSaveEvent>;
readonly onDidSaveTextDocument: Event<TextDocument>;
readonly onDidChangeConfiguration: Event<ConfigurationChangeEvent>;
readonly onDidWorkspaceInitialized: Event<void>;
readonly configurations: Configurations;
constructor();
init(): Promise<void>;
getConfigFile(target: ConfigurationTarget): string;
/**
* Register autocmd on vim.
*/
registerAutocmd(autocmd: Autocmd): Disposable;
/**
* Watch for option change.
*/
watchOption(key: string, callback: (oldValue: any, newValue: any) => Thenable<void> | void, disposables?: Disposable[]): void;
/**
* Watch global variable, works on neovim only.
*/
watchGlobal(key: string, callback?: (oldValue: any, newValue: any) => Thenable<void> | void, disposables?: Disposable[]): void;
readonly cwd: string;
readonly env: Env;
readonly root: string;
readonly rootPath: string;
readonly workspaceFolders: WorkspaceFolder[];
/**
* uri of current file, could be null
*/
readonly uri: string;
readonly workspaceFolder: WorkspaceFolder;
readonly textDocuments: TextDocument[];
readonly documents: Document[];
createNameSpace(name?: string): number;
readonly channelNames: string[];
readonly pluginRoot: string;
readonly isVim: boolean;
readonly isNvim: boolean;
readonly completeOpt: string;
readonly initialized: boolean;
readonly ready: Promise<void>;
/**
* Current filetypes.
*/
readonly filetypes: Set<string>;
/**
* Check if selector match document.
*/
match(selector: DocumentSelector, document: TextDocument): number;
/**
* Findup for filename or filenames from current filepath or root.
*/
findUp(filename: string | string[]): Promise<string | null>;
resolveRootFolder(uri: URI, patterns: string[]): Promise<string>;
/**
* Create a FileSystemWatcher instance,
* doesn't fail when watchman not found.
*/
createFileSystemWatcher(globPattern: string, ignoreCreate?: boolean, ignoreChange?: boolean, ignoreDelete?: boolean): FileSystemWatcher;
getWatchmanPath(): string | null;
/**
* Get configuration by section and optional resource uri.
*/
getConfiguration(section?: string, resource?: string): WorkspaceConfiguration;
/**
* Get created document by uri or bufnr.
*/
getDocument(uri: number | string): Document;
/**
* Get current cursor offset in document.
*/
getOffset(): Promise<number>;
/**
* Apply WorkspaceEdit.
*/
applyEdit(edit: WorkspaceEdit): Promise<boolean>;
/**
* Convert location to quickfix item.
*/
getQuickfixItem(loc: Location | LocationLink, text?: string, type?: string): Promise<QuickfixItem>;
/**
* Create persistence Mru instance.
*/
createMru(name: string): Mru;
getSelectedRange(mode: string, document: Document): Promise<Range | null>;
/**
* Visual select range of current document
*/
selectRange(range: Range): Promise<void>;
/**
* Populate locations to UI.
*/
showLocations(locations: Location[]): Promise<void>;
/**
* Get content of line by uri and line.
*/
getLine(uri: string, line: number): Promise<string>;
/**
* Get WorkspaceFolder of uri
*/
getWorkspaceFolder(uri: string): WorkspaceFolder | null;
/**
* Get content from buffer of file by uri.
*/
readFile(uri: string): Promise<string>;
getFilepath(filepath: string): string;
onWillSaveUntil(callback: (event: TextDocumentWillSaveEvent) => void, thisArg: any, clientId: string): Disposable;
/**
* Echo lines.
*/
echoLines(lines: string[], truncate?: boolean): Promise<void>;
/**
* Show message in vim.
*/
showMessage(msg: string, identify?: MsgTypes): void;
/**
* Current document.
*/
readonly document: Promise<Document>;
/**
* Get current cursor position.
*/
getCursorPosition(): Promise<Position>;
/**
* Get current document and position.
*/
getCurrentState(): Promise<EditerState>;
/**
* Get format options
*/
getFormatOptions(uri?: string): Promise<FormattingOptions>;
/**
* Jump to location.
*/
jumpTo(uri: string, position?: Position | null, openCommand?: string): Promise<void>;
/**
* Move cursor to position.
*/
moveTo(position: Position): Promise<void>;
/**
* Create a file in vim and disk
*/
createFile(filepath: string, opts?: CreateFileOptions): Promise<void>;
/**
* Load uri as document.
*/
loadFile(uri: string): Promise<Document>;
/**
* Rename file in vim and disk
*/
renameFile(oldPath: string, newPath: string, opts?: RenameFileOptions): Promise<void>;
/**
* Delete file from vim and disk.
*/
deleteFile(filepath: string, opts?: DeleteFileOptions): Promise<void>;
/**
* Open resource by uri
*/
openResource(uri: string): Promise<void>;
/**
* Create a new output channel
*/
createOutputChannel(name: string): OutputChannel;
/**
* Reveal buffer of output channel.
*/
showOutputChannel(name: string, preserveFocus?: boolean): void;
/**
* Resovle module from yarn or npm.
*/
resolveModule(name: string): Promise<string>;
/**
* Run nodejs command
*/
runCommand(cmd: string, cwd?: string, timeout?: number): Promise<string>;
/**
* Run command in vim terminal
*/
runTerminalCommand(cmd: string, cwd?: string, keepfocus?: boolean): Promise<TerminalResult>;
createTerminal(opts: TerminalOptions): Promise<Terminal>;
/**
* Show quickpick
*/
showQuickpick(items: string[], placeholder?: string): Promise<number>;
/**
* Prompt for confirm action.
*/
showPrompt(title: string): Promise<boolean>;
callAsync<T>(method: string, args: any[]): Promise<T>;
/**
* Request input from user
*/
requestInput(title: string, defaultValue?: string): Promise<string>;
/**
* registerTextDocumentContentProvider
*/
registerTextDocumentContentProvider(scheme: string, provider: TextDocumentContentProvider): Disposable;
/**
* Register keymap
*/
registerKeymap(modes: MapMode[], key: string, fn: Function, opts?: Partial<KeymapOption>): Disposable;
/**
* Register expr keymap.
*/
registerExprKeymap(mode: 'i' | 'n' | 'v' | 's' | 'x', key: string, fn: Function, buffer?: boolean): Disposable;
registerLocalKeymap(mode: 'n' | 'v' | 's' | 'x', key: string, fn: Function, notify?: boolean): Disposable;
/**
* Create StatusBarItem
*/
createStatusBarItem(priority?: number, opt?: StatusItemOption): StatusBarItem;
dispose(): void;
detach(): Promise<void>;
/**
* Create DB instance at extension root.
*/
createDatabase(name: string): DB;
/**
* Create Task instance that runs in vim.
*/
createTask(id: string): Task;
private _setupDynamicAutocmd;
private onBufReadCmd;
private attach;
private validteDocumentChanges;
private createConfigurations;
private initVimEvents;
private onBufCreate;
private onBufEnter;
private onCursorMoved;
private onBufWritePost;
private onBufUnload;
private onBufWritePre;
private onDirChanged;
private onFileTypeChange;
private checkBuffer;
private getFileEncoding;
private resolveRoot;
getRootPatterns(document: Document, patternType: PatternType): string[];
renameCurrent(): Promise<void>;
private setMessageLevel;
private mergeDocumentChanges;
readonly folderPaths: string[];
removeWorkspaceFolder(fsPath: string): void;
renameWorkspaceFolder(oldPath: string, newPath: string): void;
addRootPatterns(filetype: string, rootPatterns: string[]): void;
readonly insertMode: boolean;
private getDocumentOption;
private checkProcess;
private addWorkspaceFolder;
private getServerRootPatterns;
}
declare const _default: Workspace;
export default _default;