[w3m-dev 03667] fold patch
* anchor.c (reAnchorPos): rewrite (reAnchorWord): delete reseq_anchor() (reAnchorAny): use l->size delete reseq_anchor() * backend.c (internal_get): pass TRUE to saveBuffer * buffer.c (newBuffer): delete n->linelen (reshapeBuffer): rewrite * display.c (displayBuffer): FoldLine (redrawLine): l->bpos (cursorUp0): added (cursorUp): rewrite (cursorDown0): added (cursowDown): rewrite (cursorRight): check l->next l->bwidth (cursorLeft): l->prev && l->bpos l->bwidth (arrangeCursor): buf->currentLine->bwidth buf->cursorX * etc.c (checkType): **oporp rewrite (calcPosition): realColumn allocated by New_reuse * file.c (addnewline): add nlines arg (propBuffer): deleted (colorBuffer): deleted (readHeader): propBuffer FOLD_BUFFER_WIDTH (HTMLlineproc2body): rewrite (addnewline2): added (addnewline): rewrite (loadBuffer): propBuffer, colorBuffer (saveBuffer): cont arg (getNextPage): rewrite * fm.h (LINELEN): 256 (FNLEN): deleted (Line): add size, bpos, bwidth (Buffer): delete linelen (INIT_BUFFER_WIDTH): check showLineNum (FOLD_BUFFER_WIDTH): added (FoldLine): added * funcname.tab (RESHAPE): added * main.c (do_dump): pass FALSE to saveBuffer (nscroll): rewrite (clear_mark): l->size (shiftvisualpos): rewrite (pipeBuf): pass TRUE to saveBuffer (linebeg): check line->prev && line->bpos (linend): check line->next, line->next->bpos (editScr): pass TRUE to saveBuffer (svBuf): pass TRUE to saveBuffer (vmSrc): pass TRUE to saveBuffer (reshape): added (curlno): rewrite * mimehead.c (LINELEN): deleted * proto.h (reshape): added (saveBuffer): add cont arg (cursorUp0): added (cursorDown0): added (checkType): change type oprop, ocolor, delete check_color, len * rc.c (CMT_FOLD_LINE): added (params1): add fold_line (sync_with_option): check PagerMax * search.c (set_mark): l->size (forwardSearch): rewrite (backwardSearch): rewrite * doc/README.func (RESHAPE): added * doc-jp/README.func (RESHAPE): added * scripts/w3mhelp.cgi.in (Buffer operation): add reshape From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
56
etc.c
56
etc.c
@@ -1,4 +1,4 @@
|
||||
/* $Id: etc.c,v 1.57 2003/01/23 18:01:05 ukai Exp $ */
|
||||
/* $Id: etc.c,v 1.58 2003/01/23 18:37:20 ukai Exp $ */
|
||||
#include "fm.h"
|
||||
#include <pwd.h>
|
||||
#include "myctype.h"
|
||||
@@ -236,50 +236,62 @@ parse_ansi_color(char **str, Lineprop *effect, Linecolor *color)
|
||||
*/
|
||||
|
||||
Str
|
||||
checkType(Str s, Lineprop *oprop,
|
||||
checkType(Str s, Lineprop **oprop
|
||||
#ifdef USE_ANSI_COLOR
|
||||
Linecolor *ocolor, int *check_color,
|
||||
, Linecolor **ocolor
|
||||
#endif
|
||||
int len)
|
||||
)
|
||||
{
|
||||
Lineprop mode;
|
||||
Lineprop effect = PE_NORMAL;
|
||||
Lineprop *prop = oprop;
|
||||
Lineprop *prop;
|
||||
static Lineprop *prop_buffer = NULL;
|
||||
static int prop_size = 0;
|
||||
char *str = s->ptr, *endp = &s->ptr[s->length], *bs = NULL;
|
||||
#ifdef USE_ANSI_COLOR
|
||||
Lineprop ceffect = PE_NORMAL;
|
||||
Linecolor cmode = 0;
|
||||
int check_color = FALSE;
|
||||
Linecolor *color = NULL;
|
||||
static Linecolor *color_buffer = NULL;
|
||||
static int color_size = 0;
|
||||
char *es = NULL;
|
||||
#endif
|
||||
int do_copy = FALSE;
|
||||
int size = (len < s->length) ? len : s->length;
|
||||
|
||||
#ifdef USE_ANSI_COLOR
|
||||
if (check_color)
|
||||
*check_color = FALSE;
|
||||
#endif
|
||||
if (prop_size < s->length) {
|
||||
prop_size = (s->length > LINELEN) ? s->length : LINELEN;
|
||||
prop_buffer = New_Reuse(Lineprop, prop_buffer, prop_size);
|
||||
}
|
||||
prop = prop_buffer;
|
||||
|
||||
if (ShowEffect) {
|
||||
bs = memchr(str, '\b', s->length);
|
||||
#ifdef USE_ANSI_COLOR
|
||||
if (ocolor) {
|
||||
es = memchr(str, ESC_CODE, s->length);
|
||||
if (es)
|
||||
color = ocolor;
|
||||
if (es) {
|
||||
if (color_size < s->length) {
|
||||
color_size = (s->length > LINELEN) ? s->length : LINELEN;
|
||||
color_buffer = New_Reuse(Linecolor, color_buffer,
|
||||
color_size);
|
||||
}
|
||||
color = color_buffer;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (s->length > size || (bs != NULL)
|
||||
if ((bs != NULL)
|
||||
#ifdef USE_ANSI_COLOR
|
||||
|| (es != NULL)
|
||||
#endif
|
||||
) {
|
||||
s = Strnew_size(size);
|
||||
s = Strnew_size(s->length);
|
||||
do_copy = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
while (str < endp) {
|
||||
if (prop - oprop >= len)
|
||||
if (prop - prop_buffer >= prop_size)
|
||||
break;
|
||||
if (bs != NULL) {
|
||||
if (str == bs - 2 && !strncmp(str, "__\b\b", 4)) {
|
||||
@@ -410,7 +422,7 @@ checkType(Str s, Lineprop *oprop,
|
||||
es = memchr(str, ESC_CODE, endp - str);
|
||||
if (ok) {
|
||||
if (cmode)
|
||||
*check_color = TRUE;
|
||||
check_color = TRUE;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -458,13 +470,19 @@ checkType(Str s, Lineprop *oprop,
|
||||
}
|
||||
effect = PE_NORMAL;
|
||||
}
|
||||
*oprop = prop_buffer;
|
||||
#ifdef USE_ANSI_COLOR
|
||||
if (ocolor)
|
||||
*ocolor = check_color ? color_buffer : NULL;
|
||||
#endif
|
||||
return s;
|
||||
}
|
||||
|
||||
int
|
||||
calcPosition(char *l, Lineprop *pr, int len, int pos, int bpos, int mode)
|
||||
{
|
||||
static short realColumn[LINELEN + 1];
|
||||
static short *realColumn = NULL;
|
||||
static int size = 0;
|
||||
static char *prevl = NULL;
|
||||
int i, j;
|
||||
|
||||
@@ -474,6 +492,10 @@ calcPosition(char *l, Lineprop *pr, int len, int pos, int bpos, int mode)
|
||||
if (pos <= len)
|
||||
return realColumn[pos];
|
||||
}
|
||||
if (size < len + 1) {
|
||||
size = (len + 1 > LINELEN) ? (len + 1) : LINELEN;
|
||||
realColumn = New_Reuse(short, realColumn, size);
|
||||
}
|
||||
prevl = l;
|
||||
j = bpos;
|
||||
for (i = 0;; i++) {
|
||||
|
||||
Reference in New Issue
Block a user