xref: /386bsd/usr/local/lib/emacs/19.25/etc/SUN-SUPPORT (revision a2142627)
1NOTE: the Free Software Foundation agreed to put this file, and the
2programs it describes, into the Emacs distribution ONLY on the
3condition that we would not lift a finger to maintain them!  We are
4willing to *pass along* support for Sun windows, but we are not
5willing to let it distract us from what we are trying to do.  If you
6have complaints or suggestions about Sun windows support, send them to
7peck@sun.com, who is the maintainer.
8
9
10The interface between GNU Emacs and Sun windows consists of the program
11etc/emacstool, the Lisp programs lisp/sun-*.el and lisp/term/sun.el,
12and the C source file src/sunfns.c.  It is documented with a man page,
13etc/emacstool.1.
14
15To enable use of these files and programs, define the configuration
16switch HAVE_SUN_WINDOWS in src/config.h before compiling Emacs.
17The definition of HAVE_SUN_WINDOWS must precede the #include m-sun3.h
18or #include m-sun4.h.
19If you must change PURESIZE, do so after the #include m-sun3.h
20
21This software is based on SunView for Sun UNIX 4.2 Release 3.2,
22and will not work "as is" on previous releases, eg 3.0 or 3.1.
23
24Using Emacstool with GNU Emacs:
25
26   The GNU Emacs files lisp/term/sun.el, lisp/sun-mouse.el,
27lisp/sun-fns.el, and src/sunfns.c provide emacs support for the
28Emacstool and function keys.  If your terminal type is SUN (that is,
29if your environment variable TERM is set to SUN), then Emacs will
30automatically load the file lisp/term/sun.el.  This, in turn, will
31ensure that sun-mouse.el is autoloaded when any mouse events are
32detected.  It is suggested that sun-mouse and sun-fns be
33included in your site-init.el file, so that they will always be loaded
34when running on a Sun workstation.  [Increase PURESIZE to 154000].
35
36   Support for the Sun function keys requires disconnecting the standard
37Emacs command Meta-[.  Therefore, the function keys are supported only
38if 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
41the Sun.  Among these are procedures to pop-up SunView menus, put and
42get from the SunView selection [STUFF] buffer, and a procedure for
43changing the cursor icon.  If you want to define cursor icons, try
44using the functions in lisp/sun-cursors.el.
45
46   The file lisp/sun-mouse.el includes a mass of software for defining
47bindings for mouse events.  Any function can be called or any form
48evaluated as a result of a mouse event.  If you want a pop-up menu,
49your function can call sun-menu-evaluate.  This will bring up a
50SunView walking menu of your choice.
51
52   Use the macro (defmenu menu-name &rest menu-items) to define menu
53objects.  Each menu item is a cons of ("string" . VALUE), VALUE is
54evaluated when the string item is picked.  If VALUE is a menu, then a
55pullright item is created.
56
57   This version also includes support for copying to and from the
58sun-windows "stuff" selection.  The keyboard bindings defined in
59lisp/sun-fns.el let you move the current region to the "STUFF"
60selection and vice versa.  Just set point with the left button, set
61mark with the middle button, (the region is automatically copied to
62"STUFF") then switch to a shelltool, and "Stuff" will work.  Going the
63other way, the main right button menu contains a "Stuff Selection"
64command that works just like in shelltool.  [The Get and Put function
65keys are also assigned to these functions, so you don't need the mouse
66or even emacstool to make this work.]
67
68   Until someone write code to read the textsw "Selection Shelf", it is
69not possible to copy directly from a textsw to emacs, you must go through
70the textsw "STUFF" selection.
71
72   The Scroll-bar region is not a SunView scrollbar.  It really should
73be called the "Right-Margin" region.  The scroll bar region is basically
74the rightmost five columns (see documentation on variable scrollbar-width).
75Mouse hits in this region can have special bindings, currently those binding
76effect scrolling of the window, and so are referred to as the "Scroll-bar"
77region.
78
79   For information on what mouse bindings are in effect, use the command
80M-x Describe-mouse-bindings, or the quick pop-up menu item "Mouse-Help".
81
82
83GNU 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.
87On initialization, it is set to a right arrow.  See lisp/sun-cursors.el
88for additional cursors, how to define them, how to edit them.
89
90BUGS:
91    It takes a few milliseconds to create a menu before it pops up.
92Someone who understands the GNU Garbage Collector might see if it
93is possible for defmenu to create a SunView menu struct that does
94not get destroyed by Garbage Collection.
95
96   An outline of the files used to support Sun Windows and the mouse.
97
98etc/SUN-SUPPORT.
99    This document.
100
101etc/emacstool.1:
102    Added: an nroff'able man page for emacstool.
103
104etc/emacstool.c:
105    Encodes all the function keys internally, and passes non-window
106system arguments to emacs.
107
108etc/emacs.icon:
109    The "Kitchen Sink" GNU Emacs icon.
110
111src/sunfns.c:
112    This contains the auxiliary functions that allow elisp code to interact
113with the sunwindows, selection, and menu functions.
114
115lisp/sun-mouse.el:
116    Defines the lisp function which is called when a mouse hit is found
117in the input queue.  This handler decodes the mouse hit via a keymap-like
118structure sensitive to a particular window and where in the window the
119hit occurred (text-region, right-margin, mode-line).  Three variables
120are bound (*mouse-window* *mouse-x* *mouse-y*) and the selected function
121is called.
122    See documentation on "define-mouse" or look at lisp/sun-fns.el
123to see how this is done.
124    Defines two functions to pass between region and sun-selection
125    Defines functions for interfacing with the Menu.
126During menu evaluation, the variables *menu-window* *menu-x* *menu-y* are bound.
127
128lisp/sun-fns.el
129    The definition of the default menu and mouse function bindings.
130
131lisp/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
135lisp/term/sun.el
136    Sets up the keymap to make the sun function keys do useful things.
137Also includes the setup/initialization code for running under emacstool,
138which makes "\C-Z" just close the emacstool window (-WI emacs.icon).
139
140	Jeff Peck, Sun Microsystems, Inc		<peck@sun.com>
141
142
143Subject: Making multi-line scrolling really work:
144
145In your .defaults file, include the line:
146/Tty/Retained	"Yes"
147That way, the terminal emulator can do text moves using bitblt,
148instead of repaint.
149
150If that's not enough for you, then tell unix and emacs that
151the sun terminal supports multi-line and multi-character insert/delete.
152Add 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
170If 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
173casetek@crvax.sri.com says:
174
175Those of you using GNU Emacs on Sun workstations under
1763.2 may be interested in reducing memory utilization in
177the emacstool via the Sun toolmerge facility.  The technique
178is described in the Release 3.2 Manual starting on page
17971.  The following is a summary of how it would apply
180to merging emacstool into the basetools.
181
1821) 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
1932) Copy emacstool.o into directory /usr/src/sun/suntool.
1943) make CFLAGS="-g -DSUN_TOOLMERGE" emacstool.o
1954) Add the following line to basetools.h
196
197  "emacstool",emacstool_main,
198
1995) Add the following line to toolmerge.c.
200
201   extern emacstool_main();
202
2036) make basetools MOREOBJS="emacstool.o"
2047) make install_bins
205
206To invoke the toolmerged version, you must exit suntools and
207re-start it.  Make sure that /usr/bin occurs before the directory
208in which you installed the standard (non-toolmerged) version.
209
210
211