UNPKG

monaco-latex

Version:

LaTeX language support for Monaco Editor

92 lines (91 loc) 5.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerLaTeXLanguage = exports.languageConfiguration = exports.PACKAGE_MAP = exports.LATEX_PACKAGES = exports.LATEX_ENVIRONMENTS = exports.LATEX_COMMANDS = exports.ENVIRONMENT_MAP = exports.CommandCategory = exports.COMMAND_MAP = exports.LaTeXHoverProvider = exports.createHoverProvider = exports.LaTeXFoldingRangeProvider = exports.createFoldingProvider = exports.LaTeXCompletionProvider = exports.createCompletionProvider = exports.monarchTokenizer = exports.default = void 0; // Import for internal use const completion_1 = require("./src/completion"); const folding_1 = require("./src/folding"); const hover_1 = require("./src/hover"); const tokenizer_1 = require("./src/tokenizer"); // Re-export the tokenizer var tokenizer_2 = require("./src/tokenizer"); Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(tokenizer_2).default; } }); Object.defineProperty(exports, "monarchTokenizer", { enumerable: true, get: function () { return tokenizer_2.monarchTokenizer; } }); // Re-export providers var completion_2 = require("./src/completion"); Object.defineProperty(exports, "createCompletionProvider", { enumerable: true, get: function () { return completion_2.createCompletionProvider; } }); Object.defineProperty(exports, "LaTeXCompletionProvider", { enumerable: true, get: function () { return completion_2.LaTeXCompletionProvider; } }); var folding_2 = require("./src/folding"); Object.defineProperty(exports, "createFoldingProvider", { enumerable: true, get: function () { return folding_2.createFoldingProvider; } }); Object.defineProperty(exports, "LaTeXFoldingRangeProvider", { enumerable: true, get: function () { return folding_2.LaTeXFoldingRangeProvider; } }); var hover_2 = require("./src/hover"); Object.defineProperty(exports, "createHoverProvider", { enumerable: true, get: function () { return hover_2.createHoverProvider; } }); Object.defineProperty(exports, "LaTeXHoverProvider", { enumerable: true, get: function () { return hover_2.LaTeXHoverProvider; } }); // Re-export command data for advanced usage var data_1 = require("./src/commands/data"); Object.defineProperty(exports, "COMMAND_MAP", { enumerable: true, get: function () { return data_1.COMMAND_MAP; } }); Object.defineProperty(exports, "CommandCategory", { enumerable: true, get: function () { return data_1.CommandCategory; } }); Object.defineProperty(exports, "ENVIRONMENT_MAP", { enumerable: true, get: function () { return data_1.ENVIRONMENT_MAP; } }); Object.defineProperty(exports, "LATEX_COMMANDS", { enumerable: true, get: function () { return data_1.LATEX_COMMANDS; } }); Object.defineProperty(exports, "LATEX_ENVIRONMENTS", { enumerable: true, get: function () { return data_1.LATEX_ENVIRONMENTS; } }); Object.defineProperty(exports, "LATEX_PACKAGES", { enumerable: true, get: function () { return data_1.LATEX_PACKAGES; } }); Object.defineProperty(exports, "PACKAGE_MAP", { enumerable: true, get: function () { return data_1.PACKAGE_MAP; } }); /** * Language configuration for LaTeX. */ exports.languageConfiguration = { comments: { lineComment: '%', }, brackets: [ ['{', '}'], ['[', ']'], ['(', ')'], ], autoClosingPairs: [ { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' }, { open: '$', close: '$' }, ], surroundingPairs: [ { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' }, { open: '$', close: '$' }, ], folding: { markers: { start: /\\begin\{/, end: /\\end\{/, }, }, }; /** * Registers all LaTeX language features with Monaco. * This is a convenience function that sets up everything at once. * * @param monaco - The Monaco editor instance */ function registerLaTeXLanguage(monaco) { // Register the language monaco.languages.register({ id: 'latex', extensions: ['.tex', '.sty', '.cls'], aliases: ['LaTeX', 'latex', 'tex'], mimetypes: ['text/latex', 'text/tex'], }); // Set language configuration monaco.languages.setLanguageConfiguration('latex', exports.languageConfiguration); // Set tokenizer for syntax highlighting monaco.languages.setMonarchTokensProvider('latex', tokenizer_1.monarchTokenizer); // Register completion provider monaco.languages.registerCompletionItemProvider('latex', (0, completion_1.createCompletionProvider)(monaco)); // Register hover provider monaco.languages.registerHoverProvider('latex', (0, hover_1.createHoverProvider)(monaco)); // Register folding provider monaco.languages.registerFoldingRangeProvider('latex', (0, folding_1.createFoldingProvider)(monaco)); } exports.registerLaTeXLanguage = registerLaTeXLanguage;