home *** CD-ROM | disk | FTP | other *** search
- 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 refered 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 auxilary 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 occured (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.
-
-
- Subject: Moving selections between OW and Emacstool/xvetool
- Date: Wed, 26 Jun 91 18:58:24 PDT
- From: Jeff Peck <peck>
-
- The short answer is that we can Cut and Paste between Emacstool
- and TTYSW (shelltool) and we can Paste between Emacstool and TEXTSW(cmdtool)
- and somewhat more slowly move from TEXTSW to Emacstool.
-
- **** This interaction with the TTYSW selection is a HACK! ****
-
- At end of this message is the code that should be in your sun-mouse.el or .emacs
-
- Here's the restrictions on using it:
-
- 1. from Shelltool to Emacstool:
- select text in shelltool and hit COPY.
- move to Emacstool, hit PASTE. (simple, eh?)
-
- For any other movement, you must remember this:
- "The window system must believe that a shelltool has the current selection."
- If you do that, then this will all work painlessly.
- [that will also explain why you can not make a selection in a cmdtool
- and then directly PASTE it into Emacstool]
-
- 2. from Emacstool to Shelltool
- ensure that a shelltool has the selection: (select something and hit COPY)
- in emacstool select a region and hit COPY
- in shelltool hit PASTE. (not too bad, yet)
-
- 3. from Emacstool to Cmdtool
- ensure that a shelltool has the selection:
- (in a *shelltool* select something and hit COPY)
- in emacstool select a region and hit COPY
- in shelltool hit PASTE. (ok, its getting crufty)
-
- 4. from Cmdtool to Emacstool
- select in Cmdtool, hit COPY
- in a shelltool, % cat > /dev/null
- then hit PASTE
- Select the text again, from the shelltool this time. hit COPY
- in emacstool, hit PASTE
-
- 4a. from Cmdtool (or shelltool) to Emacstool
- the function "sunview-yank-any-selection" should be bound to Meta-PASTE
- If so, then just:
- select in Cmdtool
- in emacstool, hit Meta-PASTE
-
- This uses the function "sunview-yank-current-selection"
- which relies one the (supported) utility "get_selection"
- As such, it is *not* a hack, but it *IS* SLOW (or slower)
-
-
- If you know that a shelltool *still* has the selection
- (note: nothing you do with Emacstool or the PASTE key will affect that)
- then the "ensure..." line is a NO-OP.
-
- Note that using COPY in emacstool will change the *value* of the selection
- behind the window systems back:
- the holder of the selection doesn't know of this,
- the window system doesn't know of this,
- and the highlighted text *WILL NOT CHANGE*
-
- Turns out the selection value is written into a /tmp/ttyselection file
- and emacs just rewrites that file, clever, eh?
-
-
- Your version of sun-mouse.el should include these functions
- (or put them into your .emacs)
-
-
- ;;; define the selection file used by this emacs
- ;;; if not local machine, then automounter must find /net/<host>/tmp
- (defconst owselectionfile
- (let ((display (getenv "DISPLAY")))
- (if (null display)
- nil ; no DISPLAY variable -- return nil
- (let ((colon_at (string-match ":" display)))
- (if (null colon_at)
- nil ; no colon in environment variable -- return nil
- (if (zerop colon_at)
- "/tmp/ttyselection" ; colon is first character
- (concat "/net/" (substring display 0 colon_at) "/tmp/ttyselection")
- )))))
- )
-
- (defun xv-yank-selection ()
- "Set mark and yank the contents of the current Xview selection
- into the current buffer at point. The STUFF selection contains the currently
- or previously highlighted text from a TTYSW."
- (interactive "*")
- (insert-file owselectionfile)
- (exchange-point-and-mark)
- )
-
- (defun xv-select-region (beg end)
- "Set the TTYSW selection to the region in the current buffer."
- (interactive "r")
- (write-region beg end owselectionfile nil 'noprint)
- )
-
- You can then bind these to Copy and Paste in your .emacs
-
- (setq suntool-map-hooks '( ; not your usual hook list
- (define-key suntool-map "fl" 'xv-select-region) ; L6 Copy
- (define-key suntool-map "hl" 'xv-yank-selection) ; L8 Paste
- )
- )
-