version 1.12, 1995/08/27 19:56:30
|
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] [endif]" |
" ; 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 |