本文整理匯總了TypeScript中promised-neovim-client.Nvim.callFunction方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript Nvim.callFunction方法的具體用法?TypeScript Nvim.callFunction怎麽用?TypeScript Nvim.callFunction使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類promised-neovim-client.Nvim
的用法示例。
在下文中一共展示了Nvim.callFunction方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: syncVimToVs
// Data flows from Vim to VS
private async syncVimToVs(vimState: VimState) {
const buf = await this.nvim.getCurrentBuf();
const lines = await buf.getLines(0, -1, false);
// one Windows, lines that went to nvim and back have a '\r' at the end,
// which causes the issues exhibited in #1914
const fixedLines =
process.platform === 'win32' ? lines.map((line, index) => line.replace(/\r$/, '')) : lines;
await TextEditor.replace(
new vscode.Range(
0,
0,
TextEditor.getLineCount() - 1,
TextEditor.getLineMaxColumn(TextEditor.getLineCount() - 1)
),
fixedLines.join('\n')
);
Logger.debug(
`Neovim: ${lines.length} lines in nvim but ${TextEditor.getLineCount()} in editor.`
);
let [row, character] = ((await this.nvim.callFunction('getpos', ['.'])) as Array<number>).slice(
1,
3
);
vimState.editor.selection = new vscode.Selection(
new Position(row - 1, character),
new Position(row - 1, character)
);
if (configuration.expandtab) {
await vscode.commands.executeCommand('editor.action.indentationToSpaces');
}
// We're only syncing back the default register for now, due to the way we could
// be storing macros in registers.
const vimRegToVsReg = {
v: RegisterMode.CharacterWise,
V: RegisterMode.LineWise,
'\x16': RegisterMode.BlockWise,
};
vimState.currentRegisterMode =
vimRegToVsReg[(await this.nvim.callFunction('getregtype', ['"'])) as string];
Register.put((await this.nvim.callFunction('getreg', ['"'])) as string, vimState);
}
示例2: syncVSToVim
// Data flows from VS to Vim
private async syncVSToVim(vimState: VimState) {
const buf = await this.nvim.getCurrentBuf();
if (configuration.expandtab) {
await vscode.commands.executeCommand('editor.action.indentationToTabs');
}
await this.nvim.setOption('gdefault', configuration.substituteGlobalFlag === true);
await buf.setLines(0, -1, true, TextEditor.getText().split('\n'));
const [rangeStart, rangeEnd] = [
Position.EarlierOf(vimState.cursorPosition, vimState.cursorStartPosition),
Position.LaterOf(vimState.cursorPosition, vimState.cursorStartPosition),
];
await this.nvim.callFunction('setpos', [
'.',
[0, vimState.cursorPosition.line + 1, vimState.cursorPosition.character, false],
]);
await this.nvim.callFunction('setpos', [
"'<",
[0, rangeStart.line + 1, rangeEnd.character, false],
]);
await this.nvim.callFunction('setpos', [
"'>",
[0, rangeEnd.line + 1, rangeEnd.character, false],
]);
for (const mark of vimState.historyTracker.getMarks()) {
await this.nvim.callFunction('setpos', [
`'${mark.name}`,
[0, mark.position.line + 1, mark.position.character, false],
]);
}
// We only copy over " register for now, due to our weird handling of macros.
let reg = await Register.get(vimState);
let vsRegTovimReg = [undefined, 'c', 'l', 'b'];
await this.nvim.callFunction('setreg', [
'"',
reg.text as string,
vsRegTovimReg[vimState.effectiveRegisterMode] as string,
]);
}