Diff for /gforth/gforth.el between versions 1.75 and 1.87

version 1.75, 2008/04/17 08:04:17 version 1.87, 2012/05/04 00:11:04
Line 1 Line 1
 ;;; gforth.el --- major mode for editing (G)Forth sources  ;;; gforth.el --- major mode for editing (G)Forth sources
   
 ;; Copyright (C) 1995,1996,1997,1998,2000,2001,2003,2004,2007 Free Software Foundation, Inc.  ;; Copyright (C) 1995,1996,1997,1998,2000,2001,2003,2004,2007,2008,2010,2011 Free Software Foundation, Inc.
   
 ;; This file is part of Gforth.  ;; This file is part of Gforth.
   
Line 237  PARSED-TYPE specifies what kind of text Line 237  PARSED-TYPE specifies what kind of text
         (("]" "]l") definition-starter (font-lock-keyword-face . 1))          (("]" "]l") definition-starter (font-lock-keyword-face . 1))
         ((":") definition-starter (font-lock-keyword-face . 1)          ((":") definition-starter (font-lock-keyword-face . 1)
          "[ \t\n]" t name (font-lock-function-name-face . 3))           "[ \t\n]" t name (font-lock-function-name-face . 3))
           (("event:") definition-starter (font-lock-keyword-face . 1)
            "[ \t\n]" t name (font-lock-function-name-face . 3))
         (("immediate" "compile-only" "restrict")          (("immediate" "compile-only" "restrict")
          immediate (font-lock-keyword-face . 1))           immediate (font-lock-keyword-face . 1))
         (("does>") compile-only (font-lock-keyword-face . 1))          (("does>") compile-only (font-lock-keyword-face . 1))
         ((":noname") definition-starter (font-lock-keyword-face . 1))          ((":noname") definition-starter (font-lock-keyword-face . 1))
         ((";" ";code") definition-ender (font-lock-keyword-face . 1))          ((";" ";code" ";abi-code") definition-ender (font-lock-keyword-face . 1))
         (("include" "require" "needs" "use")           (("include" "require" "needs" "use") 
          non-immediate (font-lock-keyword-face . 1)            non-immediate (font-lock-keyword-face . 1) 
          "[\n\t ]" t string (font-lock-string-face . 1))           "[\n\t ]" t string (font-lock-string-face . 1))
         (("included" "required" "thru" "load")          (("included" "required" "thru" "load")
          non-immediate (font-lock-keyword-face . 1))           non-immediate (font-lock-keyword-face . 1))
           (("code" "abi-code")
            non-immediate (font-lock-keyword-face . 1)
            "[ \t\n]" t name (font-lock-function-name-face . 3))
           (("end-code")
            non-immediate (font-lock-keyword-face . 1))
         (("[char]") compile-only (font-lock-keyword-face . 1)          (("[char]") compile-only (font-lock-keyword-face . 1)
          "[ \t\n]" t string (font-lock-string-face . 1))           "[ \t\n]" t string (font-lock-string-face . 1))
         (("char") non-immediate (font-lock-keyword-face . 1)          (("char") non-immediate (font-lock-keyword-face . 1)
          "[ \t\n]" t string (font-lock-string-face . 1))           "[ \t\n]" t string (font-lock-string-face . 1))
         (("s\"" "c\"") immediate (font-lock-string-face . 1)          ("'.'?" non-immediate (font-lock-string-face . 1))
           (("s\"" "c\"" "s\\\"") immediate (font-lock-string-face . 1)
          "[\"\n]" nil string (font-lock-string-face . 1))           "[\"\n]" nil string (font-lock-string-face . 1))
         ((".\"") compile-only (font-lock-string-face . 1)          ((".\"" ".\\\"") compile-only (font-lock-string-face . 1)
          "[\"\n]" nil string (font-lock-string-face . 1))           "[\"\n]" nil string (font-lock-string-face . 1))
         (("abort\"") compile-only (font-lock-keyword-face . 1)          (("abort\"") compile-only (font-lock-keyword-face . 1)
          "[\"\n]" nil string (font-lock-string-face . 1))           "[\"\n]" nil string (font-lock-string-face . 1))
