-(if f90-mode-map
- ()
- (setq f90-mode-map (make-sparse-keymap))
- (define-key f90-mode-map "`" 'f90-abbrev-start)
- (define-key f90-mode-map "\C-c;" 'f90-comment-region)
- (define-key f90-mode-map "\C-\M-a" 'f90-beginning-of-subprogram)
- (define-key f90-mode-map "\C-\M-e" 'f90-end-of-subprogram)
- (define-key f90-mode-map "\C-\M-h" 'f90-mark-subprogram)
- (define-key f90-mode-map "\C-\M-q" 'f90-indent-subprogram)
- (define-key f90-mode-map "\C-j" 'f90-indent-new-line) ; LFD equals C-j
- (define-key f90-mode-map "\r" 'newline)
- (define-key f90-mode-map "\C-c\r" 'f90-break-line)
- ;; (define-key f90-mode-map [M-return] 'f90-break-line)
- (define-key f90-mode-map "\C-c\C-d" 'f90-join-lines)
- (define-key f90-mode-map "\C-c\C-f" 'f90-fill-region)
- (define-key f90-mode-map "\C-c\C-p" 'f90-previous-statement)
- (define-key f90-mode-map "\C-c\C-n" 'f90-next-statement)
- (define-key f90-mode-map "\C-c\C-w" 'f90-insert-end)
- (define-key f90-mode-map "\t" 'f90-indent-line)
- (define-key f90-mode-map "," 'f90-electric-insert)
- (define-key f90-mode-map "+" 'f90-electric-insert)
- (define-key f90-mode-map "-" 'f90-electric-insert)
- (define-key f90-mode-map "*" 'f90-electric-insert)
- (define-key f90-mode-map "/" 'f90-electric-insert))
-
-
-;; menus
-(if f90-xemacs-flag
- (defvar f90-xemacs-menu
- '("F90"
- ["Indent Subprogram" f90-indent-subprogram t]
- ["Mark Subprogram" f90-mark-subprogram t]
- ["Beginning of Subprogram" f90-beginning-of-subprogram t]
- ["End of Subprogram" f90-end-of-subprogram t]
- "-----"
- ["(Un)Comment Region" f90-comment-region t]
- ["Indent Region" indent-region t]
- ["Fill Region" f90-fill-region t]
- "-----"
- ["Break Line at Point" f90-break-line t]
- ["Join with Next Line" f90-join-lines t]
- ["Insert Newline" newline t]
- ["Insert Block End" f90-insert-end t]
- "-----"
- ["Upcase Keywords (buffer)" f90-upcase-keywords t]
- ["Upcase Keywords (region)" f90-upcase-region-keywords
- t]
- ["Capitalize Keywords (buffer)" f90-capitalize-keywords t]
- ["Capitalize Keywords (region)"
- f90-capitalize-region-keywords t]
- ["Downcase Keywords (buffer)" f90-downcase-keywords t]
- ["Downcase Keywords (region)"
- f90-downcase-region-keywords t]
- "-----"
- ["Toggle abbrev-mode" abbrev-mode t]
- ["Toggle auto-fill" auto-fill-mode t])
- "XEmacs menu for F90 mode.")
- ;; Emacs
-
- (defvar f90-change-case-menu
- (let ((map (make-sparse-keymap "Change Keyword Case")))
-
- (define-key map [dkr] (cons "Downcase Keywords (region)"
- 'f90-downcase-region-keywords))
- (put 'f90-downcase-region-keywords 'menu-enable 'mark-active)
-
- (define-key map [ckr] (cons "Capitalize Keywords (region)"
- 'f90-capitalize-region-keywords))
- (put 'f90-capitalize-region-keywords 'menu-enable 'mark-active)
-
- (define-key map [ukr] (cons "Upcase Keywords (region)"
- 'f90-upcase-region-keywords))
- (put 'f90-upcase-region-keywords 'menu-enable 'mark-active)
-
- (define-key map [line] (list "-----------------"))
-
- (define-key map [dkb] (cons "Downcase Keywords (buffer)"
- 'f90-downcase-keywords))
-
- (define-key map [ckb] (cons "Capitalize Keywords (buffer)"
- 'f90-capitalize-keywords))
-
- (define-key map [ukb] (cons "Upcase Keywords (buffer)"
- 'f90-upcase-keywords))
- map)
- "Submenu for change of case.")
- (defalias 'f90-change-case-menu f90-change-case-menu)
-
- ;; font-lock-menu and function calls
- (defalias 'f90-font-lock-on 'font-lock-mode)
- (defalias 'f90-font-lock-off 'font-lock-mode)
- (put 'f90-font-lock-on 'menu-enable 'font-lock-mode)
- (put 'f90-font-lock-off 'menu-enable '(not font-lock-mode))
-
- (defun f90-font-lock-1 ()
- (interactive)
- "Set font-lock-keywords to f90-font-lock-keywords-1."
- (font-lock-mode 1)
- (setq font-lock-keywords f90-font-lock-keywords-1)
- (font-lock-fontify-buffer))
-
- (defun f90-font-lock-2 ()
- (interactive)
- "Set font-lock-keywords to f90-font-lock-keywords-2."
- (font-lock-mode 1)
- (setq font-lock-keywords f90-font-lock-keywords-2)
- (font-lock-fontify-buffer))
-
- (defun f90-font-lock-3 ()
- (interactive)
- "Set font-lock-keywords to f90-font-lock-keywords-3."
- (font-lock-mode 1)
- (setq font-lock-keywords f90-font-lock-keywords-3)
- (font-lock-fontify-buffer))
-
- (defun f90-font-lock-4 ()
- (interactive)
- "Set font-lock-keywords to f90-font-lock-keywords-4."
- (font-lock-mode 1)
- (setq font-lock-keywords f90-font-lock-keywords-4)
- (font-lock-fontify-buffer))
-
- (defvar f90-font-lock-menu
- (let ((map (make-sparse-keymap "f90-font-lock-menu")))
- (define-key map [h4] (cons "Maximum highlighting (level 4)"
- 'f90-font-lock-4))
- (define-key map [h3] (cons "Heavy highlighting (level 3)"
- 'f90-font-lock-3))
- (define-key map [h2] (cons "Default highlighting (level 2)"
- 'f90-font-lock-2))
- (define-key map [h1] (cons "Light highlighting (level 1)"
- 'f90-font-lock-1))
- (define-key map [line] (list "-----------------"))
- (define-key map [floff] (cons "Turn off font-lock-mode"
- 'f90-font-lock-on))
- (define-key map [flon] (cons "Turn on font-lock-mode"
- 'f90-font-lock-off))
- map)
- "Submenu for highlighting using font-lock-mode.")
- (defalias 'f90-font-lock-menu f90-font-lock-menu)
-
- (define-key f90-mode-map [menu-bar] (make-sparse-keymap))
- (define-key f90-mode-map [menu-bar f90]
- (cons "F90" (make-sparse-keymap "f90")))
-
- (define-key f90-mode-map [menu-bar f90 f90-imenu-menu]
- '("Add imenu Menu" . f90-add-imenu-menu))
- (define-key f90-mode-map [menu-bar f90 abbrev-mode]
- '("Toggle abbrev-mode" . abbrev-mode))
- (define-key f90-mode-map [menu-bar f90 auto-fill-mode]
- '("Toggle auto-fill" . auto-fill-mode))
- (define-key f90-mode-map [menu-bar f90 line1]
- '("----"))
- (define-key f90-mode-map [menu-bar f90 f90-change-case-menu]
- (cons "Change Keyword Case" 'f90-change-case-menu))
- (define-key f90-mode-map [menu-bar f90 f90-font-lock-menu]
- (cons "Highlighting" 'f90-font-lock-menu))
- (define-key f90-mode-map [menu-bar f90 line2]
- '("----"))
-
- (define-key f90-mode-map [menu-bar f90 f90-insert-end]
- '("Insert Block End" . f90-insert-end))
- (define-key f90-mode-map [menu-bar f90 f90-join-lines]
- '("Join with Next Line" . f90-join-lines))
- (define-key f90-mode-map [menu-bar f90 f90-break-line]
- '("Break Line at Point" . f90-break-line))
-
- (define-key f90-mode-map [menu-bar f90 line3]
- '("----"))
-
- (define-key f90-mode-map [menu-bar f90 f90-fill-region]
- '("Fill Region" . f90-fill-region))
- (put 'f90-fill-region 'menu-enable 'mark-active)
-
- (define-key f90-mode-map [menu-bar f90 indent-region]
- '("Indent Region" . indent-region))
-
- (define-key f90-mode-map [menu-bar f90 f90-comment-region]
- '("(Un)Comment Region" . f90-comment-region))
- (put 'f90-comment-region 'menu-enable 'mark-active)
-
- (define-key f90-mode-map [menu-bar f90 line4]
- '("----"))
-
- (define-key f90-mode-map [menu-bar f90 f90-end-of-subprogram]
- '("End of Subprogram" . f90-end-of-subprogram))
- (define-key f90-mode-map [menu-bar f90 f90-beginning-of-subprogram]
- '("Beginning of Subprogram" . f90-beginning-of-subprogram))
- (define-key f90-mode-map [menu-bar f90 f90-mark-subprogram]
- '("Mark Subprogram" . f90-mark-subprogram))
- (define-key f90-mode-map [menu-bar f90 f90-indent-subprogram]
- '("Indent Subprogram" . f90-indent-subprogram))
- )