Diff for /gforth/gforth.el between versions 1.10 and 1.16

version 1.10, 1995/01/25 18:53:48 version 1.16, 1995/10/16 18:33:09
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-0=-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 81  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 103  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 232  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 370  the input stream (comments, arguments, e Line 378  the input stream (comments, arguments, e
 (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 "~~ " ""))    (query-replace-regexp "\\(~~ \\| ~~$\\)" "" nil))
   
 (defvar forth-program-name "gforth"  (defvar forth-program-name "gforth"
   "*Program invoked by the `run-forth' command.")    "*Program invoked by the `run-forth' command.")
Line 413  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 865  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.10  
changed lines
  Added in v.1.16


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