Skip to content
Highlight bound variables and quoted expressions in lisp
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Highlight special variables differently. Demo updated. Jan 16, 2015
test Fix issue #4. Add pcase-let*. Oct 8, 2018
README.md
lisp-extra-font-lock.el

README.md

lisp-extra-font-lock - Highlight bound variables and quoted exprs

Author: Anders Lindgren
Version: 0.0.6
URL: https://github.com/Lindydancer/lisp-extra-font-lock

This package highlight the location where local variables is created (bound, for example by let) as well as quoted and backquoted constant expressions.

Example

Below, ^ is used indicate highlighted normal variables and constant expressions. * is used to show highlighting of special variables (i.e. those defined by defvar) and of the backquote and comma operators.

(defun my-function (next)
                    ^^^^             <- Parameters
  (let ((numbers '(one two three))
         ^^^^^^^  ^^^^^^^^^^^^^^^    <- Var bound by `let` and quoted expr.
        (buffer-read-only t))
         ****************            <- Special variable (different color)
    `(,@numbers and ,next)))
    *^**        ^^^ *    ^           <- Backquote and comma

Screenshot

See doc/demo.png for screenshot

What is highlighted

  • Parameters in functions and lambdas
  • Variables bound by specal constructs like let, dolist, condition-case, and pcase-let
  • Normal variables and variables declared as globals using defvar are highlighted in different colors, as a warning
  • Quoted expressions
  • Backquoted expressions. Subexpressions using the "," or ",@" are not highlighted (as they are evaluted and thus not constant). Also, the backquote and the comma operators themselves are highlighted using a bright color as a warning.
  • Hash-quoted symbols.

Installation

Place this package in a directory in the load-path. To activate it, use customize or place the following lines in a suitable init file:

   (require 'lisp-extra-font-lock)
   (lisp-extra-font-lock-global-mode 1)

Customization

You can modify the following lists to add more functions that are recognized:

  • lisp-extra-font-lock-let-functions -- List of function with the same syntax as let
  • lisp-extra-font-lock-defun-functions -- List of function with the same syntax as defun
  • lisp-extra-font-lock-lambda-functions -- List of function with the same syntax as lambda
  • lisp-extra-font-lock-dolist-functions -- List of function with the same syntax as dolist
  • lisp-extra-font-lock-bind-first-functions -- List of function that bind their first argument, like condition-case.
  • lisp-extra-font-lock-loop-functions -- List of functions with the same syntax as cl-loop.

The following faces are used when highlighting. You can either redefine the face (e.g. using a theme), or you can rebind the corresponding variable.

  • Local variables are highlighted using the standard face font-lock-variable-name-face
  • Special (global) variables that are rebound are highlighted using the face bound to the variable lisp-extra-font-lock-special-variable-name-face (by default lisp-extra-font-lock-special-variable-name, which inherits from font-lock-warning-face)
  • Quoted expressions use the face bound to the variable lisp-extra-font-lock-quoted-face (by default lisp-extra-font-lock-quoted, which inherits from font-lock-constant-face)
  • The backquote and comma operators use the face bound to the variable lisp-extra-font-lock-backquote-face (by default lisp-extra-font-lock-backquote, which inherits from font-lock-warning-face).
  • Named arguments to cl-loop are highlighted using font-lock-builtin-face.

Example

To set the face used to highlight quoted expressions to a gray color, you can use:

    (custom-set-faces
      '(lisp-extra-font-lock-quoted ((t :foreground "grey50"))))

Converted from lisp-extra-font-lock.el by el2markdown.

You can’t perform that action at this time.