Mercurial > emacs
diff etc/SUN-SUPPORT @ 25853:e96ffe544684
#
author | Dave Love <fx@gnu.org> |
---|---|
date | Sun, 03 Oct 1999 12:39:42 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/SUN-SUPPORT Sun Oct 03 12:39:42 1999 +0000 @@ -0,0 +1,210 @@ +NOTE: the Free Software Foundation agreed to put this file, and the +programs it describes, into the Emacs distribution ONLY on the +condition that we would not lift a finger to maintain them! We are +willing to *pass along* support for Sun windows, but we are not +willing to let it distract us from what we are trying to do. If you +have complaints or suggestions about Sun windows support, send them to +peck@sun.com, who is the maintainer. + + +The interface between GNU Emacs and Sun windows consists of the program +etc/emacstool, the Lisp programs lisp/sun-*.el and lisp/term/sun.el, +and the C source file src/sunfns.c. It is documented with a man page, +etc/emacstool.1. + +To enable use of these files and programs, define the configuration +switch HAVE_SUN_WINDOWS in src/config.h before compiling Emacs. +The definition of HAVE_SUN_WINDOWS must precede the #include m-sun3.h +or #include m-sun4.h. +If you must change PURESIZE, do so after the #include m-sun3.h + +This software is based on SunView for Sun UNIX 4.2 Release 3.2, +and will not work "as is" on previous releases, eg 3.0 or 3.1. + +Using Emacstool with GNU Emacs: + + The GNU Emacs files lisp/term/sun.el, lisp/sun-mouse.el, +lisp/sun-fns.el, and src/sunfns.c provide emacs support for the +Emacstool and function keys. If your terminal type is SUN (that is, +if your environment variable TERM is set to SUN), then Emacs will +automatically load the file lisp/term/sun.el. This, in turn, will +ensure that sun-mouse.el is autoloaded when any mouse events are +detected. It is suggested that sun-mouse and sun-fns be +included in your site-init.el file, so that they will always be loaded +when running on a Sun workstation. [Increase PURESIZE to 154000]. + + Support for the Sun function keys requires disconnecting the standard +Emacs command Meta-[. Therefore, the function keys are supported only +if you do (setq sun-esc-bracket t) in your .emacs file. + + The file src/sunfns.c defines several useful functions for emacs on +the Sun. Among these are procedures to pop-up SunView menus, put and +get from the SunView selection [STUFF] buffer, and a procedure for +changing the cursor icon. If you want to define cursor icons, try +using the functions in lisp/sun-cursors.el. + + The file lisp/sun-mouse.el includes a mass of software for defining +bindings for mouse events. Any function can be called or any form +evaluated as a result of a mouse event. If you want a pop-up menu, +your function can call sun-menu-evaluate. This will bring up a +SunView walking menu of your choice. + + Use the macro (defmenu menu-name &rest menu-items) to define menu +objects. Each menu item is a cons of ("string" . VALUE), VALUE is +evaluated when the string item is picked. If VALUE is a menu, then a +pullright item is created. + + This version also includes support for copying to and from the +sun-windows "stuff" selection. The keyboard bindings defined in +lisp/sun-fns.el let you move the current region to the "STUFF" +selection and vice versa. Just set point with the left button, set +mark with the middle button, (the region is automatically copied to +"STUFF") then switch to a shelltool, and "Stuff" will work. Going the +other way, the main right button menu contains a "Stuff Selection" +command that works just like in shelltool. [The Get and Put function +keys are also assigned to these functions, so you don't need the mouse +or even emacstool to make this work.] + + Until someone write code to read the textsw "Selection Shelf", it is +not possible to copy directly from a textsw to emacs, you must go through +the textsw "STUFF" selection. + + The Scroll-bar region is not a SunView scrollbar. It really should +be called the "Right-Margin" region. The scroll bar region is basically +the rightmost five columns (see documentation on variable scrollbar-width). +Mouse hits in this region can have special bindings, currently those binding +effect scrolling of the window, and so are referred to as the "Scroll-bar" +region. + + For information on what mouse bindings are in effect, use the command +M-x Describe-mouse-bindings, or the quick pop-up menu item "Mouse-Help". + + +GNU Emacs EXAMPLES: + See definitions in lisp/sun-fns.el for examples. + + You can redefine the cursor that is displayed in the emacs window. +On initialization, it is set to a right arrow. See lisp/sun-cursors.el +for additional cursors, how to define them, how to edit them. + +BUGS: + It takes a few milliseconds to create a menu before it pops up. +Someone who understands the GNU Garbage Collector might see if it +is possible for defmenu to create a SunView menu struct that does +not get destroyed by Garbage Collection. + + An outline of the files used to support Sun Windows and the mouse. + +etc/SUN-SUPPORT. + This document. + +etc/emacstool.1: + Added: an nroff'able man page for emacstool. + +etc/emacstool.c: + Encodes all the function keys internally, and passes non-window +system arguments to emacs. + +etc/emacs.icon: + The "Kitchen Sink" GNU Emacs icon. + +src/sunfns.c: + This contains the auxiliary functions that allow elisp code to interact +with the sunwindows, selection, and menu functions. + +lisp/sun-mouse.el: + Defines the lisp function which is called when a mouse hit is found +in the input queue. This handler decodes the mouse hit via a keymap-like +structure sensitive to a particular window and where in the window the +hit occurred (text-region, right-margin, mode-line). Three variables +are bound (*mouse-window* *mouse-x* *mouse-y*) and the selected function +is called. + See documentation on "define-mouse" or look at lisp/sun-fns.el +to see how this is done. + Defines two functions to pass between region and sun-selection + Defines functions for interfacing with the Menu. +During menu evaluation, the variables *menu-window* *menu-x* *menu-y* are bound. + +lisp/sun-fns.el + The definition of the default menu and mouse function bindings. + +lisp/sun-cursors.el + Defines a number of alternate cursors, and an editor for them. + The editor is also a demonstration of mouse/menu utilization. + +lisp/term/sun.el + Sets up the keymap to make the sun function keys do useful things. +Also includes the setup/initialization code for running under emacstool, +which makes "\C-Z" just close the emacstool window (-WI emacs.icon). + + Jeff Peck, Sun Microsystems, Inc <peck@sun.com> + + +Subject: Making multi-line scrolling really work: + +In your .defaults file, include the line: +/Tty/Retained "Yes" +That way, the terminal emulator can do text moves using bitblt, +instead of repaint. + +If that's not enough for you, then tell unix and emacs that +the sun terminal supports multi-line and multi-character insert/delete. +Add this patch to your /etc/termcap file: + +*** /etc/termcap.~1~ Mon Sep 15 12:34:23 1986 +--- /etc/termcap Mon Feb 9 17:34:08 1987 +*************** +*** 32,39 **** +--- 32,40 ---- + Mu|sun|Sun Microsystems Workstation console:\ + :am:bs:km:mi:ms:pt:li#34:co#80:cl=^L:cm=\E[%i%d;%dH:\ + :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:rs=\E[s:\ + :al=\E[L:dl=\E[M:im=:ei=:ic=\E[@:dc=\E[P:\ ++ :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:\ + :up=\E[A:nd=\E[C:ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\ + :k1=\E[224z:k2=\E[225z:k3=\E[226z:k4=\E[227z:k5=\E[228z:\ + :k6=\E[229z:k7=\E[230z:k8=\E[231z:k9=\E[232z: + M-|sun-nic|sune|Sun Microsystems Workstation console without insert character:\ + + +If you don't have the program "patch", just add the line: + :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:\ + +casetek@crvax.sri.com says: + +Those of you using GNU Emacs on Sun workstations under +3.2 may be interested in reducing memory utilization in +the emacstool via the Sun toolmerge facility. The technique +is described in the Release 3.2 Manual starting on page +71. The following is a summary of how it would apply +to merging emacstool into the basetools. + +1) Change the main procedure declaration in emacstool.c to: + + #ifdef SUN_TOOLMERGE + emacstool_main (argc, argv); + #else + main (argc, argv) + #endif + + This will allow creation of either standard or toolmerge + versions. + +2) Copy emacstool.o into directory /usr/src/sun/suntool. +3) make CFLAGS="-g -DSUN_TOOLMERGE" emacstool.o +4) Add the following line to basetools.h + + "emacstool",emacstool_main, + +5) Add the following line to toolmerge.c. + + extern emacstool_main(); + +6) make basetools MOREOBJS="emacstool.o" +7) make install_bins + +To invoke the toolmerged version, you must exit suntools and +re-start it. Make sure that /usr/bin occurs before the directory +in which you installed the standard (non-toolmerged) version. + +