1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-23 08:20:41 -08:00

eval-when-compile a few defvars to quieten the byte-compiler.

(f90-xemacs-flag): Wrap in eval-and-compile.
(f90-font-lock-keywords): Doc fix.
(f90-mode-abbrev-table): Use the 6th (system-flag) argument of
define-abbrev if available, but work without it as well.
(f90-mark-subprogram-overlay): Variable deleted.
(f90-mark-subprogram): No need to be silent about push-mark.
Get rid of the silly overlay bit.
(f90-abbrev-start): unread-command-event is obsolete in XEmacs too.
This commit is contained in:
Glenn Morris 2002-08-21 21:26:07 +00:00
parent 3cdaec13e7
commit 0ee7f06810

View file

@ -156,6 +156,19 @@
;;; Code:
(eval-and-compile
(defconst f90-xemacs-flag (string-match "XEmacs\\|Lucid" emacs-version)
"Non-nil means F90 mode thinks it is running under XEmacs."))
;; Most of these are just to quieten the byte-compiler.
(eval-when-compile
(defvar comment-auto-fill-only-comments)
(defvar font-lock-keywords)
(unless f90-xemacs-flag
;; If you have GNU Emacs 19.22 or earlier, comment this out, or get imenu.
(require 'imenu)
(defvar current-menubar)))
;; User options
(defgroup f90 nil
@ -242,8 +255,13 @@ The options are 'downcase-word, 'upcase-word, 'capitalize-word and nil."
:type 'boolean
:group 'f90)
(defconst f90-xemacs-flag (string-match "XEmacs\\|Lucid" emacs-version)
"Non-nil means F90 mode thinks it is running under XEmacs.")
(defcustom f90-mode-hook nil
"Hook run when entering F90 mode."
:type 'hook
:options '(f90-add-imenu-menu)
:group 'f90)
;; User options end here.
(defconst f90-keywords-re
(regexp-opt '("allocatable" "allocate" "assign" "assignment" "backspace"
@ -398,7 +416,8 @@ do\\([ \t]*while\\)?\\|select[ \t]*case\\|where\\|forall\\)\\)\\>"
(defvar f90-font-lock-keywords
f90-font-lock-keywords-2
"*Default expressions to highlight in F90 mode.")
"*Default expressions to highlight in F90 mode.
Can be overridden by the value of `font-lock-maximum-decoration'.")
(defvar f90-mode-syntax-table
@ -686,77 +705,77 @@ do\\([ \t]*while\\)?\\|select[ \t]*case\\|where\\|forall\\)\\)\\>"
(put 'f90-add-imenu-menu 'menu-enable '(not f90-imenu-flag))
;; When compiling under GNU Emacs, load imenu during compilation.
;; If you have 19.22 or earlier, comment this out, or get imenu.
(or f90-xemacs-flag (eval-when-compile (require 'imenu)))
;; Abbrevs have generally two letters, except standard types `c, `i, `r, `t.
(defvar f90-mode-abbrev-table
(let (abbrevs-changed)
(define-abbrev-table 'f90-mode-abbrev-table
'(("`al" "allocate" nil 0 t)
("`ab" "allocatable" nil 0 t)
("`as" "assignment" nil 0 t)
("`ba" "backspace" nil 0 t)
("`bd" "block data" nil 0 t)
("`c" "character" nil 0 t)
("`cl" "close" nil 0 t)
("`cm" "common" nil 0 t)
("`cx" "complex" nil 0 t)
("`cn" "contains" nil 0 t)
("`cy" "cycle" nil 0 t)
("`de" "deallocate" nil 0 t)
("`df" "define" nil 0 t)
("`di" "dimension" nil 0 t)
("`dw" "do while" nil 0 t)
("`el" "else" nil 0 t)
("`eli" "else if" nil 0 t)
("`elw" "elsewhere" nil 0 t)
("`eq" "equivalence" nil 0 t)
("`ex" "external" nil 0 t)
("`ey" "entry" nil 0 t)
("`fl" "forall" nil 0 t)
("`fo" "format" nil 0 t)
("`fu" "function" nil 0 t)
("`fa" ".false." nil 0 t)
("`im" "implicit none" nil 0 t)
("`in " "include" nil 0 t)
("`i" "integer" nil 0 t)
("`it" "intent" nil 0 t)
("`if" "interface" nil 0 t)
("`lo" "logical" nil 0 t)
("`mo" "module" nil 0 t)
("`na" "namelist" nil 0 t)
("`nu" "nullify" nil 0 t)
("`op" "optional" nil 0 t)
("`pa" "parameter" nil 0 t)
("`po" "pointer" nil 0 t)
("`pr" "print" nil 0 t)
("`pi" "private" nil 0 t)
("`pm" "program" nil 0 t)
("`pu" "public" nil 0 t)
("`r" "real" nil 0 t)
("`rc" "recursive" nil 0 t)
("`rt" "return" nil 0 t)
("`rw" "rewind" nil 0 t)
("`se" "select" nil 0 t)
("`sq" "sequence" nil 0 t)
("`su" "subroutine" nil 0 t)
("`ta" "target" nil 0 t)
("`tr" ".true." nil 0 t)
("`t" "type" nil 0 t)
("`wh" "where" nil 0 t)
("`wr" "write" nil 0 t)))
(define-abbrev-table 'f90-mode-abbrev-table nil)
;; Use the 6th arg (SYSTEM-FLAG) of define-abbrev if possible.
;; A little baroque to quieten the byte-compiler.
(mapcar
(function (lambda (element)
(condition-case nil
(apply 'define-abbrev f90-mode-abbrev-table
(append element '(nil 0 t)))
(wrong-number-of-arguments
(apply 'define-abbrev f90-mode-abbrev-table
(append element '(nil 0)))))))
'(("`al" "allocate" )
("`ab" "allocatable" )
("`as" "assignment" )
("`ba" "backspace" )
("`bd" "block data" )
("`c" "character" )
("`cl" "close" )
("`cm" "common" )
("`cx" "complex" )
("`cn" "contains" )
("`cy" "cycle" )
("`de" "deallocate" )
("`df" "define" )
("`di" "dimension" )
("`dw" "do while" )
("`el" "else" )
("`eli" "else if" )
("`elw" "elsewhere" )
("`eq" "equivalence" )
("`ex" "external" )
("`ey" "entry" )
("`fl" "forall" )
("`fo" "format" )
("`fu" "function" )
("`fa" ".false." )
("`im" "implicit none")
("`in" "include" )
("`i" "integer" )
("`it" "intent" )
("`if" "interface" )
("`lo" "logical" )
("`mo" "module" )
("`na" "namelist" )
("`nu" "nullify" )
("`op" "optional" )
("`pa" "parameter" )
("`po" "pointer" )
("`pr" "print" )
("`pi" "private" )
("`pm" "program" )
("`pu" "public" )
("`r" "real" )
("`rc" "recursive" )
("`rt" "return" )
("`rw" "rewind" )
("`se" "select" )
("`sq" "sequence" )
("`su" "subroutine" )
("`ta" "target" )
("`tr" ".true." )
("`t" "type" )
("`wh" "where" )
("`wr" "write" )))
f90-mode-abbrev-table)
"Abbrev table for F90 mode.")
(defcustom f90-mode-hook nil
"Hook run when entering F90 mode."
:type 'hook
:options '(f90-add-imenu-menu)
:group 'f90)
;;;###autoload
(defun f90-mode ()
@ -1369,32 +1388,18 @@ A block is a subroutine, if-endif, etc."
(f90-next-block (- (or num 1))))
(defvar f90-mark-subprogram-overlay nil
"Used internally by `f90-mark-subprogram' to highlight the subprogram.")
(make-variable-buffer-local 'f90-mark-subprogram-overlay)
(defun f90-mark-subprogram ()
"Put mark at end of F90 subprogram, point at beginning, push marks.
If called interactively, highlight the subprogram with the face `highlight'.
Call again to remove the highlighting."
"Put mark at end of F90 subprogram, point at beginning, push marks."
(interactive)
(let ((pos (point)) program)
(f90-end-of-subprogram)
(push-mark (point) t)
(push-mark)
(goto-char pos)
(setq program (f90-beginning-of-subprogram))
;; The keywords in the preceding lists assume case-insensitivity.
(if f90-xemacs-flag
(zmacs-activate-region)
(zmacs-activate-region)
(setq mark-active t
deactivate-mark nil)
(if (interactive-p)
(if (overlayp f90-mark-subprogram-overlay)
(if (overlay-buffer f90-mark-subprogram-overlay)
(delete-overlay f90-mark-subprogram-overlay)
(move-overlay f90-mark-subprogram-overlay (point) (mark)))
(setq f90-mark-subprogram-overlay (make-overlay (point) (mark)))
(overlay-put f90-mark-subprogram-overlay 'face 'highlight))))
deactivate-mark nil))
program))
(defun f90-comment-region (beg-region end-region)
@ -1570,7 +1575,7 @@ If run in the middle of a line, the line is not broken."
(set-marker end-region-mark nil)
(set-marker save-point nil)
(if f90-xemacs-flag
(zmacs-deactivate-region)
(zmacs-deactivate-region)
(deactivate-mark))))
(defun f90-indent-subprogram ()
@ -1681,7 +1686,7 @@ Update keyword case first."
f90-cache-position (point)))
(setq f90-cache-position nil)
(if f90-xemacs-flag
(zmacs-deactivate-region)
(zmacs-deactivate-region)
(deactivate-mark))))
(defun f90-block-match (beg-block beg-name end-block end-name)
@ -1774,18 +1779,15 @@ Leave point at the end of line."
"Typing `\\[help-command] or `? lists all the F90 abbrevs.
Any other key combination is executed normally."
(interactive)
(let (e c)
(let (c)
(insert last-command-char)
(if (not f90-xemacs-flag)
(setq c (read-event))
(setq e (next-command-event)
c (event-to-character e)))
(if f90-xemacs-flag
(setq c (event-to-character (next-command-event)))
(setq c (read-event)))
;; Insert char if not equal to `?'.
(if (or (eq c ??) (eq c help-char))
(f90-abbrev-help)
(if f90-xemacs-flag
(setq unread-command-event e)
(setq unread-command-events (list c))))))
(setq unread-command-events (list c)))))
(defun f90-abbrev-help ()
"List the currently defined abbrevs in F90 mode."