2009/4/2 Kalle Sommer Nielsen <ka...@php.net>: > Hi Justin > Attached a patch instead, hopefully this will work ;)
-- Kalle Sommer Nielsen ka...@php.net
Index: ZendEngine2/zend_highlight.c =================================================================== RCS file: /repository/ZendEngine2/zend_highlight.c,v retrieving revision 1.49.2.3.2.2.2.6 diff -u -r1.49.2.3.2.2.2.6 zend_highlight.c --- ZendEngine2/zend_highlight.c 31 Dec 2008 11:15:32 -0000 1.49.2.3.2.2.2.6 +++ ZendEngine2/zend_highlight.c 2 Apr 2009 11:29:45 -0000 @@ -90,34 +90,41 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini TSRMLS_DC) { zval token; + zend_bool inline_class = syntax_highlighter_ini->inline_class; int token_type; - char *last_color = syntax_highlighter_ini->highlight_html; - char *next_color; + char *last_value = syntax_highlighter_ini->highlight_html; + char *next_value; zend_printf("<code>"); - zend_printf("<span style=\"color: %s\">\n", last_color); + + if (inline_class) { + zend_printf("<span class=\"%s\">\n", last_value); + } else { + zend_printf("<span style=\"color: %s;\"\n", last_value); + } + /* highlight stuff coming back from zendlex() */ token.type = 0; while ((token_type=lex_scan(&token TSRMLS_CC))) { switch (token_type) { case T_INLINE_HTML: - next_color = syntax_highlighter_ini->highlight_html; + next_value = syntax_highlighter_ini->highlight_html; break; case T_COMMENT: case T_DOC_COMMENT: - next_color = syntax_highlighter_ini->highlight_comment; + next_value = syntax_highlighter_ini->highlight_comment; break; case T_OPEN_TAG: case T_OPEN_TAG_WITH_ECHO: - next_color = syntax_highlighter_ini->highlight_default; + next_value = syntax_highlighter_ini->highlight_default; break; case T_CLOSE_TAG: - next_color = syntax_highlighter_ini->highlight_default; + next_value = syntax_highlighter_ini->highlight_default; break; case '"': case T_ENCAPSED_AND_WHITESPACE: case T_CONSTANT_ENCAPSED_STRING: - next_color = syntax_highlighter_ini->highlight_string; + next_value = syntax_highlighter_ini->highlight_string; break; case T_WHITESPACE: zend_html_puts(LANG_SCNG(yy_text), LANG_SCNG(yy_leng) TSRMLS_CC); /* no color needed */ @@ -126,20 +133,24 @@ break; default: if (token.type == 0) { - next_color = syntax_highlighter_ini->highlight_keyword; + next_value = syntax_highlighter_ini->highlight_keyword; } else { - next_color = syntax_highlighter_ini->highlight_default; + next_value = syntax_highlighter_ini->highlight_default; } break; } - if (last_color != next_color) { - if (last_color != syntax_highlighter_ini->highlight_html) { + if (last_value != next_value) { + if (last_value != syntax_highlighter_ini->highlight_html) { zend_printf("</span>"); } - last_color = next_color; - if (last_color != syntax_highlighter_ini->highlight_html) { - zend_printf("<span style=\"color: %s\">", last_color); + last_value = next_value; + if (last_value != syntax_highlighter_ini->highlight_html) { + if (inline_class) { + zend_printf("<span class=\"%s\">", last_value); + } else { + zend_printf("<span style=\"color: %s;\">", last_value); + } } } switch (token_type) { @@ -172,18 +183,22 @@ /* handler for trailing comments, see bug #42767 */ if (LANG_SCNG(yy_leng) && LANG_SCNG(yy_text) < LANG_SCNG(yy_limit)) { - if (last_color != syntax_highlighter_ini->highlight_comment) { - if (last_color != syntax_highlighter_ini->highlight_html) { + if (last_value != syntax_highlighter_ini->highlight_comment) { + if (last_value != syntax_highlighter_ini->highlight_html) { zend_printf("</span>"); } if (syntax_highlighter_ini->highlight_comment != syntax_highlighter_ini->highlight_html) { - zend_printf("<span style=\"color: %s\">", syntax_highlighter_ini->highlight_comment); + if (inline_class) { + zend_printf("<span class=\"%s\">", syntax_highlighter_ini->highlight_comment); + } else { + zend_printf("<span style=\"color: %s;\">", syntax_highlighter_ini->highlight_comment); + } } } zend_html_puts(LANG_SCNG(yy_text), (LANG_SCNG(yy_limit) - LANG_SCNG(yy_text)) TSRMLS_CC); } - if (last_color != syntax_highlighter_ini->highlight_html) { + if (last_value != syntax_highlighter_ini->highlight_html) { zend_printf("</span>\n"); } zend_printf("</span>\n"); Index: ZendEngine2/zend_highlight.h =================================================================== RCS file: /repository/ZendEngine2/zend_highlight.h,v retrieving revision 1.25.2.1.2.1.2.2 diff -u -r1.25.2.1.2.1.2.2 zend_highlight.h --- ZendEngine2/zend_highlight.h 31 Dec 2008 11:15:32 -0000 1.25.2.1.2.1.2.2 +++ ZendEngine2/zend_highlight.h 2 Apr 2009 11:23:36 -0000 @@ -29,6 +29,12 @@ #define HL_BG_COLOR "#FFFFFF" /* white */ #define HL_KEYWORD_COLOR "#007700" /* green */ +#define HL_COMMENT_CLASS "comment" +#define HL_DEFAULT_CLASS "default" +#define HL_HTML_CLASS "html" +#define HL_STRING_CLASS "string" +#define HL_KEYWORD_CLASS "keyword" + typedef struct _zend_syntax_highlighter_ini { char *highlight_html; @@ -36,6 +42,7 @@ char *highlight_default; char *highlight_string; char *highlight_keyword; + zend_bool inline_class; } zend_syntax_highlighter_ini; Index: ext/standard/basic_functions.c =================================================================== RCS file: /repository/php-src/ext/standard/basic_functions.c,v retrieving revision 1.725.2.31.2.64.2.87 diff -u -r1.725.2.31.2.64.2.87 basic_functions.c --- ext/standard/basic_functions.c 27 Mar 2009 02:32:56 -0000 1.725.2.31.2.64.2.87 +++ ext/standard/basic_functions.c 2 Apr 2009 11:27:37 -0000 @@ -5085,11 +5085,19 @@ ZEND_API void php_get_highlight_struct(zend_syntax_highlighter_ini *syntax_highlighter_ini) /* {{{ */ { - syntax_highlighter_ini->highlight_comment = INI_STR("highlight.comment"); - syntax_highlighter_ini->highlight_default = INI_STR("highlight.default"); - syntax_highlighter_ini->highlight_html = INI_STR("highlight.html"); - syntax_highlighter_ini->highlight_keyword = INI_STR("highlight.keyword"); - syntax_highlighter_ini->highlight_string = INI_STR("highlight.string"); + if ((syntax_highlighter_ini->inline_class = INI_BOOL("highlight.inline_class"))) { + syntax_highlighter_ini->highlight_comment = INI_STR("highlight.class_comment"); + syntax_highlighter_ini->highlight_default = INI_STR("highlight.class_default"); + syntax_highlighter_ini->highlight_html = INI_STR("highlight.class_html"); + syntax_highlighter_ini->highlight_keyword = INI_STR("highlight.class_keyword"); + syntax_highlighter_ini->highlight_string = INI_STR("highlight.class_string"); + } else { + syntax_highlighter_ini->highlight_comment = INI_STR("highlight.comment"); + syntax_highlighter_ini->highlight_default = INI_STR("highlight.default"); + syntax_highlighter_ini->highlight_html = INI_STR("highlight.html"); + syntax_highlighter_ini->highlight_keyword = INI_STR("highlight.keyword"); + syntax_highlighter_ini->highlight_string = INI_STR("highlight.string"); + } } /* }}} */ Index: main/main.c =================================================================== RCS file: /repository/php-src/main/main.c,v retrieving revision 1.640.2.23.2.57.2.47 diff -u -r1.640.2.23.2.57.2.47 main.c --- main/main.c 27 Mar 2009 02:34:06 -0000 1.640.2.23.2.57.2.47 +++ main/main.c 2 Apr 2009 11:25:38 -0000 @@ -394,13 +394,19 @@ /* {{{ PHP_INI */ PHP_INI_BEGIN() - PHP_INI_ENTRY_EX("define_syslog_variables", "0", PHP_INI_ALL, NULL, php_ini_boolean_displayer_cb) - PHP_INI_ENTRY_EX("highlight.bg", HL_BG_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb) + PHP_INI_ENTRY_EX("define_syslog_variables", "0", PHP_INI_ALL, NULL, php_ini_boolean_displayer_cb) + PHP_INI_ENTRY_EX("highlight.bg", HL_BG_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb) PHP_INI_ENTRY_EX("highlight.comment", HL_COMMENT_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb) PHP_INI_ENTRY_EX("highlight.default", HL_DEFAULT_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb) - PHP_INI_ENTRY_EX("highlight.html", HL_HTML_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb) + PHP_INI_ENTRY_EX("highlight.html", HL_HTML_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb) PHP_INI_ENTRY_EX("highlight.keyword", HL_KEYWORD_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb) PHP_INI_ENTRY_EX("highlight.string", HL_STRING_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb) + PHP_INI_ENTRY_EX("highlight.inline_class", "0", PHP_INI_ALL, NULL, php_ini_boolean_displayer_cb) + PHP_INI_ENTRY("highlight.class_comment", HL_COMMENT_CLASS, PHP_INI_ALL, NULL) + PHP_INI_ENTRY("highlight.class_default", HL_DEFAULT_CLASS, PHP_INI_ALL, NULL) + PHP_INI_ENTRY("highlight.class_html", HL_HTML_CLASS, PHP_INI_ALL, NULL) + PHP_INI_ENTRY("highlight.class_string", HL_STRING_CLASS, PHP_INI_ALL, NULL) + PHP_INI_ENTRY("highlight.class_keyword", HL_KEYWORD_CLASS, PHP_INI_ALL, NULL) STD_PHP_INI_BOOLEAN("allow_call_time_pass_reference", "1", PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool, allow_call_time_pass_reference, zend_compiler_globals, compiler_globals) STD_PHP_INI_BOOLEAN("asp_tags", "0", PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool, asp_tags, zend_compiler_globals, compiler_globals)
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php