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

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

bug#345: Bug in F90 mode


From: Gabor Toth
Subject: bug#345: Bug in F90 mode
Date: Sun, 1 Jun 2008 09:57:27 -0400

Dear GNU emacs developers,

I truly appreciate the work put into the emacs editor. This is the editor of choice for editing source code files because of the many advanced features that help programmers. I have been using the F90 module for a long time and I encountered a small but annoying bug. I tried to work around it, but I could not.

The bug is present in every version of emacs I know of. It is a bug in the F90 module. To reproduced the bug, simply create a file with .f90 extension, say

bug.f90

open the file, and type the following lines

program bug

   AnyVariable = 1.0
   TypeVariable = 2.0
       OtherVariable = 3.0

   end program bug

and let Emacs indent it (by hitting TAB at the beginning of each line). The result is what you see above, ie the lines following the TypeVariable = 2.0 line are indented.

The reason is that if a line starts withTypeXXX the F90 module regards it as a type definition, although it is not matched when an end statement is typed. I suspect that the error is in the definition of f90-type-def-re in the f90.el file. The definition is

(defconst f90-type-def-re
  "\\<\\(type\\)\\([^(\n]*\\)\\(::\\)?[ \t]*\\b\\(\\sw+\\)")

It seems that this regular expression is too permissive. The [^(\n]** part matches anything that follows the "type" string except for opening paren and end-of-line. This should probably be replaced with [ \t]*

I would be greatful if you could suggest a work around that I can put into my .emacs file. My attempts at redefining the f90-type-def-re did not work. I managed to set the indentation to 0 for type/ interface/blockdata definitions to avoid this problem, but then the true type and interface definitions will not be indented, and that's pretty ugly. We have some huge F90 codes, and not allowing variables to start with the string "type" is not an option.

Thanks for your work and kind help,

Gabor Toth
Research scientist
University of Michigan








reply via email to

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