Variable: f90-imenu-generic-expression

f90-imenu-generic-expression is a variable defined in f90.el.gz.

Value

((nil "^[       0-9]*program[   ]+\\(\\(?:\\sw\\|\\s_\\)+\\)" 1)
 ("Submodules" "^[      0-9]*submodule[         ]*([^)\n]+)[    ]*\\(\\(?:\\sw\\|\\s_\\)+\\)[   ]*\\(!\\|$\\)" 1)
 ("Modules" "^[         0-9]*module[    ]+\\(\\(?:\\sw\\|\\s_\\)+\\)[   ]*\\(!\\|$\\)" 1)
 ("Types" f90-imenu-type-matcher 1)
 ("Procedures" "^[      0-9]*\\([^!\"&\n]*\\([^e!\n\"&  ][^!\"&\n   ][^!\"&\n   ]\\|[^!\"&\n        ][^n!\n\"&  ][^!\"&\n   ]\\|[^!\"&\n        ][^!\"&\n   ][^d!\n\"&  ]\\)\\|[^!\"&\n     ]?[^!\"&\n  ]?\\)[  ]*\\(function\\|subroutine\\)[  ]+\\(\\(?:\\sw\\|\\s_\\)+\\)" 4))

Documentation

Value for imenu-generic-expression in F90 mode.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/f90.el.gz
(defvar f90-imenu-generic-expression
  (let ((good-char "[^!\"&\n \t]") (not-e "[^e!\n\"& \t]")
        (not-n "[^n!\n\"& \t]") (not-d "[^d!\n\"& \t]")
        ;; (not-ib "[^i(!\n\"& \t]") (not-s "[^s!\n\"& \t]")
        )
    `((nil "^[ \t0-9]*program[ \t]+\\(\\(?:\\sw\\|\\s_\\)+\\)" 1)
      ("Submodules" "^[ \t0-9]*submodule[ \t]*([^)\n]+)[ \t]*\
\\(\\(?:\\sw\\|\\s_\\)+\\)[ \t]*\\(!\\|$\\)" 1)
      ("Modules" "^[ \t0-9]*module[ \t]+\\(\\(?:\\sw\\|\\s_\\)+\\)[ \t]*\\(!\\|$\\)" 1)
      ("Types" f90-imenu-type-matcher 1)
      ;; Does not handle: "type[, stuff] :: foo".
      ;;(format "^[ \t0-9]*type[ \t]+\\(\\(%s\\|i%s\\|is\\(?:\\sw\\|\\s_\\)\\)\\(?:\\sw\\|\\s_\\)*\\)"
      ;;        not-ib not-s)
      ;;1)
      ;; Can't get the subexpression numbers to match in the two branches.
      ;; FIXME: Now with \(?N:..\) we can get the numbers to match!
      ;;(format "^[ \t0-9]*type\\([ \t]*,.*\\(::\\)[ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)\\|[ \t]+\\(\\(%s\\|i%s\\|is\\(?:\\sw\\|\\s_\\)\\)\\(?:\\sw\\|\\s_\\)*\\)\\)" not-ib not-s)
      ;;3)
      ("Procedures"
       ,(concat
         "^[ \t0-9]*"
         "\\("
         ;; At least three non-space characters before function/subroutine.
         ;; Check that the last three non-space characters do not spell E N D.
         "[^!\"&\n]*\\("
         not-e good-char good-char "\\|"
         good-char not-n good-char "\\|"
         good-char good-char not-d "\\)"
         "\\|"
         ;; Less than three non-space characters before function/subroutine.
         good-char "?" good-char "?"
         "\\)"
         "[ \t]*\\(function\\|subroutine\\)[ \t]+\\(\\(?:\\sw\\|\\s_\\)+\\)")
       4)))
  "Value for `imenu-generic-expression' in F90 mode.")