--- w3m-0.5.1/file.c~ 2004-04-16 18:47:19 +0000 +++ w3m-0.5.1/file.c 2006-12-08 01:04:52 +0000 @@ -2301,6 +2301,7 @@ sizeof(obuf->anchor)); obuf->bp.img_alt = obuf->img_alt; obuf->bp.in_bold = obuf->in_bold; + obuf->bp.in_italic = obuf->in_italic; obuf->bp.in_under = obuf->in_under; obuf->bp.nobr_level = obuf->nobr_level; obuf->bp.prev_ctype = obuf->prev_ctype; @@ -2315,6 +2316,7 @@ sizeof(obuf->anchor)); obuf->img_alt = obuf->bp.img_alt; obuf->in_bold = obuf->bp.in_bold; + obuf->in_italic = obuf->bp.in_italic; obuf->in_under = obuf->bp.in_under; obuf->prev_ctype = obuf->bp.prev_ctype; obuf->pos = obuf->bp.pos; @@ -2337,6 +2339,7 @@ case HTML_IMG_ALT: case HTML_B: case HTML_U: + case HTML_I: push_link(obuf->tag_stack[i]->cmd, obuf->line->length, obuf->pos); break; } @@ -2551,7 +2554,7 @@ FILE *f = h_env->f; Str line = obuf->line, pass = NULL; char *hidden_anchor = NULL, *hidden_img = NULL, *hidden_bold = NULL, - *hidden_under = NULL, *hidden = NULL; + *hidden_under = NULL, *hidden_italic = NULL, *hidden = NULL; #ifdef DEBUG if (w3m_debug) { @@ -2589,6 +2592,12 @@ hidden = hidden_bold; } } + if (obuf->in_italic) { + if ((hidden_italic = has_hidden_link(obuf, HTML_I)) != NULL) { + if (!hidden || hidden_italic < hidden) + hidden = hidden_italic; + } + } if (obuf->in_under) { if ((hidden_under = has_hidden_link(obuf, HTML_U)) != NULL) { if (!hidden || hidden_under < hidden) @@ -2618,6 +2627,8 @@ Strcat_charp(line, ""); if (obuf->in_bold && !hidden_bold) Strcat_charp(line, ""); + if (obuf->in_italic && !hidden_italic) + Strcat_charp(line, ""); if (obuf->in_under && !hidden_under) Strcat_charp(line, ""); @@ -2822,6 +2833,8 @@ } if (!hidden_bold && obuf->in_bold) push_tag(obuf, "", HTML_B); + if (!hidden_italic && obuf->in_italic) + push_tag(obuf, "", HTML_I); if (!hidden_under && obuf->in_under) push_tag(obuf, "", HTML_U); } @@ -2934,6 +2947,8 @@ obuf->fontstat_sp++; if (obuf->in_bold) push_tag(obuf, "", HTML_N_B); + if (obuf->in_italic) + push_tag(obuf, "", HTML_N_I); if (obuf->in_under) push_tag(obuf, "", HTML_N_U); bzero(obuf->fontstat, FONTSTAT_SIZE); @@ -2949,6 +2964,8 @@ FONTSTAT_SIZE); if (obuf->in_bold) push_tag(obuf, "", HTML_B); + if (obuf->in_italic) + push_tag(obuf, "", HTML_I); if (obuf->in_under) push_tag(obuf, "", HTML_U); } @@ -4104,6 +4121,20 @@ return 0; } return 1; + case HTML_I: + obuf->in_italic++; + if (obuf->in_italic > 1) + return 1; + return 0; + case HTML_N_I: + if (obuf->in_italic == 1 && close_effect0(obuf, HTML_I)) + obuf->in_italic = 0; + if (obuf->in_italic > 0) { + obuf->in_italic--; + if (obuf->in_italic == 0) + return 0; + } + return 1; case HTML_U: obuf->in_under++; if (obuf->in_under > 1) @@ -4119,9 +4150,15 @@ } return 1; case HTML_EM: - HTMLlineproc1("", h_env); + HTMLlineproc1("", h_env); return 1; case HTML_N_EM: + HTMLlineproc1("", h_env); + return 1; + case HTML_STRONG: + HTMLlineproc1("", h_env); + return 1; + case HTML_N_STRONG: HTMLlineproc1("", h_env); return 1; case HTML_Q: @@ -4934,7 +4971,7 @@ static int out_size = 0; Anchor *a_href = NULL, *a_img = NULL, *a_form = NULL; char *p, *q, *r, *s, *t, *str; - Lineprop mode, effect; + Lineprop mode, effect, ex_effect; int pos; int nlines; #ifdef DEBUG @@ -4981,6 +5018,7 @@ #endif effect = 0; + ex_effect = 0; nlines = 0; while ((line = feed()) != NULL) { #ifdef DEBUG @@ -5005,7 +5043,7 @@ while (str < endp) { PSIZE; mode = get_mctype(str); - if (effect & PC_SYMBOL && *str != '<') { + if ((effect | ex_effect) & PC_SYMBOL && *str != '<') { #ifdef USE_M17N char **buf = set_symbol(symbol_width0); int len; @@ -5013,16 +5051,16 @@ p = buf[(int)symbol]; len = get_mclen(p); mode = get_mctype(p); - PPUSH(mode | effect, *(p++)); + PPUSH(mode | effect | ex_effect, *(p++)); if (--len) { mode = (mode & ~PC_WCHAR1) | PC_WCHAR2; while (len--) { PSIZE; - PPUSH(mode | effect, *(p++)); + PPUSH(mode | effect | ex_effect, *(p++)); } } #else - PPUSH(PC_ASCII | effect, SYMBOL_BASE + symbol); + PPUSH(PC_ASCII | effect | ex_effect, SYMBOL_BASE + symbol); #endif str += symbol_width; } @@ -5031,12 +5069,12 @@ #else else if (mode == PC_CTRL || IS_INTSPACE(*str)) { #endif - PPUSH(PC_ASCII | effect, ' '); + PPUSH(PC_ASCII | effect | ex_effect, ' '); str++; } #ifdef USE_M17N else if (mode & PC_UNKNOWN) { - PPUSH(PC_ASCII | effect, ' '); + PPUSH(PC_ASCII | effect | ex_effect, ' '); str += get_mclen(str); } #endif @@ -5044,13 +5082,13 @@ #ifdef USE_M17N int len = get_mclen(str); #endif - PPUSH(mode | effect, *(str++)); + PPUSH(mode | effect | ex_effect, *(str++)); #ifdef USE_M17N if (--len) { mode = (mode & ~PC_WCHAR1) | PC_WCHAR2; while (len--) { PSIZE; - PPUSH(mode | effect, *(str++)); + PPUSH(mode | effect | ex_effect, *(str++)); } } #endif @@ -5068,12 +5106,12 @@ #else if (mode == PC_CTRL || IS_INTSPACE(*str)) { #endif - PPUSH(PC_ASCII | effect, ' '); + PPUSH(PC_ASCII | effect | ex_effect, ' '); p++; } #ifdef USE_M17N else if (mode & PC_UNKNOWN) { - PPUSH(PC_ASCII | effect, ' '); + PPUSH(PC_ASCII | effect | ex_effect, ' '); p += get_mclen(p); } #endif @@ -5081,13 +5119,13 @@ #ifdef USE_M17N int len = get_mclen(p); #endif - PPUSH(mode | effect, *(p++)); + PPUSH(mode | effect | ex_effect, *(p++)); #ifdef USE_M17N if (--len) { mode = (mode & ~PC_WCHAR1) | PC_WCHAR2; while (len--) { PSIZE; - PPUSH(mode | effect, *(p++)); + PPUSH(mode | effect | ex_effect, *(p++)); } } #endif @@ -5106,6 +5144,12 @@ case HTML_N_B: effect &= ~PE_BOLD; break; + case HTML_I: + ex_effect |= PE_EX_ITALIC; + break; + case HTML_N_I: + ex_effect &= ~PE_EX_ITALIC; + break; case HTML_U: effect |= PE_UNDER; break; @@ -6347,6 +6391,7 @@ bzero((void *)&obuf->anchor, sizeof(obuf->anchor)); obuf->img_alt = 0; obuf->in_bold = 0; + obuf->in_italic = 0; obuf->in_under = 0; obuf->prev_ctype = PC_ASCII; obuf->tag_sp = 0; @@ -6382,6 +6427,10 @@ push_tag(obuf, "", HTML_N_B); obuf->in_bold = 0; } + if (obuf->in_italic) { + push_tag(obuf, "", HTML_N_I); + obuf->in_italic = 0; + } if (obuf->in_under) { push_tag(obuf, "", HTML_N_U); obuf->in_under = 0; --- w3m-0.5.1/fm.h~ 2004-04-16 18:47:19 +0000 +++ w3m-0.5.1/fm.h 2006-12-08 01:04:52 +0000 @@ -166,6 +166,9 @@ #define PE_ACTIVE 0x80 #define PE_VISITED 0x4000 +/* Extra effect */ +#define PE_EX_ITALIC PE_BOLD + #define CharType(c) ((c)&P_CHARTYPE) #define CharEffect(c) ((c)&(P_EFFECT|PC_SYMBOL)) #define SetCharType(v,c) ((v)=(((v)&~P_CHARTYPE)|(c))) @@ -535,7 +538,7 @@ #define FONT_STACK_SIZE 5 -#define FONTSTAT_SIZE 4 +#define FONTSTAT_SIZE 5 #define _INIT_BUFFER_WIDTH (COLS - (showLineNum ? 6 : 1)) #define INIT_BUFFER_WIDTH ((_INIT_BUFFER_WIDTH > 0) ? _INIT_BUFFER_WIDTH : 0) @@ -583,7 +586,8 @@ #define in_bold fontstat[0] #define in_under fontstat[1] -#define in_stand fontstat[2] +#define in_italic fontstat[2] +#define in_stand fontstat[3] #define RB_PRE 0x01 #define RB_SCRIPT 0x02 --- w3m-0.5.1/html.c~ 2003-09-26 20:48:21 +0000 +++ w3m-0.5.1/html.c 2006-12-08 01:04:52 +0000 @@ -231,34 +231,44 @@ {"/s", NULL, 0, TFLG_END}, /* 106 HTML_N_S */ {"q", NULL, 0, 0}, /* 107 HTML_Q */ {"/q", NULL, 0, TFLG_END}, /* 108 HTML_N_Q */ - {NULL, NULL, 0, 0}, /* 109 Undefined */ + {"i", NULL, 0, 0}, /* 109 HTML_I */ + {"/i", NULL, 0, TFLG_END}, /* 110 HTML_N_I */ + {"strong", NULL, 0, 0}, /* 111 HTML_STRONG */ + {"/strong", NULL, 0, TFLG_END}, /* 112 HTML_N_STRONG */ + {NULL, NULL, 0, 0}, /* 113 Undefined */ + {NULL, NULL, 0, 0}, /* 114 Undefined */ + {NULL, NULL, 0, 0}, /* 115 Undefined */ + {NULL, NULL, 0, 0}, /* 116 Undefined */ + {NULL, NULL, 0, 0}, /* 117 Undefined */ + {NULL, NULL, 0, 0}, /* 118 Undefined */ + {NULL, NULL, 0, 0}, /* 119 Undefined */ /* pseudo tag */ - {"select_int", ALST_SELECT_INT, MAXA_SELECT_INT, TFLG_INT}, /* 110 HTML_SELECT_INT */ - {"/select_int", NULL, 0, TFLG_INT | TFLG_END}, /* 111 HTML_N_SELECT_INT */ - {"option_int", ALST_OPTION, MAXA_OPTION, TFLG_INT}, /* 112 HTML_OPTION_INT */ - {"textarea_int", ALST_TEXTAREA_INT, MAXA_TEXTAREA_INT, TFLG_INT}, /* 113 HTML_TEXTAREA_INT */ - {"/textarea_int", NULL, 0, TFLG_INT | TFLG_END}, /* 114 HTML_N_TEXTAREA_INT */ - {"table_alt", ALST_TABLE_ALT, MAXA_TABLE_ALT, TFLG_INT}, /* 115 HTML_TABLE_ALT */ - {"symbol", ALST_SYMBOL, MAXA_SYMBOL, TFLG_INT}, /* 116 HTML_SYMBOL */ - {"/symbol", NULL, 0, TFLG_INT | TFLG_END}, /* 117 HTML_N_SYMBOL */ - {"pre_int", NULL, 0, TFLG_INT}, /* 118 HTML_PRE_INT */ - {"/pre_int", NULL, 0, TFLG_INT | TFLG_END}, /* 119 HTML_N_PRE_INT */ - {"title_alt", ALST_TITLE_ALT, MAXA_TITLE_ALT, TFLG_INT}, /* 120 HTML_TITLE_ALT */ - {"form_int", ALST_FORM_INT, MAXA_FORM_INT, TFLG_INT}, /* 121 HTML_FORM_INT */ - {"/form_int", NULL, 0, TFLG_INT | TFLG_END}, /* 122 HTML_N_FORM_INT */ - {"dl_compact", NULL, 0, TFLG_INT}, /* 123 HTML_DL_COMPACT */ - {"input_alt", ALST_INPUT_ALT, MAXA_INPUT_ALT, TFLG_INT}, /* 124 HTML_INPUT_ALT */ - {"/input_alt", NULL, 0, TFLG_INT | TFLG_END}, /* 125 HTML_N_INPUT_ALT */ - {"img_alt", ALST_IMG_ALT, MAXA_IMG_ALT, TFLG_INT}, /* 126 HTML_IMG_ALT */ - {"/img_alt", NULL, 0, TFLG_INT | TFLG_END}, /* 127 HTML_N_IMG_ALT */ - {" ", ALST_NOP, MAXA_NOP, TFLG_INT}, /* 128 HTML_NOP */ - {"pre_plain", NULL, 0, TFLG_INT}, /* 129 HTML_PRE_PLAIN */ - {"/pre_plain", NULL, 0, TFLG_INT | TFLG_END}, /* 130 HTML_N_PRE_PLAIN */ - {"internal", NULL, 0, TFLG_INT}, /* 131 HTML_INTERNAL */ - {"/internal", NULL, 0, TFLG_INT | TFLG_END}, /* 132 HTML_N_INTERNAL */ - {"div_int", ALST_P, MAXA_P, TFLG_INT}, /* 133 HTML_DIV_INT */ - {"/div_int", NULL, 0, TFLG_INT | TFLG_END}, /* 134 HTML_N_DIV_INT */ + {"select_int", ALST_SELECT_INT, MAXA_SELECT_INT, TFLG_INT}, /* 120 HTML_SELECT_INT */ + {"/select_int", NULL, 0, TFLG_INT | TFLG_END}, /* 121 HTML_N_SELECT_INT */ + {"option_int", ALST_OPTION, MAXA_OPTION, TFLG_INT}, /* 122 HTML_OPTION_INT */ + {"textarea_int", ALST_TEXTAREA_INT, MAXA_TEXTAREA_INT, TFLG_INT}, /* 123 HTML_TEXTAREA_INT */ + {"/textarea_int", NULL, 0, TFLG_INT | TFLG_END}, /* 124 HTML_N_TEXTAREA_INT */ + {"table_alt", ALST_TABLE_ALT, MAXA_TABLE_ALT, TFLG_INT}, /* 125 HTML_TABLE_ALT */ + {"symbol", ALST_SYMBOL, MAXA_SYMBOL, TFLG_INT}, /* 126 HTML_SYMBOL */ + {"/symbol", NULL, 0, TFLG_INT | TFLG_END}, /* 127 HTML_N_SYMBOL */ + {"pre_int", NULL, 0, TFLG_INT}, /* 128 HTML_PRE_INT */ + {"/pre_int", NULL, 0, TFLG_INT | TFLG_END}, /* 129 HTML_N_PRE_INT */ + {"title_alt", ALST_TITLE_ALT, MAXA_TITLE_ALT, TFLG_INT}, /* 130 HTML_TITLE_ALT */ + {"form_int", ALST_FORM_INT, MAXA_FORM_INT, TFLG_INT}, /* 131 HTML_FORM_INT */ + {"/form_int", NULL, 0, TFLG_INT | TFLG_END}, /* 132 HTML_N_FORM_INT */ + {"dl_compact", NULL, 0, TFLG_INT}, /* 133 HTML_DL_COMPACT */ + {"input_alt", ALST_INPUT_ALT, MAXA_INPUT_ALT, TFLG_INT}, /* 134 HTML_INPUT_ALT */ + {"/input_alt", NULL, 0, TFLG_INT | TFLG_END}, /* 135 HTML_N_INPUT_ALT */ + {"img_alt", ALST_IMG_ALT, MAXA_IMG_ALT, TFLG_INT}, /* 136 HTML_IMG_ALT */ + {"/img_alt", NULL, 0, TFLG_INT | TFLG_END}, /* 137 HTML_N_IMG_ALT */ + {" ", ALST_NOP, MAXA_NOP, TFLG_INT}, /* 138 HTML_NOP */ + {"pre_plain", NULL, 0, TFLG_INT}, /* 139 HTML_PRE_PLAIN */ + {"/pre_plain", NULL, 0, TFLG_INT | TFLG_END}, /* 140 HTML_N_PRE_PLAIN */ + {"internal", NULL, 0, TFLG_INT}, /* 141 HTML_INTERNAL */ + {"/internal", NULL, 0, TFLG_INT | TFLG_END}, /* 142 HTML_N_INTERNAL */ + {"div_int", ALST_P, MAXA_P, TFLG_INT}, /* 143 HTML_DIV_INT */ + {"/div_int", NULL, 0, TFLG_INT | TFLG_END}, /* 144 HTML_N_DIV_INT */ }; TagAttrInfo AttrMAP[MAX_TAGATTR] = { --- w3m-0.5.1/html.h~ 2003-10-20 16:41:56 +0000 +++ w3m-0.5.1/html.h 2006-12-08 01:04:52 +0000 @@ -197,35 +197,39 @@ #define HTML_N_S 106 #define HTML_Q 107 #define HTML_N_Q 108 +#define HTML_I 109 +#define HTML_N_I 110 +#define HTML_STRONG 111 +#define HTML_N_STRONG 112 /* pseudo tag */ -#define HTML_SELECT_INT 110 -#define HTML_N_SELECT_INT 111 -#define HTML_OPTION_INT 112 -#define HTML_TEXTAREA_INT 113 -#define HTML_N_TEXTAREA_INT 114 -#define HTML_TABLE_ALT 115 -#define HTML_SYMBOL 116 -#define HTML_N_SYMBOL 117 -#define HTML_PRE_INT 118 -#define HTML_N_PRE_INT 119 -#define HTML_TITLE_ALT 120 -#define HTML_FORM_INT 121 -#define HTML_N_FORM_INT 122 -#define HTML_DL_COMPACT 123 -#define HTML_INPUT_ALT 124 -#define HTML_N_INPUT_ALT 125 -#define HTML_IMG_ALT 126 -#define HTML_N_IMG_ALT 127 -#define HTML_NOP 128 -#define HTML_PRE_PLAIN 129 -#define HTML_N_PRE_PLAIN 130 -#define HTML_INTERNAL 131 -#define HTML_N_INTERNAL 132 -#define HTML_DIV_INT 133 -#define HTML_N_DIV_INT 134 +#define HTML_SELECT_INT 120 +#define HTML_N_SELECT_INT 121 +#define HTML_OPTION_INT 122 +#define HTML_TEXTAREA_INT 123 +#define HTML_N_TEXTAREA_INT 124 +#define HTML_TABLE_ALT 125 +#define HTML_SYMBOL 126 +#define HTML_N_SYMBOL 127 +#define HTML_PRE_INT 128 +#define HTML_N_PRE_INT 129 +#define HTML_TITLE_ALT 130 +#define HTML_FORM_INT 131 +#define HTML_N_FORM_INT 132 +#define HTML_DL_COMPACT 133 +#define HTML_INPUT_ALT 134 +#define HTML_N_INPUT_ALT 135 +#define HTML_IMG_ALT 136 +#define HTML_N_IMG_ALT 137 +#define HTML_NOP 138 +#define HTML_PRE_PLAIN 139 +#define HTML_N_PRE_PLAIN 140 +#define HTML_INTERNAL 141 +#define HTML_N_INTERNAL 142 +#define HTML_DIV_INT 143 +#define HTML_N_DIV_INT 144 -#define MAX_HTMLTAG 135 +#define MAX_HTMLTAG 145 /* Tag attribute */ --- w3m-0.5.1/tagtable.tab~ 2003-09-22 21:02:22 +0000 +++ w3m-0.5.1/tagtable.tab 2006-12-08 01:04:52 +0000 @@ -21,8 +21,8 @@ br HTML_BR b HTML_B /b HTML_N_B -i HTML_NOP -/i HTML_NOP +i HTML_I +/i HTML_N_I tt HTML_NOP /tt HTML_NOP ul HTML_UL @@ -60,8 +60,8 @@ /kbd HTML_NOP samp HTML_NOP /samp HTML_NOP -strong HTML_EM -/strong HTML_N_EM +strong HTML_STRONG +/strong HTML_N_STRONG var HTML_NOP /var HTML_NOP address HTML_BR