Diff for /gforth/gforth.el between versions 1.12 and 1.22

version 1.12, 1995/08/27 19:56:30 version 1.22, 1997/04/11 17:42:23
Line 1 Line 1
 ;; This file is part of GNU Emacs.  ;; Forth mode for Emacs
   ;; This file is part of GForth.
 ;; Changes by anton  ;; Changes by anton
 ;; This is a variant of forth.el that came with TILE.  ;; 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   ;; I left most of this stuff untouched and made just a few changes for 
 ;; the things I use (mainly indentation and syntax tables).  ;; the things I use (mainly indentation and syntax tables).
 ;; So there is still a lot of work to do to adapt this to gforth.  ;; So there is still a lot of work to do to adapt this to gforth.
   
 ;; GNU Emacs 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
 ;; accepts responsibility to anyone for the consequences of using it  ;; accepts responsibility to anyone for the consequences of using it
 ;; or for whether it serves any particular purpose or works at all,  ;; or for whether it serves any particular purpose or works at all,
Line 15 Line 16
 ;; Everyone is granted permission to copy, modify and redistribute  ;; Everyone is granted permission to copy, modify and redistribute
 ;; GNU Emacs, but only under the conditions described in the  ;; GNU Emacs, but only under the conditions described in the
 ;; GNU Emacs General Public License.   A copy of this license is  ;; GNU Emacs General Public License.   A copy of this license is
 ;; supposed to have been given to you along with GNU Emacs so you  ;; supposed to have been given to you along with Gforth so you
 ;; can know your rights and responsibilities.  It should be in a  ;; can know your rights and responsibilities.  It should be in a
 ;; 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.
   
 ;;; $Header$  
   
 ;;-------------------------------------------------------------------  ;;-------------------------------------------------------------------
 ;; A Forth indentation, documentation search and interaction library  ;; A Forth indentation, documentation search and interaction library
 ;;-------------------------------------------------------------------  ;;-------------------------------------------------------------------
Line 37 Line 36
   
   
 (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 interpretation: ;code does> begin do ?do +do -do u+do u-do while if ?dup-if ?dup-0=-if else case of struct [if] [else] with public: private: class "
   "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] [endif]"    " ; 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    "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 interpretation: public: private: how: 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)
   
   (defvar forth-zup
     " how: "
     "Contains all words which causes zero indent level to change")
   
   (defvar forth-zdown
     " class; how: class public: private: "
     "Contains all words which causes zero indent level to change")
   
 (defvar forth-prefixes  (defvar forth-prefixes
   " postpone [compile] ['] [char] "    " postpone [compile] ['] [char] "
   "words that prefix and escape other words")    "words that prefix and escape other words")
Line 81  OBS! All words in forth-negatives must b Line 90  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")
   
   (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 120  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 249  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 311  programmers who tend to fill code won't Line 328  programmers who tend to fill code won't
                          (regexp-quote (concat " " w1 " "))                           (regexp-quote (concat " " w1 " "))
                          forth-negatives)                           forth-negatives)
                         forth-indent-level 0)))                          forth-indent-level 0)))
       (if (string-match (regexp-quote (concat " " w1 " ")) forth-zdown)
           (setq forth-zero 0))
     (if (string-match (regexp-quote (concat " " w1 " ")) forth-zeroes)      (if (string-match (regexp-quote (concat " " w1 " ")) forth-zeroes)
         (setq indent 0))          (setq indent forth-zero))
       (if (string-match (regexp-quote (concat " " w1 " ")) forth-zup)
           (setq forth-zero 4))
     indent))      indent))
   
 (defun forth-sum-line-indentation ()  (defun forth-sum-line-indentation ()
Line 370  the input stream (comments, arguments, e Line 391  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 434  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

Removed from v.1.12  
changed lines
  Added in v.1.22


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