v07i035: CRISP release 1.9 part 14/32
Brandon S. Allbery - comp.sources.misc
allbery at uunet.UU.NET
Mon Jun 12 07:49:36 AEST 1989
Posting-number: Volume 7, Issue 35
Submitted-by: fox at marlow.UUCP (Paul Fox)
Archive-name: crisp1.9/part15
#!/bin/sh
# shar: Shell Archiver (v1.22)
#
# This is part 1 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
#
# Run the following text with /bin/sh to create:
# MAC.README
# src/crisp/Makefile
# src/crisp/crisp.h
# src/crisp/welcome.h
# src/crisp/abbrev.m
# src/crisp/ansi.m
# src/crisp/ascii.m
# src/crisp/autosave.m
# src/crisp/box.m
# src/crisp/brace.m
# src/crisp/calc.m
# src/crisp/compile.m
# src/crisp/copyr.m
# src/crisp/core.m
# src/crisp/crisp.m
# src/crisp/dial.m
# src/crisp/edt.m
# src/crisp/features.m
# src/crisp/g_macros.m
# src/crisp/g_vi.m
# src/crisp/hanoi.m
# src/crisp/help.m
# src/crisp/history.m
# src/crisp/kbd_help.m
# src/crisp/mail.m
# src/crisp/makeman.m
# src/crisp/misc.m
# src/crisp/options.m
# src/crisp/region.m
# src/crisp/regress.m
# src/crisp/sdb.m
# src/crisp/search.m
# src/crisp/select.m
# src/crisp/shell.m
# src/crisp/startup.m
# src/crisp/stest.m
# src/crisp/tags.m
# src/crisp/telnet.m
# src/crisp/text.m
# src/crisp/tty.m
# src/crisp/unix.m
# src/crisp/welcome.m
# src/crisp/window.m
# src/crisp/wp.m
# src/crisp/kbd/pc.m
# src/crisp/kbd/sun3.m
# src/crisp/tty/at386.m
# src/crisp/tty/dec.m
# src/crisp/tty/ibm5081.m
# src/crisp/tty/isc.m
# src/crisp/tty/sun.m
# src/crisp/tty/tty.h
# src/crisp/tty/tty.m
# src/crisp/tty/wyse50.m
# src/crisp/tty/xenix.m
# src/crisp/tty/xterm.m
#
if test -r s2_seq_.tmp
then echo "Must unpack archives in sequence!"
next=`cat s2_seq_.tmp`; echo "Please unpack part $next next"
exit 1; fi
echo "x - extracting MAC.README (Text)"
sed 's/^X//' << 'SHAR_EOF' > MAC.README &&
XThis is the README file for the GRIEF macros.
X
XThe macros in this package will only work with GRIEF v1.6 or later,
Xdue to some of the new keywords, or bug fixes.
X
X Major Features of this Release
X ------------------------------
X
XThis release supports a lot of new macros. Major functionality features
Xcan be accessed via <Alt-F>. Nearly everything is explained in
Xthe help (HLP_1.* package). The help is a separate set of files
Xbecause of the bulk involved.
X
X===
XFile Version
X============ =======
X
X
Xsrc/crisp/Makefile 1.5
Xsrc/crisp/abbrev.m 1.2
Xsrc/crisp/ansi.m 1.3
Xsrc/crisp/ascii.m 1.2
Xsrc/crisp/autosave.m 1.2
Xsrc/crisp/box.m 1.2
Xsrc/crisp/brace.m 1.2
Xsrc/crisp/calc.m 1.2
Xsrc/crisp/compile.m 1.3
Xsrc/crisp/crisp.h 1.3
Xsrc/crisp/crisp.m 1.6
Xsrc/crisp/dial.m 1.2
Xsrc/crisp/features.m 1.2
Xsrc/crisp/g_macros.m 1.3
Xsrc/crisp/g_vi.m 1.2
Xsrc/crisp/hanoi.m 1.2
Xsrc/crisp/help.m 1.3
Xsrc/crisp/history.m 1.2
Xsrc/crisp/kbd_help.m 1.2
Xsrc/crisp/mail.m 1.4
Xsrc/crisp/makeman.m 1.5
Xsrc/crisp/misc.m 1.4
Xsrc/crisp/options.m 1.3
Xsrc/crisp/region.m 1.2
Xsrc/crisp/regress.m 1.2
Xsrc/crisp/sdb.m 1.2
Xsrc/crisp/search.m 1.3
Xsrc/crisp/select.m 1.4
Xsrc/crisp/shell.m 1.4
Xsrc/crisp/startup.m 1.2
Xsrc/crisp/stest.m 1.2
Xsrc/crisp/tags.m 1.3
Xsrc/crisp/telnet.m 1.2
Xsrc/crisp/text.m 1.5
Xsrc/crisp/tty-at386.m 1.2
Xsrc/crisp/tty-isc.m 1.2
Xsrc/crisp/tty-sun.m 1.2
Xsrc/crisp/tty-xenix.m 1.2
Xsrc/crisp/tty-xterm.m 1.2
Xsrc/crisp/tty.h 1.2
Xsrc/crisp/tty.m 1.3
Xsrc/crisp/welcome.h 1.2
Xsrc/crisp/welcome.m 1.2
Xsrc/crisp/window.m 1.2
Xsrc/crisp/wp.m 1.4
SHAR_EOF
chmod 0444 MAC.README || echo "restore of MAC.README fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/Makefile (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/Makefile &&
XMACDIR = /usr/local/crisp/macros
XH = crisp.h tty/tty.h
XSRC = Makefile *.h *.m kbd/* tty/*
XCM = $(MACDIR)/abbrev.cm \
X $(MACDIR)/ansi.cm \
X $(MACDIR)/ascii.cm \
X $(MACDIR)/autosave.cm \
X $(MACDIR)/box.cm \
X $(MACDIR)/brace.cm \
X $(MACDIR)/calc.cm \
X $(MACDIR)/compile.cm \
X $(MACDIR)/copyr.cm \
X $(MACDIR)/core.cm \
X $(MACDIR)/crisp.cm \
X $(MACDIR)/dial.cm \
X $(MACDIR)/edt.cm \
X $(MACDIR)/features.cm \
X $(MACDIR)/g_macros.cm \
X $(MACDIR)/g_vi.cm \
X $(MACDIR)/hanoi.cm \
X $(MACDIR)/help.cm \
X $(MACDIR)/history.cm \
X $(MACDIR)/kbd_help.cm \
X $(MACDIR)/kbd/pc.cm \
X $(MACDIR)/kbd/sun3.cm \
X $(MACDIR)/mail.cm \
X $(MACDIR)/makeman.cm \
X $(MACDIR)/misc.cm \
X $(MACDIR)/options.cm \
X $(MACDIR)/region.cm \
X $(MACDIR)/regress.cm \
X $(MACDIR)/sdb.cm \
X $(MACDIR)/search.cm \
X $(MACDIR)/select.cm \
X $(MACDIR)/shell.cm \
X $(MACDIR)/startup.cm \
X $(MACDIR)/stest.cm \
X $(MACDIR)/tags.cm \
X $(MACDIR)/telnet.cm \
X $(MACDIR)/text.cm \
X $(MACDIR)/tty/at386.cm \
X $(MACDIR)/tty/dec.cm \
X $(MACDIR)/tty/ibm5081.cm \
X $(MACDIR)/tty/isc.cm \
X $(MACDIR)/tty/sun.cm \
X $(MACDIR)/tty/wyse50.cm \
X $(MACDIR)/tty/xenix.cm \
X $(MACDIR)/tty/xterm.cm \
X $(MACDIR)/tty/tty.cm \
X $(MACDIR)/unix.cm \
X $(MACDIR)/welcome.cm \
X $(MACDIR)/window.cm \
X $(MACDIR)/wp.cm
X
X
Xall: $(CM)
X @echo Macro binaries upto date.
X
Xdist:
X sccs update < /dev/null
Xdist-list:
X @echo $(SRC)
X$(MACDIR)/abbrev.cm: $(H) abbrev.m
X cm -o $(MACDIR)/abbrev.cm abbrev.m
X$(MACDIR)/ansi.cm: $(H) ansi.m
X cm -o $(MACDIR)/ansi.cm ansi.m
X$(MACDIR)/ascii.cm: $(H) ascii.m
X cm -o $(MACDIR)/ascii.cm ascii.m
X$(MACDIR)/autosave.cm: $(H) autosave.m
X cm -o $(MACDIR)/autosave.cm autosave.m
X$(MACDIR)/box.cm: $(H) box.m
X cm -o $(MACDIR)/box.cm box.m
X$(MACDIR)/brace.cm: $(H) brace.m
X cm -o $(MACDIR)/brace.cm brace.m
X$(MACDIR)/calc.cm: $(H) calc.m
X cm -o $(MACDIR)/calc.cm calc.m
X$(MACDIR)/compile.cm: $(H) compile.m
X cm -o $(MACDIR)/compile.cm compile.m
X$(MACDIR)/copyr.cm: $(H) copyr.m
X cm -o $(MACDIR)/copyr.cm copyr.m
X$(MACDIR)/core.cm: $(H) core.m
X cm -o $(MACDIR)/core.cm core.m
X$(MACDIR)/crisp.cm: $(H) crisp.m
X cm -o $(MACDIR)/crisp.cm crisp.m
X$(MACDIR)/dial.cm: $(H) dial.m
X cm -o $(MACDIR)/dial.cm dial.m
X$(MACDIR)/edt.cm: $(H) edt.m
X cm -o $(MACDIR)/edt.cm edt.m
X$(MACDIR)/features.cm: $(H) features.m
X cm -o $(MACDIR)/features.cm features.m
X$(MACDIR)/g_macros.cm: $(H) g_macros.m
X cm -o $(MACDIR)/g_macros.cm g_macros.m
X$(MACDIR)/g_vi.cm: $(H) g_vi.m
X cm -o $(MACDIR)/g_vi.cm g_vi.m
X$(MACDIR)/hanoi.cm: $(H) hanoi.m
X cm -o $(MACDIR)/hanoi.cm hanoi.m
X$(MACDIR)/help.cm: $(H) help.m
X cm -o $(MACDIR)/help.cm help.m
X$(MACDIR)/history.cm: $(H) history.m
X cm -o $(MACDIR)/history.cm history.m
X$(MACDIR)/kbd_help.cm: $(H) kbd_help.m
X cm -o $(MACDIR)/kbd_help.cm kbd_help.m
X$(MACDIR)/kbd/pc.cm: $(H) kbd/pc.m
X cm -o $(MACDIR)/kbd/pc.cm kbd/pc.m
X$(MACDIR)/kbd/sun3.cm: $(H) kbd/sun3.m
X cm -o $(MACDIR)/kbd/sun3.cm kbd/sun3.m
X$(MACDIR)/mail.cm: $(H) mail.m
X cm -o $(MACDIR)/mail.cm mail.m
X$(MACDIR)/makeman.cm: $(H) makeman.m
X cm -o $(MACDIR)/makeman.cm makeman.m
X$(MACDIR)/misc.cm: $(H) misc.m
X cm -o $(MACDIR)/misc.cm misc.m
X$(MACDIR)/options.cm: $(H) options.m
X cm -o $(MACDIR)/options.cm options.m
X$(MACDIR)/region.cm: $(H) region.m
X cm -o $(MACDIR)/region.cm region.m
X$(MACDIR)/regress.cm: $(H) regress.m
X cm -o $(MACDIR)/regress.cm regress.m
X$(MACDIR)/sdb.cm: $(H) sdb.m
X cm -o $(MACDIR)/sdb.cm sdb.m
X$(MACDIR)/search.cm: $(H) search.m
X cm -o $(MACDIR)/search.cm search.m
X$(MACDIR)/select.cm: $(H) select.m
X cm -o $(MACDIR)/select.cm select.m
X$(MACDIR)/shell.cm: $(H) shell.m
X cm -o $(MACDIR)/shell.cm shell.m
X$(MACDIR)/startup.cm: $(H) startup.m
X cm -o $(MACDIR)/startup.cm startup.m
X$(MACDIR)/stest.cm: $(H) stest.m
X cm -o $(MACDIR)/stest.cm stest.m
X$(MACDIR)/tags.cm: $(H) tags.m
X cm -o $(MACDIR)/tags.cm tags.m
X$(MACDIR)/telnet.cm: $(H) telnet.m
X cm -o $(MACDIR)/telnet.cm telnet.m
X$(MACDIR)/text.cm: $(H) text.m
X cm -o $(MACDIR)/text.cm text.m
X$(MACDIR)/tty/at386.cm: $(H) tty/at386.m
X cm -o $(MACDIR)/tty/at386.cm tty/at386.m
X$(MACDIR)/tty/dec.cm: $(H) tty/dec.m
X cm -o $(MACDIR)/tty/dec.cm tty/dec.m
X$(MACDIR)/tty/ibm5081.cm: $(H) tty/ibm5081.m
X cm -o $(MACDIR)/tty/ibm5081.cm tty/ibm5081.m
X$(MACDIR)/tty/isc.cm: $(H) tty/isc.m
X cm -o $(MACDIR)/tty/isc.cm tty/isc.m
X$(MACDIR)/tty/sun.cm: $(H) tty/sun.m
X cm -o $(MACDIR)/tty/sun.cm tty/sun.m
X$(MACDIR)/tty/wyse50.cm: $(H) tty/wyse50.m
X cm -o $(MACDIR)/tty/wyse50.cm tty/wyse50.m
X$(MACDIR)/tty/xenix.cm: $(H) tty/xenix.m
X cm -o $(MACDIR)/tty/xenix.cm tty/xenix.m
X$(MACDIR)/tty/xterm.cm: $(H) tty/xterm.m
X cm -o $(MACDIR)/tty/xterm.cm tty/xterm.m
X$(MACDIR)/tty/tty.cm: $(H) tty/tty.m
X cm -o $(MACDIR)/tty/tty.cm tty/tty.m
X$(MACDIR)/unix.cm: $(H) unix.m
X cm -o $(MACDIR)/unix.cm unix.m
X$(MACDIR)/welcome.cm: $(H) welcome.m
X cm -o $(MACDIR)/welcome.cm welcome.m
X$(MACDIR)/window.cm: $(H) window.m
X cm -o $(MACDIR)/window.cm window.m
X$(MACDIR)/wp.cm: $(H) wp.m
X cm -o $(MACDIR)/wp.cm wp.m
X
SHAR_EOF
chmod 0444 src/crisp/Makefile || echo "restore of src/crisp/Makefile fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/crisp.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/crisp.h &&
X/********************************************************************
X * *
X * CRISP - Custom Reduced Instruction Set Programmers Editor *
X * *
X * (C) Paul Fox, 1989 *
X * 43, Jerome Close Tel: +44 6284 4222 *
X * Marlow *
X * Bucks. *
X * England SL7 1TX *
X * *
X * *
X * Please See COPYRIGHT notice. *
X * *
X ********************************************************************/
X# define TRUE 1
X# define FALSE 0
X;*
X;* Buffer flags.
X;*
X# define BF_CHANGED 0x01
X# define BF_BACKUP 0x02
X# define BF_READONLY 0x04
X# define BF_READ 0x08
X# define BF_EXEC 0x10
X# define BF_PROCESS 0x20
X# define BF_BINARY 0x40
X# define BF_ANSI 0x80
X;*
X;* Region mark types.
X;*
X# define MK_NORMAL 1
X# define MK_COLUMN 2
X# define MK_LINE 3
X# define MK_NONINC 4
X;*
X;* Process flags.
X;*
X# define PF_ECHO 0x0001
X# define PF_NOINSERT 0x0002
X# define PF_WAIT 0x8000
X;*
X;* Fields for search & translate
X;*
X# define ST_GLOBAL 1
X# define ST_REGEXP 1
X# define ST_CASE 1
X# define ST_BLOCK 1
X;
X; Bits for file-selection. This may need changing
X; for different Unix systems.
X;
X# define S_IFDIR 0x4000
X# define S_IFREG 0x8000
X;
X; Registered macro types:
X# define REG_TYPED 0 // Character typed. */
X# define REG_EDIT 1 // Different file edited. */
X# define REG_ALT_H 2 // ALT-H pressed in response */
X // to a prompt. */
X# define REG_UNASSIGNED 3 // Unassigned key pressed. */
X# define REG_IDLE 4 // Idle time expired. */
X# define REG_EXIT 5 // About to exit. */
X# define REG_NEW 6 // New file edited and readin. */
X# define REG_CTRLC 7 // CTRL-C (SIGINT) pressed */
X // during macro execution. */
X# define REG_INVALID 8 // Invalid key pressed during */
X;
X; Flags for (select_buffer) macro.
X# define SEL_NORMAL 0 // Text is not centered.
X# define SEL_CENTER 1 // Text is centered.
SHAR_EOF
chmod 0444 src/crisp/crisp.h || echo "restore of src/crisp/crisp.h fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/welcome.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/welcome.h &&
X
X
X Welcome to CRISP v1.6
X =====================
X
XLatest news:
X
X - Use <Alt-F> to gain access to new features via
X menus.
SHAR_EOF
chmod 0444 src/crisp/welcome.h || echo "restore of src/crisp/welcome.h fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/abbrev.m (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/abbrev.m &&
X/********************************************************************
X * *
X * CRISP - Custom Reduced Instruction Set Programmers Editor *
X * *
X * (C) Paul Fox, 1989 *
X * 43, Jerome Close Tel: +44 6284 4222 *
X * Marlow *
X * Bucks. *
X * England SL7 1TX *
X * *
X * *
X * Please See COPYRIGHT notice. *
X * *
X ********************************************************************/
X# include "crisp.h"
X
X(macro _init
X (
X (list abbrev_list)
X (global abbrev_list)
X
X (= abbrev_list (quote_list
X "Edit file:" "abbrev_file"
X "File to read:" "abbrev_file"
X ))
X (autoload "select" "window_offset")
X )
X)
X(macro abbreviate
X (
X (string word
X prompt
X cmd)
X (int len
X n
X ret
X match_count)
X (list cmd_list
X match_list)
X
X (get_parm 0 word)
X (get_parm 1 prompt)
X
X (= n (index prompt ":"))
X (if (> n 0) (
X (= prompt (substr prompt 1 n))
X (if (>= (= n (search_list 0 prompt abbrev_list)) 0) (
X (return (execute_macro (nth (+ n 1) abbrev_list) word))
X ))
X ))
X
X (= len (strlen word))
X (if (== len 0) (
X (beep)
X (return "")))
X
X (= match_count -1)
X (= word (+ "<" word))
X
X (= cmd_list (command_list))
X (= n (search_list 0 word cmd_list ST_REGEXP ST_CASE))
X (while (>= n 0) (
X (++ match_count)
X (put_nth match_count match_list (nth n cmd_list))
X (= n (search_list (+ n 1) word cmd_list ST_REGEXP ST_CASE))
X ))
X
X (if (< match_count 0) (
X (beep)
X (return "")))
X
X (if (== match_count 0)
X (= ret 0)
X ;else
X (
X (= ret (select_list "Abbreviations" "" 1 match_list TRUE
X "help_display \"features/Abbrev.hlp\" \"Help on Abbreviations\""
X ))
X (refresh)
X ))
X (if (< ret 0) (
X (beep)
X (return "")))
X (return (nth (- ret 1) match_list))
X )
X)
X(macro abbrev_file
X (
X (string file)
X (get_parm 0 file)
X (return (select_file file))
X )
X)
X
SHAR_EOF
chmod 0444 src/crisp/abbrev.m || echo "restore of src/crisp/abbrev.m fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/ansi.m (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/ansi.m &&
X/********************************************************************
X * *
X * CRISP - Custom Reduced Instruction Set Programmers Editor *
X * *
X * (C) Paul Fox, 1989 *
X * 43, Jerome Close Tel: +44 6284 4222 *
X * Marlow *
X * Bucks. *
X * England SL7 1TX *
X * *
X * *
X * Please See COPYRIGHT notice. *
X * *
X ********************************************************************/
X(macro ansi
X (
X (assign_to_key "<Ctrl-A>" "mark 1")
X (assign_to_key "<Ctrl-B>" "buffer_list 1")
X (assign_to_key "<Ctrl-C>" "mark 2")
X (assign_to_key "<Ctrl-D>" "delete_line")
X (assign_to_key "<Ctrl-E>" "edit_file")
X (assign_to_key "<Ctrl-F>" "display_file_name")
X (assign_to_key "<Ctrl-G>" "goto_line")
X (assign_to_key "<Ctrl-H>" "backspace")
X (assign_to_key "<Ctrl-I>" "self_insert")
X (assign_to_key "<Ctrl-J>" "open_line")
X (assign_to_key "<Ctrl-K>" "delete_to_eol")
X (assign_to_key "<Ctrl-L>" "mark 3")
X (assign_to_key "<Ctrl-M>" "self_insert")
X (assign_to_key "<Ctrl-N>" "edit_next_buffer")
X (assign_to_key "<Ctrl-O>" "output_file")
X (assign_to_key "<Ctrl-P>" "edit_prev_buffer")
X (assign_to_key "<Ctrl-Q>" "quote")
X (assign_to_key "<Ctrl-R>" "read_file")
X (assign_to_key "<Ctrl-S>" "search_fwd")
X (assign_to_key "<Ctrl-T>" "translate")
X (assign_to_key "<Ctrl-U>" "undo")
X (assign_to_key "^V^B" "set_bottom_of_window")
X (assign_to_key "^V^C" "set_center_of_window")
X (assign_to_key "^V^D" "page_down")
X (assign_to_key "^V^G" "objects routines")
X (assign_to_key "^V^H" "help")
X (assign_to_key "^V^J" "goto_bookmark")
X (assign_to_key "^V^K" "objects delete_word_left")
X (assign_to_key "^V^L" "objects delete_word_right")
X (assign_to_key "^V^N" "next_error")
X (assign_to_key "^V^P" "next_error 1")
X (assign_to_key "^V^R" "repeat")
X (assign_to_key "^V^T" "set_top_of_window")
X (assign_to_key "^V^U" "page_up")
X (assign_to_key "^V^V" "version")
X (assign_to_key "^V^W" "set_backup")
X (assign_to_key "<Ctrl-W>" "write_buffer")
X (assign_to_key "<Ctrl-X>" "exit")
X (assign_to_key "<Ctrl-Y>" "self_insert")
X (assign_to_key "<Ctrl-Z>" "dos")
X )
X)
SHAR_EOF
chmod 0444 src/crisp/ansi.m || echo "restore of src/crisp/ansi.m fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/ascii.m (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/ascii.m &&
X/********************************************************************
X * *
X * CRISP - Custom Reduced Instruction Set Programmers Editor *
X * *
X * (C) Paul Fox, 1989 *
X * 43, Jerome Close Tel: +44 6284 4222 *
X * Marlow *
X * Bucks. *
X * England SL7 1TX *
X * *
X * *
X * Please See COPYRIGHT notice. *
X * *
X ********************************************************************/
X//
X// Display an ASCII chart.
X//
X(macro ascii
X (
X (select_list "ASCII Chart" "" 3 (quote_list
X "Hex Chart" "ascii_chart 16"
X "help_display \"features/Ascii.hlp\" \"Hex ASCII Chart\""
X "Octal Chart" "ascii_chart 8"
X "help_display \"features/Ascii.hlp\" \"Octal ASCII Chart\""
X "Decimal Chart" "ascii_chart 10"
X "help_display \"features/Ascii.hlp\" \"Decimal ASCII Chart\""
X ) 2)
X )
X)
X(macro ascii_chart
X (
X (int radix
X buf
X win
X curbuf
X curwin
X ch)
X (list l)
X (string name fmt str)
X
X (get_parm 0 radix)
X (= curbuf (inq_buffer))
X (= curwin (inq_window))
X
X (= fmt (switch radix
X 8 "%03d"
X 10 "%3d"
X 16 "%02x"))
X
X (sprintf name "%s Ascii Chart" (if (== radix 16) "Hex"
X (if (== radix 10) "Decimal" "Octal")))
X (= buf (create_buffer "Ascii Chart" NULL 1))
X (set_buffer buf)
X (= l (quote_list
X "NUL" "SOH" "STX" "ETX" "EOT" "ENQ" "ACK" "BEL"
X "BS " "HT " "NL " "VT " "NP " "CR " "SO " "SI "
X "DLE" "DC1" "DC2" "DC3" "DC4" "NAK" "SYN" "ETB"
X "CAN" "EM " "SUB" "ESC" "FS " "GS " "RS " "US "))
X (= ch 0)
X (while (< ch ' ') (
X (sprintf str fmt ch)
X (insert str)
X (insert " ")
X (insert (nth ch l))
X (insert "| ")
X (if (== (& ch 7) 7)
X (insert "\n"))
X (++ ch)
X ))
X (while (< ch 0x80) (
X (if (== ch '%')
X (sprintf str (+ fmt " %% | ") ch)
X ;else
X (sprintf str (+ fmt " %c | ") ch ch)
X )
X (insert str)
X (if (== (& ch 7) 7)
X (insert "\n"))
X (++ ch)
X ))
X (= win (sized_window 17
X (switch radix
X 8 71
X 10 71
X 16 63
X ) ""))
X (select_buffer buf win)
X (delete_buffer buf)
X (set_buffer curbuf)
X (set_window curwin)
X (attach_buffer curbuf)
X )
X)
SHAR_EOF
chmod 0444 src/crisp/ascii.m || echo "restore of src/crisp/ascii.m fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/autosave.m (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/autosave.m &&
X/********************************************************************
X * *
X * CRISP - Custom Reduced Instruction Set Programmers Editor *
X * *
X * (C) Paul Fox, 1989 *
X * 43, Jerome Close Tel: +44 6284 4222 *
X * Marlow *
X * Bucks. *
X * England SL7 1TX *
X * *
X * *
X * Please See COPYRIGHT notice. *
X * *
X ********************************************************************/
X# include "crisp.h"
X
X(macro _init
X (
X (list asv_list ;* List of file-names of auto-saved
X ;* files, which need to be deleted when
X ;* we exit.
X asvd_list) ;* List of files which dont want to be
X ;* autosaved.
X (int asv_len asv_idle_time asvd_len)
X (string asv_prefix ;* Filename prefix -- O/S dependent.
X asv_suffix) ;* Filename suffix.
X (global asv_list asv_len asv_idle_time asvd_list asvd_len
X asv_prefix asv_suffix)
X
X (= asv_len 0)
X (switch CRISP_OPSYS
X "VMS" (
X (= asv_prefix "ASV-")
X (= asv_suffix "")
X )
X "UNIX" (
X (= asv_prefix "@")
X (= asv_suffix "@")
X )
X )
X )
X)
X(macro autosave
X (
X (register_macro 4 "autosave_files")
X (register_macro 5 "autosave_exit")
X )
X)
X(macro autosave_disable
X (
X (string filename)
X
X (get_parm 0 filename)
X (put_nth asvd_len asvd_list filename)
X (++ asvd_len)
X )
X)
X(macro autosave_files
X (
X (int curbuf
X slash
X n
X num_written
X h m s
X time_now
X time_since_last
X nextbuf)
X (string filename afile bufnam)
X
X ;*
X ;* Check to see if user has typed anything recently.
X ;*
X (if (< (inq_idle_time) (inq_idle_default))
X (return))
X ;*
X ;* Check to see if its at least idle time since last
X ;* key press.
X ;*
X (time h m s)
X (= time_now (+ (* (+ (* 60 h) m) 60) s))
X (= time_since_last (- time_now asv_idle_time))
X (if (< time_since_last (inq_idle_default))
X (return))
X (= asv_idle_time time_now)
X
X
X (= curbuf (inq_buffer))
X (save_position)
X
X (= num_written 0)
X (while 1 (
X (= nextbuf (next_buffer))
X (set_buffer nextbuf)
X ;*
X ;* Write buffer away if its been modified.
X ;*
X (if (inq_modified) (
X ;*
X ;* Check to see if file occurs in disabled
X ;* list.
X ;*
X (inq_names filename NULL bufnam)
X (= n 0)
X (while (< n asvd_len) (
X (if (== filename (nth n asvd_list))
X (break))
X (++ n)
X ))
X (if (>= n asvd_len) (
X ;*
X ;* Create a file-name for autosaving into.
X ;*
X (= slash (rindex filename CRISP_SLASH))
X (= filename (+ (substr filename 1 slash)
X (+ asv_prefix (substr filename (+ slash 1)))))
X (+= filename asv_suffix)
X (message "Autosave %s." bufnam)
X (++ num_written)
X ;*
X ;* Delete file we are gonna write first -- this
X ;* ensures under VMS that we dont end up with a million
X ;* and one versions of the autosave file.
X ;*
X (del filename)
X (write_buffer filename)
X ;*
X ;* Check to see if entry occurs in asv list. If not
X ;* add it. (So we can delete file on exit).
X ;*
X (= n 0)
X (while (< n asv_len) (
X (= afile (nth n asv_list))
X (if (== filename afile)
X (break))
X (++ n)
X ))
X (if (>= n asv_len) (
X (put_nth asv_len asv_list filename)
X (++ asv_len)
X ))
X ))
X ))
X (if (== nextbuf curbuf)
X (break))
X ))
X
X (set_buffer curbuf)
X (restore_position)
X (if num_written
X (message "Autosave complete."))
X )
X)
X;*
X;* This macro is called when we are about to exit. It is
X;* responsible for deleting any of the @ files we may have
X;* accumulated.
X;*
X(macro autosave_exit
X (
X (int n)
X (string afile)
X
X (= n 0)
X (while (< n asv_len) (
X (del (nth n asv_list))
X (++ n)
X ))
X )
X)
SHAR_EOF
chmod 0444 src/crisp/autosave.m || echo "restore of src/crisp/autosave.m fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/box.m (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/box.m &&
X/*
X/* Macros to help in drawing diagrams.
X/**/
X(macro x
X (box 8 4)
X)
X(macro box
X (
X (int length height i line col)
X (get_parm 0 length)
X (get_parm 1 height)
X (insert_mode)
X
X (inq_position line col)
X (self_insert '+')
X (= i 0)
X (while (< i length) (
X (self_insert '-')
X (++ i)))
X (self_insert '+')
X (= i 0)
X (while (< i height) (
X (down)
X (left)
X (self_insert '|')
X (++ i)))
X (move_abs (+ line 1) col)
X (message "line=%d col=%d" line col)
X (= i 1)
X (while (< i height) (
X (self_insert '|')
X (down)
X (left)
X (++ i)))
X (move_abs (+ line height) col)
X (self_insert '+')
X (= i 0)
X (while (< i length) (
X (self_insert '-')
X (++ i)))
X (self_insert '+')
X (insert_mode)
X )
X)
SHAR_EOF
chmod 0444 src/crisp/box.m || echo "restore of src/crisp/box.m fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/brace.m (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/brace.m &&
X/********************************************************************
X * *
X * CRISP - Custom Reduced Instruction Set Programmers Editor *
X * *
X * (C) Paul Fox, 1989 *
X * 43, Jerome Close Tel: +44 6284 4222 *
X * Marlow *
X * Bucks. *
X * England SL7 1TX *
X * *
X * *
X * Please See COPYRIGHT notice. *
X * *
X ********************************************************************/
X# include "crisp.h"
X
X# define BRACKETS "[](){}"
X(macro brace
X (
X (string bracket mbracket search move_char s s1)
X (int br_level i incr fwd)
X
X (save_position)
X (= bracket (read 1))
X (if (== (index bracket BRACKETS) 0) (
X (if (<= (search_fwd "[()[\\]{}]") 0) (
X (beep)
X (return)))
X (= bracket (read 1))
X ))
X (message "Locating matching bracket...")
X (= i (- (index BRACKETS bracket) 1))
X (= fwd (& i 1))
X (= incr (if fwd 1 -1))
X (= i (+ (* i 2) 1))
X (= mbracket (substr "[][]()(){}{}" i 2))
X (= s (+ "[" (+ (quote_regexp mbracket) "]")))
X (= br_level 1)
X (= s1 (substr mbracket 1 1))
X
X (while (> br_level 0) (
X (if fwd (
X (prev_char)
X (if (<= (search_back s ST_REGEXP) 0)
X (break))
X )
X ;else
X (
X (next_char)
X (if (<= (search_fwd s ST_REGEXP) 0)
X (break))
X ))
X (if (== (read 1) s1)
X (-= br_level incr)
X ;else
X (+= br_level incr)
X )
X ))
X (if br_level (
X (error "Matching %s not found." mbracket)
X (restore_position)
X (beep)
X (return)))
X (restore_position 0)
X (message "")
X
X )
X)
SHAR_EOF
chmod 0444 src/crisp/brace.m || echo "restore of src/crisp/brace.m fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/calc.m (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/calc.m &&
X/********************************************************************
X * *
X * CRISP - Custom Reduced Instruction Set Programmers Editor *
X * *
X * (C) Paul Fox, 1989 *
X * 43, Jerome Close Tel: +44 6284 4222 *
X * Marlow *
X * Bucks. *
X * England SL7 1TX *
X * *
X * *
X * Please See COPYRIGHT notice. *
X * *
X ********************************************************************/
X# include "crisp.h"
X
X//
X// A simple calculator useful for doing number base conversions.
X//
X# define OP_STATE 1 // User just typed an operator.
X# define NUM_STATE 2 // User is typing a number.
X# define EQ_STATE 3 // User just typed an =
X(macro _init
X (
X (list mem)
X (= mem (quote_list 0 0 0 0 0 0 0 0 0 0))
X )
X)
X(macro calc
X (
X (int curbuf
X curwin
X buf
X win
X accumulator
X yaccumulator
X number
X radix
X calc_state
X )
X (string op)
X
X (= radix 10)
X (= op "+")
X (= yaccumulator 0)
X (= calc_state OP_STATE)
X
X (= curbuf (inq_buffer))
X (= curwin (inq_window))
X (= buf (create_buffer "Calculator" NULL 1))
X (= win (sized_window 11 23 "<Alt-H> for Help"))
X (set_window win)
X (set_buffer buf)
X (attach_buffer buf)
X
X (insert "\n")
X (insert "-------------------------\n")
X (insert "Hex | Oct | Dec | rec\n")
X (insert "Not | And | oR | sto\n")
X (insert " a | b | c | \n")
X (insert " d | e | f | %\n")
X (insert " 9 | 8 | 7 | /\n")
X (insert " 6 | 5 | 4 | *\n")
X (insert " 3 | 2 | 1 | -\n")
X (insert " 0 | = | Sign| +\n")
X (top_of_buffer)
X
X (keyboard_push)
X (keyboard_typeables)
X (assign_to_key "<Esc>" "exit")
X (assign_to_key "D" "calc_radix 10")
X (assign_to_key "r" (quote_list (
X (int i)
X (message "Recall Memory - type a digit.")
X (while (== (= i (read_char)) -1)
X (continue))
X (if (&& (>= i '0') (<= i '9')) (
X (= accumulator (nth (- i '0') mem))
X (calc_display_acc)))
X (message "")
X )))
X (assign_to_key "s" (quote_list (
X (int i)
X (message "Store in Memory - type a digit.")
X (while (== (= i (read_char)) -1)
X (continue))
X (if (&& (>= i '0') (<= i '9')) (
X (-= i '0')
X (put_nth i mem accumulator)
X (message "%d stored in MEM%d" accumulator i)
X ))
X )))
X (assign_to_key "H" "calc_radix 16")
X (assign_to_key "N" (quote_list (
X (= accumulator (~ accumulator))
X (calc_display_acc)
X )))
X (assign_to_key "O" "calc_radix 8")
X (assign_to_key "S" (quote_list (
X (= accumulator (- 0 accumulator))
X (calc_display_acc)
X )))
X (assign_to_key "<Alt-H>" "help_display \"features/Calc.hlp\" \"Help for the Calculator\"")
X (register_macro REG_TYPED "calc_typed")
X (calc_display_acc)
X (+= window_offset 9)
X (+= top_line 2)
X (process)
X (-= window_offset 9)
X (-= top_line 2)
X (keyboard_pop)
X (unregister_macro REG_TYPED "calc_typed")
X
X (delete_buffer buf)
X (delete_window)
X
X (set_buffer curbuf)
X (set_window curwin)
X (attach_buffer curbuf)
X (refresh)
X )
X)
X(macro calc_radix
X (
X (get_parm 0 radix)
X (= calc_state OP_STATE)
X (calc_display_acc)
X )
X)
X(macro calc_display_acc
X (
X (string str)
X
X (top_of_buffer)
X (delete_to_eol)
X (switch radix
X 8 (sprintf str "OCT %14o" accumulator)
X 10 (sprintf str "DEC %14d" accumulator)
X 16 (sprintf str "HEX %14x" accumulator)
X )
X (insert str)
X )
X)
X(macro calc_typed
X (
X (string char str)
X (int i)
X
X (prev_char)
X (= char (read 1))
X (delete_char)
X
X (if (index "0123456789abcdef" char) (
X (switch calc_state
X OP_STATE (= accumulator 0)
X EQ_STATE (
X (= yaccumulator 0)
X (= accumulator 0)
X )
X )
X (if (index "abcdef" char)
X (sprintf char "%d" (+ 9 (index "abcdef" char))))
X (= accumulator (+ (* accumulator radix) (atoi char)))
X (calc_display_acc)
X (= calc_state NUM_STATE)
X (return)
X ))
X (if (index "+-*/%ARX=" char) (
X (int old_acc)
X (= old_acc accumulator)
X// (message "x=%d y=%d op=%s" accumulator yaccumulator op)
X (switch op
X "+" (= accumulator (+ yaccumulator accumulator))
X "-" (= accumulator (- yaccumulator accumulator))
X "*" (= accumulator (* yaccumulator accumulator))
X "/" (= accumulator (/ yaccumulator accumulator))
X "%" (= accumulator (% yaccumulator accumulator))
X "A" (= accumulator (& yaccumulator accumulator))
X "R" (= accumulator (| yaccumulator accumulator))
X "X" (= accumulator (^ yaccumulator accumulator))
X )
X (calc_display_acc)
X (= yaccumulator accumulator)
X (= accumulator old_acc)
X (if (== char "=")
X (= calc_state EQ_STATE)
X ;else
X (
X (= calc_state OP_STATE)
X (= op char)
X ))
X (return)
X ))
X (= i (atoi char 0))
X (switch (int_to_key i)
X "<Backspace>" (
X (backspace)
X (beginning_of_line)
X (right 3)
X (search_fwd "[~ ]")
X (= str (trim (read)))
X (= accumulator (atoi str))
X (calc_display_acc)
X (return)
X )
X )
X )
X)
SHAR_EOF
chmod 0444 src/crisp/calc.m || echo "restore of src/crisp/calc.m fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/compile.m (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/compile.m &&
X/********************************************************************
X * *
X * CRISP - Custom Reduced Instruction Set Programmers Editor *
X * *
X * (C) Paul Fox, 1989 *
X * 43, Jerome Close Tel: +44 6284 4222 *
X * Marlow *
X * Bucks. *
X * England SL7 1TX *
X * *
X * *
X * Please See COPYRIGHT notice. *
X * *
X ********************************************************************/
X# include "crisp.h"
X
X# define TRUE 1
X# define FALSE 0
X
X(macro _init
X (
X (int compile_buf ;* Buffer containing result of last
X ;* make/compilation.
X err_line_no ;* Line we are currently on in error file.
X )
X (string compile_filename)
X (global compile_buf err_line_no compile_filename)
X
X (= compile_buf (create_buffer "Compilation-Buffer" NULL 0))
X (= err_line_no 1)
X )
X)
X(macro cm
X (
X (string filename)
X
X (if (inq_modified)
X (write_buffer))
X (inq_names filename)
X
X (if (> (load_macro filename) 0)
X (message "Macro successfully loaded."))
X )
X)
X(macro make
X (
X (string arg
X space)
X (int curwin
X curbuf
X win
X wait_stat
X line col
X )
X
X (get_parm 0 arg)
X (= err_line_no 1)
X
X (= curwin (inq_window))
X (= curbuf (inq_buffer))
X (= win (sized_window 12 60 ""))
X (set_window win)
X (set_buffer compile_buf)
X (clear_buffer)
X (attach_buffer compile_buf)
X
X (connect 0x8001 "/bin/sh")
X (refresh)
X (wait_for 10 "\$") ;"<*[%$:>]")
X (insert (+ "exec make " (+ arg "\n")))
X (inq_position line col)
X (set_process_position line col)
X (insert_process (+ "exec make " (+ arg "\n")))
X (refresh)
X ;*
X ;* Wait for process to die.
X ;*
X (wait wait_stat)
X ;*
X ;* Tidy windows & buffers up.
X ;*
X (delete_window)
X (set_buffer curbuf)
X (set_window curwin)
X ;*
X ;* If any errors occured, display first one screen.
X ;*
X (assign_to_key "<Ctrl-N>" "default-next_error")
X (assign_to_key "<Ctrl-P>" "default-prev_error")
X (if wait_stat
X (default-next_error)
X ;else
X (message "Make completed successfully.")
X )
X )
X)
X;*
X;* Object routines for finding errors.
X;*
X(macro default-next_error
X (
X (next_error
X"<{\"*\", line [0-9]+:}|{*:[ \t]*[0-9]+:[ \t]}|{*([0-9]+):}"
X;*
X;*
X (quote_list
X("<\"\\c[^():,\"]+\"" 1 "[0-9]+:" 1) ;* PCC: "fred.c", line 49: ...
X("<[^():]+:" 1 "[0-9]+:" 1) ;* cpp: fred.c: 49: ...
X("<[^(]+(" 1 "[0-9]+):" 2) ;* SUNOS lint: fred.c(49): ...
X ))
X )
X)
X;*
X;* lint macro. This macro expects there to be a makefile entry for
X;* lint, so that we can automatically generate the output via a
X;* 'make lint'. The output is then massaged so that the output from
X;* lint looks like the normal C compiler error messages, which allows
X;* the display error macro to then be used to skip from one error to
X;* the next.
X;*
X(macro lint
X (
X (string filename
X warning)
X (int line)
X
X //
X // Do a make lint.
X //
X (make "lint")
X
X (set_buffer compile_buf)
X
X //
X // Convert all lines of the form:
X // (28) (31) (45) ...
X // have each '(..)' start on a separate line so we
X // can then prefix each line with the file name.
X //
X (message "Putting errors in separate lines.")
X (top_of_buffer)
X (while (> (search_fwd "^[ \t]+([0-9]+) \t") 0) (
X (drop_anchor MK_LINE)
X (translate ")" ")\n" 1 NULL NULL 1)
X (raise_anchor)
X (delete_line)
X ))
X //
X // Now take lines of the form:
X // alarm llib-lc(15) :: clock.c(45)
X // and move the file-name/line-no to the start of the line,
X // append the lint error occuring before this block.
X //
X (message "Massaging lint summary errors.")
X (top_of_buffer)
X (while (> (search_fwd " :: ") 0) (
X (up)
X (beginning_of_line)
X (= warning (trim (read)))
X (down)
X (while (== (read 1) " ") (
X (translate "{<*}\t*:: {*$}" "\\1: \\0 - " 0)
X (end_of_line)
X (insert warning)
X (next_char)
X ))
X ))
X //
X // Delete all leading spaces/tabs
X //
X (message "Removing leading white space.")
X (top_of_buffer)
X (translate "^[ \t]+" "" 1 -1)
X //
X // Now suffix all of the above lines [ (..) ] with the
X // warning message that preceeds them.
X //
X (message "Putting error messages on each line.")
X (top_of_buffer)
X (while (> (search_fwd "^warning") 0) (
X (= warning (trim (read)))
X //
X // Look at following lines for lines beginning with '('
X //
X (down)
X (while (== (read 1) "(") (
X (end_of_line)
X (insert warning)
X (beginning_of_line)
X (down)
X ))
X ))
X //
X // Ensure all lines with errors/warnings put the filename
X // at the beginning of the line.
X //
X (message "Making errors into a normalised format.")
X (top_of_buffer)
X (while (> (search_fwd "^==============$") 0) (
X (up)
X (= filename (trim (ltrim (compress (read)))))
X (move_rel 2 0)
X (if (index filename " ")
X (= filename (substr filename 1 (- (index filename " ") 1))))
X (save_position)
X (drop_anchor MK_LINE)
X (if (<= (search_fwd "^==============$") 0)
X (end_of_buffer))
X (translate "<{([0-9]+)}" (+ filename "\\0:") 1 1 NULL 1)
X (raise_anchor)
X (restore_position)
X ))
X //
X // Trim down some of the error messages.
X //
X (message "Tidying errors up.")
X (top_of_buffer)
X (translate "( number ) " "" 1 -1)
X (top_of_buffer)
X (translate "( arg {[0-9]} )" "(\\0)" 1 -1)
X //
X // Display first error.
X //
X (= err_line_no 1)
X (default-next_error)
X )
X)
X(macro next_error
X (
X (list token_list)
X (string regexp)
X
X (get_parm 0 regexp)
X (get_parm 1 token_list)
X
X (display_error regexp token_list)
X )
X)
X(macro display_error
X (
X (string regexp
X filename_pat
X line_no_pat
X line)
X (int curbuf
X filename_trail
X line_no_trail
X line_no
X length
X n
X offset)
X (list token_list re_list)
X (declare cs_macro) ;* Context-sensitive callback macro.
X
X (= curbuf (inq_buffer))
X (set_buffer compile_buf)
X (get_parm 0 regexp)
X (get_parm 1 token_list)
X
X
X (goto_line err_line_no)
X (if (<= (search_fwd regexp) 0) (
X (= err_line_no 1)
X (message "No more errors.")
X (set_buffer curbuf)
X (return)
X ))
X (inq_position err_line_no)
X (++ err_line_no)
X
X (beginning_of_line)
X (= line (trim (ltrim (compress (read)))))
X
X ;*
X ;* Scan token_list trying to find an entry which matches the
X ;* filename.
X ;*
X (= n 0)
X (= offset -1)
X (while (< n (length_of_list token_list)) (
X (= re_list (nth n token_list))
X (= filename_pat (nth 0 re_list))
X (= filename_trail (nth 1 re_list))
X (= line_no_pat (nth 2 re_list))
X (= line_no_trail (nth 3 re_list))
X (= offset (search_string filename_pat line length))
X (++ n)
X (if (> offset 0)
X (break))
X ))
X (set_buffer curbuf)
X ;*
X ;* Extract file-name.
X ;*
X (if (>= filename_trail 0) (
X (if (<= offset 0) (
X (error "Couldn't locate file-name")
X (return)))
X (= compile_filename (substr line offset (- length filename_trail)))
X ))
X
X ;*
X ;* Extract line number.
X ;*
X (= offset (search_string line_no_pat line length))
X (if (<= offset 0) (
X (error "Couldn't locate line_no")
X (return)))
X
X (= line_no (atoi (substr line offset (- length line_no_trail))))
X
X ;*
X ;* Trim off filename & line no at start of line.
X ;*
X (= line (substr line (+ offset length)))
X
X ;*
X ;* Goto specified file & line no.
X ;*
X (if (! (exist compile_filename)) (
X (error "%s: %s" compile_filename (ltrim line))
X (return)
X ))
X (edit_file compile_filename)
X (goto_old_line line_no)
X
X ;*
X ;* Now display error -- this ensures that error appears
X ;* last on the display, rather than any filename stuff
X ;* generated by the (edit_file) macro above.
X (error "%s" (ltrim line))
X
X )
X)
SHAR_EOF
chmod 0444 src/crisp/compile.m || echo "restore of src/crisp/compile.m fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/copyr.m (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/copyr.m &&
X/********************************************************************
X * *
X * CRISP - Custom Reduced Instruction Set Programmers Editor *
X * *
X * (C) Paul Fox, 1989 *
X * 43, Jerome Close Tel: +44 6284 4222 *
X * Marlow *
X * Bucks. *
X * England SL7 1TX *
X * *
X * *
X * Please See COPYRIGHT notice. *
X * *
X ********************************************************************/
X(macro copyr
X (
X (int old_insert_mode i line column)
X (= old_insert_mode ( insert_mode 1 ) )
X (inq_position line column)
X (string ok file_name ext description)
X (top_of_buffer)
X (refresh)
X (if (> (search_fwd "Copyright ") 0) (
X (top_of_buffer)
X (drop_anchor 3)
X (search_fwd "< \\*\\*")
X (refresh)
X (get_parm NULL ok "OK to delete marked region (y/n) ? ")
X (if (== ok "y")
X (delete_block)
X ;else
X (
X (raise_anchor)
X (refresh)
X ( insert_mode old_insert_mode )
X (return)
X )
X )
X )
X )
X (inq_names NULL ext file_name)
X (= file_name (substr file_name (+ (rindex file_name "/") 1)))
X (insert "/************************************************************************\n")
X (insert " * *\n")
X (insert " * Program: fn *\n")
X (up)
X (search_fwd "fn")
X (= i ( strlen file_name ) )
X (while ( > i 0 )
X (
X (delete_char)
X (-- i)
X )
X )
X (insert file_name)
X (down)
X (beginning_of_line)
X (insert " * *\n")
X (insert " *----------------------------------------------------------------------*\n")
X (insert " * Description: mcm *\n")
X (insert " * *\n")
X (insert " *----------------------------------------------------------------------*\n")
X (insert " * Copyright (c) 1989 Reuters Ltd. *\n")
X (insert " * *\n")
X (insert " * CONFIDENTIAL INFORMATION OF REUTERS *\n")
X (insert " * *\n")
X (insert " * *\n")
X (insert " * This program must not be copied or its contents disclosed *\n")
X (insert " * without the written approval of the originator. It must not *\n")
X (insert " * be copied in any electronic form, or distributed in printed *\n")
X (insert " * form to anybody without the permission of the above author. *\n")
X (insert " * Failure to comply will be dealt with by the Disciplinary *\n")
X (insert " * Procedure. *\n")
X (insert " * *\n")
X (insert " ************************************************************************/\n")
X (insert "\n")
X;
X; Look for SCCS string and modify it if necessary
X;
X (if (> (search_fwd "{SCCS}|{sccs}|{\\@(#)}") 0)
X (nothing)
X (if (== ext "h")
X (insert "/* SCCS ID: %Z% %M% %R%.%L% */\n")
X (insert "static char sccs_id[] = \"%Z% %M% %R%.%L%\";\n\n")
X )
X )
X (goto_line 1)
X (search_fwd "mcm")
X (get_parm 0 description "Enter description: " 50)
X (= i ( strlen description ) )
X (while ( > i 0 )
X (
X (delete_char)
X (-- i)
X )
X )
X (insert description)
X (insert_mode old_insert_mode)
X (goto_old_line line)
X (beginning_of_line)
X (move_rel 0 column)
X )
X)
X
X
X(macro revision
X (
X (int year month day i)
X (string date_string initials comment ok)
X (top_of_buffer)
X (if (<= (search_fwd "Copyright ") 0)
X (
X (get_parm NULL ok "Generate copyright notice (y/n) ? ")
X (if (!= ok "y")
X (
X (return -1)
X )
X )
X (copyr)
X )
X )
X (top_of_buffer)
X (if (<= (search_fwd "Revision") 0)
X (
X (get_parm NULL ok "Generate revision history (y/n) ? ")
X (if (!= ok "y")
X (
X (return -1)
X )
X )
X (search_fwd "{SCCS}|{sccs}|{\\@(#)}")
X (end_of_line)
X (insert "\n\n/\* Revision History\n \* ================\n \*\n \*/\n")
X (search_back "Revision")
X )
X )
X (search_fwd "\*/")
X (move_rel -1)
X (end_of_line)
X (date year month day)
X (sprintf date_string "\n * %d-%d-%d" day month year)
X (insert date_string)
X (= i ( - 17 ( strlen date_string ) ) )
X (while ( > i 0 )
X (
X (insert " ")
X (-- i)
X )
X )
X (get_parm 0 initials "Enter your initials: " 6)
X (insert initials)
X (= i ( - 8 ( strlen initials ) ) )
X (while ( > i 0 )
X (
X (insert " ")
X (-- i)
X )
X )
X (insert ": ")
X (get_parm 0 comment "Enter comment: " 40)
X (insert comment)
X )
X)
X
SHAR_EOF
chmod 0644 src/crisp/copyr.m || echo "restore of src/crisp/copyr.m fails"
mkdir src src/crisp >/dev/null 2>&1
echo "x - extracting src/crisp/core.m (Text)"
sed 's/^X//' << 'SHAR_EOF' > src/crisp/core.m &&
X/********************************************************************
X * *
X * CRISP - Custom Reduced Instruction Set Programmers Editor *
X * *
X * (C) Paul Fox, 1989 *
X * 43, Jerome Close Tel: +44 6284 4222 *
X * Marlow *
SHAR_EOF
echo "End of part 1"
echo "File src/crisp/core.m is continued in part 2"
echo "2" > s2_seq_.tmp
exit 0
--
===================== Reuters Ltd PLC,
Tel: +44 628 891313 x. 212 Westthorpe House,
UUCP: fox%marlow.uucp at idec.stc.co.uk Little Marlow,
Bucks, England SL7 3RQ
More information about the Comp.sources.misc
mailing list