UNPKG

fish-lsp

Version:

LSP implementation for fish/fish-shell

45 lines (44 loc) 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BindOptions = void 0; exports.isBindCommand = isBindCommand; exports.isBindKeySequence = isBindKeySequence; exports.isBindFunctionCall = isBindFunctionCall; const options_1 = require("./options"); const node_types_1 = require("../utils/node-types"); exports.BindOptions = [ options_1.Option.create('-f', '--function-names'), options_1.Option.create('-K', '--key-names'), options_1.Option.create('-L', '--list-modes'), options_1.Option.create('-M', '--mode').withValue(), options_1.Option.create('-m', '--new-mode').withValue(), options_1.Option.create('-e', '--erase'), options_1.Option.create('-a', '--all'), options_1.Option.long('--preset').withAliases('--user'), options_1.Option.create('-s', '--silent'), options_1.Option.create('-h', '--help'), ]; function isBindCommand(node) { return (0, node_types_1.isCommandWithName)(node, 'bind'); } function isBindKeySequence(node) { const parent = (0, node_types_1.findParentCommand)(node); if (!parent || !isBindCommand(parent)) { return false; } const children = parent.namedChildren.slice(1); const optionResults = (0, options_1.findOptions)(children, exports.BindOptions); const { remaining } = optionResults; return remaining.at(0)?.equals(node); } function isBindFunctionCall(node) { const parent = (0, node_types_1.findParentCommand)(node); if (!parent || !isBindCommand(parent)) { return false; } const children = parent.namedChildren.slice(1); const optionResults = (0, options_1.findOptions)(children, exports.BindOptions); const { remaining } = optionResults; const functionCalls = remaining.slice(1); return functionCalls.some(child => (0, node_types_1.isFunctionDefinitionName)(child) && child.equals(node)); }