home *** CD-ROM | disk | FTP | other *** search
- /*
- * The routines in this file
- * implement commands that work word at
- * a time. There are all sorts of word mode
- * commands. If I do any sentence and/or paragraph
- * mode commands, they are likely to be put in
- * this file.
- */
- #include "stdio.h"
- #include "ed.h"
-
- ovmain( x, f, n )
- { switch ( x )
- { case 0: return ( upperword( f, n ));
- case 1: return ( lowerword( f, n ));
- case 2: return ( capword( f, n ));
- /* case 3: return ( setfillcol( f, n )); */
- /* case 4: return ( wrapword( )); */
- }
- }
- #ifdef NEVER
- /* Word wrap on n-spaces.
- * Back-over whatever precedes the point on the current line and
- * stop on the first word-break or the beginning of the line.
- * If we reach the beginning of the line, jump back to the end of the
- * word and start a new line. Otherwise, break the line at the
- * word-break, eat it, and jump back to the end of the word.
- * NOTE: This function may leaving trailing blanks.
- * Returns TRUE on success, FALSE on errors.
- */
- wrapword()
- {
- register int cnt;
- register LINE *oldp;
-
- oldp = curwp->w_dotp;
- cnt = -1;
- do {
- cnt++;
- if (! backchar(NULL, 1))
- return(FALSE);
- }
- while (! inword());
- if (! backword(NULL, 1))
- return(FALSE);
- if (oldp == curwp->w_dotp && curwp->w_doto ) {
- if (! backdel(NULL, 1))
- return(FALSE);
- if (! newline(NULL, 1))
- return(FALSE);
- }
- return(forwword(NULL, 1) && forwchar(NULL, cnt));
- }
-
- /*
- * Set fill column to n.
- */
- setfillcol(f, n)
- {
- fillcol = n;
- return(TRUE);
- }
- #endif
- /*
- * Move the cursor forward by
- * the specified number of words. As you move,
- * convert any characters to upper case. Error
- * if you try and move beyond the end of the
- * buffer. Bound to "M-U".
- */
- upperword(f, n)
- {
- register int c;
-
- if (n < 0)
- return (FALSE);
- while (n--) {
- while (inword() == FALSE) {
- if (forwchar(FALSE, 1) == FALSE)
- return (FALSE);
- }
- while (inword() != FALSE) {
- c = lgetc(curwp->w_dotp, curwp->w_doto);
- if (c>='a' && c<='z') {
- c -= 'a'-'A';
- lputc(curwp->w_dotp, curwp->w_doto, c);
- lchange(WFHARD);
- }
- if (forwchar(FALSE, 1) == FALSE)
- return (FALSE);
- }
- }
- return (TRUE);
- }
-
- /*
- * Move the cursor forward by
- * the specified number of words. As you move
- * convert characters to lower case. Error if you
- * try and move over the end of the buffer.
- * Bound to "M-L".
- */
- lowerword(f, n)
- {
- register int c;
-
- if (n < 0)
- return (FALSE);
- while (n--) {
- while (inword() == FALSE) {
- if (forwchar(FALSE, 1) == FALSE)
- return (FALSE);
- }
- while (inword() != FALSE) {
- c = lgetc(curwp->w_dotp, curwp->w_doto);
- if (c>='A' && c<='Z') {
- c += 'a'-'A';
- lputc(curwp->w_dotp, curwp->w_doto, c);
- lchange(WFHARD);
- }
- if (forwchar(FALSE, 1) == FALSE)
- return (FALSE);
- }
- }
- return (TRUE);
- }
-
- /*
- * Move the cursor forward by
- * the specified number of words. As you move
- * convert the first character of the word to upper
- * case, and subsequent characters to lower case. Error
- * if you try and move past the end of the buffer.
- * Bound to "M-C".
- */
- capword(f, n)
- {
- register int c;
-
- if (n < 0)
- return (FALSE);
- while (n--) {
- while (inword() == FALSE) {
- if (forwchar(FALSE, 1) == FALSE)
- return (FALSE);
- }
- if (inword() != FALSE) {
- c = lgetc(curwp->w_dotp, curwp->w_doto);
- if (c>='a' && c<='z') {
- c -= 'a'-'A';
- lputc(curwp->w_dotp, curwp->w_doto, c);
- lchange(WFHARD);
- }
- if (forwchar(FALSE, 1) == FALSE)
- return (FALSE);
- while (inword() != FALSE) {
- c = lgetc(curwp->w_dotp, curwp->w_doto);
- if (c>='A' && c<='Z') {
- c += 'a'-'A';
- lputc(curwp->w_dotp, curwp->w_doto, c);
- lchange(WFHARD);
- }
- if (forwchar(FALSE, 1) == FALSE)
- return (FALSE);
- }
- }
- }
- return (TRUE);
- }