/[emacs]/emacs/lisp/progmodes/f90.el
ViewVC logotype

Diff of /emacs/lisp/progmodes/f90.el

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.46 by gm, Wed May 1 23:34:58 2002 UTC revision 1.47 by gm, Sat May 18 21:49:22 2002 UTC
# Line 401  do\\([ \t]*while\\)?\\|select[ \t]*case\ Line 401  do\\([ \t]*while\\)?\\|select[ \t]*case\
401    "*Default expressions to highlight in F90 mode.")    "*Default expressions to highlight in F90 mode.")
402    
403    
404  (defvar f90-mode-syntax-table nil  (defvar f90-mode-syntax-table
405    "Syntax table in use in F90 mode buffers.")    (let ((table (make-syntax-table)))
406        (modify-syntax-entry ?\! "<"  table) ; begin comment
407  (unless f90-mode-syntax-table      (modify-syntax-entry ?\n ">"  table) ; end comment
408    (setq f90-mode-syntax-table (make-syntax-table))      (modify-syntax-entry ?_  "w"  table) ; underscore in names
409    (modify-syntax-entry ?\! "<"  f90-mode-syntax-table) ; begin comment      (modify-syntax-entry ?\' "\"" table) ; string quote
410    (modify-syntax-entry ?\n ">"  f90-mode-syntax-table) ; end comment      (modify-syntax-entry ?\" "\"" table) ; string quote
411    (modify-syntax-entry ?_  "w"  f90-mode-syntax-table) ; underscore in names      (modify-syntax-entry ?\` "w"  table) ; for abbrevs
412    (modify-syntax-entry ?\' "\"" f90-mode-syntax-table) ; string quote      (modify-syntax-entry ?\r " "  table) ; return is whitespace
413    (modify-syntax-entry ?\" "\"" f90-mode-syntax-table) ; string quote      (modify-syntax-entry ?+  "."  table) ; punctuation
414    (modify-syntax-entry ?\` "w"  f90-mode-syntax-table) ; for abbrevs      (modify-syntax-entry ?-  "."  table)
415    (modify-syntax-entry ?\r " "  f90-mode-syntax-table) ; return is whitespace      (modify-syntax-entry ?=  "."  table)
416    (modify-syntax-entry ?+  "."  f90-mode-syntax-table) ; punctuation      (modify-syntax-entry ?*  "."  table)
417    (modify-syntax-entry ?-  "."  f90-mode-syntax-table)      (modify-syntax-entry ?/  "."  table)
418    (modify-syntax-entry ?=  "."  f90-mode-syntax-table)      (modify-syntax-entry ?\\ "\\" table) ; escape chars
419    (modify-syntax-entry ?*  "."  f90-mode-syntax-table)      table)
420    (modify-syntax-entry ?/  "."  f90-mode-syntax-table)    "Syntax table used in F90 mode.")
421    (modify-syntax-entry ?\\ "\\" f90-mode-syntax-table)) ; escape chars  
422    (defvar f90-mode-map
423      (let ((map (make-sparse-keymap)))
424  (defvar f90-mode-map ()      (define-key map "`"        'f90-abbrev-start)
425        (define-key map "\C-c;"    'f90-comment-region)
426        (define-key map "\C-\M-a"  'f90-beginning-of-subprogram)
427        (define-key map "\C-\M-e"  'f90-end-of-subprogram)
428        (define-key map "\C-\M-h"  'f90-mark-subprogram)
429        (define-key map "\C-\M-q"  'f90-indent-subprogram)
430        (define-key map "\C-j"     'f90-indent-new-line) ; LFD equals C-j
431        (define-key map "\r"       'newline)
432        (define-key map "\C-c\r"   'f90-break-line)
433    ;;;  (define-key map [M-return] 'f90-break-line)
434        (define-key map "\C-c\C-d" 'f90-join-lines)
435        (define-key map "\C-c\C-f" 'f90-fill-region)
436        (define-key map "\C-c\C-p" 'f90-previous-statement)
437        (define-key map "\C-c\C-n" 'f90-next-statement)
438        (define-key map "\C-c\C-w" 'f90-insert-end)
439        (define-key map "\t"       'f90-indent-line)
440        (define-key map ","        'f90-electric-insert)
441        (define-key map "+"        'f90-electric-insert)
442        (define-key map "-"        'f90-electric-insert)
443        (define-key map "*"        'f90-electric-insert)
444        (define-key map "/"        'f90-electric-insert)
445        map)
446    "Keymap used in F90 mode.")    "Keymap used in F90 mode.")
447    
448  (unless f90-mode-map  ;; Menu bar support.
   (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))  
   
   
449  (if f90-xemacs-flag  (if f90-xemacs-flag
450      (defvar f90-xemacs-menu      (defvar f90-xemacs-menu
451        '("F90"        '("F90"
# Line 478  do\\([ \t]*while\\)?\\|select[ \t]*case\ Line 475  do\\([ \t]*while\\)?\\|select[ \t]*case\
475        "XEmacs menu for F90 mode.")        "XEmacs menu for F90 mode.")
476    
477    ;; Emacs.    ;; Emacs.
478      (defvar f90-menu-bar-menu
479        (let ((map (make-sparse-keymap "F90")))
480          (define-key map [f90-imenu-menu]
481            '("Add imenu Menu" . f90-add-imenu-menu))
482          (define-key map [abbrev-mode]
483            '("Toggle abbrev-mode" . abbrev-mode))
484          (define-key map [auto-fill-mode]
485            '("Toggle auto-fill" . auto-fill-mode))
486          (define-key map [line1] '("--"))
487          (define-key map [f90-change-case-menu]
488            '("Change Keyword Case" . f90-change-case-menu))
489          (define-key map [f90-font-lock-menu]
490            '("Highlighting" . f90-font-lock-menu))
491          (define-key map [line2] '("--"))
492          (define-key map [f90-insert-end]
493            '("Insert Block End" . f90-insert-end))
494          (define-key map [f90-join-lines]
495            '("Join with Next Line" . f90-join-lines))
496          (define-key map [f90-break-line]
497            '("Break Line at Point" . f90-break-line))
498          (define-key map [line3] '("--"))
499          (define-key map [f90-fill-region]
500            '("Fill Region" . f90-fill-region))
501          (put 'f90-fill-region 'menu-enable 'mark-active)
502          (define-key map [indent-region]
503            '("Indent Region" . indent-region))
504          (define-key map [f90-comment-region]
505            '("(Un)Comment Region" . f90-comment-region))
506          (put 'f90-comment-region 'menu-enable 'mark-active)
507          (define-key map [line4] '("--"))
508          (define-key map [f90-end-of-subprogram]
509            '("End of Subprogram" . f90-end-of-subprogram))
510          (define-key map [f90-beginning-of-subprogram]
511            '("Beginning of Subprogram" . f90-beginning-of-subprogram))
512          (define-key map [f90-mark-subprogram]
513            '("Mark Subprogram" . f90-mark-subprogram))
514          (define-key map [f90-indent-subprogram]
515            '("Indent Subprogram" . f90-indent-subprogram))
516          map)
517        "F90 mode top-level menu bar menu.")
518    
519      (define-key f90-mode-map [menu-bar f90-menu]
520        (cons "F90" f90-menu-bar-menu))
521    
522    (defvar f90-change-case-menu    (defvar f90-change-case-menu
523      (let ((map (make-sparse-keymap "Change Keyword Case")))      (let ((map (make-sparse-keymap "Change Keyword Case")))
524        (define-key map [dkr]        (define-key map [dkr]
525          (cons "Downcase Keywords (region)" 'f90-downcase-region-keywords))          '("Downcase Keywords (region)" . f90-downcase-region-keywords))
526        (put 'f90-downcase-region-keywords 'menu-enable 'mark-active)        (put 'f90-downcase-region-keywords 'menu-enable 'mark-active)
527        (define-key map [ckr]        (define-key map [ckr]
528          (cons "Capitalize Keywords (region)" 'f90-capitalize-region-keywords))          '("Capitalize Keywords (region)" . f90-capitalize-region-keywords))
529        (put 'f90-capitalize-region-keywords 'menu-enable 'mark-active)        (put 'f90-capitalize-region-keywords 'menu-enable 'mark-active)
530        (define-key map [ukr]        (define-key map [ukr]
531          (cons "Upcase Keywords (region)" 'f90-upcase-region-keywords))          '("Upcase Keywords (region)" . f90-upcase-region-keywords))
532        (put 'f90-upcase-region-keywords 'menu-enable 'mark-active)        (put 'f90-upcase-region-keywords 'menu-enable 'mark-active)
533        (define-key map [line] (list "-----------------"))        (define-key map [line] '("--"))
534        (define-key map [dkb]        (define-key map [dkb]
535          (cons "Downcase Keywords (buffer)" 'f90-downcase-keywords))          '("Downcase Keywords (buffer)" . f90-downcase-keywords))
536        (define-key map [ckb]        (define-key map [ckb]
537          (cons "Capitalize Keywords (buffer)" 'f90-capitalize-keywords))          '("Capitalize Keywords (buffer)" . f90-capitalize-keywords))
538        (define-key map [ukb]        (define-key map [ukb]
539          (cons "Upcase Keywords (buffer)" 'f90-upcase-keywords))          '("Upcase Keywords (buffer)" . f90-upcase-keywords))
540        map)        map)
541      "Submenu for change of case.")      "Submenu for change of case.")
542    
543    (defalias 'f90-change-case-menu f90-change-case-menu)    (defalias 'f90-change-case-menu f90-change-case-menu)
544    
545    ;; Font-lock-menu and function calls.    ;; Font-lock-menu and function calls.
546    (defalias 'f90-font-lock-on  'font-lock-mode)    (defalias 'f90-font-lock-on 'font-lock-mode)
547      (put 'f90-font-lock-on 'menu-enable 'font-lock-mode)
548      (put 'f90-font-lock-on 'menu-alias t)
549    
550    (defalias 'f90-font-lock-off 'font-lock-mode)    (defalias 'f90-font-lock-off 'font-lock-mode)
   (put 'f90-font-lock-on  'menu-enable 'font-lock-mode)  
551    (put 'f90-font-lock-off 'menu-enable '(not font-lock-mode))    (put 'f90-font-lock-off 'menu-enable '(not font-lock-mode))
552      (put 'f90-font-lock-off 'menu-alias t)
553    
554    (defun f90-font-lock-1 ()    (defun f90-font-lock-1 ()
555        "Set `font-lock-keywords' to `f90-font-lock-keywords-1'."
556      (interactive)      (interactive)
     "Set font-lock-keywords to f90-font-lock-keywords-1."  
557      (font-lock-mode 1)      (font-lock-mode 1)
558      (setq font-lock-keywords f90-font-lock-keywords-1)      (setq font-lock-keywords f90-font-lock-keywords-1)
559      (font-lock-fontify-buffer))      (font-lock-fontify-buffer))
560    
561    (defun f90-font-lock-2 ()    (defun f90-font-lock-2 ()
562        "Set `font-lock-keywords' to `f90-font-lock-keywords-2'."
563      (interactive)      (interactive)
     "Set font-lock-keywords to f90-font-lock-keywords-2."  
564      (font-lock-mode 1)      (font-lock-mode 1)
565      (setq font-lock-keywords f90-font-lock-keywords-2)      (setq font-lock-keywords f90-font-lock-keywords-2)
566      (font-lock-fontify-buffer))      (font-lock-fontify-buffer))
567    
568    (defun f90-font-lock-3 ()    (defun f90-font-lock-3 ()
569        "Set `font-lock-keywords' to `f90-font-lock-keywords-3'."
570      (interactive)      (interactive)
     "Set font-lock-keywords to f90-font-lock-keywords-3."  
571      (font-lock-mode 1)      (font-lock-mode 1)
572      (setq font-lock-keywords f90-font-lock-keywords-3)      (setq font-lock-keywords f90-font-lock-keywords-3)
573      (font-lock-fontify-buffer))      (font-lock-fontify-buffer))
574    
575    (defun f90-font-lock-4 ()    (defun f90-font-lock-4 ()
576        "Set `font-lock-keywords' to `f90-font-lock-keywords-4'."
577      (interactive)      (interactive)
     "Set font-lock-keywords to f90-font-lock-keywords-4."  
578      (font-lock-mode 1)      (font-lock-mode 1)
579      (setq font-lock-keywords f90-font-lock-keywords-4)      (setq font-lock-keywords f90-font-lock-keywords-4)
580      (font-lock-fontify-buffer))      (font-lock-fontify-buffer))
# Line 537  do\\([ \t]*while\\)?\\|select[ \t]*case\ Line 582  do\\([ \t]*while\\)?\\|select[ \t]*case\
582    (defvar f90-font-lock-menu    (defvar f90-font-lock-menu
583      (let ((map (make-sparse-keymap "f90-font-lock-menu")))      (let ((map (make-sparse-keymap "f90-font-lock-menu")))
584        (define-key map [h4]        (define-key map [h4]
585          (cons "Maximum highlighting (level 4)" 'f90-font-lock-4))          '("Maximum highlighting (level 4)" . f90-font-lock-4))
586        (define-key map [h3]        (define-key map [h3]
587          (cons "Heavy highlighting (level 3)" 'f90-font-lock-3))          '("Heavy highlighting (level 3)" . f90-font-lock-3))
588        (define-key map [h2]        (define-key map [h2]
589          (cons "Default highlighting (level 2)" 'f90-font-lock-2))          '("Default highlighting (level 2)" . f90-font-lock-2))
590        (define-key map [h1]        (define-key map [h1]
591          (cons "Light highlighting (level 1)" 'f90-font-lock-1))          '("Light highlighting (level 1)" . f90-font-lock-1))
592        (define-key map [line] (list "-----------------"))        (define-key map [line] '("--"))
593        (define-key map [floff]        (define-key map [floff]
594          (cons "Turn off font-lock-mode" 'f90-font-lock-on))          '("Turn off font-lock-mode" . f90-font-lock-on))
595        (define-key map [flon]        (define-key map [flon]
596          (cons "Turn on font-lock-mode" 'f90-font-lock-off))          '("Turn on font-lock-mode" . f90-font-lock-off))
597        map)        map)
598      "Submenu for highlighting using font-lock-mode.")      "Submenu for highlighting using font-lock-mode.")
599    
600    (defalias 'f90-font-lock-menu f90-font-lock-menu)    (defalias 'f90-font-lock-menu f90-font-lock-menu)
601    
   (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))  
602    )    )
603    
604  ;; Regexps for finding program structures.  ;; Regexps for finding program structures.
# Line 822  with no args, if that value is non-nil." Line 828  with no args, if that value is non-nil."
828    (set (make-local-variable 'comment-indent-function) 'f90-comment-indent)    (set (make-local-variable 'comment-indent-function) 'f90-comment-indent)
829    (set (make-local-variable 'abbrev-all-caps) t)    (set (make-local-variable 'abbrev-all-caps) t)
830    (set (make-local-variable 'normal-auto-fill-function) 'f90-do-auto-fill)    (set (make-local-variable 'normal-auto-fill-function) 'f90-do-auto-fill)
831    (setq indent-tabs-mode nil)    (setq indent-tabs-mode nil)           ; auto buffer local
832    ;; Setting up things for font-lock.    ;; Setting up things for font-lock.
833    (when f90-xemacs-flag    (when f90-xemacs-flag
834      (put 'f90-mode 'font-lock-keywords-case-fold-search t)      (put 'f90-mode 'font-lock-keywords-case-fold-search t)

Legend:
Removed from v.1.46  
changed lines
  Added in v.1.47

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26