]> code.delx.au - gnu-emacs/blob - etc/SUN-SUPPORT
(Vtext_property_default_nonsticky): New variable
[gnu-emacs] / etc / SUN-SUPPORT
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