[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Regarding Emacs, js.el, template-strings and syntax-tables

From: Anders Lindgren
Subject: Re: Regarding Emacs, js.el, template-strings and syntax-tables
Date: Tue, 5 Sep 2017 09:00:03 +0200

If you use a string face with, say, both a background and a foreground color, it will matter if you *replace* the existing face as opposed to *prepend* a new face on top of it.

For example, the default Ruby mode replace the face,

That is a legacy behavior, as far as I'm concerned. In some other editors that I've looked at (e.g. Vim and either Sublime Text or Atom), the contents of the interpolation construct look like normal text. You can have nested strings and interpolations inside them, so it's a good semantic cue.

I guess it all depends om the level of complexity that the language supports. In the shell and Ruby cases, nested constructs can be complex, so I guess it makes sense to go back to the normal face (contrary to what I said before). In other languages where the constructs only can be simple variables, I would prefer to retain the string face (for the sake of things like the background color) and color the variable name by prepending the variable name face.

One question is if the delimiters around the _expression_ should be highlighted as well? In Ruby they are highlighted. In my cmake-font-lock[1] package I have opted not to highlight them, as it makes it easier to read the variable name:

If the contents are highlighted differently, the variable name will stand out just the same, even with the delimiters highlighted.

In my experience, I can read code easier if the delimiters aren't highlighted the same way the content is. (In other words, the current Ruby implementation isn't ideal for me.)

In all cases I've seen, the content is displayed using `font-lock-variable-name-face', even for the cases where the content is more complex than a plain variable. I would say that this is OK, as they stand out and, most of the time, it is a plain variable anyway.

We don't use font-lock-variable-name-face for "plain variables" outside of strings, though. Not in ruby-mode, at least.

While we're on the subject. I've been thinking about highlighting parameters in functions and blocks in Ruby. It wouldn't be too difficult, and it would make code easier to read. Unfortunately, it doesn't include all variables as local variables can be created on the fly using a plain assignment in Ruby.

As a parallel, my lisp-extra-font-lock package (https://github.com/Lindydancer/lisp-extra-font-lock) do this in Lisp modes for function and lambda parameters and local variables introduces using `let`, `dolist` et.c. Now that I've been using it for a couple of years, I would not dream of going back to the near black-and-white world of the default lisp modes.

    -- Anders

reply via email to

[Prev in Thread] Current Thread [Next in Thread]