npm

vscode-textmate-webpack
TypeScript icon, indicating that this package has built-in type declarations

3.3.3 • Public • Published

VSCode TextMate Build Status Coverage Status

An interpreter for grammar files as defined by TextMate. Supports loading grammar files from JSON or PLIST format. Cross - grammar injections are currently not supported.

Installing

npm install vscode-textmate

Using

var Registry = require('vscode-textmate').Registry;
var registry = new Registry();
var grammar = registry.loadGrammarFromPathSync('./javascript.tmbundle/Syntaxes/JavaScript.plist');
 
var lineTokens = grammar.tokenizeLine('function add(a,b) { return a+b; }');
for (var i = 0; i < lineTokens.tokens.length; i++) {
    var token = lineTokens.tokens[i];
    console.log('Token from ' + token.startIndex + ' to ' + token.endIndex + ' with scopes ' + token.scopes);
}

Using asynchronously

Sometimes, it is necessary to manage the list of known grammars outside of vscode-textmate. The sample below shows how this works:

var Registry = require('vscode-textmate').Registry;
 
var registry = new Registry({
    getFilePath: function (scopeName) {
        // Return here the path to the grammar file for `scopeName`
        if (scopeName === 'source.js') {
            return './javascript.tmbundle/Syntaxes/JavaScript.plist';
        }
        return null;
    }
});
 
// Load the JavaScript grammar and any other grammars included by it async.
registry.loadGrammar('source.js', function(err, grammar) {
    if (err) {
        console.error(err);
        return;
    }
 
    // at this point `grammar` is available...
});
 

Tokenizing multiple lines

To tokenize multiple lines, you must pass in the previous returned ruleStack.

var ruleStack = null;
for (var i = 0; i < lines.length; i++) {
    var r = grammar.tokenizeLine(lines[i], ruleStack);
    console.log('Line: #' + i + ', tokens: ' + r.tokens);
    ruleStack = r.ruleStack;
}

API doc

See the main.ts file

Developing

  • Clone the repository
  • Run npm install
  • Compile in the background with npm run watch
  • Run tests with npm test
  • Run benchmark with npm run benchmark
  • Troubleshoot a grammar with npm run inspect -- PATH_TO_GRAMMAR PATH_TO_FILE

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i vscode-textmate-webpack

Weekly Downloads

22

Version

3.3.3

License

MIT

Unpacked Size

500 kB

Total Files

63

Last publish

Collaborators

  • jschr