Commit | Line | Data |
---|---|---|
a933dad1 DL |
1 | NOTE: the Free Software Foundation agreed to put this file, and the |
2 | programs it describes, into the Emacs distribution ONLY on the | |
3 | condition that we would not lift a finger to maintain them! We are | |
4 | willing to *pass along* support for Sun windows, but we are not | |
5 | willing to let it distract us from what we are trying to do. If you | |
6 | have complaints or suggestions about Sun windows support, send them to | |
7 | peck@sun.com, who is the maintainer. | |
8 | ||
9 | ||
10 | The interface between GNU Emacs and Sun windows consists of the program | |
11 | etc/emacstool, the Lisp programs lisp/sun-*.el and lisp/term/sun.el, | |
12 | and the C source file src/sunfns.c. It is documented with a man page, | |
13 | etc/emacstool.1. | |
14 | ||
15 | To enable use of these files and programs, define the configuration | |
16 | switch HAVE_SUN_WINDOWS in src/config.h before compiling Emacs. | |
17 | The definition of HAVE_SUN_WINDOWS must precede the #include m-sun3.h | |
18 | or #include m-sun4.h. | |
19 | If you must change PURESIZE, do so after the #include m-sun3.h | |
20 | ||
21 | This software is based on SunView for Sun UNIX 4.2 Release 3.2, | |
22 | and will not work "as is" on previous releases, eg 3.0 or 3.1. | |
23 | \f | |
24 | Using Emacstool with GNU Emacs: | |
25 | ||
26 | The GNU Emacs files lisp/term/sun.el, lisp/sun-mouse.el, | |
27 | lisp/sun-fns.el, and src/sunfns.c provide emacs support for the | |
28 | Emacstool and function keys. If your terminal type is SUN (that is, | |
29 | if your environment variable TERM is set to SUN), then Emacs will | |
30 | automatically load the file lisp/term/sun.el. This, in turn, will | |
31 | ensure that sun-mouse.el is autoloaded when any mouse events are | |
32 | detected. It is suggested that sun-mouse and sun-fns be | |
33 | included in your site-init.el file, so that they will always be loaded | |
34 | when running on a Sun workstation. [Increase PURESIZE to 154000]. | |
35 | ||
36 | Support for the Sun function keys requires disconnecting the standard | |
37 | Emacs command Meta-[. Therefore, the function keys are supported only | |
38 | if you do (setq sun-esc-bracket t) in your .emacs file. | |
39 | ||
40 | The file src/sunfns.c defines several useful functions for emacs on | |
41 | the Sun. Among these are procedures to pop-up SunView menus, put and | |
42 | get from the SunView selection [STUFF] buffer, and a procedure for | |
43 | changing the cursor icon. If you want to define cursor icons, try | |
44 | using the functions in lisp/sun-cursors.el. | |
45 | ||
46 | The file lisp/sun-mouse.el includes a mass of software for defining | |
47 | bindings for mouse events. Any function can be called or any form | |
48 | evaluated as a result of a mouse event. If you want a pop-up menu, | |
49 | your function can call sun-menu-evaluate. This will bring up a | |
50 | SunView walking menu of your choice. | |
51 | ||
52 | Use the macro (defmenu menu-name &rest menu-items) to define menu | |
53 | objects. Each menu item is a cons of ("string" . VALUE), VALUE is | |
54 | evaluated when the string item is picked. If VALUE is a menu, then a | |
55 | pullright item is created. | |
56 | ||
57 | This version also includes support for copying to and from the | |
58 | sun-windows "stuff" selection. The keyboard bindings defined in | |
59 | lisp/sun-fns.el let you move the current region to the "STUFF" | |
60 | selection and vice versa. Just set point with the left button, set | |
61 | mark with the middle button, (the region is automatically copied to | |
62 | "STUFF") then switch to a shelltool, and "Stuff" will work. Going the | |
63 | other way, the main right button menu contains a "Stuff Selection" | |
64 | command that works just like in shelltool. [The Get and Put function | |
65 | keys are also assigned to these functions, so you don't need the mouse | |
66 | or even emacstool to make this work.] | |
67 | ||
68 | Until someone write code to read the textsw "Selection Shelf", it is | |
69 | not possible to copy directly from a textsw to emacs, you must go through | |
70 | the textsw "STUFF" selection. | |
71 | ||
72 | The Scroll-bar region is not a SunView scrollbar. It really should | |
73 | be called the "Right-Margin" region. The scroll bar region is basically | |
74 | the rightmost five columns (see documentation on variable scrollbar-width). | |
75 | Mouse hits in this region can have special bindings, currently those binding | |
76 | effect scrolling of the window, and so are referred to as the "Scroll-bar" | |
77 | region. | |
78 | ||
79 | For information on what mouse bindings are in effect, use the command | |
80 | M-x Describe-mouse-bindings, or the quick pop-up menu item "Mouse-Help". | |
81 | ||
82 | ||
83 | GNU Emacs EXAMPLES: | |
84 | See definitions in lisp/sun-fns.el for examples. | |
85 | ||
86 | You can redefine the cursor that is displayed in the emacs window. | |
87 | On initialization, it is set to a right arrow. See lisp/sun-cursors.el | |
88 | for additional cursors, how to define them, how to edit them. | |
89 | ||
90 | BUGS: | |
91 | It takes a few milliseconds to create a menu before it pops up. | |
92 | Someone who understands the GNU Garbage Collector might see if it | |
93 | is possible for defmenu to create a SunView menu struct that does | |
94 | not get destroyed by Garbage Collection. | |
95 | \f | |
96 | An outline of the files used to support Sun Windows and the mouse. | |
97 | ||
98 | etc/SUN-SUPPORT. | |
99 | This document. | |
100 | ||
101 | etc/emacstool.1: | |
102 | Added: an nroff'able man page for emacstool. | |
103 | ||
104 | etc/emacstool.c: | |
105 | Encodes all the function keys internally, and passes non-window | |
106 | system arguments to emacs. | |
107 | ||
108 | etc/emacs.icon: | |
109 | The "Kitchen Sink" GNU Emacs icon. | |
110 | ||
111 | src/sunfns.c: | |
112 | This contains the auxiliary functions that allow elisp code to interact | |
113 | with the sunwindows, selection, and menu functions. | |
114 | ||
115 | lisp/sun-mouse.el: | |
116 | Defines the lisp function which is called when a mouse hit is found | |
117 | in the input queue. This handler decodes the mouse hit via a keymap-like | |
118 | structure sensitive to a particular window and where in the window the | |
119 | hit occurred (text-region, right-margin, mode-line). Three variables | |
120 | are bound (*mouse-window* *mouse-x* *mouse-y*) and the selected function | |
121 | is called. | |
122 | See documentation on "define-mouse" or look at lisp/sun-fns.el | |
123 | to see how this is done. | |
124 | Defines two functions to pass between region and sun-selection | |
125 | Defines functions for interfacing with the Menu. | |
126 | During menu evaluation, the variables *menu-window* *menu-x* *menu-y* are bound. | |
127 | ||
128 | lisp/sun-fns.el | |
129 | The definition of the default menu and mouse function bindings. | |
130 | ||
131 | lisp/sun-cursors.el | |
132 | Defines a number of alternate cursors, and an editor for them. | |
133 | The editor is also a demonstration of mouse/menu utilization. | |
134 | ||
135 | lisp/term/sun.el | |
136 | Sets up the keymap to make the sun function keys do useful things. | |
137 | Also includes the setup/initialization code for running under emacstool, | |
138 | which makes "\C-Z" just close the emacstool window (-WI emacs.icon). | |
139 | ||
140 | Jeff Peck, Sun Microsystems, Inc <peck@sun.com> | |
141 | \f | |
142 | ||
143 | Subject: Making multi-line scrolling really work: | |
144 | ||
145 | In your .defaults file, include the line: | |
146 | /Tty/Retained "Yes" | |
147 | That way, the terminal emulator can do text moves using bitblt, | |
148 | instead of repaint. | |
149 | ||
150 | If that's not enough for you, then tell unix and emacs that | |
151 | the sun terminal supports multi-line and multi-character insert/delete. | |
152 | Add this patch to your /etc/termcap file: | |
153 | ||
154 | *** /etc/termcap.~1~ Mon Sep 15 12:34:23 1986 | |
155 | --- /etc/termcap Mon Feb 9 17:34:08 1987 | |
156 | *************** | |
157 | *** 32,39 **** | |
158 | --- 32,40 ---- | |
159 | Mu|sun|Sun Microsystems Workstation console:\ | |
160 | :am:bs:km:mi:ms:pt:li#34:co#80:cl=^L:cm=\E[%i%d;%dH:\ | |
161 | :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:rs=\E[s:\ | |
162 | :al=\E[L:dl=\E[M:im=:ei=:ic=\E[@:dc=\E[P:\ | |
163 | + :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:\ | |
164 | :up=\E[A:nd=\E[C:ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\ | |
165 | :k1=\E[224z:k2=\E[225z:k3=\E[226z:k4=\E[227z:k5=\E[228z:\ | |
166 | :k6=\E[229z:k7=\E[230z:k8=\E[231z:k9=\E[232z: | |
167 | M-|sun-nic|sune|Sun Microsystems Workstation console without insert character:\ | |
168 | ||
169 | ||
170 | If you don't have the program "patch", just add the line: | |
171 | :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:\ | |
172 | \f | |
173 | casetek@crvax.sri.com says: | |
174 | ||
175 | Those of you using GNU Emacs on Sun workstations under | |
176 | 3.2 may be interested in reducing memory utilization in | |
177 | the emacstool via the Sun toolmerge facility. The technique | |
178 | is described in the Release 3.2 Manual starting on page | |
179 | 71. The following is a summary of how it would apply | |
180 | to merging emacstool into the basetools. | |
181 | ||
182 | 1) Change the main procedure declaration in emacstool.c to: | |
183 | ||
184 | #ifdef SUN_TOOLMERGE | |
185 | emacstool_main (argc, argv); | |
186 | #else | |
187 | main (argc, argv) | |
188 | #endif | |
189 | ||
190 | This will allow creation of either standard or toolmerge | |
191 | versions. | |
192 | ||
193 | 2) Copy emacstool.o into directory /usr/src/sun/suntool. | |
194 | 3) make CFLAGS="-g -DSUN_TOOLMERGE" emacstool.o | |
195 | 4) Add the following line to basetools.h | |
196 | ||
197 | "emacstool",emacstool_main, | |
198 | ||
199 | 5) Add the following line to toolmerge.c. | |
200 | ||
201 | extern emacstool_main(); | |
202 | ||
203 | 6) make basetools MOREOBJS="emacstool.o" | |
204 | 7) make install_bins | |
205 | ||
206 | To invoke the toolmerged version, you must exit suntools and | |
207 | re-start it. Make sure that /usr/bin occurs before the directory | |
208 | in which you installed the standard (non-toolmerged) version. | |
209 | ||
210 |