version 1.79, 2010/08/20 20:17:28
|
version 1.85, 2011/08/13 09:47:08
|
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,2008 Free Software Foundation, Inc. |
;; Copyright (C) 1995,1996,1997,1998,2000,2001,2003,2004,2007,2008,2010 Free Software Foundation, Inc. |
|
|
;; This file is part of Gforth. |
;; This file is part of Gforth. |
|
|
Line 256 PARSED-TYPE specifies what kind of text
|
Line 256 PARSED-TYPE specifies what kind of text
|
"[ \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 306 PARSED-TYPE specifies what kind of text
|
Line 307 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 315 PARSED-TYPE specifies what kind of text
|
Line 316 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]+\\)" |
("-?\\([&#][0-9]+\\|\\(0x\\|\\$\\)[0-9a-f]+\\|%[01]+\\)" |
Line 428 INDENT1 and INDENT2 are indentation spec
|
Line 441 INDENT1 and INDENT2 are indentation spec
|
"[if]" "[ifdef]" "[ifundef]" "[begin]" "[for]" "[do]" "[?do]") |
"[if]" "[ifdef]" "[ifundef]" "[begin]" "[for]" "[do]" "[?do]") |
(0 . 2) (0 . 2)) |
(0 . 2) (0 . 2)) |
((":" ":noname" "code" "abi-code" "struct" "m:" ":m" "class" |
((":" ":noname" "code" "abi-code" "struct" "m:" ":m" "class" |
"interface") |
"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 437 INDENT1 and INDENT2 are indentation spec
|
Line 450 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)) |
Line 748 End:\" construct).")
|
Line 761 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 1103 exceeds 64 characters."
|
Line 1116 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 1376 programmers who tend to fill code won't
|
Line 1388 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) |