--- gforth/gforth.el 1998/12/08 22:02:43 1.31 +++ gforth/gforth.el 2000/04/02 20:18:26 1.38 @@ -40,20 +40,20 @@ (defvar forth-positives - " : :noname code interpretation: ;code does> begin do ?do +do -do u+do u-do while if ?dup-if ?dup-0=-if else case of struct [if] [ifdef] [ifundef] [else] with public: private: class " - "Contains all words which will cause the indent-level to be incremented + " : :noname m: :m code interpretation: ;code does> begin do ?do +do -do u+do u-do while if ?dup-if ?dup-0=-if else case of struct [if] [ifdef] [ifundef] [else] with public: private: class try recover " + "*Contains all words which will cause the indent-level to be incremented on the next line. OBS! All words in forth-positives must be surrounded by spaces.") (defvar forth-negatives - " ; end-code ;code does> until repeat while +loop loop -loop s+loop else then endif again endcase endof end-struct [then] [else] [endif] endwith class; how: " - "Contains all words which will cause the indent-level to be decremented + " ; ;m end-code ;code does> until repeat while +loop loop -loop s+loop else then endif again endcase endof end-struct [then] [else] [endif] endwith end-class class; how: recover endtry " + "*Contains all words which will cause the indent-level to be decremented on the current line. OBS! All words in forth-negatives must be surrounded by spaces.") (defvar forth-zeroes " : :noname code interpretation: public: private: how: implements class class; " - "Contains all words which causes the indent to go to zero") + "*Contains all words which causes the indent to go to zero") (setq forth-zero 0) @@ -92,6 +92,16 @@ OBS! All words in forth-negatives must b (define-key forth-mode-map "\M-q" 'forth-fill-paragraph) (define-key forth-mode-map "\e." 'forth-find-tag) +;setup for C-h C-i to work +(if (fboundp 'info-lookup-add-help) + (info-lookup-add-help + :topic 'symbol + :mode 'forth-mode + :regexp "[^ +]+" + :ignore-case t + :doc-spec '(("(gforth)Name Index" nil "`" "' ")))) + (load "etags") (defun forth-find-tag (tagname &optional next-p regexp-p) @@ -980,5 +990,35 @@ The region is sent terminated by a newli ; (define-key global-map '(shift button3) 'mouse-function-menu) )) +;;; Highlighting + +(if (not (file-exists-p "/usr/share/emacs/site-lisp/hl319.el")) + (require 'hilit19) + (require 'hl319)) + +(hilit-set-mode-patterns + '(forth-mode) + (append + '(("\\\\ \\(.*\\)$" nil comment)) ; comments + '(("( [^)\n]* -- [^)\n]* )" nil decl)) + '(("( -- [^)\n]* )" nil decl)) + '(("( [^)\n]* -- )" nil decl)) + '(("( -- )" nil decl)) + '(("( " ")" comment)) + '(("\" [^\"\n]*\"" nil string)) + '(("\\(IF\\|ELSE\\|THEN\\|BEGIN\\|WHILE\\|REPEAT\\|UNTIL\\)" nil keyword)) + '((": *[^ \n]*" nil defun)) + '(("Defer *[^ \n]*" nil defun)) + '(("Variable *[^ \n]*" nil define)) + '(("Constant *[^ \n]*" nil define)) + '(("include *[^ \n]*" nil include)) + '(("require *[^ \n]*" nil include)) + '(("[ ]\\$[0-9A-Fa-f]+" nil formula)) + '(("[ ]&[0-9]+" nil formula)) + '(("[ ][0-9]+" nil formula)) + '(("[ ]%[01]+" nil formula)) + '(("[ ]'[^ \n]+" nil formula)) + '((":noname" nil defun)))) + ;; end