2009/4/2 Kalle Sommer Nielsen <[email protected]>:
> Hi Justin
>
Attached a patch instead, hopefully this will work ;)
--
Kalle Sommer Nielsen
[email protected]
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