Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
73 lines (43 sloc) 2.39 KB

What changed?

  • Fixes highlighting of numeric literals with exponents

  • Highlights function identifiers in named function expressions

    ({ foo: function bar(){ } }); 
    var foo = function bar(){ }; // "foo" and "bar" are highlighted identically
  • Adds missing ES5 built-ins

    JSON.stringify(); // `JSON` is highlighted; // `now` is highlighted
    encodeURIComponent(); // `encodeURIComponent` is highlighted
  • Adds missing ES5 array methods

    [].map(function(){ });
    [].filter(function(){ }); // map, filter, etc. are highlighted
  • Adds missing Object.prototype.* methods

    ({}).hasOwnProperty('foo'); // hasOwnProperty is highlighted
  • Adds missing ES5 Object.* methods

    Object.getPrototypeOf(); // getPrototypeOf is highlighted
    Object.seal(); // seal is highlighted
  • Adds missing console.* methods

    console.profile(); // profile is highlighted
    console.debug(); // debug is highlighted
  • Fixes regexp literals matching (when they are preceded with !, +, -, etc.)

    !/^'foo'); // literal is highlghted
  • Highlights ES5 accessors similar to functions

    ({ get foo() { }, set foo(value) { } });
  • Highlights methods w. whitespace between identifier and parens

    alert (123); // alert is highlighted
    foo.toString (); // toString is highlighted
  • Consistently highlights named function expressions in object literals

      "foo": function () { },
      "bar": function bar() { }

How to install

  1. Go to "Bundles" → "Bundle Editor" → "Edit Languages". Choose "JavaScript" language.
  2. Replace the existing content with that from JavaScript.plist from this repository.


This is most definitely a poor man way to replace the language file, but I had problems with Textmate recognizing language file when simply replacing original JavaScript.plist with the one from this repository. If anyone knows how to solve this, I'd love to hear it.

Known limitations (future fixes):

  • Identifiers can not contain unicode escape sequences (e.g. function \u0500(){ })
  • Certain productions are not newlines-friendly (e.g. function \n foo(){} doesn't match function declaration yet)
  • ES5 accessors can not have numeric or string literals as identifiers (will fix)
Jump to Line
Something went wrong with that request. Please try again.