coc.nvim
Version:
LSP based intellisense engine for neovim & vim8.
71 lines • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const isVim = process.env.VIM_NODE_RPC == '1';
const logger = require('../util/logger')('model-terminal');
class TerminalModel {
constructor(cmd, args, nvim, _name) {
this.cmd = cmd;
this.args = args;
this.nvim = nvim;
this._name = _name;
this.pid = 0;
}
async start(cwd, env) {
let { nvim } = this;
let cmd = [this.cmd, ...this.args];
let [bufnr, pid] = await nvim.call('coc#terminal#start', [cmd, cwd, env || {}]);
this.bufnr = bufnr;
this.pid = pid;
}
get name() {
return this._name || this.cmd;
}
get processId() {
return Promise.resolve(this.pid);
}
sendText(text, addNewLine = true) {
if (!this.bufnr)
return;
this.nvim.call('coc#terminal#send', [this.bufnr, text, addNewLine], true);
}
async show(preserveFocus) {
let { bufnr, nvim } = this;
if (!bufnr)
return;
let [loaded, winid] = await nvim.eval(`[bufloaded(${bufnr}),bufwinid(${bufnr})]`);
if (!loaded)
return false;
nvim.pauseNotification();
if (winid == -1) {
nvim.command(`below ${bufnr}sb`, true);
nvim.command('resize 8', true);
nvim.call('coc#util#do_autocmd', ['CocTerminalOpen'], true);
}
else {
nvim.call('win_gotoid', [winid], true);
}
nvim.command('normal! G', true);
if (preserveFocus) {
nvim.command('wincmd p', true);
}
await nvim.resumeNotification();
return true;
}
async hide() {
let { bufnr, nvim } = this;
if (!bufnr)
return;
let winnr = await nvim.call('bufwinnr', bufnr);
if (winnr == -1)
return;
await nvim.command(`${winnr}close!`);
}
dispose() {
let { bufnr, nvim } = this;
if (!bufnr)
return;
nvim.call('coc#terminal#close', [bufnr], true);
}
}
exports.default = TerminalModel;
//# sourceMappingURL=terminal.js.map