本文整理汇总了TypeScript中neovim.Neovim.callFunction方法的典型用法代码示例。如果您正苦于以下问题:TypeScript Neovim.callFunction方法的具体用法?TypeScript Neovim.callFunction怎么用?TypeScript Neovim.callFunction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类neovim.Neovim
的用法示例。
在下文中一共展示了Neovim.callFunction方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: syncVSToVim
// Data flows from VS to Vim
private async syncVSToVim(vimState: VimState) {
const buf = await this.nvim.buffer;
if (configuration.expandtab) {
await vscode.commands.executeCommand('editor.action.indentationToTabs');
}
await this.nvim.setOption('gdefault', configuration.substituteGlobalFlag === true);
await buf.setLines(TextEditor.getText().split('\n'), {
start: 0,
end: -1,
strictIndexing: true,
});
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,
]);
}
示例2: syncVimToVs
// Data flows from Vim to VS
private async syncVimToVs(vimState: VimState) {
const buf = await this.nvim.buffer;
const lines = await buf.getLines({ start: 0, end: -1, strictIndexing: 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. ${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);
}