aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2002-08-24 00:50:42 +0000
committerGlenn Morris2002-08-24 00:50:42 +0000
commit1a341882a54b48c519eb0f90223eaec89f0b0dd6 (patch)
treee3ce68ae28c92a3a81f01053d696b9a1559fbe46
parent365958144ea38255d543a4232b926ca81e849fa9 (diff)
downloademacs-1a341882a54b48c519eb0f90223eaec89f0b0dd6.tar.gz
emacs-1a341882a54b48c519eb0f90223eaec89f0b0dd6.zip
(f90-xemacs-flag, f90-xemacs-menu, f90-menu-bar-menu, f90-change-case-menu)
(f90-font-lock-on, f90-font-lock-off, f90-font-lock-menu): Deleted. Use easy-menu-define instead. (f90-mode): Use easy-menu-add. No longer (require 'imenu) when compiling. (f90-mark-subprogram, f90-indent-region, f90-fill-region) (f90-abbrev-start): Use fboundp.
-rw-r--r--lisp/ChangeLog11
-rw-r--r--lisp/progmodes/f90.el259
2 files changed, 91 insertions, 179 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 9e7f8355b91..295785f871d 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,14 @@
12002-08-24 Glenn Morris <gmorris@ast.cam.ac.uk>
2
3 * progmodes/f90.el (f90-xemacs-flag, f90-xemacs-menu)
4 (f90-menu-bar-menu, f90-change-case-menu, f90-font-lock-on)
5 (f90-font-lock-off, f90-font-lock-menu): Deleted. Use
6 easy-menu-define instead.
7 (f90-mode): Use easy-menu-add.
8 No longer (require 'imenu) when compiling.
9 (f90-mark-subprogram, f90-indent-region, f90-fill-region)
10 (f90-abbrev-start): Use fboundp.
11
12002-08-23 Andre Spiegel <spiegel@gnu.org> 122002-08-23 Andre Spiegel <spiegel@gnu.org>
2 13
3 * vc-hooks.el (vc-kill-buffer-hook): Add it to kill-buffer-hook again. 14 * vc-hooks.el (vc-kill-buffer-hook): Add it to kill-buffer-hook again.
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index 7e898b50fd1..6dfcbd6c0b9 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -156,18 +156,9 @@
156 156
157;;; Code: 157;;; Code:
158 158
159(eval-and-compile
160 (defconst f90-xemacs-flag (string-match "XEmacs\\|Lucid" emacs-version)
161 "Non-nil means F90 mode thinks it is running under XEmacs."))
162
163;; Most of these are just to quieten the byte-compiler.
164(eval-when-compile 159(eval-when-compile
165 (defvar comment-auto-fill-only-comments) 160 (defvar comment-auto-fill-only-comments)
166 (defvar font-lock-keywords) 161 (defvar font-lock-keywords))
167 (unless f90-xemacs-flag
168 ;; If you have GNU Emacs 19.22 or earlier, comment this out, or get imenu.
169 (require 'imenu)
170 (defvar current-menubar)))
171 162
172;; User options 163;; User options
173 164
@@ -468,162 +459,79 @@ Can be overridden by the value of `font-lock-maximum-decoration'.")
468 map) 459 map)
469 "Keymap used in F90 mode.") 460 "Keymap used in F90 mode.")
470 461
471;; Menu bar support.
472(if f90-xemacs-flag
473 (defvar f90-xemacs-menu
474 '("F90"
475 ["Indent Subprogram" f90-indent-subprogram t]
476 ["Mark Subprogram" f90-mark-subprogram t]
477 ["Beginning of Subprogram" f90-beginning-of-subprogram t]
478 ["End of Subprogram" f90-end-of-subprogram t]
479 "-----"
480 ["(Un)Comment Region" f90-comment-region t]
481 ["Indent Region" indent-region t]
482 ["Fill Region" f90-fill-region t]
483 "-----"
484 ["Break Line at Point" f90-break-line t]
485 ["Join with Next Line" f90-join-lines t]
486 ["Insert Newline" newline t]
487 ["Insert Block End" f90-insert-end t]
488 "-----"
489 ["Upcase Keywords (buffer)" f90-upcase-keywords t]
490 ["Upcase Keywords (region)" f90-upcase-region-keywords t]
491 ["Capitalize Keywords (buffer)" f90-capitalize-keywords t]
492 ["Capitalize Keywords (region)" f90-capitalize-region-keywords t]
493 ["Downcase Keywords (buffer)" f90-downcase-keywords t]
494 ["Downcase Keywords (region)" f90-downcase-region-keywords t]
495 "-----"
496 ["Toggle abbrev-mode" abbrev-mode t]
497 ["Toggle auto-fill" auto-fill-mode t])
498 "XEmacs menu for F90 mode.")
499
500 ;; Emacs.
501 (defvar f90-menu-bar-menu
502 (let ((map (make-sparse-keymap "F90")))
503 (define-key map [f90-imenu-menu]
504 '("Add imenu Menu" . f90-add-imenu-menu))
505 (define-key map [abbrev-mode]
506 '("Toggle abbrev-mode" . abbrev-mode))
507 (define-key map [auto-fill-mode]
508 '("Toggle auto-fill" . auto-fill-mode))
509 (define-key map [line1] '("--"))
510 (define-key map [f90-change-case-menu]
511 '("Change Keyword Case" . f90-change-case-menu))
512 (define-key map [f90-font-lock-menu]
513 '("Highlighting" . f90-font-lock-menu))
514 (define-key map [line2] '("--"))
515 (define-key map [f90-insert-end]
516 '("Insert Block End" . f90-insert-end))
517 (define-key map [f90-join-lines]
518 '("Join with Next Line" . f90-join-lines))
519 (define-key map [f90-break-line]
520 '("Break Line at Point" . f90-break-line))
521 (define-key map [line3] '("--"))
522 (define-key map [f90-fill-region]
523 '("Fill Region" . f90-fill-region))
524 (put 'f90-fill-region 'menu-enable 'mark-active)
525 (define-key map [indent-region]
526 '("Indent Region" . indent-region))
527 (define-key map [f90-comment-region]
528 '("(Un)Comment Region" . f90-comment-region))
529 (put 'f90-comment-region 'menu-enable 'mark-active)
530 (define-key map [line4] '("--"))
531 (define-key map [f90-end-of-subprogram]
532 '("End of Subprogram" . f90-end-of-subprogram))
533 (define-key map [f90-beginning-of-subprogram]
534 '("Beginning of Subprogram" . f90-beginning-of-subprogram))
535 (define-key map [f90-mark-subprogram]
536 '("Mark Subprogram" . f90-mark-subprogram))
537 (define-key map [f90-indent-subprogram]
538 '("Indent Subprogram" . f90-indent-subprogram))
539 map)
540 "F90 mode top-level menu bar menu.")
541
542 (define-key f90-mode-map [menu-bar f90-menu]
543 (cons "F90" f90-menu-bar-menu))
544
545 (defvar f90-change-case-menu
546 (let ((map (make-sparse-keymap "Change Keyword Case")))
547 (define-key map [dkr]
548 '("Downcase Keywords (region)" . f90-downcase-region-keywords))
549 (put 'f90-downcase-region-keywords 'menu-enable 'mark-active)
550 (define-key map [ckr]
551 '("Capitalize Keywords (region)" . f90-capitalize-region-keywords))
552 (put 'f90-capitalize-region-keywords 'menu-enable 'mark-active)
553 (define-key map [ukr]
554 '("Upcase Keywords (region)" . f90-upcase-region-keywords))
555 (put 'f90-upcase-region-keywords 'menu-enable 'mark-active)
556 (define-key map [line] '("--"))
557 (define-key map [dkb]
558 '("Downcase Keywords (buffer)" . f90-downcase-keywords))
559 (define-key map [ckb]
560 '("Capitalize Keywords (buffer)" . f90-capitalize-keywords))
561 (define-key map [ukb]
562 '("Upcase Keywords (buffer)" . f90-upcase-keywords))
563 map)
564 "Submenu for change of case.")
565
566 (defalias 'f90-change-case-menu f90-change-case-menu)
567
568 ;; Font-lock-menu and function calls.
569 (defalias 'f90-font-lock-on 'font-lock-mode)
570 (put 'f90-font-lock-on 'menu-enable 'font-lock-mode)
571 (put 'f90-font-lock-on 'menu-alias t)
572
573 (defalias 'f90-font-lock-off 'font-lock-mode)
574 (put 'f90-font-lock-off 'menu-enable '(not font-lock-mode))
575 (put 'f90-font-lock-off 'menu-alias t)
576
577 (defun f90-font-lock-1 ()
578 "Set `font-lock-keywords' to `f90-font-lock-keywords-1'."
579 (interactive)
580 (font-lock-mode 1)
581 (setq font-lock-keywords f90-font-lock-keywords-1)
582 (font-lock-fontify-buffer))
583
584 (defun f90-font-lock-2 ()
585 "Set `font-lock-keywords' to `f90-font-lock-keywords-2'."
586 (interactive)
587 (font-lock-mode 1)
588 (setq font-lock-keywords f90-font-lock-keywords-2)
589 (font-lock-fontify-buffer))
590
591 (defun f90-font-lock-3 ()
592 "Set `font-lock-keywords' to `f90-font-lock-keywords-3'."
593 (interactive)
594 (font-lock-mode 1)
595 (setq font-lock-keywords f90-font-lock-keywords-3)
596 (font-lock-fontify-buffer))
597
598 (defun f90-font-lock-4 ()
599 "Set `font-lock-keywords' to `f90-font-lock-keywords-4'."
600 (interactive)
601 (font-lock-mode 1)
602 (setq font-lock-keywords f90-font-lock-keywords-4)
603 (font-lock-fontify-buffer))
604
605 (defvar f90-font-lock-menu
606 (let ((map (make-sparse-keymap "f90-font-lock-menu")))
607 (define-key map [h4]
608 '("Maximum highlighting (level 4)" . f90-font-lock-4))
609 (define-key map [h3]
610 '("Heavy highlighting (level 3)" . f90-font-lock-3))
611 (define-key map [h2]
612 '("Default highlighting (level 2)" . f90-font-lock-2))
613 (define-key map [h1]
614 '("Light highlighting (level 1)" . f90-font-lock-1))
615 (define-key map [line] '("--"))
616 (define-key map [floff]
617 '("Turn off font-lock-mode" . f90-font-lock-on))
618 (define-key map [flon]
619 '("Turn on font-lock-mode" . f90-font-lock-off))
620 map)
621 "Submenu for highlighting using font-lock-mode.")
622
623 (defalias 'f90-font-lock-menu f90-font-lock-menu)
624
625 )
626 462
463(easy-menu-define f90-menu f90-mode-map "Menu for F90 mode."
464 '("F90"
465 ["Indent Subprogram" f90-indent-subprogram t]
466 ["Mark Subprogram" f90-mark-subprogram t]
467 ["Beginning of Subprogram" f90-beginning-of-subprogram t]
468 ["End of Subprogram" f90-end-of-subprogram t]
469 "--"
470 ["(Un)Comment Region" f90-comment-region mark-active]
471 ["Indent Region" f90-indent-region mark-active]
472 ["Fill Region" f90-fill-region mark-active]
473 "--"
474 ["Break Line at Point" f90-break-line t]
475 ["Join with Next Line" f90-join-lines t]
476 ["Insert Block End" f90-insert-end t]
477 "--"
478 ("Highlighting"
479 ["Toggle font-lock-mode" font-lock-mode :active t
480 :selected font-lock-mode :style toggle]
481 "--"
482 ["Light highlighting (level 1)" f90-font-lock-1 t]
483 ["Moderate highlighting (level 2)" f90-font-lock-2 t]
484 ["Heavy highlighting (level 3)" f90-font-lock-3 t]
485 ["Maximum highlighting (level 4)" f90-font-lock-4 t]
486 )
487 ("Change Keyword Case"
488 ["Upcase Keywords (buffer)" f90-upcase-keywords t]
489 ["Capitalize Keywords (buffer)" f90-capitalize-keywords t]
490 ["Downcase Keywords (buffer)" f90-downcase-keywords t]
491 "--"
492 ["Upcase Keywords (region)" f90-upcase-region-keywords mark-active]
493 ["Capitalize Keywords (region)" f90-capitalize-region-keywords
494 mark-active]
495 ["Downcase Keywords (region)" f90-downcase-region-keywords mark-active]
496 )
497 "--"
498 ["Toggle auto-fill" auto-fill-mode :active t :selected auto-fill-function
499 :style toggle]
500 ["Toggle abbrev-mode" abbrev-mode :active t :selected abbrev-mode
501 :style toggle]
502 ["Add imenu Menu" f90-add-imenu-menu :active (not f90-imenu-flag)
503 :visible (fboundp 'imenu-add-to-menubar)]
504 ))
505
506(defun f90-font-lock-1 ()
507 "Set `font-lock-keywords' to `f90-font-lock-keywords-1'."
508 (interactive)
509 (font-lock-mode 1)
510 (setq font-lock-keywords f90-font-lock-keywords-1)
511 (font-lock-fontify-buffer))
512
513(defun f90-font-lock-2 ()
514 "Set `font-lock-keywords' to `f90-font-lock-keywords-2'."
515 (interactive)
516 (font-lock-mode 1)
517 (setq font-lock-keywords f90-font-lock-keywords-2)
518 (font-lock-fontify-buffer))
519
520(defun f90-font-lock-3 ()
521 "Set `font-lock-keywords' to `f90-font-lock-keywords-3'."
522 (interactive)
523 (font-lock-mode 1)
524 (setq font-lock-keywords f90-font-lock-keywords-3)
525 (font-lock-fontify-buffer))
526
527(defun f90-font-lock-4 ()
528 "Set `font-lock-keywords' to `f90-font-lock-keywords-4'."
529 (interactive)
530 (font-lock-mode 1)
531 (setq font-lock-keywords f90-font-lock-keywords-4)
532 (font-lock-fontify-buffer))
533
534
627;; Regexps for finding program structures. 535;; Regexps for finding program structures.
628(defconst f90-blocks-re 536(defconst f90-blocks-re
629 (concat "\\(block[ \t]*data\\|" 537 (concat "\\(block[ \t]*data\\|"
@@ -852,15 +760,8 @@ with no args, if that value is non-nil."
852 (set (make-local-variable 'abbrev-all-caps) t) 760 (set (make-local-variable 'abbrev-all-caps) t)
853 (set (make-local-variable 'normal-auto-fill-function) 'f90-do-auto-fill) 761 (set (make-local-variable 'normal-auto-fill-function) 'f90-do-auto-fill)
854 (setq indent-tabs-mode nil) ; auto buffer local 762 (setq indent-tabs-mode nil) ; auto buffer local
763 (easy-menu-add f90-menu)
855 ;; Setting up things for font-lock. 764 ;; Setting up things for font-lock.
856 (when f90-xemacs-flag
857 (put 'f90-mode 'font-lock-keywords-case-fold-search t)
858 (when (and (featurep 'menubar)
859 current-menubar
860 (not (assoc "F90" current-menubar)))
861 (set-buffer-menubar (copy-sequence current-menubar))
862 (add-submenu nil f90-xemacs-menu)))
863 ;; XEmacs: Does not need a special case, since both emacsen work alike -sb.
864 (set (make-local-variable 'font-lock-defaults) 765 (set (make-local-variable 'font-lock-defaults)
865 '((f90-font-lock-keywords f90-font-lock-keywords-1 766 '((f90-font-lock-keywords f90-font-lock-keywords-1
866 f90-font-lock-keywords-2 767 f90-font-lock-keywords-2
@@ -1396,7 +1297,7 @@ A block is a subroutine, if-endif, etc."
1396 (push-mark) 1297 (push-mark)
1397 (goto-char pos) 1298 (goto-char pos)
1398 (setq program (f90-beginning-of-subprogram)) 1299 (setq program (f90-beginning-of-subprogram))
1399 (if f90-xemacs-flag 1300 (if (fboundp 'zmacs-activate-region)
1400 (zmacs-activate-region) 1301 (zmacs-activate-region)
1401 (setq mark-active t 1302 (setq mark-active t
1402 deactivate-mark nil)) 1303 deactivate-mark nil))
@@ -1574,7 +1475,7 @@ If run in the middle of a line, the line is not broken."
1574 (goto-char save-point) 1475 (goto-char save-point)
1575 (set-marker end-region-mark nil) 1476 (set-marker end-region-mark nil)
1576 (set-marker save-point nil) 1477 (set-marker save-point nil)
1577 (if f90-xemacs-flag 1478 (if (fboundp 'zmacs-deactivate-region)
1578 (zmacs-deactivate-region) 1479 (zmacs-deactivate-region)
1579 (deactivate-mark)))) 1480 (deactivate-mark))))
1580 1481
@@ -1685,7 +1586,7 @@ Update keyword case first."
1685 (zerop (forward-line 1))) 1586 (zerop (forward-line 1)))
1686 f90-cache-position (point))) 1587 f90-cache-position (point)))
1687 (setq f90-cache-position nil) 1588 (setq f90-cache-position nil)
1688 (if f90-xemacs-flag 1589 (if (fboundp 'zmacs-deactivate-region)
1689 (zmacs-deactivate-region) 1590 (zmacs-deactivate-region)
1690 (deactivate-mark)))) 1591 (deactivate-mark))))
1691 1592
@@ -1781,9 +1682,9 @@ Any other key combination is executed normally."
1781 (interactive) 1682 (interactive)
1782 (let (c) 1683 (let (c)
1783 (insert last-command-char) 1684 (insert last-command-char)
1784 (if f90-xemacs-flag 1685 (setq c (if (fboundp 'next-command-event) ; XEmacs
1785 (setq c (event-to-character (next-command-event))) 1686 (event-to-character (next-command-event))
1786 (setq c (read-event))) 1687 (read-event)))
1787 ;; Insert char if not equal to `?'. 1688 ;; Insert char if not equal to `?'.
1788 (if (or (eq c ??) (eq c help-char)) 1689 (if (or (eq c ??) (eq c help-char))
1789 (f90-abbrev-help) 1690 (f90-abbrev-help)