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.")