UNPKG

coc.nvim

Version:

LSP based intellisense engine for neovim & vim8.

309 lines (308 loc) 10.8 kB
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;