Diff for /gforth/gforth.el between versions 1.9 and 1.15

version 1.9, 1995/01/12 18:37:53 version 1.15, 1995/10/11 19:39:34
Line 37 Line 37
   
   
 (defvar forth-positives  (defvar forth-positives
   " : :noname begin do ?do while if ?dup-if ?dup-not-if else case create does> exception> struct [if] [else] "    " : :noname code ;code does> begin do ?do +do -do u+do u-do while if ?dup-if ?dup-not-if else case struct [if] [else] "
   "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
   " ; until repeat while +loop loop s+loop else then endif again endcase does> end-struct [then] [else] "    " ; end-code ;code does> until repeat while +loop loop -loop s+loop else then endif again endcase end-struct [then] [else] [endif]"
   "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 "    " : :noname code "
   "Contains all words which causes the indent to go to zero")    "Contains all words which causes the indent to go to zero")
   
 (defvar forth-prefixes  (defvar forth-prefixes
Line 73  OBS! All words in forth-negatives must b Line 73  OBS! All words in forth-negatives must b
   
 ;(define-key forth-mode-map "\M-\C-x" 'compile)  ;(define-key forth-mode-map "\M-\C-x" 'compile)
 (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|" 'uncomment-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 "\e\C-m" 'forth-send-paragraph)  (define-key forth-mode-map "\e\C-m" 'forth-send-paragraph)
 (define-key forth-mode-map "\eo" 'forth-send-buffer)  (define-key forth-mode-map "\eo" 'forth-send-buffer)
Line 82  OBS! All words in forth-negatives must b Line 81  OBS! All words in forth-negatives must b
 (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" 'reindent-then-newline-and-indent)  (define-key forth-mode-map "\C-m" '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)
   (define-key forth-mode-map "\e." 'forth-find-tag)
   
   (load "etags.el")
   
   (defun forth-find-tag (tagname &optional next-p regexp-p)
     (interactive (find-tag-interactive "Find tag: "))
     (switch-to-buffer
      (find-tag-noselect (concat " " tagname " ") next-p regexp-p)))
   
 (defvar forth-mode-syntax-table nil  (defvar forth-mode-syntax-table nil
   "Syntax table in use in Forth-mode buffers.")    "Syntax table in use in Forth-mode buffers.")
Line 104  OBS! All words in forth-negatives must b Line 111  OBS! All words in forth-negatives must b
 ;only supports one comment syntax (and a hack to accomodate C++); I  ;only supports one comment syntax (and a hack to accomodate C++); I
 ;use '\' for natural language comments and '(' for formal comments  ;use '\' for natural language comments and '(' for formal comments
 ;like stack comments, so for me it's better to have emacs treat '\'  ;like stack comments, so for me it's better to have emacs treat '\'
 ;comments as comments. I you want it different, make the appropriate  ;comments as comments. If you want it different, make the appropriate
 ;changes (best in your .emacs file).  ;changes (best in your .emacs file).
 ;  ;
 ;Hmm, the C++ hack could be used to support both comment syntaxes: we  ;Hmm, the C++ hack could be used to support both comment syntaxes: we
Line 233  programmers who tend to fill code won't Line 240  programmers who tend to fill code won't
     (beginning-of-line)      (beginning-of-line)
     (while (and      (while (and
              (= (forward-line -1) 0)               (= (forward-line -1) 0)
              (looking-at "[ \t]*\\\\[ \t]+")))               (looking-at "[ \t]*\\\\g?[ \t]+")))
     (if (not (looking-at "[ \t]*\\\\[ \t]+"))      (if (not (looking-at "[ \t]*\\\\g?[ \t]+"))
         (forward-line 1))          (forward-line 1))
     (let ((from (point))      (let ((from (point))
           (to (save-excursion (forward-paragraph) (point))))            (to (save-excursion (forward-paragraph) (point))))
       (if (looking-at "[ \t]*\\\\[ \t]+")        (if (looking-at "[ \t]*\\\\g?[ \t]+")
           (progn (goto-char (match-end 0))            (progn (goto-char (match-end 0))
                  (set-fill-prefix)                   (set-fill-prefix)
                  (fill-region from to nil))))))                   (fill-region from to nil))))))
Line 414  part of the screen." Line 421  part of the screen."
            (message "Resetting Forth process...done")))))             (message "Resetting Forth process...done")))))
   
 (defun forth-default-command-line ()  (defun forth-default-command-line ()
   (concat forth-program-name " -emacs"    (concat forth-program-name
           (if forth-program-arguments            (if forth-program-arguments
               (concat " " forth-program-arguments)                (concat " " forth-program-arguments)
               "")  
           (if forth-band-name  
               (concat " -band " forth-band-name)  
               "")))                "")))
   
 ;;;; Internal Variables  ;;;; Internal Variables
