|
|
1.1 ! root 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: [email protected], 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: ! 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 refered 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: ! 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 auxilary 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 occured (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 <[email protected]> ! 141: ! 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: ! 173: [email protected] 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: ! 211: Subject: Moving selections between OW and Emacstool/xvetool ! 212: Date: Wed, 26 Jun 91 18:58:24 PDT ! 213: From: Jeff Peck <peck> ! 214: ! 215: The short answer is that we can Cut and Paste between Emacstool ! 216: and TTYSW (shelltool) and we can Paste between Emacstool and TEXTSW(cmdtool) ! 217: and somewhat more slowly move from TEXTSW to Emacstool. ! 218: ! 219: **** This interaction with the TTYSW selection is a HACK! **** ! 220: ! 221: At end of this message is the code that should be in your sun-mouse.el or .emacs ! 222: ! 223: Here's the restrictions on using it: ! 224: ! 225: 1. from Shelltool to Emacstool: ! 226: select text in shelltool and hit COPY. ! 227: move to Emacstool, hit PASTE. (simple, eh?) ! 228: ! 229: For any other movement, you must remember this: ! 230: "The window system must believe that a shelltool has the current selection." ! 231: If you do that, then this will all work painlessly. ! 232: [that will also explain why you can not make a selection in a cmdtool ! 233: and then directly PASTE it into Emacstool] ! 234: ! 235: 2. from Emacstool to Shelltool ! 236: ensure that a shelltool has the selection: (select something and hit COPY) ! 237: in emacstool select a region and hit COPY ! 238: in shelltool hit PASTE. (not too bad, yet) ! 239: ! 240: 3. from Emacstool to Cmdtool ! 241: ensure that a shelltool has the selection: ! 242: (in a *shelltool* select something and hit COPY) ! 243: in emacstool select a region and hit COPY ! 244: in shelltool hit PASTE. (ok, its getting crufty) ! 245: ! 246: 4. from Cmdtool to Emacstool ! 247: select in Cmdtool, hit COPY ! 248: in a shelltool, % cat > /dev/null ! 249: then hit PASTE ! 250: Select the text again, from the shelltool this time. hit COPY ! 251: in emacstool, hit PASTE ! 252: ! 253: 4a. from Cmdtool (or shelltool) to Emacstool ! 254: the function "sunview-yank-any-selection" should be bound to Meta-PASTE ! 255: If so, then just: ! 256: select in Cmdtool ! 257: in emacstool, hit Meta-PASTE ! 258: ! 259: This uses the function "sunview-yank-current-selection" ! 260: which relies one the (supported) utility "get_selection" ! 261: As such, it is *not* a hack, but it *IS* SLOW (or slower) ! 262: ! 263: ! 264: If you know that a shelltool *still* has the selection ! 265: (note: nothing you do with Emacstool or the PASTE key will affect that) ! 266: then the "ensure..." line is a NO-OP. ! 267: ! 268: Note that using COPY in emacstool will change the *value* of the selection ! 269: behind the window systems back: ! 270: the holder of the selection doesn't know of this, ! 271: the window system doesn't know of this, ! 272: and the highlighted text *WILL NOT CHANGE* ! 273: ! 274: Turns out the selection value is written into a /tmp/ttyselection file ! 275: and emacs just rewrites that file, clever, eh? ! 276: ! 277: ! 278: Your version of sun-mouse.el should include these functions ! 279: (or put them into your .emacs) ! 280: ! 281: ! 282: ;;; define the selection file used by this emacs ! 283: ;;; if not local machine, then automounter must find /net/<host>/tmp ! 284: (defconst owselectionfile ! 285: (let ((display (getenv "DISPLAY"))) ! 286: (if (null display) ! 287: nil ; no DISPLAY variable -- return nil ! 288: (let ((colon_at (string-match ":" display))) ! 289: (if (null colon_at) ! 290: nil ; no colon in environment variable -- return nil ! 291: (if (zerop colon_at) ! 292: "/tmp/ttyselection" ; colon is first character ! 293: (concat "/net/" (substring display 0 colon_at) "/tmp/ttyselection") ! 294: ))))) ! 295: ) ! 296: ! 297: (defun xv-yank-selection () ! 298: "Set mark and yank the contents of the current Xview selection ! 299: into the current buffer at point. The STUFF selection contains the currently ! 300: or previously highlighted text from a TTYSW." ! 301: (interactive "*") ! 302: (insert-file owselectionfile) ! 303: (exchange-point-and-mark) ! 304: ) ! 305: ! 306: (defun xv-select-region (beg end) ! 307: "Set the TTYSW selection to the region in the current buffer." ! 308: (interactive "r") ! 309: (write-region beg end owselectionfile nil 'noprint) ! 310: ) ! 311: ! 312: You can then bind these to Copy and Paste in your .emacs ! 313: ! 314: (setq suntool-map-hooks '( ; not your usual hook list ! 315: (define-key suntool-map "fl" 'xv-select-region) ; L6 Copy ! 316: (define-key suntool-map "hl" 'xv-yank-selection) ; L8 Paste ! 317: ) ! 318: )
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.