Close bug#1835.
* progmodes/fortran.el (fortran-match-and-skip-declaration): New function. (fortran-font-lock-keywords-3): Use it. (Bug#1835)
This commit is contained in:
parent
16207c0a48
commit
119850e927
2 changed files with 29 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2010-04-10 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* progmodes/fortran.el (fortran-match-and-skip-declaration):
|
||||
New function.
|
||||
(fortran-font-lock-keywords-3): Use it. (Bug#1835)
|
||||
|
||||
2010-04-07 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* language/indian.el (malayalam-composable-pattern): Fix previous
|
||||
|
|
|
@ -403,6 +403,28 @@ program\\|subroutine\\)\\>[ \t]*\\(\\sw+\\)?"
|
|||
'("^ *\\([0-9]+\\)" . font-lock-constant-face)))
|
||||
"Medium level highlighting for Fortran mode.")
|
||||
|
||||
;; See bug#1835. Never really looked into _why_ this matters...
|
||||
(defun fortran-match-and-skip-declaration (limit)
|
||||
"Like `font-lock-match-c-style-declaration-item-and-skip-to-next'.
|
||||
The only difference is, it returns t in a case when the default returns nil."
|
||||
(when (looking-at "[ \n\t*]*\\(\\sw+\\)[ \t\n]*\\(((?\\)?")
|
||||
(when (and (match-end 2) (> (- (match-end 2) (match-beginning 2)) 1))
|
||||
(let ((pos (point)))
|
||||
(skip-chars-backward " \t\n")
|
||||
(skip-syntax-backward "w")
|
||||
(unless (looking-at "\\(\\sw+\\)[ \t\n]*\\sw+[ \t\n]*\\(((?\\)?")
|
||||
(goto-char pos)
|
||||
(looking-at "[ \n\t*]*\\(\\sw+\\)[ \t\n]*\\(((?\\)?"))))
|
||||
(save-match-data
|
||||
(condition-case nil
|
||||
(save-restriction
|
||||
(narrow-to-region (point-min) limit)
|
||||
(goto-char (match-end 1))
|
||||
(while (not (looking-at "[ \t\n]*\\(\\(,\\)\\|;\\|\\'\\)"))
|
||||
(goto-char (or (scan-sexps (point) 1) (point-max))))
|
||||
(goto-char (match-end 2)))
|
||||
(error t)))))
|
||||
|
||||
(defvar fortran-font-lock-keywords-3
|
||||
(append
|
||||
fortran-font-lock-keywords-1
|
||||
|
@ -412,7 +434,7 @@ program\\|subroutine\\)\\>[ \t]*\\(\\sw+\\)?"
|
|||
;; Type specifier.
|
||||
'(1 font-lock-type-face)
|
||||
;; Declaration item (or just /.../ block name).
|
||||
`(font-lock-match-c-style-declaration-item-and-skip-to-next
|
||||
`(fortran-match-and-skip-declaration
|
||||
;; Start after any *(...) expression.
|
||||
(condition-case nil
|
||||
(and (match-beginning ,(1+ (regexp-opt-depth
|
||||
|
|
Loading…
Add table
Reference in a new issue