Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
eval: 'expand("")',
})
onTextChanged(args) {
this.flyParse(args);
}
@Autocmd('BufEnter', {
pattern: '*.js,*.jsx',
eval: 'expand("")',
})
async onBufEnter() {
const filename = await this.nvim.buffer.name;
console.log(`[${filename.split('/').pop()}] Handle buffer enter`);
this.parse({ filename, clear: true });
}
@Autocmd('InsertLeave', {
pattern: '*.js,*.jsx',
eval: 'expand("")',
})
onInsertLeave(filename) {
this.parse({ filename, clear: true });
}
highlight(buffer, id, name, lineStart, columnStart, columnEnd, isDebug) {
// Save highlighting group for console.logging
if (isDebug) {
_.range(columnEnd - columnStart + 1).forEach((num) => {
const key = `${lineStart + 1},${columnStart + num}`; // [lineStart, columnStart + num];
if (!DEBUG_MAP.has(key)) {
DEBUG_MAP.set(key, []);
}
const groups = DEBUG_MAP.get(key);
// });
// console.warn(JSON.stringify(watcher.getWatched()));
}
@Command('TSStop')
async tsstop() {
if (this.client.serverHandle != null) {
this.client.stopServer();
await printHighlight(this.nvim, `Server stopped`, 'ErrorMsg');
}
}
@Command('TSReloadProject')
async reloadProject() {
await this.client.reloadProject();
await this.getDiagnostics();
}
@Function('TSCmRefresh')
async onCMRefresh(args: any[]) {
const info = args[0];
const ctx = args[1];
const line = ctx['lnum'];
const offset = ctx['col'];
const prefix = ctx['base'];
const startcol = ctx['startcol'];
// recheck
if (await this.nvim.call('cm#context_changed', ctx)) return;
// // console.warn(JSON.stringify(this.completionChangeEvent));
//
// // console.warn('COMPLETION START')
// this.doingCompletion = true
// }
// @Autocmd('CompleteDone', { pattern: '*', sync: true})
// async onCompleteDone() {
// this.completedItem = await this.nvim.getVvar('completed_item') as CompletionItem;
// // console.warn(JSON.stringify(this.completedItem));
//
// // console.warn("COMPLECTION DONE")
// this.doingCompletion = false
// this.getDiagnostics()
// }
@Command('TSType')
async getType() {
await this.reloadFile();
const args = await this.getCommonData();
try {
const typeInfo = await this.client.quickInfo(args);
if (Object.getOwnPropertyNames(typeInfo).length > 0) {
try {
const window = await createHoverWindow(this.nvim, typeInfo)
this.floatingWindow.push(window);
}
catch (e) {
await printHighlight(this.nvim, await truncateMsg(this.nvim, typeInfo.displayString), 'MoreMsg', 'Function');
}
}
} catch (err) {
// console.warn('in catch', JSON.stringify(err));
import { Autocmd, Command, Function, Neovim, Plugin, Window } from 'neovim';
import { fileSync } from 'tmp';
import protocol from 'typescript/lib/protocol';
import { TSServer } from './client';
import { applyCodeFixes, promptForSelection } from './codeActions';
import { DiagnosticHost } from './diagnostic';
import { createFloatingWindow, createHoverWindow } from './floatingWindow';
import { CompletionChangeEvent, CompletionItem } from './types';
import { convertDetailEntry, convertEntry, createLocList, createQuickFixList, getKind, isRenameSuccess, printHighlight, reduceByPrefix, triggerChar, trim, truncateMsg, processErrors } from './utils';
// import { watch } from 'chokidar'
// import {createMonitor} from 'watch'
// var nsfw = require('nsfw');
// var watchr = require('watchr')
@Plugin({ dev: false })
export default class TSHost {
private client = TSServer;
private diagnosticHost = DiagnosticHost;
private maxCompletion: number;
private expandSnippet: boolean;
enableDiagnostics: boolean;
quietStartup: boolean;
private completionChangeEvent: CompletionChangeEvent;
private completedItem: CompletionItem;
floatingWindow: Window[] = [];
doingCompletion = false;
suggestionsEnabled: any;
constructor(public nvim: Neovim) { }
// @Autocmd('TextChangedP', { pattern: '*', sync: true })
console.log('Error with highlight debug, position doesnt exist');
}
} else {
this.nvim.command('echomsg "[tigris] console.log mode not enabled: `let g:tigris#console.log=1` to enable"');
}
}
@Autocmd('TextChangedI', {
pattern: '*.js,*.jsx',
eval: 'expand("")',
})
onTextChangedI(args) {
this.flyParse(args);
}
@Autocmd('TextChanged', {
pattern: '*.js,*.jsx',
eval: 'expand("")',
})
onTextChanged(args) {
this.flyParse(args);
}
@Autocmd('BufEnter', {
pattern: '*.js,*.jsx',
eval: 'expand("")',
})
async onBufEnter() {
const filename = await this.nvim.buffer.name;
console.log(`[${filename.split('/').pop()}] Handle buffer enter`);
this.parse({ filename, clear: true });
}
@Autocmd('TextChangedI', {
pattern: '*.js,*.jsx',
eval: 'expand("")',
})
onTextChangedI(args) {
this.flyParse(args);
}
@Autocmd('TextChanged', {
pattern: '*.js,*.jsx',
eval: 'expand("")',
})
onTextChanged(args) {
this.flyParse(args);
}
@Autocmd('BufEnter', {
pattern: '*.js,*.jsx',
eval: 'expand("")',
})
async onBufEnter() {
const filename = await this.nvim.buffer.name;
console.log(`[${filename.split('/').pop()}] Handle buffer enter`);
this.parse({ filename, clear: true });
}
@Autocmd('InsertLeave', {
pattern: '*.js,*.jsx',
eval: 'expand("")',
})
onInsertLeave(filename) {
this.parse({ filename, clear: true });
}
const DEBUG_MAP = new Map();
const HL_MAP = new Map();
const debouncedParser = _.debounce.call(_, async (nvim, filename, parseFunc) => {
const enableFly = await nvim.getVar(FLY_VAR);
console.log(`[${filename.split('/').pop()}] Fly parse enabled: ${enableFly}`);
if (enableFly) {
parseFunc({ filename, clear: true });
}
}, DELAY_DEFAULT);
@Plugin({
name: 'tigris',
})
class TigrisPlugin {
flyParse(filename) {
debouncedParser(this.nvim, filename, this.parse.bind(this));
}
@Function('tigris_enable')
async enable() {
await this.nvim.setVar(ENABLE_VAR, true);
this.parse();
}
@Function('tigris_disable')
disable() {
this.nvim.setVar(ENABLE_VAR, false);
const group = DEBUG_MAP.get(key);
this.nvim.command(
`echomsg "[tigris] position: ${key} - Highlight groups: ${[group.join(', ')]}"`
);
} else {
this.nvim.command(
'echomsg "[tigris] Error, position doesn\'t exist"'
);
console.log('Error with highlight debug, position doesnt exist');
}
} else {
this.nvim.command('echomsg "[tigris] console.log mode not enabled: `let g:tigris#console.log=1` to enable"');
}
}
@Autocmd('TextChangedI', {
pattern: '*.js,*.jsx',
eval: 'expand("")',
})
onTextChangedI(args) {
this.flyParse(args);
}
@Autocmd('TextChanged', {
pattern: '*.js,*.jsx',
eval: 'expand("")',
})
onTextChanged(args) {
this.flyParse(args);
}
@Autocmd('BufEnter', {
pattern: '*.js,*.jsx',
neovim_1.Function('CocResult', { sync: false })
], CompletePlugin.prototype, "cocResult", null);
tslib_1.__decorate([
neovim_1.Function('CocCheckHealth', { sync: true })
], CompletePlugin.prototype, "cocCheckHealth", null);
tslib_1.__decorate([
neovim_1.Function('CocSourceStat', { sync: true })
], CompletePlugin.prototype, "cocSourceStat", null);
tslib_1.__decorate([
neovim_1.Function('CocSourceToggle', { sync: true })
], CompletePlugin.prototype, "cocSourceToggle", null);
tslib_1.__decorate([
neovim_1.Function('CocSourceRefresh', { sync: true })
], CompletePlugin.prototype, "cocSourceRefresh", null);
tslib_1.__decorate([
neovim_1.Function('CocFileTypeChange', { sync: false })
], CompletePlugin.prototype, "cocFileTypeChange", null);
tslib_1.__decorate([
neovim_1.Function('CocShowSignature', { sync: false })
], CompletePlugin.prototype, "cocShowSignature", null);
tslib_1.__decorate([
neovim_1.Function('CocShowDefinition', { sync: false })
], CompletePlugin.prototype, "cocShowType", null);
tslib_1.__decorate([
neovim_1.Command('CocShowDoc', { sync: false, nargs: '*' })
], CompletePlugin.prototype, "cocShowDoc", null);
tslib_1.__decorate([
neovim_1.Function('CocJumpDefinition', { sync: true })
], CompletePlugin.prototype, "cocJumpDefninition", null);
CompletePlugin = tslib_1.__decorate([
neovim_1.Plugin({ dev: false })
], CompletePlugin);
neovim_1.Function('CocInitAsync', { sync: false })
], CompletePlugin.prototype, "cocInitAsync", null);
tslib_1.__decorate([
neovim_1.Function('CocInitSync', { sync: true })
], CompletePlugin.prototype, "cocInitSync", null);
tslib_1.__decorate([
neovim_1.Function('CocBufUnload', { sync: false })
], CompletePlugin.prototype, "cocBufUnload", null);
tslib_1.__decorate([
neovim_1.Function('CocBufChange', { sync: false })
], CompletePlugin.prototype, "cocBufChange", null);
tslib_1.__decorate([
neovim_1.Function('CocStart', { sync: false })
], CompletePlugin.prototype, "cocStart", null);
tslib_1.__decorate([
neovim_1.Function('CocInsertCharPre', { sync: true })
], CompletePlugin.prototype, "cocInsertCharPre", null);
tslib_1.__decorate([
neovim_1.Function('CocInsertLeave', { sync: false })
], CompletePlugin.prototype, "cocInsertLeave", null);
tslib_1.__decorate([
neovim_1.Function('CocCompleteDone', { sync: true })
], CompletePlugin.prototype, "cocCompleteDone", null);
tslib_1.__decorate([
neovim_1.Function('CocTextChangedP', { sync: true })
], CompletePlugin.prototype, "cocTextChangedP", null);
tslib_1.__decorate([
neovim_1.Function('CocTextChangedI', { sync: true })
], CompletePlugin.prototype, "cocTextChangedI", null);
tslib_1.__decorate([
neovim_1.Function('CocResult', { sync: false })
], CompletePlugin.prototype, "cocResult", null);