Line 866  The region is sent terminated by a newli Line 870  The region is sent terminated by a newli
   (compile1 ctools-compile-command "No more errors"))    (compile1 ctools-compile-command "No more errors"))
   
   
   ;;; Forth menu
   ;;; Mikael Karlsson <qramika@eras70.ericsson.se>
   
   (cond ((string-match "XEmacs\\|Lucid" emacs-version)
          (require 'func-menu)
   
     (defconst fume-function-name-regexp-forth
      "^\\(:\\)[ \t]+\\([^ \t]*\\)"
      "Expression to get word definitions in Forth.")
   
     (setq fume-function-name-regexp-alist
         (append '((forth-mode . fume-function-name-regexp-forth) 
                ) fume-function-name-regexp-alist))
   
     ;; Find next forth word in the buffer
     (defun fume-find-next-forth-function-name (buffer)
       "Searches for the next forth word in BUFFER."
       (set-buffer buffer)
       (if (re-search-forward fume-function-name-regexp nil t)
         (let ((beg (match-beginning 2))
               (end (match-end 2)))
           (cons (buffer-substring beg end) beg))))
   
     (setq fume-find-function-name-method-alist
     (append '((forth-mode    . fume-find-next-forth-function-name))))
   
     ))
   ;;; End Forth menu
   
   ;;; File folding of forth-files
   ;;; uses outline
   ;;; Toggle activation with M-x fold-f (when editing a forth-file) 
   ;;; Use f9 to expand, f10 to hide, Or the menubar in xemacs
   ;;;
   ;;; Works most of the times but loses sync with the cursor occasionally 
   ;;; Could be improved by also folding on comments
   
   (require 'outline)
   
   ;;(define-key outline-minor-mode-map 'f9 'show-entry)
   ;;(define-key outline-minor-mode-map 'f10 'hide-entry)
   
   (defun fold-f  ()
      (interactive)
      (add-hook 'outline-minor-mode-hook 'hide-body)
   
      ; outline mode header start, i.e. find word definitions
      (setq  outline-regexp  "^\\(:\\)[ \t]+\\([^ \t]*\\)")
   
      (outline-minor-mode)
   )
   ;;; end file folding
   
   ;;; func-menu is a package that scans your source file for function definitions
   ;;; and makes a menubar entry that lets you jump to any particular function
   ;;; definition by selecting it from the menu.  The following code turns this on
   ;;; for all of the recognized languages.  Scanning the buffer takes some time,
   ;;; but not much.
   ;;;
   (cond ((string-match "XEmacs\\|Lucid" emacs-version)
          (require 'func-menu)
   ;;       (define-key global-map 'f8 'function-menu)
          (add-hook 'find-fible-hooks 'fume-add-menubar-entry)
          (define-key global-map "\C-cg" 'fume-prompt-function-goto)
          (define-key global-map '(shift button3) 'mouse-function-menu)
          ))

Removed from v.1.9  
changed lines
  Added in v.1.15


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