UNPKG

fish-lsp

Version:

LSP implementation for fish/fish-shell

42 lines (41 loc) 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDocumentHighlights = getDocumentHighlights; const translation_1 = require("./utils/translation"); const tree_sitter_1 = require("./utils/tree-sitter"); const vscode_languageserver_1 = require("vscode-languageserver"); /** * TODO: * ADD DocumentHighlightKind.Read | DocumentHighlightKind.Write support */ function getDocumentHighlights(tree, node) { const highlights = []; const nodeSymbolKind = (0, translation_1.toSymbolKind)(node); function visitNode(currentNode) { if (!currentNode) return; const currSymbolKind = (0, translation_1.toSymbolKind)(currentNode); const equalKinds = currSymbolKind === nodeSymbolKind || currentNode.type === node.type; if (equalKinds && currentNode.text === node.text) { highlights.push({ range: { start: { line: currentNode.startPosition.row, character: currentNode.startPosition.column, }, end: { line: currentNode.endPosition.row, character: currentNode.endPosition.column, }, }, // kind: DocumentHighlightKind.Text, kind: (0, tree_sitter_1.equalRanges)((0, tree_sitter_1.getRange)(currentNode), (0, tree_sitter_1.getRange)(node)) ? vscode_languageserver_1.DocumentHighlightKind.Read : vscode_languageserver_1.DocumentHighlightKind.Text, }); } currentNode.children.forEach(child => visitNode(child)); } visitNode(tree.rootNode); return highlights; }