changeset 74430:1ca429066367

(f90-mode-abbrev-table): Define abbrevs even if abbrev-table is non-nil (saved user abbrevs may have been restored).
author Glenn Morris <rgm@gnu.org>
date Tue, 05 Dec 2006 05:24:24 +0000
parents 79a5ffc89507
children ab6be62cb44d
files lisp/progmodes/f90.el
diffstat 1 files changed, 68 insertions(+), 66 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/f90.el	Tue Dec 05 05:23:55 2006 +0000
+++ b/lisp/progmodes/f90.el	Tue Dec 05 05:24:24 2006 +0000
@@ -674,76 +674,78 @@
 
 ;; Abbrevs have generally two letters, except standard types `c, `i, `r, `t.
 (defvar f90-mode-abbrev-table
-  (let (abbrevs-changed)
+  (progn
     (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"    )
-       ("`dp"  "double precision")
-       ("`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.")
+
+(let (abbrevs-changed)
+  ;; 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"    )
+     ("`dp"  "double precision")
+     ("`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"        ))))
+
 
-
 ;;;###autoload
 (defun f90-mode ()
   "Major mode for editing Fortran 90,95 code in free format.