home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Otherware
/
Otherware_1_SB_Development.iso
/
amiga
/
utility
/
misc
/
e1858src.lha
/
emacs-18.58
/
lisp
/
scribe.elc
< prev
next >
Wrap
Text File
|
1992-02-21
|
8KB
|
120 lines
(defvar scribe-mode-syntax-table nil "\
Syntax table used while in scribe mode.")
(defvar scribe-mode-abbrev-table nil "\
Abbrev table used while in scribe mode.")
(defvar scribe-fancy-paragraphs nil "\
*Non-NIL makes Scribe mode use a different style of paragraph separation.")
(defvar scribe-electric-quote nil "\
*Non-NIL makes insert of double quote use `` or '' depending on context.")
(defvar scribe-electric-parenthesis nil "\
*Non-NIL makes parenthesis char ( (]}> ) automatically insert its close
if typed after an @Command form.")
(defconst scribe-open-parentheses "[({<" "\
Open parenthesis characters for Scribe.")
(defconst scribe-close-parentheses "])}>" "\
Close parenthesis characters for Scribe. These should match up with
scribe-open-parenthesis.")
(if (null scribe-mode-syntax-table) (let ((st (syntax-table))) (unwind-protect (progn (setq scribe-mode-syntax-table (copy-syntax-table text-mode-syntax-table)) (set-syntax-table scribe-mode-syntax-table) (modify-syntax-entry 34 " ") (modify-syntax-entry 92 " ") (modify-syntax-entry 64 "w ") (modify-syntax-entry 60 "(> ") (modify-syntax-entry 62 ")< ") (modify-syntax-entry 91 "(] ") (modify-syntax-entry 93 ")[ ") (modify-syntax-entry 123 "(} ") (modify-syntax-entry 125 "){ ") (modify-syntax-entry 39 "w ")) (set-syntax-table st))))
(defvar scribe-mode-map nil)
(if scribe-mode-map nil (setq scribe-mode-map (make-sparse-keymap)) (define-key scribe-mode-map " " (quote scribe-tab)) (define-key scribe-mode-map " " (quote tab-to-tab-stop)) (define-key scribe-mode-map "s" (quote center-line)) (define-key scribe-mode-map "}" (quote up-list)) (define-key scribe-mode-map "S" (quote center-paragraph)) (define-key scribe-mode-map "\"" (quote scribe-insert-quote)) (define-key scribe-mode-map "(" (quote scribe-parenthesis)) (define-key scribe-mode-map "[" (quote scribe-parenthesis)) (define-key scribe-mode-map "{" (quote scribe-parenthesis)) (define-key scribe-mode-map "<" (quote scribe-parenthesis)) (define-key scribe-mode-map "c" (quote scribe-chapter)) (define-key scribe-mode-map "S" (quote scribe-section)) (define-key scribe-mode-map "s" (quote scribe-subsection)) (define-key scribe-mode-map "e" (quote scribe-insert-environment)) (define-key scribe-mode-map "" (quote scribe-bracket-region-be)) (define-key scribe-mode-map "[" (quote scribe-begin)) (define-key scribe-mode-map "]" (quote scribe-end)) (define-key scribe-mode-map "i" (quote scribe-italicize-word)) (define-key scribe-mode-map "b" (quote scribe-bold-word)) (define-key scribe-mode-map "u" (quote scribe-underline-word)))
(defun scribe-mode nil "\
Major mode for editing files of Scribe (a text formatter) source.
Scribe-mode is similar text-mode, with a few extra commands added.
\\{scribe-mode-map}
Interesting variables:
scribe-fancy-paragraphs
Non-nil makes Scribe mode use a different style of paragraph separation.
scribe-electric-quote
Non-nil makes insert of double quote use `` or '' depending on context.
scribe-electric-parenthesis
Non-nil makes an open-parenthesis char (one of `([<{')
automatically insert its close if typed after an @Command form." (interactive) (byte-code "├ê╤ ê╥!ê╙ëê╘ëê╒┼├\"êëê╓╞!ê╫ëê╓╟!ê╫╪Qëê╓╔!ê┘ë ê╓╩!ê╪ë
ê╓╦!ê┌█▄▌%ëê╓═!êâa éb ▐ëê╓╧!ê▀α Pëêß!êΓπΣ\"ç" [scribe-mode-map mode-name major-mode nil local-abbrev-table scribe-mode-abbrev-table comment-start comment-start-skip scribe-open-parentheses comment-column comment-end paragraph-start scribe-close-parentheses paragraph-separate scribe-fancy-paragraphs compile-command scribe-mode-syntax-table kill-all-local-variables use-local-map "Scribe" scribe-mode define-abbrev-table make-local-variable "@Comment[" "]" 0 concat "\\(^[
]\\)\\|\\(^@\\w+[" "].*[" "]$\\)" "^$" "scribe " buffer-file-name set-syntax-table run-hooks text-mode-hook scribe-mode-hook] 16))
(defun scribe-tab nil (interactive) (byte-code "└ê┴cç" [nil "@\\"] 1))
(defun scribe nil "\
Run Scribe on the current buffer." (interactive) (byte-code "└ê┴┬!ç" [nil call-interactively compile] 2))
(defun scribe-envelop-word (string count) "\
Surround current word with Scribe construct @STRING[...]. COUNT
specifies how many words to surround. A negative count means to skip
backward." (byte-code "``╔╩╦!?àD ╠h!═Uà ╬╧^!ê`ëê╨╤╥Q!â0 ╙╘!é: bê╒╓!ê╙╧!ê╬╫]!ê`ëêbê
GWàn è╪┘
H! ╞#åf ╪┘
H! ╞#)àn
Tëàv ╩êéH ê
GYâö bê┌█▄#êbê┌▌▄#é┤ bê
Hcêbê┌▐
H#ê bê╙▀!êα!,ç" [spos epos ccoun noparens count scribe-open-parentheses t scribe-close-parentheses string 0 nil zerop char-syntax 119 forward-sexp -1 looking-at "@\\w[" "]" forward-char 2 skip-chars-backward "\\W" 1 search-forward char-to-string insert "@end(" ")" "@begin(" "@" 3 skip-chars-forward] 19))
(defun scribe-underline-word (count) "\
Underline COUNT words around point by means of Scribe constructs." (interactive "p") (byte-code "┴ê┬├\"ç" [count nil scribe-envelop-word "u"] 3))
(defun scribe-bold-word (count) "\
Boldface COUNT words around point by means of Scribe constructs." (interactive "p") (byte-code "┴ê┬├\"ç" [count nil scribe-envelop-word "b"] 3))
(defun scribe-italicize-word (count) "\
Italicize COUNT words around point by means of Scribe constructs." (interactive "p") (byte-code "┴ê┬├\"ç" [count nil scribe-envelop-word "i"] 3))
(defun scribe-begin nil (interactive) (byte-code "┴ê┬cê├─!ê┼╞╟\"ê╚╔╩Q!ç" [scribe-open-parentheses nil "
" forward-char -1 scribe-envelop-word "Begin" 0 re-search-forward "[" "]"] 6))
(defun scribe-end nil (interactive) (byte-code "┴ê┬cê├─!ê┼╞╟\"ê╚╔╩Q!ç" [scribe-open-parentheses nil "
" forward-char -1 scribe-envelop-word "End" 0 re-search-forward "[" "]"] 6))
(defun scribe-chapter nil (interactive) (byte-code "┴ê┬cê├─!ê┼╞╟\"ê╚╔╩Q!ç" [scribe-open-parentheses nil "
" forward-char -1 scribe-envelop-word "Chapter" 0 re-search-forward "[" "]"] 6))
(defun scribe-section nil (interactive) (byte-code "┴ê┬cê├─!ê┼╞╟\"ê╚╔╩Q!ç" [scribe-open-parentheses nil "
" forward-char -1 scribe-envelop-word "Section" 0 re-search-forward "[" "]"] 6))
(defun scribe-subsection nil (interactive) (byte-code "┴ê┬cê├─!ê┼╞╟\"ê╚╔╩Q!ç" [scribe-open-parentheses nil "
" forward-char -1 scribe-envelop-word "SubSection" 0 re-search-forward "[" "]"] 6))
(defun scribe-bracket-region-be (env min max) (interactive "sEnvironment:
r") (byte-code "├êèbê─┼ ╞#ê
bê─╟ ╞#)ç" [max env min nil insert "@end(" ")
" "@begin("] 5))
(defun scribe-insert-environment (env) (interactive "sEnvironment: ") (byte-code "┴ê┬``#ê├─!ê┼cê╞╟!ç" [env nil scribe-bracket-region-be forward-line 1 10 forward-char -1] 4))
(defun scribe-insert-quote (count) "\
If scribe-electric-quote is non-NIL, insert ``, '' or \" according
to preceding character. With numeric arg N, always insert N \" characters.
Else just insert \"." (interactive "P") (byte-code "╞êå ?â ╟╚!!é≤ ╞╞╞h╔Uâ# ╩é± oâ+ ╦é± è╠╦`═Z┼#à7 `)è╠╬`═Z┼#àE `)è╠╧`╨Z┼#àS `)ëê?â|
?âe ╦éy ?ân ╬éy
Vâx ╬éy ╦é± ?àâ
?âè ╧é± àû
?àû V⥠╧é± à⌐
?à⌐ Vâ░ ╦é±
à╝ ?à╝
Vâ├ ╧é±
à╧ ?à╧
Vâ╓ ╬é±
Và▀ Vâµ ╧é±
Vâ≡ ╬é± ╦c+ç" [count scribe-electric-quote lastfore lastback lastquote t nil self-insert-command prefix-numeric-value 92 34 "``" search-backward 1000 "''" "\"" 100] 8))
(defun scribe-parenthesis (count) "\
If scribe-electric-parenthesis is non-NIL, insertion of an open-parenthesis
character inserts the following close parenthesis character if the
preceding text is of the form @Command." (interactive "P") (byte-code "┼ê╚╔!!ê┼┼┼å ?â ┼éT è╩╦!ê`ëê╠═P!ê╬g╧\"à7 ╨`S\"ë)ê àJ ╤╥╙h!!\"ëàT è
Hc)+ç" [count at-command paren-char point-save scribe-electric-parenthesis nil scribe-open-parentheses scribe-close-parentheses self-insert-command prefix-numeric-value forward-char -1 skip-chars-backward "^
" equal 64 /= string-match regexp-quote char-to-string] 11))