コード例 #1
0
ファイル: paragraph.c プロジェクト: bloovis/micro-emacs
/*
 * Add a character, checking for word wrapping.
 * Check to see if we're past fillcol, and if so,
 * justify this line. As a last step, justify the line.
 */
int
fillword (int f, int n, int k)
{
  register char c;
  register int col, i, nce;

  for (i = col = 0; col <= fillcol; ++i, ++col)
    {
      if (i == curwp->w_dot.o)
	return selfinsert (f, n, k);
      c = lgetc (curwp->w_dot.p, i);
      if (c == '\t')
	col += (tabsize - col % tabsize) - 1;
      else if (ISCTRL (c) != FALSE)
	++col;
    }
  if (curwp->w_dot.o != llength (curwp->w_dot.p))
    {
      selfinsert (f, n, k);
      nce = llength (curwp->w_dot.p) - curwp->w_dot.o;
    }
  else
    nce = 0;
  curwp->w_dot.o = i;

  if ((c = lgetc (curwp->w_dot.p, curwp->w_dot.o)) != ' ' && c != '\t')
    do
      {
	backchar (FALSE, 1, KRANDOM);
      }
    while ((c = lgetc (curwp->w_dot.p, curwp->w_dot.o)) != ' '
	   && c != '\t' && curwp->w_dot.o > 0);

  if (curwp->w_dot.o == 0)
    do
      {
	forwchar (FALSE, 1, KRANDOM);
      }
    while ((c = lgetc (curwp->w_dot.p, curwp->w_dot.o)) != ' '
	   && c != '\t' && curwp->w_dot.o < llength (curwp->w_dot.p));

  delwhite (FALSE, 1, KRANDOM);
  backdel (FALSE, 1, KRANDOM);
  lnewline ();
  curwp->w_dot.o = llength (curwp->w_dot.p) - nce;
  curwp->w_flag |= WFMOVE;
  if (nce == 0 && curwp->w_dot.o != 0)
    return (fillword (f, n, k));
  return (TRUE);
}
コード例 #2
0
ファイル: paragraph.c プロジェクト: hboetes/mg
/* ARGSUSED */
int
fillword(int f, int n)
{
    char	c;
    int	col, i, nce;

    for (i = col = 0; col <= fillcol; ++i, ++col) {
        if (i == curwp->w_doto)
            return selfinsert(f, n);
        c = lgetc(curwp->w_dotp, i);
        if (c == '\t'
#ifdef NOTAB
                && !(curbp->b_flag & BFNOTAB)
#endif
           )
            col |= 0x07;
        else if (ISCTRL(c) != FALSE)
            ++col;
    }
    if (curwp->w_doto != llength(curwp->w_dotp)) {
        (void)selfinsert(f, n);
        nce = llength(curwp->w_dotp) - curwp->w_doto;
    } else
        nce = 0;
    curwp->w_doto = i;

    if ((c = lgetc(curwp->w_dotp, curwp->w_doto)) != ' ' && c != '\t')
        do {
            (void)backchar(FFRAND, 1);
        } while ((c = lgetc(curwp->w_dotp, curwp->w_doto)) != ' ' &&
                 c != '\t' && curwp->w_doto > 0);

    if (curwp->w_doto == 0)
        do {
            (void)forwchar(FFRAND, 1);
        } while ((c = lgetc(curwp->w_dotp, curwp->w_doto)) != ' ' &&
                 c != '\t' && curwp->w_doto < llength(curwp->w_dotp));

    (void)delwhite(FFRAND, 1);
    (void)lnewline();
    i = llength(curwp->w_dotp) - nce;
    curwp->w_doto = i > 0 ? i : 0;
    curwp->w_rflag |= WFMOVE;
    if (nce == 0 && curwp->w_doto != 0)
        return (fillword(f, n));
    return (TRUE);
}