GNU bug report logs -
#24739
25.1; conf-mode can't handle non escaped single quotes
Previous Next
Reported by: Diego Berrocal <cestdiego <at> gmail.com>
Date: Wed, 19 Oct 2016 16:39:02 UTC
Severity: minor
Tags: confirmed
Found in version 25.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #19 received at 24739 <at> debbugs.gnu.org (full text, mbox):
Lars Ingebrigtsen <larsi <at> gnus.org> writes:
> Noam Postavsky <npostavs <at> gmail.com> writes:
>
>> Lars Ingebrigtsen <larsi <at> gnus.org> writes:
>>
>>>> firstProperty=Hi I'm Diego
>>>> secondProperty=I have a stringquote style.
>>
>>> No font-lock-string-face in sight, and there's no mention of it in the
>>> file. So is this some general font-lock thing that's configured
>>> somewhere else? Anybody know how this stuff works?
>>
>> font-lock-string-face comes from font-lock-syntactic-face-function,
>> because ' has string delimiter syntax in conf-mode (see
>> conf-mode-syntax-table).
>
> Hm... Oh!
>
> (modify-syntax-entry ?\' "\"" table)
>
> I was searching for ?' and only found the entry in
> conf-toml-mode-syntax-table. I'll remove that superfluous backslash.
>
>> I think it should be possible to make a syntax-propertize rule that
>> catches unmatched quotes and sets them to punctuation syntax. We do
>> something similar in sgml-syntax-propertize.
>
> I see.
hi,
this conf-mode doesn't seem to follow the syntax-propertize structure so
it doesn't look very trivial to do something similar as in sgml mode
(at least as far as i managed to grasp the concept in there)..But the
conf-mode author(s) seem like they were aware of this font-locking
problem and had this workaround instead:
(defun conf-quote-normal (arg)
"Set the syntax of \\=' and \" to punctuation.
With prefix ARG, only do it for \\=' if 1, or only for \" if 2.
This only affects the current buffer. Some conf files use quotes
to delimit strings, while others allow quotes as simple parts of
the assigned value. In those files font locking will be wrong,
and you can correct it with this command. (Some files even do
both, i.e. quotes delimit strings, except when they are
unbalanced, but hey...)"
(interactive "P")
(let ((table (copy-syntax-table (syntax-table))))
(when (or (not arg) (= (prefix-numeric-value arg) 1))
(modify-syntax-entry ?\' "." table))
(when (or (not arg) (= (prefix-numeric-value arg) 2))
(modify-syntax-entry ?\" "." table))
(set-syntax-table table)
(font-lock-flush)))
which is bound to C-c C-q and it will temporarily fix the incorrect string
font-locking.. Any chance if it is sufficient for you Diego or do you think
a more permanent solution should be implemented instead?
thank you in advance,
Michalis
This bug report was last modified 3 years and 269 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.