Subject: Re: bug#14574: prog-prettify-symbols breaks font-locking

From: Juanma Barranquero <[email-masked]>
Date: Tue, 11 Jun 2013 23:29:49 +0200

On Tue, Jun 11, 2013 at 11:03 PM, Ted Zlatanov <[email-masked]> wrote:

> Thanks to you and Stefan for looking into this.

I'm seeing another problem with prog-prettify-symbols, but I haven't
filed yet a new bug because for now I can only reproduce it with my
setup.

Sometimes `lambda' gets correctly prettified, and sometimes no (see
attached image).

This is the char info for the correctly prettified lambda:

             position: 55719 of 81109 (69%), column: 11
            character: l (displayed as l) (codepoint 108, #o154, #x6c)
    preferred charset: iso-8859-15 (ISO/IEC 8859/15)
code point in charset: 0x6C
               script: latin
               syntax: w which means: word
             category: .:Base, L:Left-to-right (strong), a:ASCII,
l:Latin, r:Roman
             to input: type "C-x 8 RET HEX-CODEPOINT" or "C-x 8 RET NAME"
          buffer code: #x6C
            file code: #x6C (encoded by coding system iso-latin-9-unix)
              display: composed to form "lambda" (see below)

Composed with the following character(s) "ambda" by the rule:
(?λ)
The component character(s) are displayed by these fonts (glyph codes):
 λ: uniscribe:-outline-DejaVu Sans
Mono-normal-normal-normal-mono-13-*-*-*-c-*-iso10646-1 (#x301)
See the variable `reference-point-alist' for the meaning of the rule.

Character code properties: customize what to show
  name: LATIN SMALL LETTER L
  general-category: Ll (Letter, Lowercase)
  canonical-combining-class: 0 (Spacing, split, enclosing, reordrant,
and Tibetan subjoined)
  bidi-class: L (Left-to-Right)
  decomposition: (108) ('l')
  mirrored: N
  uppercase: 76 (L)
  titlecase: 76 (L)

There are text properties here:
  charset              iso-8859-15
  composition          [Show]
  face                 font-lock-keyword-face
  fontified            t

and this is the info for the incorrect one:

             position: 55396 of 81109 (68%), column: 11
            character: l (displayed as l) (codepoint 108, #o154, #x6c)
    preferred charset: iso-8859-15 (ISO/IEC 8859/15)
code point in charset: 0x6C
               script: latin
               syntax: w which means: word
             category: .:Base, L:Left-to-right (strong), a:ASCII,
l:Latin, r:Roman
             to input: type "C-x 8 RET HEX-CODEPOINT" or "C-x 8 RET NAME"
          buffer code: #x6C
            file code: #x6C (encoded by coding system iso-latin-9-unix)
              display: composed to form "lambda" (see below)

Composed with the following character(s) "ambda" by the rule:
(?l ?a ?m ?b ?d ?a)
The component character(s) are displayed by these fonts (glyph codes):
 l: uniscribe:-outline-DejaVu Sans
Mono-normal-normal-normal-mono-13-*-*-*-c-*-iso8859-1 (#x4F)
 a: uniscribe:-outline-DejaVu Sans
Mono-normal-normal-normal-mono-13-*-*-*-c-*-iso8859-1 (#x44)
 m: uniscribe:-outline-DejaVu Sans
Mono-normal-normal-normal-mono-13-*-*-*-c-*-iso8859-1 (#x50)
 b: uniscribe:-outline-DejaVu Sans
Mono-normal-normal-normal-mono-13-*-*-*-c-*-iso8859-1 (#x45)
 d: uniscribe:-outline-DejaVu Sans
Mono-normal-normal-normal-mono-13-*-*-*-c-*-iso8859-1 (#x47)
 a: uniscribe:-outline-DejaVu Sans
Mono-normal-normal-normal-mono-13-*-*-*-c-*-iso8859-1 (#x44)
See the variable `reference-point-alist' for the meaning of the rule.

Character code properties: customize what to show
  name: LATIN SMALL LETTER L
  general-category: Ll (Letter, Lowercase)
  canonical-combining-class: 0 (Spacing, split, enclosing, reordrant,
and Tibetan subjoined)
  bidi-class: L (Left-to-Right)
  decomposition: (108) ('l')
  mirrored: N
  uppercase: 76 (L)
  titlecase: 76 (L)

There are text properties here:
  charset              iso-8859-15
  composition          [Show]
  face                 font-lock-keyword-face
  fontified            t

Adding a char before it or otherwise modifying the line makes the
lambda be correctly prettified again. Weird.