Semantic font-lock for JS

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Semantic font-lock for JS

Anand Tamariya
Here's a quick peek at semantic font lock for JS.
Post image

Noticeable features:

  1. Objects, variables and functions are highlighted differently.

  2. Auto-suggest supported by semantic and company

It uses following face definitions for highlighting.

(defvar semantic-format-face-alist
  `( (function . font-lock-function-name-face)
     (variable . font-lock-variable-name-face)
     (type . font-lock-type-face)
     ;; These are different between Emacsen.
     (include . ,'font-lock-constant-face)
     (package . , 'font-lock-constant-face)
     ;; Not a tag, but instead a feature of output
     (label . font-lock-string-face)
     (comment . font-lock-comment-face)
     (keyword . font-lock-keyword-face)
     (annotation . font-lock-builtin-face)
     (constant . bold)
     ;;(member . font-lock-member-face)
     (abstract . italic)
     (static . italic)
     (documentation . font-lock-doc-face)

Code: Emacs customization (

You can follow the exact code here

Most relevant changes are in lisp/cedet/semantic/java.el . Other minor changes are for disabling jit-lock.

- Font lock setup : semantic-font-lock-mode()

- Fontify region function: semantic-fontify-region()

- Helper function: semantic-fontify-tag()