summaryrefslogtreecommitdiff
path: root/usr.bin/mg
diff options
context:
space:
mode:
authorKjell Wooding <kjell@cvs.openbsd.org>2005-10-18 18:54:49 +0000
committerKjell Wooding <kjell@cvs.openbsd.org>2005-10-18 18:54:49 +0000
commit71a0e55c9189eaee031acff9e6e5c2e6b01b40ac (patch)
treee89a1fd2af315445230e61e6d67e2bfc08dc38d0 /usr.bin/mg
parente178d9716709d1f331bd63b02088843b23cca4f5 (diff)
make fill-paragraph undoable
Diffstat (limited to 'usr.bin/mg')
-rw-r--r--usr.bin/mg/paragraph.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/usr.bin/mg/paragraph.c b/usr.bin/mg/paragraph.c
index 064e455ef7d..f26ca82eba6 100644
--- a/usr.bin/mg/paragraph.c
+++ b/usr.bin/mg/paragraph.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: paragraph.c,v 1.11 2005/06/14 18:14:40 kjell Exp $ */
+/* $OpenBSD: paragraph.c,v 1.12 2005/10/18 18:54:48 kjell Exp $ */
/* This file is in the public domain. */
@@ -126,9 +126,13 @@ fillpara(int f, int n)
int firstflag; /* first word? (needs no space) */
int newlength; /* tentative new line length */
int eolflag; /* was at end of line */
+ int retval; /* return value */
LINE *eopline; /* pointer to line just past EOP */
char wbuf[MAXWORD]; /* buffer for current word */
+ undo_add_boundary();
+ undo_no_boundary(TRUE);
+
/* record the pointer to the line just past the EOP */
(void)gotoeop(FFRAND, 1);
if (curwp->w_doto != 0) {
@@ -161,8 +165,10 @@ fillpara(int f, int n)
c = lgetc(curwp->w_dotp, curwp->w_doto);
/* and then delete it */
- if (ldelete((RSIZE) 1, KNONE) == FALSE && !eopflag)
- return (FALSE);
+ if (ldelete((RSIZE) 1, KNONE) == FALSE && !eopflag) {
+ retval = FALSE;
+ goto cleanup;
+ }
/* if not a separator, just add it in */
if (c != ' ' && c != '\t') {
@@ -229,7 +235,11 @@ fillpara(int f, int n)
* beginning of the blank line.
*/
(void)backchar(FFRAND, 1);
- return (TRUE);
+ retval = TRUE;
+cleanup:
+ undo_no_boundary(FALSE);
+ undo_add_boundary();
+ return (retval);
}
/*