1;; macros to go with oemacs
2
3; suntool-map is the map for "\C-x*", the oemacs prefix for function keys
4; commented-out lines agree with the settings in $(EMACS)/lisp/term/sun.el
5
6(setq suntool-map-hooks '(			; not your usual hook list
7; (define-key suntool-map "al" 'keyboard-quit)		; Stop
8; (define-key suntool-map "bl" 'redraw-display)		; Again	L2
9; (define-key suntool-map "b\M-l" 'repeat-complex-command); M-Again = C-X ESC
10; (define-key repeat-complex-command-map "\C-x*b\M-l"
11;                   'previous-complex-command)		; M-Again M-Again...
12  (define-key suntool-map "bL" 'rerun-prev-command)	; AGAIN (no confirm)
13; (define-key suntool-map "b\M-L" 'rerun-prev-command)	; M-AGAIN
14; (define-key suntool-map "cl" 'buffer-menu)		; Props
15; (define-key suntool-map "dl" 'undo)			; Undo
16; (define-key suntool-map "el" 'ignore-key)		; Front
17; (define-key suntool-map "fl" 'sun-select-region)	; Copy
18; (define-key suntool-map "f," 'copy-region-as-kill)	; C-Copy
19; (define-key suntool-map "gl" 'ignore-key)		; Open
20; (define-key suntool-map "hl" 'sun-yank-selection)	; Paste
21; (define-key suntool-map "h," 'yank)			; C-Paste
22; (define-key suntool-map "il" 'research-forward)	; Find (with default)
23; (define-key suntool-map "i\M-l" 'research-backward)	; M-Find
24; (define-key suntool-map "iL" 'isearch-forward-regexp)	; FIND (incremental)
25; (define-key suntool-map "i\M-L" 'isearch-backward-regexp); M-FIND
26; (define-key suntool-map "i," 're-search-forward)	; C-Find (ordinary)
27; (define-key suntool-map "i\M-," 're-search-backward)	; C-M-Find
28  (define-key suntool-map "jl" 'sun-cut-region)		; Cut
29  (define-key suntool-map "j," 'kill-region-and-unmark) ; C-Cut
30  (define-key suntool-map "jL" 'pop-the-mark)		; CUT
31; (define-key suntool-map "j\M-l" 'exchange-point-and-mark); M-Cut
32
33  (define-key suntool-map "at" 'bury-buffer)			; F1
34; (define-key suntool-map "bt" 'toggle-selective-display) 	; F2
35; (define-key suntool-map "ct" 'scroll-down-in-place)		; F3
36; (define-key suntool-map "cT" '(lambda(n) (interactive "p") (scroll-down n)))
37; (define-key suntool-map "dt" 'scroll-up-in-place)		; F4
38; (define-key suntool-map "dT" '(lambda(n) (interactive "p") (scroll-up n)))
39  (define-key suntool-map "et" 'jumpup)				; F5
40; (define-key suntool-map "ft" 'shrink-window)			; F6
41; (define-key suntool-map "fT" 'shrink-window-horizontally)	; Shift-F6
42; (define-key suntool-map "gt" 'enlarge-window)			; F7
43; (define-key suntool-map "gT" 'enlarge-window-horizontally)	; Shift-F7
44  (define-key suntool-map "ht" 'tags-search)			; F8
45  (define-key suntool-map "it" 'tags-query-replace)		; F9
46  (define-key suntool-map "jt" 'narrow-to-region)		; F10
47  (define-key suntool-map "j\M-t" 'narrow-to-page)		; M-F10
48  (define-key suntool-map "kt" 'revert-buffer)  		; F11
49  (define-key suntool-map "k\M-t" 'quick-revert-other-buffer)	; M-F11
50  (define-key suntool-map "lt" 'goto-line)			; F12
51  (define-key suntool-map "l\M-t" 'goto-line)			; M-F12
52
53  (define-key suntool-map "ar" 'redraw-display)			; Pause, R1
54  (define-key suntool-map "br" 'call-secondlast-kbd-macro)	; PrSc, R2
55  (define-key suntool-map "cr" 'ignore-key)		; Scroll Lock Break, R3
56  (define-key suntool-map "dr" 'unbound-key)			; KP=, R4
57  (define-key suntool-map "d\M-r" 'bind-last-kbd-macro-to-KP=)	; M-KP=, M-R4
58  (define-key suntool-map "er" 'unbound-key)			; KP/, R5
59  (define-key suntool-map "e\M-r" 'bind-last-kbd-macro-to-KP/)	; M-KP/, M-R5
60  (define-key suntool-map "fr" 'unbound-key)			; KP*, R6
61  (define-key suntool-map "f\M-r" 'bind-last-kbd-macro-to-KP*)	; M-KP*, M-R6
62; (define-key suntool-map "gr" 'beginning-of-buffer)		; Home, R7
63
64; (define-key suntool-map "hr" 'previous-line)			; Up, R8
65; (define-key suntool-map "ir" 'scroll-down)			; PgUp, R9
66; (define-key suntool-map "iR" 'backward-page)			; Shift-PGUP
67; (define-key suntool-map "jr" 'backward-char)			; Lft, R10
68  (define-key suntool-map "kr" "\C-u\C-l")			; KP5, R11
69; (define-key suntool-map "lr" 'forward-char)			; Rt, R12
70; (define-key suntool-map "mr" 'end-of-buffer)			; End, R13
71; (define-key suntool-map "nr" 'next-line)			; Dn, R14
72; (define-key suntool-map "or" 'scroll-up)			; PgDn, R15
73; (define-key suntool-map "oR" 'forward-page)			; Shift-PGUP
74
75  (define-key suntool-map "ab" 'apropos) 		; Help
76  (define-key suntool-map "a\M-b" 'mouse-help)	 	; M-Help
77  (define-key suntool-map "aB" 'describe-bindings) 	; HELP
78  (define-key suntool-map "a\M-B" 'describe-mouse-bindings); M-HELP
79  (define-key suntool-map "a\"" 'command-apropos)	; C-Help
80  (define-key suntool-map "a\C-B" 'apropos)		; C-HELP
81  (define-key suntool-map "a\M-\C-B" 'help-for-dummies)	; M-C-HELP
82  (define-key suntool-map "bb" 'ignore-key)		; Alt
83  (define-key suntool-map "cb" 'ignore-key)		; AltGraph
84  (define-key suntool-map "db" 'auto-fill-mode)		; Keypad Ins
85  (define-key suntool-map "eb" 'overwrite-mode)		; Keypad Del
86  (define-key suntool-map "fb" 'call-last-kbd-macro)	; Keypad Enter
87  (define-key suntool-map "gb" 'forward-paragraph)	; Keypad +
88  (define-key suntool-map "hb" 'backward-paragraph)	; Keypad -
89  ))
90
91
92; redefinition of emacs functions
93(defun end-of-buffer ()
94  "Move point to the end of the buffer; leave a mark at previous position.
95Scroll so that point is at the bottom of the window, if possible."
96  (interactive)
97  (push-mark)
98  (goto-char (point-max))
99  (recenter -1))
100
101; new functions
102(defun jumpup ()
103  "Scroll so that point is at the top of the window."
104  (interactive)(recenter 0))
105
106(defun quick-revert-buffer ()
107  "Revert the buffer without asking for confirmation."
108  (interactive)
109  (revert-buffer t t))
110
111(defun quick-revert-other-buffer (n)
112  "Revert the Nth other buffer without asking for confirmation."
113  (interactive "p")
114  (other-window n)
115  (revert-buffer t t)
116  (other-window (- n)))
117
118(defun bind-last-kbd-macro-to-KP= ()
119  "Assign the last keyboard macro to the = key on the numeric keypad."
120  (interactive)
121  (define-key suntool-map "dr" last-kbd-macro))
122
123(defun bind-last-kbd-macro-to-KP/ ()
124  "Assign the last keyboard macro to the / key on the numeric keypad."
125  (interactive)
126  (define-key suntool-map "er" last-kbd-macro))
127
128(defun bind-last-kbd-macro-to-KP* ()
129  "Assign the last keyboard macro to the * key on the numeric keypad."
130  (interactive)
131  (define-key suntool-map "fr" last-kbd-macro))
132
133(defvar secondlast-kbd-macro nil)
134(defun pre-end-kbd-macro ()
135  "Preserve last-kbd-macro as secondlast-kbd-macro, then end-kbd-macro."
136  (interactive)
137  (setq secondlast-kbd-macro last-kbd-macro)
138  (end-kbd-macro))
139(substitute-key-definition 'end-kbd-macro 'pre-end-kbd-macro global-map)
140(substitute-key-definition 'end-kbd-macro 'pre-end-kbd-macro esc-map)
141(substitute-key-definition 'end-kbd-macro 'pre-end-kbd-macro ctl-x-map)
142
143(defun call-secondlast-kbd-macro (n)
144  "Like call-last-kbd-macro, but uses the macro defined before that."
145  (interactive "p")
146  (let ((last-kbd-macro secondlast-kbd-macro))
147    (call-last-kbd-macro n)))
148
149; The turn-numlock-on/off commands are created automatically by oemacs
150; when the NumLock light changes state.
151(defun turn-numlock-on () ; numlock is always off when oemacs starts
152  "Bind keys in keypad area to numeric interpretations."
153  (interactive)
154  (setq hb-binding (lookup-key suntool-map "hb"))
155  (setq gb-binding (lookup-key suntool-map "gb"))
156  (setq fb-binding (lookup-key suntool-map "fb"))
157  (setq eb-binding (lookup-key suntool-map "eb"))
158  (setq db-binding (lookup-key suntool-map "db"))
159  (define-key suntool-map "hb" "-")
160  (define-key suntool-map "gb" "+")
161  (define-key suntool-map "fb" "\C-j")
162  (define-key suntool-map "eb" ".")
163  (define-key suntool-map "db" "0"))
164(defun turn-numlock-off ()
165  "Rebind keys in keypad area to function-key interpretations."
166  (interactive)
167  (define-key suntool-map "hb" hb-binding)
168  (define-key suntool-map "gb" gb-binding)
169  (define-key suntool-map "fb" fb-binding)
170  (define-key suntool-map "eb" eb-binding)
171  (define-key suntool-map "db" db-binding))
172(defvar hb-binding nil)
173(defvar gb-binding nil)
174(defvar fb-binding nil)
175(defvar eb-binding nil)
176(defvar db-binding nil)
177