monaco-latex
Version:
LaTeX language support for Monaco Editor
92 lines (91 loc) • 5.05 kB
JavaScript
;
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;