Standard module for denops.vim.
This module is assumed to be used for developing denops plugins. The code is assumed to be called in a dedicated worker thread.
By using this module, developers can write Vim/Neovim denops plugins like:
import type { Denops } from "jsr:@denops/std";
import * as batch from "jsr:@denops/std/batch";
import * as fn from "jsr:@denops/std/function";
import * as vars from "jsr:@denops/std/variable";
import * as helper from "jsr:@denops/std/helper";
import { assert, is } from "jsr:@core/unknownutil";
export function main(denops: Denops): void {
denops.dispatcher = {
async init() {
// This is just an example. Developers usually should define commands directly in Vim script.
await batch.batch(denops, async (denops) => {
await denops.cmd(
`command! HelloWorld call denops#notify("${denops.name}", "say", ["World"])`,
);
await denops.cmd(
`command! HelloDenops call denops#notify("${denops.name}", "say", ["Denops"])`,
);
});
},
async say(where) {
assert(where, is.String);
const [name, progname] = await batch.collect(denops, (denops) => [
fn.input(denops, "Your name: "),
vars.v.get(denops, "progname"),
]);
const messages = [
`Hello ${where}.`,
`Your name is ${name}.`,
`This is ${progname}.`,
];
await helper.echo(denops, messages.join("\n"));
},
};
}
Note that developers should avoid calling initialization code within the
main
function. If necessary, add an init
API or a similar approach like
above and call it from plugin/<your_plugin>.vim
.
See Denops Documentation or denops-helloworld.vim for more details.
The code follows MIT license written in LICENSE. Contributors need to agree that any modifications sent in this repository follow the license.