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

Reply via email to