unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: mvar <mvar.40k@gmail.com>
To: Hadrien Lacour <hadrien.lacour@posteo.net>
Cc: 39277@debbugs.gnu.org
Subject: bug#39277: 26.3; Tcl font lock does not understand quoting
Date: Mon, 26 Oct 2020 22:44:03 +0200	[thread overview]
Message-ID: <87lffs1zvw.fsf@cnu407c2zx.nsn-intra.net> (raw)
In-Reply-To: <20200125100009.33e3cpgmjszmpwzq@gentoo-zen2700x> (Hadrien Lacour's message of "Sat, 25 Jan 2020 11:00:09 +0100")

[-- Attachment #1: Type: text/plain, Size: 1264 bytes --]

Hadrien Lacour <hadrien.lacour@posteo.net> writes:

> Hello, tcl-mode's font lock (highlighting) chokes on this simple case:
>     puts {"hello}
> where it considers the double quote inside the curly braces as a
> "quoting" character.
> I have confirmed it works with `emacs -Q`.

hi Hadrien,

there's some generic(?) syntactic font lock getting triggered once the
doublequote character is found, that expects a closing doublequote - until then
everything is locked as a string. Is this what this bug is about (it was not
100% clear to me from your initial report) ? i'm attaching a patch that works
around this behavior but i don't know if it is the proper way to deal with the
problem (it certainly doesn't look pretty). The idea is to insert an additional
rule in tcl-syntax-propertize-function that will match the tcl-builtin-list
keywords ('puts' is in there among others) plus the brackets that follow, so
that if a doublequote is found in-between the brackets then there won't be any
automatic string locking that would mess up the closing brackets and everything
else (until another doublequote was found). Then in tcl-set-font-keywords a new
rule will match the brackets and any characters inside will be locked as a
string (including the single quote).


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: tcl.el patch --]
[-- Type: text/x-patch, Size: 1052 bytes --]

diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el
index 33aad2d39f..5dd02c1367 100644
--- a/lisp/progmodes/tcl.el
+++ b/lisp/progmodes/tcl.el
@@ -410,7 +410,8 @@ tcl-font-lock-keywords
 (defconst tcl-syntax-propertize-function
   (syntax-propertize-rules
    ;; Mark the few `#' that are not comment-markers.
-   ("[^;[{ \t\n][ \t]*\\(#\\)" (1 ".")))
+   ("[^;[{ \t\n][ \t]*\\(#\\)" (1 "."))
+   ((concat "\\_<" (regexp-opt tcl-builtin-list t) "\\_>" "\s*{\\([^}].*\\)}") (2 "_")))
   "Syntactic keywords for `tcl-mode'.")
 
 ;; FIXME need some way to recognize variables because array refs look
@@ -506,6 +507,7 @@ tcl-set-font-lock-keywords
          ;; number of "namespace::" qualifiers.  A leading "::" refers
          ;; to the global namespace.
          '("\\${\\([^}]+\\)}" 1 font-lock-variable-name-face)
+         '("{\\([^}]+\\)}" 1 font-lock-string-face)
          '("\\$\\(\\(?:::\\)?\\(?:[[:alnum:]_]+::\\)*[[:alnum:]_]+\\)"
            1 font-lock-variable-name-face)
          '("\\(?:\\s-\\|^\\|\\[\\)set\\s-+{\\([^}]+\\)}"

  parent reply	other threads:[~2020-10-26 20:44 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-25 10:00 bug#39277: 26.3; Tcl font lock does not understand quoting Hadrien Lacour
2020-01-25 10:12 ` bug#39277: tcl-mode " Hadrien Lacour
2020-01-25 10:53 ` Hadrien Lacour
2020-10-26 20:44 ` mvar [this message]
2020-10-27  8:31   ` bug#39277: (no subject) Lars Ingebrigtsen
2020-10-27  8:51   ` bug#39277: 26.3; Tcl font lock does not understand quoting Andreas Schwab
2020-10-27  8:56     ` Lars Ingebrigtsen
2020-10-27 13:27   ` Stefan Monnier
2020-10-27 17:45     ` Lars Ingebrigtsen
2020-10-27 20:42       ` mvar
2020-10-27 20:47         ` Lars Ingebrigtsen
2020-10-27 22:48         ` Stefan Monnier
2020-10-29 17:39           ` Stefan Monnier
2020-10-30 12:02             ` Lars Ingebrigtsen
2020-10-31 11:01             ` mvar
2020-10-31 13:20               ` Stefan Monnier
2020-11-03 19:47                 ` mvar
2020-11-03 21:45                   ` Stefan Monnier
2020-11-05 12:38                     ` mvar
2020-10-27 15:24 ` bug#39277: Hadrien Lacour

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87lffs1zvw.fsf@cnu407c2zx.nsn-intra.net \
    --to=mvar.40k@gmail.com \
    --cc=39277@debbugs.gnu.org \
    --cc=hadrien.lacour@posteo.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).