bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#17222: 24.3; In f90-mode variables declared in continuation lines ar


From: Mattias Engdegård
Subject: bug#17222: 24.3; In f90-mode variables declared in continuation lines are not colored.
Date: Tue, 17 May 2022 17:20:46 +0200

> I've now fixed this in Emacs 29: 

Thank you for doing this. Relint complained about this part:

-\\(.*::\\|[ \t]*(.*)\\)?\\([^&!\n]*\\)"
-      (1 font-lock-type-face t) (4 font-lock-variable-name-face t))
+\\(.*::\\|[ \t]*(.*)\\)?\\(\\(?:[^&!\n]*\\(?:&\n\\)?\\)+\\)"
+      (1 font-lock-type-face t) (4 font-lock-variable-name-face append))

More specifically, the

\\(?:[^&!\n]*\\(?:&\n\\)?\\)+

part at the end is a potential empty-string repetition that indicates an 
ambiguity which we'd like to remove.
What is the desired grammar here? Moving to rx for clarity, the above snippet 
means

(+ (* (not (in "\n!&")))
  (? "&\n"))

What about rewriting it as

(: (* (not (in "\n!&")))
  (* "&\n"
     (* (not (in "\n!&")))))

which should be equivalent but unambiguous?

However there may be something more fundamentally wrong with the original 
change, because it only seems to work for me after loading a file, not when 
writing the code incrementally. More precisely, when I've typed

program main
 integer :: alpha, &&

in a new buffer then everything looks correctly coloured, but if I add

  beta

to the next line then it isn't fontified at all. Saving and reloading the 
buffer helps. Can you confirm?




reply via email to

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