summaryrefslogtreecommitdiff
path: root/etc/XDOC
diff options
context:
space:
mode:
Diffstat (limited to 'etc/XDOC')
-rw-r--r--etc/XDOC461
1 files changed, 461 insertions, 0 deletions
diff --git a/etc/XDOC b/etc/XDOC
new file mode 100644
index 00000000000..a8a36327f4c
--- /dev/null
+++ b/etc/XDOC
@@ -0,0 +1,461 @@
+BABYL OPTIONS:
+Version: 5
+Labels:
+Note: This is the header of an rmail file.
+Note: If you are seeing it in rmail,
+Note: it means the file has no messages in it.
+
+1,,
+Received: from ATHENA (ATHENA.MIT.EDU) by prep; Thu, 19 Dec 85 23:09:34 est
+Received: from PARIS (PARIS.MIT.EDU) by ATHENA (4.12/4.7)
+ id AA02786; Thu, 19 Dec 85 23:07:35 est
+From: martillo@ATHENA.MIT.EDU (Yakim Martillo)
+Received: by PARIS (5.15/4.7)
+ id AA24170; Thu, 19 Dec 85 23:07:36 EST
+Date: Thu, 19 Dec 85 23:07:36 EST
+Message-Id: <8512200407.AA24170@PARIS>
+To: rms@prep
+Cc: lbm
+Subject: Gnu Emacs + X documentation
+
+*** EOOH ***
+From: martillo@ATHENA.MIT.EDU (Yakim Martillo)
+Date: Thu, 19 Dec 85 23:07:36 EST
+To: rms@prep
+Cc: lbm
+Subject: Gnu Emacs + X documentation
+
+
+This is the start of my X documentation.
+
+I have not finished the last five sections yet. Please give me some
+suggestions.
+
+Joachim
+
+
+Special Terminal Interfaces
+
+Some terminals provide special capabilities which can be more
+effectively used via specially written C functions rather than normal
+termcap processing. To ease the use of these capabilities and aid the
+integration of these C functions, special terminal hooks are provided.
+
+The hooks are all externed in the source header file termhooks.h.
+To determine the arguments, the interested user who wishes to develop
+a special terminal interface should consult term.c.
+For proper functioning of the user defined C termhook functions, the
+user should make certain that the terminal characteristics as externed
+in termchar.h are properly set.
+
+Examples of how to use the termhooks can be found in xterm.c which
+contains the Gnu Emacs to X interface.
+
+Gnu Emacs to X Interface
+
+The termhooks feature has enough power that termhooks need not be
+restricted merely to the employment of special terminal capabilities.
+Termhooks can be used to interface Gnu Emacs to special graphics
+devices or window systems. Gnu Emacs interfaces with not a great deal
+of difficulty to the MIT/Project Athena X Window system. With not too
+much effort, a competent hacker should be able to interface Gnu Emacs
+to the Sun, Apollo, or Blit Window systems.
+
+What is X?
+
+X is a network transparent window system developed at MIT by Bob
+Scheiffler, Jim Gettys, Tony della Fera, Ron Newman and others. X is
+a descendent of the Stanford V kernal system and Gosling's rectangle
+management system. X has a standard protocol for communication with
+an X server which talks to the high resolution graphics device driver.
+The X developers have supplied a library libX.a which provides library
+routines to handle typical graphics/window system commands. X is
+network transparent in that a process running on a machine which wants
+to make use of a high resolution graphics device will establish a
+network connection to the X server which talks to the driver for that
+device. The process will be a client of the X server. Since LAN's
+typically can move data at megabit rates, running a window system in
+this fashion has many advantages. For more information about X,
+hackers are directed to "Xlib - C Language X Interface Version (?)"
+written by Jim Gettys (DEC/MIT) and Ron Newman (MIT).
+
+New Functionality of Gnu Emacs + X
+
+Gnu Emacs running as a client of X provides very rapid line insertion
+and deletion because bit blit commands are sent to the server and the
+driver simply tells the device to move the pixels on the screen
+directly. In fact, Gnu Emacs running under the xterm terminal
+emulator can also cause bit blts to take place but bit blits via the
+terminal emulator are rather slow because of escape sequence parsing
+overhead in the terminal emulator and because of context switching
+overhead as the bits take a merry trip through the pty interfaces and
+drivers.
+
+Gnu Emacs runs in its own X window and therefore no information is
+lost from the xterm session from which the user invoked Gnu Emacs.
+Gnu Emacs should probably be run in background from the parent X
+session because then the user may continue to do more work in the
+parent xterm session. As Gnu Emacs should be run in background, the
+lisp form
+ (put 'suspend-emacs 'disabled t)
+is passed to the Gnu Emacs lisp interpreter when Gnu Emacs is invoked
+from an xterm terminal emulator. Should the user accidently type the
+key sequence for suspend-emacs (initially C-z or C-XC-z), he will be
+queried whether he truly wishes to suspend emacs. Unless the user is
+confident he should reply n (= no).
+
+If the user has an X window manager running, the user can resize the
+Gnu Emacs window using the usual mouse sequences which have been
+grabbed by the window manager. Gnu Emacs then automatically resizes
+itself and updates the display.
+
+By using the mouse window manager commands, the user can cause
+formerly obscured sections of the Gnu Emacs window to be uncovered.
+These sections have to be repainted. Since Gnu Emacs creates the Gnu
+Emacs window by its lonesome, Gnu Emacs must repaint these sections of
+the window all by itself. If Gnu Emacs is chugging away on some
+global regexp replacement, Gnu Emacs may take its time in repainting
+the display. (Similar repainting may take place on bit blits.)
+
+With the Gnu Emacs to X interface the mouse becomes even more
+powerful. Some mouse events (basically the ones not grabbed by the
+window manager) are passed to Gnu Emacs. Gnu Emacs is informed of the
+reception of such events because it receives the key sequence C-cC-m.
+Therefore a user who wishes to use the Gnu Emacs to X interface should
+not rebind this key sequence to any function.
+
+This key sequence is bound to the lisp function x-mouse-mode which
+goes and checks the special X Mouse Queue for mouse events. Each
+control/shift/meta-mouse button sequence is associated with a defined
+constant in the lisp file x-mouse.el. The constants are defined as
+follows:
+
+ (defconst x-button-right (char-to-string 0))
+ (defconst x-button-middle (char-to-string 1))
+ (defconst x-button-left (char-to-string 2))
+
+ (defconst x-button-s-right (char-to-string 16))
+ (defconst x-button-s-middle (char-to-string 17))
+ (defconst x-button-s-left (char-to-string 18))
+
+ (defconst x-button-m-right (char-to-string 32))
+ (defconst x-button-m-middle (char-to-string 33))
+ (defconst x-button-m-left (char-to-string 34))
+
+ (defconst x-button-c-right (char-to-string 64))
+ (defconst x-button-c-middle (char-to-string 65))
+ (defconst x-button-c-left (char-to-string 66))
+
+ (defconst x-button-m-s-right (char-to-string 48))
+ (defconst x-button-m-s-middle (char-to-string 49))
+ (defconst x-button-m-s-left (char-to-string 50))
+
+ (defconst x-button-c-s-right (char-to-string 80))
+ (defconst x-button-c-s-middle (char-to-string 81))
+ (defconst x-button-c-s-left (char-to-string 82))
+
+ (defconst x-button-c-m-right (char-to-string 96))
+ (defconst x-button-c-m-middle (char-to-string 97))
+ (defconst x-button-c-m-left (char-to-string 98))
+
+ (defconst x-button-c-m-s-right (char-to-string 112))
+ (defconst x-button-c-m-s-middle (char-to-string 113))
+ (defconst x-button-c-m-s-left (char-to-string 114)).
+
+To understand why these constants are so defined, the user should
+check out the (C) definition of the lisp function x-mouse-mode in the
+src file xfns.c. (I, Joachim Martillo not RMS, do not claim
+this code handles mouse events in the best way possible, and all
+involved with maintaining the Gnu Emacs to X interface would be open
+to suggestions for improvement.)
+
+Anyway, using these defined constants, the user may bind his own
+defined functions to mouse sequences using the define-key command as
+below:
+
+ (define-key mouse-map x-button-right 'x-mouse-select).
+
+Mouse functions are defined like any of the other lisp functions in
+Gnu Emacs.
+
+Here, exempli gratia, is the lisp definition of x-mouse-select:
+
+ (defun x-mouse-select (arg)
+ "Select Emacs window the mouse is on."
+ (let ((start-w (selected-window))
+ (done nil)
+ (w (selected-window))
+ (rel-coordinate nil))
+ (while (and (not done)
+ (null (setq rel-coordinate
+ (coordinates-in-window-p arg w))))
+ (setq w (next-window w))
+ (if (eq w start-w)
+ (setq done t)))
+ (select-window w)
+ rel-coordinate)).
+
+When the mouse sequence is received, x-mouse-mode checks out the mouse
+queue, sees the defined constant associated with that button event,
+looks up that defined constants binding in the mouse-map and then
+invokes this lisp function with arg which is a list of the x and y
+coordinates of the mouse when the mouse event under question took
+place. The lisp symbol arg is bound to (x-coordinate y-coordinate).
+
+The supplied mouse-functions and bindings are:
+
+ x-cut-and-wipe-text
+ Function: Kill text between point and mouse; also copy to
+ window system cut buffer.
+ Binding: C-Middle Button.
+
+ x-cut-text
+ Function: Copy text between point and mouse position into
+ window system cut buffer.
+ Binding: S-Middle Button (i.e. Shift-Middle Button).
+
+ x-mouse-keep-one-window
+ Function: Select Emacs window mouse is on, then kill all other Emacs
+ windows.
+ Binding: C-S-Right Button.
+
+ x-mouse-select
+ Function: Select Emacs window the mouse is on.
+ Binding: Right Button.
+
+ x-mouse-select-and-split
+ Function: Select Emacs window mouse is on, then split it vertically
+ in half.
+ Binding: C-Right Button.
+
+ x-mouse-set-mark
+ Function: Select Emacs window mouse is on, and set mark at mouse
+ position.
+ Binding: Left Button.
+ x-mouse-set-point
+ Function: Select Emacs window mouse is on, and move point to mouse
+ position.
+ Binding: Middle Button.
+
+ x-paste-text
+ Function: Move point to mouse position and insert window system cut
+ buffer contents.
+ Binding: S-Right Button.
+
+These functions are invoked simply by positioning the mouse and then
+pressing the correct key/button combination.
+
+The cut and paste functions deserve special remark. The X server
+maintains special buffers where data may be salted away. One client
+may salt data away in a cut buffer. Then another client could request
+this data. In emacs, data is salted away, by setting the point (you
+could use the mouse to set the point) then moving the mouse to the end
+(or beginning) of the text to be salted away and pressing shift
+middle. If the text should be wiped out of the buffer as well as
+salted away, C-Middle Button should be used instead of S-Middle
+Button. To get the text back into this emacs or another emacs, move
+the mouse to where the text should be inserted and invoke x-paste-text
+via S-Right Button. The text can be pasted into any client of the
+current X server from the current cut buffer using that client's paste
+command. For xterm the paste command is also S-Right Button.
+
+Other Gnu Emacs Lisp Functions
+
+Command Line Arguments
+
+.emacs File
+
+x-switches
+
+.Xdefaults
+
+
+1,,
+Summary-line: 19-Dec lbm@ATHENA.MIT.EDU #GNU Emacs under X Writeup for Manual
+Received: from ATHENA (ATHENA.MIT.EDU) by prep; Thu, 19 Dec 85 15:57:34 est
+Received: from JASON (JASON.MIT.EDU) by ATHENA (4.12/4.7)
+ id AA12646; Thu, 19 Dec 85 15:55:53 est
+Received: by JASON (5.15/4.7)
+ id AA20416; Thu, 19 Dec 85 15:55:40 EST
+Message-Id: <8512192055.AA20416@JASON>
+To: rms@prep
+Cc: tower@prep
+Subject: GNU Emacs under X Writeup for Manual
+Date: 19 Dec 85 15:55:33 EST (Thu)
+From: Linda B. Merims <lbm@ATHENA.MIT.EDU>
+
+*** EOOH ***
+To: rms@prep
+Cc: tower@prep
+Subject: GNU Emacs under X Writeup for Manual
+Date: 19 Dec 85 15:55:33 EST (Thu)
+From: Linda B. Merims <lbm@ATHENA.MIT.EDU>
+
+
+Here's something you can put in the V17 manual to describe GNU Emacs under
+X. I've added a couple of notes to you about things that didn't work
+when I tried them. It has no formatting commands in it. I
+don't know if we followed your naming conventions. It is important
+for us to distinguish between "gnuemacs" and "emacs" for the next
+six months while we convert our 2000+ users over from CCA, so I mention
+that at MIT's Project Athena, things are a little different for
+a short while.
+
+I didn't put in anything about X-specific variables. I don't know
+anything about them. I'm also a bit colloquial in places, to make
+my point better with novices (who, for example, understand "cursor" better
+than "point".) I also didn't document the -d display command option.
+Nor are there any credits to, for example, Joachim Martillo. Up to you.
+
+Hope this does you good.
+
+ Linda Merims
+
+
+----------------------------------------------------------------
+GNU Emacs on X Window System Displays
+
+
+GNU Emacs works with the X window system. It starts
+by "popping up" a new window on the screen. This can be a bit
+disconcerting if you're not used to it. If you're on one of these
+terminals, the easiest way to start up GNU Emacs is to type the same command
+you would before, but to follow it with a &, as in:
+
+emacs paper.mss &
+
+The "&" runs GNU Emacs in the "background," freeing your original
+window for other uses. (There are X-specific options to the Gnuemacs
+commands that will be listed later.)
+
+NOTE: GNU Emacs may be invoked by
+different names at different sites. It is sometimes known
+as xemacs. At MIT's Project Athena where GNU Emacs was first
+adapted to X, the correct command is: gnuemacs until summer
+1986, when it will become just: emacs.
+
+Soon, you will see a small black box in the upper left hand corner of your
+screen that reads, "emacs: 10 x 10". (This number represents
+columns x rows.) You'll also see a small outline of a window with
+a cross in the upper left hand corner of it. This is where the upper
+left hand corner of your window will be. You can move this cross with
+the mouse to any spot on the screen. You can then do one of three
+things:
+
+make an 80 column by 24 row emacs window -- click the left mouse button
+
+make an 80 column by 65 row emacs window -- click the right mouse button
+ (the length will actually be however many lines long your screen
+ can hold. 80 by 66 is about the size of an 8 1/2 x 11 piece of paper.)
+
+make any size emacs window you want -- hold down the middle mouse button
+ and move the mouse to create a window of any size. As you move the
+ mouse, the numbers in the upper left hand corner of the screen and
+ the rubber-band outline will expand or contract. Just release the
+ button when the window is the size you want.
+
+Unless you make the window in any area that does not overlap any other
+windows, you may have problems when you want to get back to a window
+obscured by the GNU Emacs window. You need to know how to use the X
+window manager, xwm, to move and shuffle these windows around. For
+more information on the window manager, you can type man xwm, on
+any Berkeley 4.3 Unix system with this user-contributed (/usr/new)
+utility available.
+
+Note that you cannot suspend (C-Z) a GNU emacs X window.
+
+
+
+GNU Emacs and the X Mouse
+
+When using GNU Emacs on an X terminal, you can take advantage of the
+convenient, quick commands for moving point, setting the mark, and
+cutting and pasting text. You issue these commands by pressing
+the mouse's buttons alone or in concert with the SHIFT, CTRL, or
+SHIFT-CTRL keys as follows:
+
+left set mark ('x-mouse-set-mark) (RMS, this blinked cursor but didn't
+ actually set anything...lbm)
+
+middle move the cursor (point) to where the mouse is. This is
+ like moving the cursor with C-F or C-N or the arrow keys,
+ only immediate. ('x-mouse-set-point)
+
+right move to the window where the mouse is. Point is in the same
+ place as it was the last time you were in the window.
+ ('x-mouse-select)
+
+
+SHIFT-left
+ undefined
+
+SHIFT-middle
+ take the text between point and mark and put it into the
+ X cut buffer. The text does NOT disappear from the screen.
+ It does NOT go into the emacs kill right. Used for copying
+ text. Recall text with SHIFT-right below. ('x-cut-text)
+
+SHIFT-right
+ paste text from the X cut buffer to before point. ('x-paste-text)
+
+
+CTRL-left
+ undefined
+
+CTRL-middle
+ take the text between point and mark and put it into the
+ X cut buffer, AND the emacs kill ring. Text is deleted
+ from the screen. Used for moving text. Recall text with
+ SHIFT-right above, or any emacs kill ring command.
+ ('x-cut-and-wipe-text)
+
+CTRL-right
+ divide current window in two. ('x-mouse-select-and-split)
+
+
+CTRL-SHIFT-middle
+ return to one-window mode, keeping the window the mouse is
+ in. ('x-mouse-keep-one-window)(RMS, this didn't always work...lbm)
+
+
+
+Emacs Command X Window Options
+
+These command options have meaning to the X window system:
+
+-r use reverse video (white characters on black background)
+
+-i use GNU emacs's bitmap icon (a kitchen sink) if the emacs
+ window is iconized instead of the xwm window manager default.
+
+-font fontname
+ use fontname instead of the default vtsingle
+
+-b borderwidth
+ make the window border borderwidth pixels wide. Default is 1.
+
+-w windowsize
+ instead of relying on the mouse buttons to determine size and
+ placement of the GNU emacs window, make it this size. Size
+ is specified as:
+
+ =[WIDTH][xHEIGHT][{+-}XOFF[{+-}YOFF]]
+
+ The []'s denote optional stuff, the {}'s surround
+ alternatives. WIDTH and HEIGHT are in number of
+ characters, XOFF and YOFF are in pixels. X and YOFF are
+ the xy offsets from the upper left corner origin for the
+ upper left corner of the window.
+
+
+GNU Emacs will check in the .Xdefaults file for default values for
+these variables. (RMS, we're not sure what program name it's
+going to be looking for...lbm)
+
+
+GNU Emacs under X Variables
+
+I don't know what these are. Sorry.
+
+
+ \ No newline at end of file