This is wordmov.c in view mode; [Download] [Up]
/* These routines report on transitions between word boundaries, both * in the punctuated vi sense, and in the whitespace/darkspace * sense. The transition is reported _after_ it has occurred. You * need to back up to get to the char. before the transition. * Written for vile: Copyright (c) 1990, 1995 by Paul Fox * * $Header: /usr2/foxharp/src/pgf/vile/RCS/wordmov.c,v 1.17 1996/02/05 02:19:21 pgf Exp $ * */ #include "estruct.h" #include "edef.h" #define WASSPACE 0 #define ISSPACE 0 #define WASIDENT 1 #define ISIDENT 1 #define WASOTHER 2 #define ISOTHER 2 #define WASNL 3 #define ISNL 3 static int ochartype; static int getchartype(void) { register int c; if (is_at_end_of_line(DOT)) return (ISNL); else c = char_at(DOT); return (isspace(c) ? ISSPACE : ( isident(c) ? ISIDENT : ISOTHER ) ); } void setchartype(void) { ochartype = getchartype(); } int isnewwordf(void) { register int ret = FALSE; register int type; type = getchartype(); switch (ochartype) { case WASNL: case WASSPACE: switch (type) { case ISNL: if (doingopcmd) { ret = SORTOFTRUE; break; } /* FALLTHROUGH */ case ISSPACE: ret = FALSE; break; case ISIDENT: /* FALLTHROUGH */ case ISOTHER: ret = TRUE; break; } break; case WASIDENT: case WASOTHER: switch (type) { case ISNL: if (doingopcmd) { ret = SORTOFTRUE; break; } /* FALLTHROUGH */ case ISSPACE: if (doingopcmd && opcmd != OPDEL) { ret = SORTOFTRUE; break; } /* FALLTHROUGH */ case ISIDENT: /* FALLTHROUGH */ case ISOTHER: ret = FALSE; break; } break; } ochartype = type; return (ret); } int isnewwordb(void) { register int ret = FALSE; register int type; type = getchartype(); switch (ochartype) { case WASNL: case WASSPACE: ret = FALSE; break; case WASIDENT: switch (type) { case ISNL: case ISSPACE: ret = TRUE; break; case ISIDENT: case ISOTHER: ret = FALSE; break; } break; case WASOTHER: switch (type) { case ISNL: case ISSPACE: ret = TRUE; break; case ISIDENT: case ISOTHER: ret = FALSE; break; } break; } ochartype = type; return (ret); } int isnewviwordf(void) { register int ret = FALSE; register int type; type = getchartype(); switch (ochartype) { case WASNL: case WASSPACE: switch (type) { case ISNL: if (doingopcmd) { ret = SORTOFTRUE; break; } /* FALLTHROUGH */ case ISSPACE: ret = FALSE; break; case ISIDENT: /* FALLTHROUGH */ case ISOTHER: ret = TRUE; break; } break; case WASIDENT: switch (type) { case ISNL: if (doingopcmd) { ret = SORTOFTRUE; break; } /* FALLTHROUGH */ case ISSPACE: if (doingopcmd && opcmd != OPDEL) { ret = SORTOFTRUE; break; } /* FALLTHROUGH */ case ISIDENT: ret = FALSE; break; case ISOTHER: ret = TRUE; break; } break; case WASOTHER: switch (type) { case ISNL: if (doingopcmd) { ret = SORTOFTRUE; break; } /* FALLTHROUGH */ case ISSPACE: if (doingopcmd && opcmd != OPDEL) { ret = SORTOFTRUE; break; } /* FALLTHROUGH */ case ISOTHER: ret = FALSE; break; case ISIDENT: ret = TRUE; break; } break; } ochartype = type; return (ret); } int isnewviwordb(void) { register int ret = FALSE; register int type; type = getchartype(); switch (ochartype) { case WASNL: case WASSPACE: ret = FALSE; break; case WASIDENT: switch (type) { case ISNL: case ISSPACE: case ISOTHER: ret = TRUE; break; case ISIDENT: ret = FALSE; break; } break; case WASOTHER: switch (type) { case ISNL: case ISSPACE: case ISIDENT: ret = TRUE; break; case ISOTHER: ret = FALSE; break; } break; } ochartype = type; return (ret); } int isendwordf(void) { register int ret = FALSE; register int type; type = getchartype(); switch (ochartype) { case WASNL: case WASSPACE: ret = FALSE; break; case WASIDENT: switch (type) { case ISNL: case ISSPACE: if (doingopcmd) ret = SORTOFTRUE; else ret = TRUE; if (doingsweep) sweephack = TRUE; break; case ISIDENT: case ISOTHER: ret = FALSE; break; } break; case WASOTHER: switch (type) { case ISNL: case ISSPACE: if (doingopcmd) ret = SORTOFTRUE; else ret = TRUE; if (doingsweep) sweephack = TRUE; break; case ISIDENT: case ISOTHER: ret = FALSE; break; } break; } ochartype = type; return (ret); } int isendviwordf(void) { register int ret = FALSE; register int type; type = getchartype(); switch (ochartype) { case WASNL: case WASSPACE: ret = FALSE; break; case WASIDENT: switch (type) { case ISNL: case ISSPACE: case ISOTHER: if (doingopcmd) ret = SORTOFTRUE; else ret = TRUE; if (doingsweep) sweephack = TRUE; break; case ISIDENT: ret = FALSE; break; } break; case WASOTHER: switch (type) { case ISNL: case ISSPACE: case ISIDENT: if (doingopcmd) ret = SORTOFTRUE; else ret = TRUE; if (doingsweep) sweephack = TRUE; break; case ISOTHER: ret = FALSE; break; } break; } ochartype = type; return (ret); } #ifdef template int isANYTHING(void) { register int ret = FALSE; register int type; type = getchartype(); switch (ochartype) { case WASNL: case WASSPACE: switch (type) { case ISNL: case ISSPACE: ret = FALSE; break; case ISIDENT: ret = FALSE; break; case ISOTHER: ret = FALSE; break; } break; case WASIDENT: switch (type) { case ISNL: case ISSPACE: ret = TRUE; break; case ISIDENT: ret = FALSE; break; case ISOTHER: ret = TRUE; break; } break; case WASOTHER: switch (type) { case ISNL: case ISSPACE: ret = TRUE; break; case ISIDENT: ret = TRUE; break; case ISOTHER: ret = FALSE; break; } break; } ochartype = type; return (ret); } #endif /* template */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.