fish-lsp
Version:
LSP implementation for fish/fish-shell
29 lines (28 loc) • 896 B
JavaScript
;
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') || ''];
});
}