Fix previous change for F2003 interfaces.

* progmodes/f90.el (f90-font-lock-keywords-1, f90-font-lock-keywords-2):
Move F2003 named interfaces from keywords-2 to keywords-1, and
use function-name-face rather than constant-face.
Simplify "abstract interface" regexp.
This commit is contained in:
Glenn Morris 2010-02-07 12:23:20 -08:00
parent 5cb9f67486
commit 50e4518b52
2 changed files with 17 additions and 19 deletions

View file

@ -1,3 +1,10 @@
2010-02-07 Glenn Morris <rgm@gnu.org>
* progmodes/f90.el (f90-font-lock-keywords-1, f90-font-lock-keywords-2):
Move F2003 named interfaces from keywords-2 to keywords-1, and
use function-name-face rather than constant-face.
Simplify "abstract interface" regexp.
2010-02-07 Chong Yidong <cyd@stupidchicken.com>
* eshell/esh-util.el (eshell-file-attributes): New optional arg

View file

@ -158,10 +158,8 @@
;; 3. Support for align.
;; Font-locking:
;; 1. OpenMP, OpenMPI?, preprocessor highlighting.
;; 2. interface blah - Highlight "blah" in function-name face?
;; Need to avoid "interface operator (+)" etc.
;; 3. integer_name = 1
;; 4. Labels for "else" statements (F2003)?
;; 2. integer_name = 1
;; 3. Labels for "else" statements (F2003)?
(defvar comment-auto-fill-only-comments)
(defvar font-lock-keywords)
@ -467,22 +465,21 @@ type-name parts, respectively."
;;; (1 font-lock-keyword-face) (3 font-lock-function-name-face))
'(f90-typedef-matcher
(1 font-lock-keyword-face) (2 font-lock-function-name-face))
;; Other functions and declarations.
;; F2003. Prevent operators being highlighted as functions.
'("\\<\\(\\(?:end[ \t]*\\)?interface[ \t]*\\(?:assignment\\|operator\\|\
read\\|write\\)\\)[ \t]*(" (1 font-lock-keyword-face t))
;; Other functions and declarations. Named interfaces = F2003.
'("\\<\\(\\(?:end[ \t]*\\)?\\(program\\|module\\|function\\|associate\\|\
subroutine\\)\\|use\\|call\\)\\>[ \t]*\\(\\sw+\\)?"
subroutine\\|interface\\)\\|use\\|call\\)\\>[ \t]*\\(\\sw+\\)?"
(1 font-lock-keyword-face) (3 font-lock-function-name-face nil t))
;; F2003.
'("\\<\\(use\\)[ \t]*,[ \t]*\\(\\(?:non_\\)?intrinsic\\)[ \t]*::[ \t]*\
\\(\\sw+\\)"
(1 font-lock-keyword-face) (2 font-lock-keyword-face)
(3 font-lock-function-name-face))
"\\<\\(\\(end[ \t]*\\)?block[ \t]*data\\|contains\\|\
end[ \t]*interface\\)\\>"
;; "abstract interface" is F2003. Must come after previous entry.
'("\\<\\(\\(?:abstract[ \t]*\\)?interface\\)\\>"
;; [ \t]*\\(\\(\\sw+\\)[ \t]*[^(]\\)?"
;; (2) messes up "interface operator ()", etc.
(1 font-lock-keyword-face))) ;(2 font-lock-function-name-face nil t)))
"\\<\\(\\(end[ \t]*\\)?block[ \t]*data\\|contains\\)\\>"
;; "abstract interface" is F2003.
'("\\<abstract[ \t]*interface\\>" (0 font-lock-keyword-face t)))
"This does fairly subdued highlighting of comments and function calls.")
;; NB not explicitly handling this, yet it seems to work.
@ -560,12 +557,6 @@ logical\\|double[ \t]*precision\\|\
(5 font-lock-function-name-face t) (6 'default t))
;; enum (F2003; must be followed by ", bind(C)").
'("\\<\\(enum\\)[ \t]*," (1 font-lock-keyword-face))
;; F2003. Prevent operators being highlighted as constants.
'("\\<\\(\\(?:end[ \t]*\\)?interface[ \t]*\\(?:assignment\\|operator\\|\
read\\|write\\)\\)[ \t]*(" (1 font-lock-keyword-face t))
;; Interface blocks can be named in F2003.
'("\\<\\(\\(?:end[ \t]*\\)?interface\\)[ \t]*\\(\\sw+\\)?\\>"
(1 font-lock-keyword-face) (2 font-lock-constant-face nil t))
;; end do, enum (F2003), if, select, where, and forall constructs.
'("\\<\\(end[ \t]*\\(do\\|if\\|enum\\|select\\|forall\\|where\\)\\)\\>\
\\([ \t]+\\(\\sw+\\)\\)?"