fortranctagsexuberant-ctags

ctags doesn't mark complex type statements for fortran custom types


system:
mac osx catalina
Exuberant Ctags 5.8

call the following mymodule.f90

module mymodule
  public
  type :: thing1
     real :: a
  end type thing1
  type, extends(thing1) :: thing2
     real :: b
  end type
end module

then run ctags -e mymodule.f90 and the resulting tags file is:


mymodule.f90,99
module mymodulemymodule1,0
  type :: thing1thing15,27
     reala6,44
     real :: bb10,112

which notably is missing a definition for thing2. I have seen ctags skip over type definitions that look like:

type, abstract...
type, public...

whatever, it seems like the parser doesn't recognize type definitions other than type :: name

Is there a flag that enables this, or is ctags just too outdated now to use this? What is the solution here?


Solution

  • Universal-ctags developed at https://ctags.io can capture thing2 like:

    $ cat mymodule.f90       
    module mymodule
      public
      type :: thing1
         real :: a
      end type thing1
      type, extends(thing1) :: thing2
         real :: b
      end type
    end module
    $ u-ctags -o - -e  mymodule.f90
    
    
    mymodule.f90,144
    module mymodulemymodule1,0
      type :: thing1thing13,25
         reala4,42
      type, extends(thing1) :: thing2thing26,75
         real :: bb7,109