vfmd

VFile message daemon and LSP Server

Usage no npm install needed!

<script type="module">
  import vfmd from 'https://cdn.skypack.dev/vfmd';
</script>

README

VFile Message Daemon

vfile-message-daemon-v1-0-0

Usage

LSP User

npm install -g vfmd
vfmd start
vfmd status
vfmd stop
vfmd restart

Daemon should be running beforehand.

You can also use vfmd start --attach or vfmd restart --attach not to spawn detached process.

LSP Settings

Configure following commands to your editors' LSP Client.

vfmd lsp
# You can also use stdin/stdout for communication.
# vfmd lsp --stdio

Example for vim-lsp

if executable("vfmd")
  autocmd User lsp_setup call lsp#register_server({
    \   'name': 'vfmd-lsp',
    \   'cmd': {server_info->['vfmd', 'lsp', '--stdio']},
    \   'allowlist': ['text', 'markdown', 'html'],
    \ })
endif

VFile reporter

npm install vfmd
import unified from "unified";
import markdown from "remark-parse";
import remark2rehype from "remark-rehype";
import html from "rehype-stringify";

import remark2retext from "remark-retext";
import english from "retext-english";
import indefiniteArticle from "retext-indefinite-article";
import vfile from "to-vfile";
import report from "vfile-reporter";

import { reportToDaemon } from "vfmd";

const fname = "path/to/dir/your.md";

const processor = unified()
  .use(markdown)
  .use(remark2retext, unified().use(english).use(indefiniteArticle))
  .use(remark2rehype)
  .use(html);

processor.process(vfile.readSync(fname), async (err, file) => {
  if (err) throw err;
  console.error(report(file));
  await reportToDaemon(file);
  file.extname = ".html";
  vfile.writeSync(file);
});