home *** CD-ROM | disk | FTP | other *** search
-
- /********** Documentation to be inserted in file "edoc" ***********
-
- narrow-bounds-to-region Narrow portion of buffer to edit to region.
- Make region the only portion of the buffer that your commands
- affect. Return to editting of the entire buffer with widen-bounds.
-
- widen-bounds Widen bounds to entire buffer.
- Use this command when you have finished editting a portion of the
- buffer selected previously with narrow-bounds-to-region.
-
- *********** End of documentation **********/
-
- /* ----- Gary R. Smith (smith#gary@b.mfenet@nmfecc.arpa) */
-
- /****************** Beginning of file "narrow.e" ******************/
-
- /* EEL commands to customize Epsilon 3.05 written by Gary R. Smith,
- Aug. 9, 1986. */
-
- #include "eel.h"
-
- buffer int narrow_mode = 0; /* Are we in narrow mode? */
-
- char *bef_reg;
- char *aft_reg;
- /*****************************************************************************
- * *
- * Save parts of buffer before and after region in temporary buffers, *
- * and leave only region in the current buffer. *
- * *
- *****************************************************************************/
- command narrow_bounds_to_region() on cx_tab['n']
- {
- int mod = modified;
- int beg_reg = point;
- int end_reg = mark;
-
- if (narrow_mode) error("Already in Narrow mode");
-
- if (point > mark) { /* beginning and end of region */
- beg_reg = mark;
- end_reg = point;
- }
-
- aft_reg = temp_buf();
- xfer(aft_reg, end_reg, size()); /* save part after region */
- delete(end_reg, size());
-
- bef_reg = temp_buf();
- xfer(bef_reg, 0, beg_reg); /* save part before region */
- delete(0, beg_reg);
-
- modified = mod;
- narrow_mode = 1; /* now in Narrow mode */
- make_mode();
- }
-
- /*****************************************************************************
- * *
- * Restore parts of buffer saved by narrow_bounds_to_region. *
- * Keep point, mark, and window_start in same places. *
- * *
- *****************************************************************************/
- command widen_bounds() on cx_tab['w']
- {
- int mod = modified;
- char *current_buffer;
- int oldstart = window_start; /* save start of window */
- int oldpos = point; /* and point and mark */
- int oldmark = mark;
- int size_bef;
-
- if (!narrow_mode) error("Cannot widen when not in Narrow mode");
-
- point = 0; /* insert at beginning of current buffer */
- current_buffer = bufname;
- bufname = bef_reg; /* from 'before-region' temp buf */
- xfer(current_buffer, 0, size());
- size_bef = size();
-
- bufname = current_buffer;
- point = size(); /* insert at end of current buffer */
- bufname = aft_reg; /* from 'after-region' temp buf */
- xfer(current_buffer, 0, size());
- bufname = current_buffer;
-
- mark = oldmark + size_bef; /* restore point and mark */
- point = oldpos + size_bef;
- window_start = oldstart + size_bef; /* same start of window */
-
- modified = mod;
- narrow_mode = 0; /* no longer in Narrow mode */
- make_mode();
- }
-
- /* make_mode() from disp.e is enhanced here to show Narrow mode */
-
- make_mode()
- {
- strcpy(mode, major_mode);
- if (fill_mode)
- strcat(mode, " Fill");
- if (over_mode)
- strcat(mode, " Over");
- if (!strip_returns)
- strcat(mode, " NoTrans");
- if (narrow_mode)
- strcat(mode, " Narrow");
- }
-
- /****************** End of file "narrow.e" ******************/
-