39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import {Convert} from 'atom-languageclient';
|
|
import {AtomEnvironment, TextEditor} from 'atom';
|
|
import {Position, Range, TextDocumentIdentifier} from 'vscode-languageserver-protocol';
|
|
|
|
export class StsAdapter {
|
|
|
|
constructor() {}
|
|
|
|
findEditors(uri: string): TextEditor[] {
|
|
const atomEnv: AtomEnvironment = atom;
|
|
return atomEnv.workspace.getTextEditors()
|
|
.filter(e => e && e.getPath() && Convert.pathToUri(e.getPath() || '') === uri);
|
|
}
|
|
|
|
onMoveCursor(params: CursorMovementParams): any {
|
|
this.findEditors(params.uri).forEach(e => e.setCursorScreenPosition(Convert.positionToPoint(params.position)));
|
|
return {applied: true};
|
|
}
|
|
|
|
onProgress(params: ProgressParams): void {}
|
|
|
|
onHighlight(params: HighlightParams): void {}
|
|
}
|
|
|
|
export interface CursorMovementParams {
|
|
readonly uri: string;
|
|
readonly position: Position;
|
|
}
|
|
|
|
export interface ProgressParams {
|
|
readonly id: string;
|
|
readonly statusMsg: string;
|
|
}
|
|
|
|
export interface HighlightParams {
|
|
readonly doc: TextDocumentIdentifier;
|
|
readonly ranges: Range[];
|
|
}
|