Line 301  PARSED-TYPE specifies what kind of text Line 309  PARSED-TYPE specifies what kind of text
   
         (("create" "variable" "constant" "2variable" "2constant" "fvariable"          (("create" "variable" "constant" "2variable" "2constant" "fvariable"
           "fconstant" "value" "field" "user" "vocabulary"             "fconstant" "value" "field" "user" "vocabulary" 
           "create-interpret/compile")            "create-interpret/compile" "interpret/compile:")
          non-immediate (font-lock-type-face . 2)           non-immediate (font-lock-type-face . 2)
          "[ \t\n]" t name (font-lock-variable-name-face . 3))           "[ \t\n]" t name (font-lock-variable-name-face . 3))
         ("\\S-+%" non-immediate (font-lock-type-face . 2))          ("\\S-+%" non-immediate (font-lock-type-face . 2))
Line 310  PARSED-TYPE specifies what kind of text Line 318  PARSED-TYPE specifies what kind of text
          "[ \t\n]" t name (font-lock-function-name-face . 3))           "[ \t\n]" t name (font-lock-function-name-face . 3))
         (("end-struct") non-immediate (font-lock-keyword-face . 2)          (("end-struct") non-immediate (font-lock-keyword-face . 2)
          "[ \t\n]" t name (font-lock-type-face . 3))           "[ \t\n]" t name (font-lock-type-face . 3))
         (("struct") non-immediate (font-lock-keyword-face . 2))          (("struct" "end-c-library" "c-library-name") 
            non-immediate (font-lock-keyword-face . 2))
           (("c-library") non-immediate (font-lock-keyword-face . 2)
            "[ \t\n]" t name (font-lock-variable-name-face . 3))
           (("c-variable") non-immediate (font-lock-type-face . 1)
            "[ \t\n]" t name (font-lock-function-name-face . 3)
            "[ \t\n]" t name (font-lock-function-name-face . 3))
           (("c-function" "c-value") non-immediate (font-lock-type-face . 1)
            "[ \t\n]" t name (font-lock-function-name-face . 3)
            "[ \t\n]" t name (font-lock-function-name-face . 3)
            "[\n]" nil comment (font-lock-variable-name-face . 3))
           (("\\c") non-immediate (font-lock-keyword-face . 1)
            "[\n]" nil string (font-lock-string-face . 1))
         ("-?[0-9]+\\(\\.[0-9]*e\\(-?[0-9]+\\)?\\|\\.?[0-9a-f]*\\)"           ("-?[0-9]+\\(\\.[0-9]*e\\(-?[0-9]+\\)?\\|\\.?[0-9a-f]*\\)" 
          immediate (font-lock-constant-face . 3))           immediate (font-lock-constant-face . 3))
           ("-?\\([&#][0-9]+\\|\\(0x\\|\\$\\)[0-9a-f]+\\|%[01]+\\)"
            immediate (font-lock-constant-face . 3))
         ))          ))
   
 (defvar forth-use-objects nil   (defvar forth-use-objects nil 
Line 420  INDENT1 and INDENT2 are indentation spec Line 442  INDENT1 and INDENT2 are indentation spec
           "u-do" "?dup-if" "?dup-0=-if" "case" "of" "try" "iferror"            "u-do" "?dup-if" "?dup-0=-if" "case" "of" "try" "iferror"
           "[if]" "[ifdef]" "[ifundef]" "[begin]" "[for]" "[do]" "[?do]")            "[if]" "[ifdef]" "[ifundef]" "[begin]" "[for]" "[do]" "[?do]")
          (0 . 2) (0 . 2))           (0 . 2) (0 . 2))
         ((":" ":noname" "code" "struct" "m:" ":m" "class" "interface")          ((":" ":noname" "code" "abi-code" "struct" "m:" ":m" "class" 
             "interface" "c-library" "c-library-name")
          (0 . 2) (0 . 2) non-immediate)           (0 . 2) (0 . 2) non-immediate)
         ("\\S-+%$" (0 . 2) (0 . 0) non-immediate)          ("\\S-+%$" (0 . 2) (0 . 0) non-immediate)
         ((";" ";m") (-2 . 0) (0 . -2))          ((";" ";m") (-2 . 0) (0 . -2))
