home *** CD-ROM | disk | FTP | other *** search
- HORIZONTAL SCROLLING
- ====================
-
- I have migrated my 3.2 ksh edit.c mods into the 3.3 ksh
- This file describes the mods in general and really only applies
- (at this stage) to emacs-mode. I have not touched vi-mode apart
- from making it use pprompt() so that '!' is correctly expanded
- as in emacs-mode.
-
- I would prefer to see both vi.c and emacs.c use a common set of
- primatives in edit.c - but that looks like a lot of work.
-
- Basically my mods affect the functions that move the cursor
- about and redraw the edit line.
-
- The input buffer "buf" is pointed to by "xbuf" and its end is
- pointed to by "xend". The current position in "xbuf" and end of
- the edit line are pointed to by "xcp" and "xep" respectively.
- I have added "xbp" which points to the start of a display window
- within "xbuf".
-
- [A] starting position
-
- buf
- |<-------- $COLUMNS --------->|
- | |<---- x_displen ------->|
- | PS1|
- +==========+==============--------+.......+
- |\ \ \ \
- xbuf xbp xcp xep xend
-
- [B] scrolled
-
- buf
- | |<----- COLUMNS -------->|
- | |<----- x_displen ------>|
- |
- +-----------+==========+==============--------+.......+
- \ \ \ \ \
- xbuf xbp xcp xep xend
-
- In the above -------- represents the current edit line while
- ===== represents that portion which is visible on the screen.
- Note that initially xbp == xbuf and PS1 is displayed.
- PS1 uses some of the screen width and thus "x_displen" is less
- than $COLUMNS.
-
- Any time that "xcp" moves outside the region bounded by "xbp"
- and "xbp" + "x_displen", the function x_adjust() is called to
- relocate "xbp" appropriately and redraw the line.
-
- Excessive I/O is avoided where possible. x_goto() for instance
- calculates whether the destination is outside the visible
- region, and if so simply adjusts "xcp" and calls x_adjust()
- directly. Normally though x_adjust() is called from x_putc().
-
- The above mechanism has be updated to use a function x_lastcp()
- that returns a pointer that accurately reflects the last
- visible char in the edit buffer. That is a more accurate
- version of xbp + x_displen which does not account for TABS.
-
- Other changes
- =============
-
- I have also added some emacs mode functions.
- M-[0-9]
- Set a numeric arg (positive only).
- Used by all word related commands.
- M-_
- M-.
- Retrieve word from previous command (default is last
- word). Use M-[1-9] to select word.
- M-u
- M-l
- M-c
- UPPER,lower,Capitalize word.
-
-
- Commands like delete-word now push the deleted text so that it
- may be yanked back into place.
-
- BUGS?
- =====
-
- There are bound to be some. Please report same to me:
-
- Simon J. Gerraty <sjg@zen.void.oz.au>
-
-