UNPKG

fish-lsp

Version:

LSP implementation for fish/fish-shell

29 lines (28 loc) 896 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.escapeCmd = escapeCmd; exports.shellComplete = shellComplete; const exec_1 = require("../exec"); function escapeCmd(cmd) { return cmd .replace(/\\/g, '\\\\') .replace(/\$/g, '\\$') .replace(/'/g, "\\'") .replace(/`/g, '\\`') .replace(/"/g, '\\"'); } async function shellComplete(cmd) { const escapedCmd = escapeCmd(cmd).toString(); const completeString = `fish -c "complete --do-complete='${escapedCmd}'"`; const child = await (0, exec_1.execAsync)(completeString); if (child.stderr) { return []; } return child.stdout.toString().trim() .split('\n') .filter((line) => line.trim() !== '') .map(line => { const [first, ...rest] = line.split('\t'); return [first, rest.join('\t') || '']; }); }