Line 429  INDENT1 and INDENT2 are indentation spec Line 452  INDENT1 and INDENT2 are indentation spec
           "[until]" "[again]" "loop")            "[until]" "[again]" "loop")
          (-2 . 0) (0 . -2))           (-2 . 0) (0 . -2))
         (("end-code" "end-class" "end-interface" "end-class-noname"           (("end-code" "end-class" "end-interface" "end-class-noname" 
           "end-interface-noname" "end-struct" "class;")            "end-interface-noname" "end-struct" "class;" "end-c-library")
          (-2 . 0) (0 . -2) non-immediate)           (-2 . 0) (0 . -2) non-immediate)
         (("protected" "public" "how:") (-1 . 1) (0 . 0) non-immediate)          (("protected" "public" "how:") (-1 . 1) (0 . 0) non-immediate)
         (("+loop" "-loop" "until") (-2 . 0) (-2 . 0))          (("+loop" "-loop" "until") (-2 . 0) (-2 . 0))
         (("else" "recover" "restore" "endtry-iferror" "[else]")          (("else" "recover" "restore" "endtry-iferror" "[else]")
          (-2 . 2) (0 . 0))           (-2 . 2) (0 . 0))
         (("does>") (-1 . 1) (0 . 0))          (("does>" ";code" ";abi-code") (-1 . 1) (0 . 0))
         (("while" "[while]") (-2 . 4) (0 . 2))          (("while" "[while]") (-2 . 4) (0 . 2))
         (("repeat" "[repeat]") (-4 . 0) (0 . -4))))          (("repeat" "[repeat]") (-4 . 0) (0 . -4))))
   
Line 529  End:\" construct).") Line 552  End:\" construct).")
   "Parse and bind local variables, set in the contents of the current     "Parse and bind local variables, set in the contents of the current 
  forth-mode buffer. Prepend `forth-local-words' to `forth-words' and    forth-mode buffer. Prepend `forth-local-words' to `forth-words' and 
  `forth-local-indent-words' to `forth-indent-words'."   `forth-local-indent-words' to `forth-indent-words'."
     (put 'forth-local-indent-words 'safe-local-variable 'listp)
     (put 'forth-local-words 'safe-local-variable 'listp)
   (hack-local-variables)    (hack-local-variables)
   (setq forth-words (append forth-local-words forth-words))    (setq forth-words (append forth-local-words forth-words))
   (setq forth-indent-words (append forth-local-indent-words     (setq forth-indent-words (append forth-local-indent-words 
Line 738  End:\" construct).") Line 763  End:\" construct).")
 (defvar forth-defining-words   (defvar forth-defining-words 
   '("VARIABLE" "CONSTANT" "2VARIABLE" "2CONSTANT" "FVARIABLE" "FCONSTANT"    '("VARIABLE" "CONSTANT" "2VARIABLE" "2CONSTANT" "FVARIABLE" "FCONSTANT"
    "USER" "VALUE" "field" "end-struct" "VOCABULARY" "CREATE" ":" "CODE"     "USER" "VALUE" "field" "end-struct" "VOCABULARY" "CREATE" ":" "CODE"
    "DEFER" "ALIAS")     "DEFER" "ALIAS" "interpret/compile:")
   "List of words, that define the following word.    "List of words, that define the following word.
 Used for imenu index generation.")  Used for imenu index generation.")
   
Line 1093  exceeds 64 characters." Line 1118  exceeds 64 characters."
 (define-key forth-mode-map "\C-x\\" 'comment-region)  (define-key forth-mode-map "\C-x\\" 'comment-region)
 (define-key forth-mode-map "\C-x~" 'forth-remove-tracers)  (define-key forth-mode-map "\C-x~" 'forth-remove-tracers)
 (define-key forth-mode-map "\C-x\C-m" 'forth-split)  (define-key forth-mode-map "\C-x\C-m" 'forth-split)
 (define-key forth-mode-map "\e " 'forth-reload)  
 (define-key forth-mode-map "\t" 'forth-indent-command)  (define-key forth-mode-map "\t" 'forth-indent-command)
 (define-key forth-mode-map "\C-m" 'forth-reindent-then-newline-and-indent)  (define-key forth-mode-map "\C-m" 'forth-reindent-then-newline-and-indent)
 (define-key forth-mode-map "\M-q" 'forth-fill-paragraph)  (define-key forth-mode-map "\M-q" 'forth-fill-paragraph)
Line 1366  programmers who tend to fill code won't Line 1390  programmers who tend to fill code won't
 (defun forth-remove-tracers ()  (defun forth-remove-tracers ()
   "Remove tracers of the form `~~ '. Queries the user for each occurrence."    "Remove tracers of the form `~~ '. Queries the user for each occurrence."
   (interactive)    (interactive)
   (query-replace-regexp "\\(~~ \\| ~~$\\)" "" nil))    (query-replace-regexp "\\(~~[ \t]\\|[ \t]~~$\\)" "" nil))
   
 (define-key forth-mode-map "\C-x\C-e" 'compile)  (define-key forth-mode-map "\C-x\C-e" 'compile)
 (define-key forth-mode-map "\C-x\C-n" 'next-error)  (define-key forth-mode-map "\C-x\C-n" 'next-error)

Removed from v.1.75  
changed lines
  Added in v.1.87


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>