Hi Eli,

On 2024-09-12 at 23:16 -07, Eli Zaretskii <e...@gnu.org> 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.



Reply via email to