Diff for /gforth/gforth.el between versions 1.26 and 1.45

version 1.26, 1998/04/14 16:43:06 version 1.45, 2000/11/16 09:39:51
Line 1 Line 1
 ;; Forth mode for Emacs  ;; Forth mode for Emacs
 ;; This file is part of GForth.  
 ;; Changes by anton  ;; Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc.
 ;; This is a variant of forth.el that came with TILE.  
 ;; I left most of this stuff untouched and made just a few changes for   ;; This file is part of Gforth.
 ;; the things I use (mainly indentation and syntax tables).  
 ;; So there is still a lot of work to do to adapt this to gforth.  
   
 ;; GForth is distributed in the hope that it will be useful,  ;; GForth is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY.  No author or distributor  ;; but WITHOUT ANY WARRANTY.  No author or distributor
Line 21 Line 19
 ;; file named COPYING.  Among other things, the copyright notice  ;; file named COPYING.  Among other things, the copyright notice
 ;; and this notice must be preserved on all copies.  ;; and this notice must be preserved on all copies.
   
   ;; Changes by anton
   ;; This is a variant of forth.el that came with TILE.
   ;; I left most of this stuff untouched and made just a few changes for 
   ;; the things I use (mainly indentation and syntax tables).
   ;; So there is still a lot of work to do to adapt this to gforth.
   
 ;;-------------------------------------------------------------------  ;;-------------------------------------------------------------------
 ;; A Forth indentation, documentation search and interaction library  ;; A Forth indentation, documentation search and interaction library
 ;;-------------------------------------------------------------------  ;;-------------------------------------------------------------------
