Hi Eli,
On 2024-09-12 at 23:16 -07, Eli Zaretskii <[email protected]> wrote...
>> --- a/lisp/progmodes/fortran.el
>> +++ b/lisp/progmodes/fortran.el
>> @@ -1631,7 +1631,7 @@ fortran-calculate-indent
>> (setq icol (+ icol fortran-if-indent)))
>> ((looking-at "where[ \t]*(.*)[ \t]*\n")
>> (setq icol (+ icol fortran-if-indent)))
>> - ((looking-at "do\\b")
>> + ((looking-at "do[\\ |0-9]+.*=[\\ a-z0-9_]*,[\\ a-z0-9_]*")
>
> What do you intend with the likes of "[\\ |0-9]+" ? Is this a
> character alternative, or is that an alternative of matches? If the
> former, there's no need to escape a backslash, but then why is '|'
> there?
I agree the '|' is not needed. I'm not sure what 'character alternative' or
'alternative of matches' means. I meant the '|' as an "OR" (is that an
alterntative?), but realize now it is not needed. I now suggest
"do[\\ 0-9]+.*=[\\ a-z0-9_]*,[\\ a-z0-9_]*"
The pattern attempts to match "do", then either (space, numbers, or nothing),
then equal sign, then something that looks like two numbers or valid variable
names separated by a comma. I used these as tests:
do42I=1,42 ! match
do_foo = bar()
do i = 1,42 ! match
do i = 1,n ! match
do i_var = a_var,b_var ! match
do i_var5 = a_var,b_var ! match
do42i_var = a_var,b_var ! match
DO42 = [1,2]
DO6I=5 7
DO6I=5,7 ! match
do_not_loop = [a,b]
donot_loop = (/4,5/)
donotloop = 42
do_notloop = 42
Should I submit an updated patch? Or is the patch applier able to make this
small change?
Thanks,
-k.