Line 36 Line 40
   
   
 (defvar forth-positives  (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 "    " : :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    "*Contains all words which will cause the indent-level to be incremented
 on the next line.  on the next line.
 OBS! All words in forth-positives must be surrounded by spaces.")  OBS! All words in forth-positives must be surrounded by spaces.")
   
 (defvar forth-negatives  (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: "    " ; ;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    "*Contains all words which will cause the indent-level to be decremented
 on the current line.  on the current line.
 OBS! All words in forth-negatives must be surrounded by spaces.")  OBS! All words in forth-negatives must be surrounded by spaces.")
   
 (defvar forth-zeroes  (defvar forth-zeroes
   " : :noname code interpretation: public: private: how: class class; "    " : :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)  (setq forth-zero 0)
   
Line 88  OBS! All words in forth-negatives must b Line 92  OBS! All words in forth-negatives must b
 (define-key forth-mode-map "\M-q" 'forth-fill-paragraph)  (define-key forth-mode-map "\M-q" 'forth-fill-paragraph)
 (define-key forth-mode-map "\e." 'forth-find-tag)  (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")  (load "etags")
   
 (defun forth-find-tag (tagname &optional next-p regexp-p)  (defun forth-find-tag (tagname &optional next-p regexp-p)
Line 146  OBS! All words in forth-negatives must b Line 160  OBS! All words in forth-negatives must b
   (setq comment-column 40)    (setq comment-column 40)
   (make-local-variable 'comment-start-skip)    (make-local-variable 'comment-start-skip)
   (setq comment-start-skip "\\ ")    (setq comment-start-skip "\\ ")
   (make-local-variable 'comment-indent-hook)    (make-local-hook 'comment-indent-hook)
   (setq comment-indent-hook 'forth-comment-indent)    (add-hook comment-indent-hook 'forth-comment-indent)
   (make-local-variable 'parse-sexp-ignore-comments)    (make-local-variable 'parse-sexp-ignore-comments)
   (setq parse-sexp-ignore-comments t))    (setq parse-sexp-ignore-comments t))
       
Line 227  Variables controling documentation searc Line 241  Variables controling documentation searc
 ;      (run-forth forth-program-name))  ;      (run-forth forth-program-name))
   (run-hooks 'forth-mode-hook))    (run-hooks 'forth-mode-hook))
   
 (setq forth-mode-hook  (add-hook 'forth-mode-hook
       '(lambda ()         '(lambda () 
          (make-local-variable 'compile-command)           (make-local-variable 'compile-command)
          (setq compile-command "gforth ")))           (setq compile-command "gforth ")))
Line 922  The region is sent terminated by a newli Line 936  The region is sent terminated by a newli
   
 (require 'outline)  (require 'outline)
   
 ;;(define-key outline-minor-mode-map 'f9 'show-entry)  (defun f-outline-level ()
 ;;(define-key outline-minor-mode-map 'f10 'hide-entry)          (cond   ((looking-at "\\`\\\\")
                           0)
                   ((looking-at "\\\\ SEC")
                           0)
                   ((looking-at "\\\\ \\\\ .*")
                           0)
                   ((looking-at "\\\\ DEFS")
                           1)
                   ((looking-at "\\/\\* ")
                           1)
                   ((looking-at ": .*")
                           1)
                   ((looking-at "\\\\G")
                           2)
                   ((looking-at "[ \t]+\\\\")
                           3))
   )                       
   
 (defun fold-f  ()  (defun fold-f  ()
    (interactive)     (interactive)
    (add-hook 'outline-minor-mode-hook 'hide-body)     (add-hook 'outline-minor-mode-hook 'hide-body)
   
    ; outline mode header start, i.e. find word definitions     ; outline mode header start, i.e. find word definitions
    (setq  outline-regexp  "^\\(:\\)[ \t]+\\([^ \t]*\\)")  ;;;   (setq  outline-regexp  "^\\(:\\)[ \t]+\\([^ \t]*\\)")
      (setq  outline-regexp  "\\`\\\\\\|:\\|\\\\ SEC\\|\\\\G\\|[ \t]+\\\\\\|\\\\ DEFS\\|\\/\\*\\|\\\\ \\\\ .*")
      (setq outline-level 'f-outline-level)
   
    (outline-minor-mode)     (outline-minor-mode)
      (define-key outline-minor-mode-map '(shift up) 'hide-sublevels)
      (define-key outline-minor-mode-map '(shift right) 'show-children)
      (define-key outline-minor-mode-map '(shift left) 'hide-subtree)
      (define-key outline-minor-mode-map '(shift down) 'show-subtree)
   
 )  )
   
   ;;(define-key global-map '(shift up) 'fold-f)
   
 ;;; end file folding  ;;; end file folding
   
 ;;; func-menu is a package that scans your source file for function definitions  ;;; func-menu is a package that scans your source file for function definitions
Line 946  The region is sent terminated by a newli Line 986  The region is sent terminated by a newli
        (require 'func-menu)         (require 'func-menu)
 ;;       (define-key global-map 'f8 'function-menu)  ;;       (define-key global-map 'f8 'function-menu)
        (add-hook 'find-fible-hooks 'fume-add-menubar-entry)         (add-hook 'find-fible-hooks 'fume-add-menubar-entry)
        (define-key global-map "\C-cg" 'fume-prompt-function-goto)  ;       (define-key global-map "\C-cg" 'fume-prompt-function-goto)
        (define-key global-map '(shift button3) 'mouse-function-menu)  ;       (define-key global-map '(shift button3) 'mouse-function-menu)
        ))  ))
   
   ;;; Highlighting
   
   (cond ((featurep 'hilit19)
    (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
      '(("\\\\[gG] \\(.*\\)$" nil comment)) ; comments
      '(("(\\( [^)\n]* \\| \\)--\\( [^)\n]* \\| \\))" nil decl))
      '(("( " ")" comment))
      '(("\" [^\"\n]*\"" nil string))
      '(("\\(\\[IF]\\|\\[IFDEF]\\|\\[IFUNDEF]\\|\\[ELSE]\\|\\[THEN]\\|IF\\|ELSE\\|THEN\\|CASE\\|ENDCASE\\|OF\\|ENDOF\\|BEGIN\\|WHILE\\|REPEAT\\|UNTIL\\|AGAIN\\|DOES>\\|?DO\\|DO\\|\+LOOP\\|UNLOOP\\|LOOP\\|EXIT\\)" nil keyword))
      '(("\\(\\[if]\\|\\[ifdef]\\|\\[ifundef]\\|\\[else]\\|\\[then]\\|if\\|else\\|then\\|case\\|endcase\\|of\\|endof\\|begin\\|while\\|repeat\\|until\\|again\\|does>\\|?do\\|do\\|\+loop\\|unloop\\|loop\\|exit\\)" nil keyword))
      '((": *[^ \n]*" nil defun))
      '(("Defer *[^ \n]*" nil defun))
      '(("\\(Variable\\|Constant\\|Value\\|Create\\) *[^ \n]*" nil define))
      '(("\\(include\\|require\\) *[^ \n]*" nil include))
      '(("[\n      ]\\(\\$[0-9A-Fa-f]+[\n  ]\\|&[0-9]+[\n  ]\\|[0-9]+[\n   ]\\|%[01]+[\n   ]\\|'[^ \n]+\\)+" nil formula))
      '((":noname" nil defun))))))
   
   ;; end
   

Removed from v.1.26  
changed lines
  Added in v.1.45


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