HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/share/jed/lib/php.sl
%   file     : php.sl
%   author   : Mikael hultgren <micke@yeah.nu>
%   version  : 1.5-0
%
%   $Id: php.sl,v 1.190 2001/10/03 13:27:08 child Exp $
%
%   D e s c r i p t i o n
%   ---------------------
%
%   This is a mode for editing php files in jed, hence the name phpmode :)
%
%   The reason for this mode is that the only mode i
%   could find for editing php files under jed was one
%   i found on dotfiles made by Eric Thelin.
%   But it didn't work as i wanted, so i grabbed what i
%   could from it, and started from cmode as a template.
%
%   At the moment it does keyword highlighting and proper
%   indenting, plus a slew of other functionality.
%
%   -------------------------------------------------------------------------------------------
%   PHP-mode variables:
%   -------------------------------------------------------------------------------------------
%   variable PHP_INDENT      = 4;       % Amount of space to indent within block.
%   variable PHP_BRACE       = 0;       % Amount of space to indent brace
%   variable PHP_BRA_NEWLINE = 0;       % If non-zero, insert a newline first before inserting
%                                       % a '{'.
%   variable PHP_CONTINUED_OFFSET = 2;  % This variable controls the indentation of statements
%                                       % that are continued onto the next line.
%   variable PHP_Colon_Offset = 1;      % Controls the indentation of case inside switch statements.
%   variable PHP_Class_Offset = 4;      % Controls the amount of indenting inside the class,
%                                       % doesn't apply to the braces
%   variable PHP_Switch_Offset = 0      % Controls the ammount of extra indention inside switch statements.
%   variable PHP_KET_NEWLINE = 0;       % If non-zero, insert a newline first before inserting
%                                       % a '}'.
%   variable PHP_Autoinsert_Comments = 1;
%  --------------------------------------------------------------------------------------------
%
%   T h a n k s  g o  o u t  t o
%   ----------------------------
%
%    o Eric thelin <eric at thelin.org> for his phpmode that got me started.
%    o David <dstegbauer at post.cz>  who pointed out that php isn't in fact a
%      case sensitive language when it comes to
%      functions ;)
%    o Abraham vd Merwe <abz at blio.net> for his relentless bug-reporting,
%      feature suggestions and beta-tester.
%      Without him my to-do list would be
%      considerable shorter ;)
%    o cmode.sl in jed, without that this mode wouldn't be
%      nearly as feature rich as it is now.
%    o latex.sl for tips on how to do things.
%

% Set all variables to a default value so people who forget to add
% them to their .jedrc doesnt get a error.
%
custom_variable( "PHP_INDENT", 4 );
custom_variable( "PHP_BRACE", 0 );
custom_variable( "PHP_BRA_NEWLINE", 0 );
custom_variable( "PHP_CONTINUED_OFFSET", 2 );
custom_variable( "PHP_Colon_Offset", 1 );
custom_variable( "PHP_Class_Offset", 4 );
custom_variable( "PHP_Switch_Offset", 0 );
custom_variable( "PHP_KET_NEWLINE", 0 );
custom_variable( "PHP_Autoinsert_Comments", 0 );

private define php_is_comment( ) %{{{
{
   push_spot( );
   bol_skip_white( );
   0;
   if( looking_at( "//" ) or looking_at( "#" ))
     {
        pop( );
        what_column( );
     }
   pop_spot( );
}
%}}}
private define php_parse_to_point( ) %{{{
{
   parse_to_point( )
     or php_is_comment( );
}
%}}}
private variable PHPmode_Fill_Chars = "";
define php_paragraph_sep( ) %{{{
{
   if( strlen( PHPmode_Fill_Chars ))
     return 0;
   push_spot( );
   bol_skip_white( );
   if( looking_at( "* " ) or looking_at( "// " ) or looking_at( "# " ))
     {
        go_right( 2 );
        skip_white( );
        if( looking_at( "@ " ))
          eol( );
     }

   eolp( ) or ( -2 != parse_to_point( ) );
   pop_spot( );
}
%}}}
define php_format_paragraph( ) %{{{
{
   variable n, dwrap;

   PHPmode_Fill_Chars = "";
   if( php_paragraph_sep( ) )
     return;
   push_spot( );
   push_spot( );
   push_spot( );

   while( not( php_paragraph_sep( ) ))
     {
        ifnot( up_1( ) )
          break;
     }
   if( php_paragraph_sep( ) )
     go_down_1( );
   push_mark( );
   pop_spot( );

   while( not( php_paragraph_sep( ) ))
     {
        ifnot( down_1( ) )
          break;
     }

   if( php_paragraph_sep( ) )
     go_up_1( );

   narrow( );
   pop_spot( );
   bol( );
   push_mark( );
   skip_white( );
   if( looking_at( "* " ))
     go_right( 2 );
   else if( looking_at( "// " ))
     go_right( 3 );
   else if( looking_at( "# " ))
     go_right( 2 );

   PHPmode_Fill_Chars = bufsubstr( );
   dwrap = what_column( );
   bob( );
   do
     {
        bol_trim( );
        if( looking_at( "* " ))
          deln( 2 );
        else if( looking_at( "// " ))
          deln( 3 );
        else if( looking_at( "# " ))
          deln( 2 );
     }

   while( down_1( ) );
   WRAP -= dwrap;
   call( "format_paragraph" );
   WRAP += dwrap;
   bob( );
   do
     {
        insert( PHPmode_Fill_Chars );
     }
   while( down_1( ) );

   bol( );
   go_right( strlen( PHPmode_Fill_Chars ));

   skip_white( );
   if( looking_at( "*/" ))
     {
        push_mark( );
        bol_skip_white( );
        del_region( );
     }

   PHPmode_Fill_Chars = "";
   widen( );
   pop_spot( );
}
%}}}
define php_in_block( ) %{{{
{
   variable begin = 0, end = 0;
   variable delim_start = "<?";
   variable delim_end   = "?>";
   variable delim_ASP_start = "<%";
   variable delim_ASP_end   = "%>";
   variable test;

   push_spot( );
   if( bolp( ) )
     {
        if( looking_at( delim_start )
            or looking_at( delim_end )
            or looking_at( delim_ASP_start )
            or looking_at( delim_ASP_end ))
          {
             pop_spot( );
             return( 1 );
          }
     }

   if( looking_at( ">" ))
     {
        go_left( 1 );
        if( looking_at( "?" ) or looking_at( "%" ))
          {
             pop_spot( );
             return( 1 );
          }
     }

   forever
     {
        if( bsearch( delim_start ) or bsearch( delim_ASP_start ))
          {
             if( php_parse_to_point( ) == 0 )
               {
                  begin = what_line( );
                  break;
               }
             continue;
          }
        else
          {
             break;
          }
     }

   pop_spot( );

   push_spot( );
   forever
     {
        if( bsearch( delim_end ) or bsearch( delim_ASP_end ))
          {
             if( php_parse_to_point( ) == 0 )
               {
                  end = what_line( );
                  break;
               }
             continue;
          } else {
             break;
          }
     }

   pop_spot( );

   if( end < begin )
     {
        return( 1 );
     }
   return( 0 );
}
%}}}

define php_top_of_function( ) %{{{
{
   push_spot( );
   variable current,end,start_brace;
   current = what_line;
   ifnot( re_bsearch( "function[ \t]+[a-zA-Z_0-9]+[ \t]?\(.*\)") )
     {
        error( "Cant find top of function" );
     }

   % Check to see if were in a comment
   if( php_parse_to_point( ) )
     {
        pop_spot( );
        error( "Cant find top of function" );
     }

   ifnot( fsearch( "{") )
     {
        error( "Missing beginning brace of function." );
     }
   start_brace = what_line;
   if( start_brace > current )
     {
        pop_spot( );
        error( "Missing beginning brace of function." );
     }
   find_matching_delimiter( '{' );
   end = what_line;
   if( end < current )
     {
        pop_spot( );
        error( "Not in function" );
     }
   find_matching_delimiter( '}' );
}
%}}}
define php_end_of_function( ) %{{{
{
   ifnot( bolp( ) and looking_at_char( '{' ))
     php_top_of_function( );
   call( "goto_match" );
}
%}}}
define php_mark_function( ) %{{{
{
   php_end_of_function( );
   push_visible_mark( );
   eol( );
   exchange_point_and_mark( );
   php_top_of_function( );
   bol_skip_white( );
   if( looking_at( "{") )
     {
        go_up( 1 );
     }
   bol( );
}
%}}}
define php_mark_matching( ) %{{{
{
   push_spot( );
   if( find_matching_delimiter( 0 ))
     {
        % Found one
        pop_spot( );
        push_visible_mark( );
        find_matching_delimiter( 0 );
        exchange_point_and_mark( );
     }
   else
     {
        pop_spot( );
     }
}
%}}}
define php_bskip_over_comment( ) %{{{
{
   forever
     {
        bskip_chars (" \t\n");
        if( bobp( ) )
          return;

        push_mark( );
        while( up_1( ) )
          {
             go_down_1( );
             break;
          }

        bol_skip_white( );

        if( looking_at( "<?" ) or looking_at( "?>" ) or looking_at( "<%" ) or looking_at( "%>" ))
          {
             pop_mark_0( );
             continue;
          }
        pop_mark_1( );

        ifnot( blooking_at( "*/" ))
          {
             push_mark( );
             variable found = 0;
             forever
               {
                  if( bfind( "//" ) or bfind( "#" ))
                    {
                       found = 1;
                    }
                  else
                    {
                       break;
                    }
               }

             if( 0 == parse_to_point( ) and found != 0 )
               {
                  % Not in a comment or string
                  pop_mark_0( );
                  continue;
               }

             bol( );
             ifnot( bobp( ) )
               {
                  if( looking_at( "<?" ) or looking_at( "?>" ) or looking_at( "<%" ) or looking_at( "%>" ))
                    {
                       pop_mark_0( );
                       continue;
                    }
               }
             pop_mark_1( );
             break;
          }
        ifnot( bsearch( "/*" )) break;
     }
}
%}}}
private define php_looking_at( token ) %{{{
{
   variable cse = CASE_SEARCH, ret = 0;
   CASE_SEARCH = 1;

   if( looking_at( token ))
     {
        push_spot( );
        go_right( strlen( token ));
        _get_point( );
        skip_chars( "\t :({" );
        ret = ( _get_point( ) - ( )) or eolp( );
        pop_spot( );
     }
   CASE_SEARCH = cse;
   ret;
}
%}}}
private define php_indent_to( n ) %{{{
{
   bol( );
   % Force a reindent if the line does not contain tabs followed by spaces.
   skip_chars( "\t" );
   skip_chars( " " );

   if( ( what_column != n )
       or ( _get_point( ) != ( skip_white( ), _get_point( ))))
     {
        bol_trim( );
        n--;
        whitespace( n );
     }
}
%}}}
private define php_indent_continued_comment( col ) %{{{
{
   push_spot( );
   col++;			       %  add 1 so the we indent under * in /*
   php_indent_to( col );

   if( looking_at( "*" )
       or not( eolp( ) ))
     pop_spot( );
   else
     {
        insert( "* " );
        pop_spot( );

        if( what_column( ) <= col )
          {
             goto_column( col + 2 );
          }
     }
}
%}}}
private define php_mode_if_bol_skip_white( ) %{{{
{
   push_mark( );
   bskip_white( );
   1;
   if( bolp( ) )
     {
        pop( );
        skip_white( );
        0;
     }
   pop_mark( ( ) );		       %  take argument from stack
}
%}}}
%#iftrue
% Return true if the spot is inside of a class definition
% Takes the opening brace of the enclosing block as an
% argument.
private define inside_class( bra ) %{{{
{
   push_spot( );
   EXIT_BLOCK
     {
        pop_spot( );
     }

   goto_user_mark( bra );

   % Assume that class is at the beginning of a line.  We may want to
   % change this assumption later.
   while( re_bsearch( "^\\c[ \t]*\\<class\\>" ))
     {
        if( 0 == parse_to_point( ) )
          {
             while( fsearch( "{" ))
               {
                  if( 0 != parse_to_point( ) )
                    {
                       go_right_1( );
                       continue;
                    }

                  if ( bra == create_user_mark( ) )
                    return 1;
                  break;
               }
             return 0;
          }

        ifnot( left( 1 ))
          break;
     }

   return 0;
} %}}}
%#endif

% This function is called when it is known that the current point
% is in a string.  Try not to change the string unless the line is
% empty.
private define indent_within_php_string ()
{
   push_spot ();
   EXIT_BLOCK
     {
        pop_spot ();
     }

   bol_skip_white ();
   ifnot (eolp ())
     return;                           %  line is not empty

   % Indent to the level of the previous line if it is in a string
   variable col = 0;
   push_spot ();
   if (up_1 ())
     {
        bol_skip_white ();
        if (-1 == parse_to_point ())
          col = what_column ();        %  in a string
     }
   pop_spot ();
   php_indent_to (col);
}

define php_indent_line( ) %{{{
{
   variable val, col, extra_indent = 0;
   variable prep_line = 0;
   variable match_char, match_indent, this_char, match_line;
   variable match_mark, ptp;
   variable is_continuation = 0;

   % Check whetever we are in a php block or not
   if( php_in_block( ) )
     {
        push_spot( );
        bol_skip_white( );

        % Store the character we are standing on
        this_char = what_char( );
        ptp = parse_to_point ();
        if (ptp == -2)
          {
             % In a c comment.  Indent it at level of matching /* string
             ( ) = bsearch( "/*" );
             col = what_column( );
             pop_spot( );
             php_indent_continued_comment( col );
             return;
          }

        EXIT_BLOCK
          {
             php_mode_if_bol_skip_white( );
          }

        if (ptp == -1)
          {
             % Inside a string
             indent_within_php_string ();
             pop_spot ();
             return;
          }

        if(php_looking_at( "case" ) || php_looking_at( "default" ))
          {
             if( ffind_char( ':' ))
               {
                  extra_indent -= PHP_INDENT;
                  extra_indent += PHP_Colon_Offset;
                  %message(string(extra_indent));
               }
             bol( );
          }
        else
          {
             forever
               {
                  php_bskip_over_comment( );
                  ifnot(
                        blooking_at( ";" )
                        || blooking_at( "{" )
                        || blooking_at( "}" )
                        || blooking_at( ")," )
                        || blooking_at( "}," )
                        || blooking_at( ":" )
                        || bobp( )
                       )
                    {
                       % This needs to be here to make sure were still in the phpblock
                       if( php_in_block( ) )
                         {
                            % message("hej2");
                            if( is_continuation )
                              {
                                 % message("hej");
                                 extra_indent += PHP_CONTINUED_OFFSET;
                              }
                            else
                              {
                                 % message("hej3");
                                 push_spot( );
                                 bol_skip_white( );
                                 % fsearch( "{" );
                                 % ifnot( blooking_at( ")" )
                                 extra_indent += PHP_CONTINUED_OFFSET;
                                 pop_spot( );
                              }

                            % extra_indent += PHP_CONTINUED_OFFSET;
                            is_continuation++;
                            % is_continuation++;
                         }
                    }

                  ifnot( blooking_at( ")" ))
                    break;
                  push_mark( );
                  go_left_1( );
                  if( 1 != find_matching_delimiter( ')' ))
                    {
                       pop_mark_1( );
                       break;
                    }

                  php_bskip_over_comment( );

                  push_spot( );
                  if( ( 1 == find_matching_delimiter( ')' )), pop_spot( ) )
                    {
                       pop_mark_1( );
                       break;
                    }

                  pop_mark_0( );
                  bol ( );
               }
          }

        val = find_matching_delimiter( ')' );
        match_mark = create_user_mark( );

        match_char = what_char( );
        match_line = what_line( );

        if( ( val < 0 ) and looking_at( "/*" ))
          val = -2;
        else if( val == 1 )
          {
             go_right( 1 );
             skip_white( );
          }

        col = what_column( );

        bol_skip_white( );
        match_indent = what_column( );
        if( what_line( ) < prep_line )
          {
             match_char = 0;
          }

        pop_spot( );

        switch( val )
          {
           case 0:			       %  mismatch
             if( match_char == '{' )
               {
                  push_spot( );
                  goto_user_mark( match_mark );

                  bskip_chars( "\n\t " );
                  if( blooking_at( ")" ))
                    {
                       variable same_line = ( what_line == match_line );

                       go_left_1( );
                       if( 1 == find_matching_delimiter( ')' ))
                         {
                            bol_skip_white( );

                            if( same_line )
                              match_indent = what_column( );

                            % NOTE: This needs work.
                            if( ( this_char != '}' )
                                and looking_at( "switch" ))
                              match_indent += PHP_Switch_Offset;
                         }
                    }

                  pop_spot( );
                  col = match_indent;
#ifexists PHP_Class_Offset
                  if( this_char == '}' )
                    col += PHP_INDENT;
                  else if( inside_class( match_mark ))
                    col += PHP_Class_Offset;
                  else
                    col += PHP_INDENT;
#else
                  col += PHP_INDENT;
#endif
               }
             else if( match_char == '[' )
               {
                  push_spot( );
                  php_indent_to( col + 1 );
                  pop_spot( );
                  return;
               }
             else
               {
                  push_spot( );
                  bol_skip_white( );
                  if( looking_at_char( '{' ))
                    extra_indent = PHP_BRACE;
                  extra_indent++;
                  php_indent_to( extra_indent );
                  pop_spot( );
                  return;
               }
          }
          {
           case 1:
             extra_indent = 0;	       %  match found
          }
          {
           case -2:			       %  inside comment
             if( this_char != '\\' )
               col++;
             php_indent_continued_comment( col );
             return;
          }
          {
           case 2:
             push_spot_bol( );
             trim( );
             pop_spot( );
             return;
          }
        switch( this_char )
          {
           case '}':
             col -= PHP_INDENT;
          }
          {
           case '{':
             col += PHP_BRACE;
             if( is_continuation )
               col -= PHP_CONTINUED_OFFSET;
             col += extra_indent;
          }
          {
             col += extra_indent;
          }

        push_spot( );
        php_indent_to( col );
        pop_spot( );
     }
}
%}}}
define php_indent_region_or_line( ) %{{{
{
   ifnot( is_visible_mark )
     {
        if( php_in_block( ) )
          php_indent_line( );
        else
          insert( "\t" );
     }
   else
     {
        variable now,start,stop;
        check_region( 1 );
        stop = what_line( );
        pop_mark_1( );
        start = what_line( );
        push_mark( );
        forever
          {
             now = what_line( );
             if( now >= stop )
               break;
             php_indent_line( );
             down_1( );
          }
        pop_spot( );
     }
}
%}}}
define php_indent_buffer( ) %{{{
{
   variable col, max_line;
   push_spot( );
   eob( );
   max_line = what_line( );
   bob( );
   do
     {
        bol_skip_white( );
        indent_line( );
     } while( down_1( ) );

   trim_buffer( );
   flush( sprintf( "processed %d/%d lines.", what_line( ), max_line ));
   pop_spot( );
}
%}}}
define php_newline_and_indent( ) %{{{
{
   variable PhpCcComment = "//";
   variable PhpBashComment = "#";

   if( bolp ( ) )
     {
        newline( );
        php_indent_line( );
        return;
     }

   variable col;
   variable PhpCcComment_len = strlen( PhpCcComment );
   variable PhpBashComment_len = strlen( PhpBashComment );

   if( PHP_Autoinsert_Comments )
     {
        col = what_column( );
        push_spot_bol( );
        if( looking_at( PhpCcComment ))
          {
             push_mark( );
             go_right( PhpCcComment_len );
             skip_white( );
             PhpCcComment = bufsubstr( );
             pop_spot( );
             newline( );
             if( col > PhpCcComment_len ) insert( PhpCcComment );
             return;
          }
        else if( looking_at( PhpBashComment ))
          {
             push_mark( );
             go_right( PhpBashComment_len );
             skip_white( );
             PhpBashComment = bufsubstr( );
             pop_spot( );
             newline( );
             if( col > PhpBashComment_len ) insert( PhpBashComment );
             return;
          }
        pop_spot( );
     }

   col = php_is_comment( );
   newline( );
   if( col )
     {
        php_indent_to( col );
        insert( "" );
     }
   else php_indent_line( );
}
%}}}
define php_insert_bra( ) %{{{
{
   if( php_parse_to_point( ) )
     insert_char( '{' );
   else
     {
        push_spot( );
        php_bskip_over_comment( 0 );
        if( blooking_at( "," ), pop_spot( ) )
          {
             insert_char( '{' );
          }
        else
          {
             push_spot( );
             skip_white( );
             if( eolp( ) )
               {
                  bskip_white( );
                  if( not( bolp( ) ) and PHP_BRA_NEWLINE, pop_spot( ) )
                    newline( );
                  push_spot( );
                  bskip_white( );
                  bolp( );	       %  on stack
                  pop_spot( );
                  insert_char( '{' );
                  if( ( ) )
                    php_indent_line( );   %  off stack
                  eol( );
                  if( PHP_BRA_NEWLINE )
                    php_newline_and_indent( );
               }
             else
               {
                  pop_spot( );
                  insert_char( '{' );
               }
          }
     }
}
%}}}
define php_insert_ket( ) %{{{
{
   variable status = php_parse_to_point( );
   variable line = what_line( );

   push_spot( );
   skip_white( );
   push_spot( );
   if( status
       or not( eolp( ) )
       or( 1 == find_matching_delimiter( '}' )) and( line == what_line( ) ))
     %or (bol_skip_white ( ), looking_at_char ('{')), pop_spot ( ))
     {
        pop_spot( );
        pop_spot( );
        if( PHP_KET_NEWLINE )
          {
             insert( "\n}" );
             php_indent_line( );
          }
        else
          insert( "}" );
        blink_match( );
        return;
     }

   pop_spot( );
   bskip_white( );
   if( bolp( ), pop_spot( ) )
     {
        insert_char( '}' );
        trim( );
     }
   else
     {
        eol( );
        if( PHP_KET_NEWLINE )
          insert( "\n}" );
        else
          insert( "}" );
     }
   php_indent_line( );
   eol( );
   blink_match( );
   if( PHP_BRA_NEWLINE )
     php_newline_and_indent( );
}
%}}}
define php_insert_colon( ) %{{{
{
   insert_char( ':' );
   ifnot( php_parse_to_point( ) )
     php_indent_line( );
}
%}}}
define php_getname( tellstring ) %{{{
{
   variable gname = read_mini( tellstring, Null_String, Null_String );
   return gname;
}
%}}}
define php_ins_tn( str ) %{{{
{
   insert( str );
   php_indent_line( );
   insert( "\n" );
}
%}}}
define php_insert_function( ) %{{{
{
   variable name = php_getname( "function:" );
   php_ins_tn( sprintf( "function %s ( )", name ));
   php_ins_tn( "{" );
   php_ins_tn( "" );
   php_ins_tn( "}" );
   bsearch( ")" );
}
%}}}
define php_insert_class( ) %{{{
{
   variable name = php_getname( "class:" );
   php_ins_tn(sprintf( "class %s", name ));
   php_ins_tn( "{" );
   php_ins_tn( "" );
   php_ins_tn( "}" );
}
%}}}
define php_insert_tab( ) %{{{
{
   insert( "\t" );
}
%}}}
private define php_init_menu( menu ) %{{{
{
   menu_append_item( menu, "&Top of function", "php_top_of_function" );
   menu_append_item( menu, "&End of function", "php_end_of_function" );
   menu_append_item( menu, "&Mark function", "php_mark_function" );
   menu_append_item( menu, "&Mark matching", "php_mark_matching" );
   menu_append_separator( menu );
   menu_append_item( menu, "&Indent buffer", "php_indent_buffer" );
   menu_append_separator( menu );
   menu_append_item( menu, "&Insert class", "php_insert_class" );
   menu_append_item( menu, "&Insert function", "php_insert_function" );
   menu_append_item( menu, "&Insert brace", "php_insert_bra" );
   menu_append_item( menu, "&Insert ket", "php_insert_ket" );
   menu_append_item( menu, "&Insert colon", "php_insert_colon" );
   menu_append_separator( menu );
   menu_append_item( menu, "&Format paragraph", "php_format_paragraph" );
   menu_append_item( menu, "&Goto Match", "goto_match" );
   menu_append_item( menu, "&Insert TAB", "php_insert_tab" );
}
%}}}
$1 = "PHP";

ifnot( keymap_p( $1 ))
make_keymap( $1 ); %{{{
definekey( "indent_line", "\t", $1 );
definekey( "php_top_of_function", "\e^A", $1 );
definekey( "php_end_of_function", "\e^E", $1 );
definekey( "php_mark_function", "\e^H", $1 );
definekey( "php_mark_matching", "\e^M", $1 );
definekey( "php_insert_bra", "{", $1 );
definekey( "php_insert_ket", "}", $1 );
definekey( "php_insert_colon", ":", $1 );
definekey( "php_format_paragraph", "\eq", $1 );
definekey( "php_newline_and_indent", "\r", $1 );

definekey_reserved( "php_indent_region", "^R", $1 );
definekey_reserved( "php_indent_buffer", "^B", $1 );
definekey_reserved( "php_insert_class", "^C", $1 );
definekey_reserved( "php_insert_function", "^F", $1 );
definekey_reserved( "php_insert_tab","^I", $1 );
%}}}

% Now create and initialize the syntax tables. %{{{
create_syntax_table( $1 );
define_syntax( "/*", "*/", '%', $1 );          % comments
define_syntax( "#", "", '%', $1 );             % comments
define_syntax( "//", "", '%', $1 );            % comments
%define_syntax ("<>", '<', $1);
define_syntax( "([{", ")]}", '(', $1 );        % parentheses
define_syntax( '"', '"', $1 );                 % strings
define_syntax( '\'', '"', $1 );               % strings
define_syntax( '\\', '\\', $1 );               % escape character
define_syntax( "0-9a-zA-Z_", 'w', $1 );        % words
define_syntax( "-+0-9a-fA-F.xXL", '0', $1 );   % numbers
define_syntax( ",;.:", ',', $1 );              % delimiters
define_syntax( "+-*/%=.&|^~<>!?@`", '+', $1 ); % operators
set_syntax_flags( $1, 0x05 );
%}}}

#ifdef HAS_DFA_SYNTAX %{{{
%%% DFA_CACHE_BEGIN %%%
private define setup_dfa_callback( name )
{
   dfa_enable_highlight_cache( "php.dfa", name );
   dfa_define_highlight_rule( "<%", "Qpreprocess", name );          % Asp style start tag
   dfa_define_highlight_rule( "%>", "Qpreprocess", name );          % Asp style end tag
   dfa_define_highlight_rule( "<\\?|<\\?php", "preprocess", name ); % Php style start tag
   dfa_define_highlight_rule( "\\?>", "Qpreprocess", name ); % Php style end tag
   dfa_define_highlight_rule ("<!\\-\\-.*\\-\\-[ \t]*>", "Qcomment", name); % HTML comments
   dfa_define_highlight_rule ("<!\\-\\-", "comment", name); % HTML comments
   dfa_define_highlight_rule ("\\-\\-[ \t]*>", "comment", name); % HTML comments
   dfa_define_highlight_rule( "//.*", "comment", name );            % C++ style comment
   dfa_define_highlight_rule( "#.*", "comment", name );             % Shell style comment
   dfa_define_highlight_rule( "/\\*.*\\*/", "Qcomment", name );     % C style comment
   dfa_define_highlight_rule( "^([^/]|/[^\\*])*\\*/", "Qcomment", name ); % C style comment
   dfa_define_highlight_rule( "/\\*.*", "comment", name );          % C style comment
   dfa_define_highlight_rule( "^[ \t]*\\*+([ \t].*)?$", "comment", name ); % C style comment
   dfa_define_highlight_rule( "[A-Za-z_\\$][A-Za-z_0-9\\$]*", "Knormal", name );
   dfa_define_highlight_rule( "[ \t]+", "normal", name );
   dfa_define_highlight_rule( "[0-9]+(\\.[0-9][LlUu]*)?([Ee][\\+\\-]?[0-9]*)?","number", name );
   dfa_define_highlight_rule( "0[xX][0-9A-Fa-f]*[LlUu]*", "number", name );
   dfa_define_highlight_rule( "[\\(\\[{}\\]\\),;\\.:]", "delimiter", name );
   dfa_define_highlight_rule( "[%@\\?\\.\\-\\+/&\\*=<>\\|!~\\^]", "operator", name );
   dfa_define_highlight_rule( "\"([^\"\\\\]|\\\\.)*\"", "string", name );
   dfa_define_highlight_rule( "\"([^\"\\\\]|\\\\.)*\\\\?$", "string", name );
   dfa_define_highlight_rule( "'([^'\\\\]|\\\\.)*'", "string", name );
   dfa_define_highlight_rule( "'([^'\\\\]|\\\\.)*\\\\?$", "string", name );
   dfa_build_highlight_table( name );
}
dfa_set_init_callback( &setup_dfa_callback, $1 );
%%% DFA_CACHE_END %%%
#endif
%}}}

% Type 0 keywords (keywords and constants) %{{{
() = define_keywords_n ($1,
                        "asdoifor",
                        2,0);

() = define_keywords_n ($1,
                        "andfornewvarxor",
                        3,0);

() = define_keywords_n ($1,
                        "argcargvcaseelsetrue",
                        4,0);

() = define_keywords_n ($1,
                        "breakclassfalsewhile",
                        5,0);

() = define_keywords_n ($1,
                        "elseifglobalphp_osreturnswitch",
                        6,0);

() = define_keywords_n ($1, strcat(
                                   "defaulte_errore_parseextendsforeach",
                                   "globals"
                                  ), 7,0);

() = define_keywords_n ($1, strcat(
                                   "continuee_notice__file__function",
                                   "__line__php_self"
                                  ),8,0);

() = define_keywords_n ($1,
                        "e_warning",
                        9,0);

() = define_keywords_n ($1,
                        "php_version",
                        11,0);

() = define_keywords_n ($1,
                        "php_errormsg",
                        12,0);

() = define_keywords_n ($1,
                        "http_get_vars",
                        13,0);

() = define_keywords_n ($1,
                        "http_post_vars",
                        14,0);

() = define_keywords_n ($1,
                        "http_cookie_vars",
                        16,0);
%}}}

% Type 1 keywords (functions) %{{{
() = define_keywords_n ($1,
                        "dlpi",
                        2,1);

() = define_keywords_n ($1, strcat(
                                   "abschrcosdieendexpkeylogmaxmd5minordpos",
                                   "powsintan"
                                  ),3,1);

() = define_keywords_n ($1, strcat(
                                   "acosasinatanbindceilchopcopydateeach",
                                   "echoeregevalexecexitfeoffilejoinleaklink",
                                   "listmailmsqlnextpackprevrandreadsortsqrt",
                                   "stattimetrim"
                                  ),4,1);

() = define_keywords_n ($1, strcat(
                                   "arrayasortatan2bcaddbcdivbcmodbcmul",
                                   "bcpowbcsubchdirchgrpchmodchownclosecount",
                                   "crc32cryptemptyeregifgetcfgetsflockfloor",
                                   "flushfopenfputsfreadfseekfstatftellgzeof",
                                   "hw_cphw_mviconvissetksortlog10lstatltrim",
                                   "mhashmkdirnl2brpopenprintrangeresetrmdir",
                                   "roundrsortrtrimsleepsplitsrandstrtrtouch",
                                   "umaskunsetusortwrite"
                                  ),5,1);

() = define_keywords_n ($1, strcat(
                                   "arsortassertbccompbcsqrtbindecbzopen",
                                   "bzreadchrootdblistdecbindechexdecoctdefine",
                                   "deletefclosefflushfgetssfscanffwritegetcwd",
                                   "getenvgmdategmp_orgzfilegzgetcgzgetsgzopen",
                                   "gzputsgzreadgzseekgztellheaderhebrevhexdec",
                                   "hw_whoifx_dointvalis_diris_intkrsortlisten",
                                   "mktimeoctdecora_dopclosepg_ttyprintfputenv",
                                   "recoderenamerewindsizeofsocketsplitisscanf",
                                   "strchrstrcmpstrlenstrposstrrevstrspnstrstr",
                                   "strtokstrvalsubstrsyslogsystemuasortuksort",
                                   "uniqidunlinkunpackusleepxmldoc"
                                  ),6,1);

() = define_keywords_n ($1, strcat(
                                   "bcscalebin2hexbzclosebzerrnobzerror",
                                   "bzflushbzwritecom_getcompactcom_setconnect",
                                   "currentdbmopendefineddeg2raddirnameexplode",
                                   "extractfgetcsvfileproftp_getftp_putftp_pwd",
                                   "getdategetmxrrgettextgettypegmp_absgmp_add",
                                   "gmp_andgmp_cmpgmp_divgmp_gcdgmp_modgmp_mul",
                                   "gmp_neggmp_powgmp_subgmp_xorgzclosegzgetss",
                                   "gzwritehebrevchw_infohw_rootimagesximagesy",
                                   "implodeincludeini_getini_setip2longis_bool",
                                   "is_fileis_linkis_longis_nullis_reallong2ip",
                                   "mt_randnatsortodbc_doopendiropenlogpdf_arc",
                                   "pdf_newpg_execpg_hostpg_portphpinfoprint_r",
                                   "rad2degreaddirrequiresem_getsettypeshuffle",
                                   "snmpgetsnmpsetsoundexsprintfstrcollstrcspn",
                                   "stristrstrncmpstr_padstrrchrstrrposswffill",
                                   "swffontswftextsymlinktempnamtmpfileucfirst",
                                   "ucwordsvirtualxmltreeyp_next"
                                  ),7,1);

() = define_keywords_n ($1, strcat(
                                   "basenamebzerrstrclosedircloselog",
                                   "com_loadconstantcpdf_arcdba_opendba_sync",
                                   "dbmclosedbmfetchdbx_sortdgettextfdf_open",
                                   "fdf_savefilesizefiletypefloatvalftp_cdup",
                                   "ftp_fgetftp_fputftp_mdtmftp_pasvftp_quit",
                                   "ftp_siteftp_sizegetmypidgetmyuidgmmktime",
                                   "gmp_factgmp_initgmp_powmgmp_signgmp_sqrt",
                                   "gzencodegzrewindhw_closehw_errorhw_mapid",
                                   "imagearcimagegifimagepngimap_uidin_array",
                                   "ircg_msgis_arrayis_floatjdtounixldap_add",
                                   "linkinfomt_srandob_startocierrorocifetch",
                                   "ocilogonociparseora_bindora_execora_open",
                                   "passthrupathinfopdf_arcnpdf_clippdf_fill",
                                   "pdf_openpdf_rectpdf_savepdf_showpdf_skew",
                                   "pg_closepg_tracereadfilereadlinereadlink",
                                   "realpathsnmpwalkstrerrorstrftimeswfmorph",
                                   "swfmovieswfshapeudm_findunixtojdvar_dump",
                                   "wordwrapxslt_runyaz_hitsyaz_scanyaz_sort",
                                   "yaz_waityp_firstyp_matchyp_orderzip_open",
                                   "zip_read"
                                  ),8,1);

() = define_keywords_n ($1, strcat(
                                   "array_maparray_padarray_poparray_sum",
                                   "checkdatecpdf_clipcpdf_fillcpdf_opencpdf_rect",
                                   "cpdf_savecpdf_showcpdf_textcurl_execcurl_init",
                                   "dba_closedba_fetchdba_popendbmdeletedbmexists",
                                   "dbminsertdbx_closedbx_errordbx_querydcgettext",
                                   "doublevalerror_logfdf_closefileatimefilectime",
                                   "filegroupfileinodefilemtimefileownerfileperms",
                                   "fpassthrufsockopenftp_chdirftp_loginftp_mkdir",
                                   "ftp_nlistftp_rmdirftruncatefunctionsget_class",
                                   "getrusagegmp_div_qgmp_div_rgmp_scan0gmp_scan1",
                                   "gzdeflategzinflatehw_insdochw_unlockicap_open",
                                   "ifx_closeifx_errorifx_queryimagecharimagecopy",
                                   "imagefillimagejpegimagelineimagewbmpimap_8bit",
                                   "imap_bodyimap_mailimap_openimap_pingimap_sort",
                                   "imap_utf8ini_alteriptcparseircg_joinircg_kick",
                                   "ircg_nickircg_partis_doubleis_objectis_scalar",
                                   "is_stringlcg_valueldap_bindldap_listldap_read",
                                   "localtimemb_strcutmb_strlenmb_strposmb_substr",
                                   "mcal_openmetaphonemicrotimeocicancelocicommit",
                                   "ocilogoffocinlogonociplogonociresultodbc_exec",
                                   "ora_closeora_errorora_fetchora_logonora_parse",
                                   "parse_strparse_urlpdf_closepdf_scalepg_dbname",
                                   "pg_loopenpg_loreadpg_resultphp_unamepreg_grep",
                                   "quotemetarewinddirserializesetcookiesetlocale",
                                   "strnatcmpstrtotimeswfactionswfbitmapswfbutton",
                                   "swf_orthoswf_scaleswfspriteudm_errnoudm_error",
                                   "urldecodeurlencodexml_parsexslt_freeyaz_close",
                                   "yaz_errnoyaz_erroryaz_rangeyp_masterzip_close"
                                  ),9,1);

() = define_keywords_n ($1, strcat(
                                   "addslashesarray_diffarray_flip",
                                   "array_keysarray_pusharray_randarray_walk",
                                   "aspell_newbzcompresscheckdnsrrcom_addref",
                                   "com_invokecpdf_closecpdf_scalecurl_close",
                                   "dba_deletedba_existsdba_insertdbase_open",
                                   "dbase_packdbmnextkeydbmreplacedbplus_add",
                                   "dbplus_aqldbplus_sqldbplus_tclezmlm_hash",
                                   "fdf_createfdf_set_apfrenchtojdftp_delete",
                                   "ftp_renamegetlastmodgetmyinodegetrandmax",
                                   "gmp_clrbitgmp_div_qrgmp_gcdextgmp_intval",
                                   "gmp_invertgmp_jacobigmp_randomgmp_setbit",
                                   "gmp_sqrtrmgmp_strvalgmstrftimegzcompress",
                                   "gzpassthruhw_connecthw_gettexthw_inscoll",
                                   "icap_closeimagetypesimap_checkimap_close",
                                   "imap_msgnoircg_topicircg_whoisis_integer",
                                   "is_numericjdtofrenchjdtojewishjdtojulian",
                                   "jewishtojdjuliantojdldap_closeldap_errno",
                                   "ldap_errorlocaleconvmb_strrposmcal_close",
                                   "mcal_popenmcrypt_cbcmcrypt_cfbmcrypt_ecb",
                                   "mcrypt_ofbmsql_closemsql_errormsql_query",
                                   "ocicollmaxociexecuteociloadlobocinumcols",
                                   "ocisavelobodbc_closeodbc_errorora_commit",
                                   "ora_logoffora_plogonpdf_circlepdf_concat",
                                   "pdf_deletepdf_linetopdf_movetopdf_rotate",
                                   "pdf_strokepfpro_initpfsockopenpg_connect",
                                   "pg_loclosepg_lowritepg_numrowspg_options",
                                   "pg_untracephpcreditsphpversionposix_kill",
                                   "preg_matchpreg_quotepreg_splitpspell_new",
                                   "readgzfilesem_removesession_idshm_attach",
                                   "shm_detachshmop_openshmop_readshmop_size",
                                   "shm_removestrcasecmpstrip_tagsstr_repeat",
                                   "strtolowerstrtoupperswf_lookatswf_nextid",
                                   "swf_ortho2swf_rotatetextdomainuser_error",
                                   "xmldocfilexpath_evalxslt_errnoxslt_error",
                                   "yaz_recordyaz_searchyaz_syntax"
                                  ),10,1);

() = define_keywords_n ($1, strcat(
                                   "addcslashesapache_notearray_merge",
                                   "array_shiftarray_slicechunk_splitcom_propget",
                                   "com_propputcom_propsetcom_releasecount_chars",
                                   "cpdf_circlecpdf_linetocpdf_movetocpdf_rotate",
                                   "cpdf_strokectype_alnumctype_alphactype_cntrl",
                                   "ctype_digitctype_graphctype_lowerctype_print",
                                   "ctype_punctctype_spacectype_uppercurl_setopt",
                                   "dba_nextkeydba_replacedbase_closedbmfirstkey",
                                   "dbplus_currdbplus_finddbplus_infodbplus_last",
                                   "dbplus_nextdbplus_opendbplus_prevdbplus_rzap",
                                   "dbplus_undodbx_comparedbx_connectdebugger_on",
                                   "domxml_rooteaster_dateeaster_daysfbsql_close",
                                   "fbsql_errnofbsql_errorfbsql_queryfdf_set_opt",
                                   "file_existsftp_connectftp_rawlistftp_systype",
                                   "get_browserget_cfg_vargmp_hamdisthw_children",
                                   "hw_edittexthw_errormsghw_identifyhw_pconnect",
                                   "ibase_closeibase_queryibase_transicap_snooze",
                                   "ifx_connectifx_prepareimagecharupimagecreate",
                                   "imagepsbboximagepstextimagestringimap_alerts",
                                   "imap_appendimap_base64imap_binaryimap_delete",
                                   "imap_errorsimap_headerimap_qprintimap_reopen",
                                   "imap_searchimap_statusini_get_allini_restore",
                                   "ircg_noticeis_readableis_resourceis_writable",
                                   "jddayofweekjdmonthnameldap_deleteldap_dn2ufn",
                                   "ldap_get_dnldap_modifyldap_renameldap_search",
                                   "ldap_unbindlevenshteinmb_languagemb_strwidth",
                                   "mcal_reopenmcal_snoozemhash_countmsql_dbname",
                                   "msql_dropdbmsql_resultmssql_closemssql_query",
                                   "mysql_closemysql_errnomysql_errormysql_query",
                                   "natcasesortocicollsizeocicolltrimocifreedesc",
                                   "ocirollbackocirowcountodbc_commitodbc_cursor",
                                   "odbc_resultodbc_tablesora_numcolsora_numrows",
                                   "pdf_curvetopdf_endpathpdf_restorepdf_setdash",
                                   "pdf_setflatpdf_setfontpdf_setgraypdf_show_xy",
                                   "pg_end_copypg_fieldnumpg_locreatepg_loexport",
                                   "pg_loimportpg_lounlinkpg_pconnectpg_put_line",
                                   "posix_timesposix_unamerecode_filesem_acquire",
                                   "sem_releasesesam_queryshm_get_varshmop_close",
                                   "shmop_writeshm_put_varshow_sourcesnmpwalkoid",
                                   "sql_regcasestrncasecmpstr_replaceswfgradient",
                                   "swf_setfontunserializeutf8_decodeutf8_encode",
                                   "xslt_createyaz_addinfoyaz_connectyaz_element",
                                   "yaz_present"
                                  ),11,1);

() = define_keywords_n ($1, strcat(
                                   "array_filterarray_reducearray_search",
                                   "array_splicearray_uniquearray_valuesascii2ebcdic",
                                   "aspell_checkbase_convertbzdecompressclass_exists",
                                   "cpdf_curvetocpdf_newpathcpdf_restorecpdf_rlineto",
                                   "cpdf_rmovetocpdf_setdashcpdf_setflatcpdf_setgray",
                                   "cpdf_show_xyctype_xdigitcurl_versiondba_firstkey",
                                   "dba_optimizedbase_createdbplus_chdirdbplus_close",
                                   "dbplus_errnodbplus_firstdbplus_flushdbplus_rkeys",
                                   "dbplus_ropendebugger_offebcdic2asciiereg_replace",
                                   "fbsql_commitfbsql_resultfdf_get_filefdf_set_file",
                                   "func_get_arggetimagesizegettimeofdaygmp_divexact",
                                   "gmp_legendregmp_popcountgzuncompressheaders_sent",
                                   "htmlentitieshw_getobjecthw_getremoteibase_commit",
                                   "ibase_errmsgifx_errormsgifx_get_blobifx_get_char",
                                   "ifx_getsqlcaifx_num_rowsifx_pconnectimagecolorat",
                                   "imagedestroyimageellipseimagepolygonimagesettile",
                                   "imagettfbboximagettftextimap_expungeimap_headers",
                                   "imap_num_msginclude_onceingres_closeingres_query",
                                   "is_writeableldap_compareldap_connectldap_err2str",
                                   "ldap_mod_addldap_mod_delmb_parse_strmb_send_mail",
                                   "mcal_expungemsql_connectmsql_drop_dbmsql_listdbs",
                                   "msql_numrowsmsql_regcasemssql_resultmysql_result",
                                   "ob_end_cleanob_end_flushob_gzhandlerocifetchinto",
                                   "ocinewcursorodbc_binmodeodbc_columnsodbc_connect",
                                   "odbc_executeodbc_prepareold_functionopenssl_open",
                                   "openssl_sealopenssl_signora_commitonora_rollback",
                                   "ovrimos_execpdf_add_notepdf_end_pagepdf_findfont",
                                   "pdf_get_fontpdf_open_gifpdf_open_pdipdf_open_png",
                                   "pdf_setcolorpdf_set_fontpdf_set_infopg_cmdtuples",
                                   "pg_fetch_rowpg_fieldnamepg_fieldsizepg_fieldtype",
                                   "pg_loreadallpg_numfieldsposix_getcwdposix_getgid",
                                   "posix_getpidposix_getsidposix_getuidposix_isatty",
                                   "posix_mkfifoposix_setgidposix_setsidposix_setuid",
                                   "preg_replaceprinter_listprinter_openpspell_check",
                                   "rawurldecoderawurlencoderequire_oncesesam_commit",
                                   "session_nameshmop_deletesimilar_textstripslashes",
                                   "substr_countswf_addcolorswf_endshapeswf_fontsize",
                                   "swf_getframeswf_mulcolorswf_openfileswf_posround",
                                   "swf_setframeswf_shapearcswftextfieldswf_viewport",
                                   "sybase_closesybase_queryudm_cat_listudm_cat_path",
                                   "udm_free_resxslt_openlogxslt_processyaz_ccl_conf",
                                   "yaz_databasezend_version"
                                  ),12,1);

() = define_keywords_n ($1, strcat(
                                   "array_reversearray_unshiftbase64_decode",
                                   "base64_encodecpdf_end_textcpdf_finalizecpdf_set_font",
                                   "dbplus_rquerydbplus_updatediskfreespaceeregi_replace",
                                   "fbsql_connectfbsql_drop_dbfbsql_stop_dbfdf_get_value",
                                   "fdf_set_flagsfdf_set_valuefunc_get_argsfunc_num_args",
                                   "getallheadersgethostbyaddrgethostbynameget_meta_tags",
                                   "getservbynamegetservbyportgregoriantojdhw_getanchors",
                                   "hw_getandlockhw_getparentsibase_connectibase_execute",
                                   "ibase_prepareibase_timefmtifx_copy_blobifx_fetch_row",
                                   "ifx_free_blobifx_free_charimagecolorsetimageloadfont",
                                   "imagesetbrushimagesetpixelimagesetstyleimagestringup",
                                   "imap_undeleteingres_commitircg_pconnectis_executable",
                                   "jdtogregorianmb_http_inputmb_strimwidthmethod_exists",
                                   "msql_createdbmsql_fieldlenmsql_list_dbsmsql_num_rows",
                                   "msql_pconnectmsql_selectdbmssql_connectmt_getrandmax",
                                   "mysql_connectmysql_db_namemysql_drop_dbnumber_format",
                                   "ob_get_lengthocibindbynameocicollassignocicolumnname",
                                   "ocicolumnsizeocicolumntypeocifreecursorodbc_errormsg",
                                   "odbc_num_rowsodbc_pconnectodbc_rollbackora_commitoff",
                                   "ora_errorcodeora_getcolumnovrimos_closepdf_closepath",
                                   "pdf_close_pdipdf_get_valuepdf_open_filepdf_open_jpeg",
                                   "pdf_open_tiffpdf_setmatrixpdf_set_valuepdf_translate",
                                   "pfpro_cleanuppfpro_processpfpro_versionpg_freeresult",
                                   "pg_getlastoidphp_logo_guidphp_sapi_nameposix_ctermid",
                                   "posix_getegidposix_geteuidposix_getpgidposix_getpgrp",
                                   "posix_getppidposix_setpgidposix_ttynameprinter_abort",
                                   "printer_closeprinter_writereadline_inforecode_string",
                                   "sesam_connectsesam_execimmsession_startsession_unset",
                                   "stripcslashesstrnatcasecmpswf_closefileswf_endbutton",
                                   "swf_endsymbolswf_fontslantswf_polarviewswf_popmatrix",
                                   "swf_showframeswf_textwidthswf_translatesybase_result",
                                   "trigger_errorwddx_add_varsxslt_closelogyaz_ccl_parse",
                                   "yaz_itemorder"
                                  ),13,1);

() = define_keywords_n ($1, strcat(
                                   "accept_connectaspell_suggest",
                                   "assert_optionsbindtextdomaincall_user_func",
                                   "clearstatcachecpdf_closepathcpdf_page_init",
                                   "cpdf_set_titlecpdf_translatecybercash_decr",
                                   "cybercash_encrdbplus_errcodedbplus_getlock",
                                   "dbplus_lockreldbplus_rchpermdbplus_rcreate",
                                   "dbplus_resolvedbplus_rrenamedbplus_runlink",
                                   "dbplus_saveposdbplus_tremovedomxml_dumpmem",
                                   "escapeshellargescapeshellcmdfbsql_db_query",
                                   "fbsql_list_dbsfbsql_num_rowsfbsql_pconnect",
                                   "fbsql_rollbackfbsql_start_dbfbsql_warnings",
                                   "fdf_get_statusfdf_set_statusget_class_vars",
                                   "gethostbynamelgetprotobynamegmp_prob_prime",
                                   "highlight_filehw_childrenobjhw_docbyanchor",
                                   "hw_getusernameibase_pconnectibase_rollback",
                                   "ifx_fieldtypesifx_nullformatifx_num_fields",
                                   "imagecopymergeimagefilledarcimagefontwidth",
                                   "imageinterlaceimagerectangleimap_fetchbody",
                                   "imap_get_quotaimap_mail_copyimap_mail_move",
                                   "imap_set_quotaimap_subscribeingres_connect",
                                   "is_subclass_ofmb_http_outputmcrypt_decrypt",
                                   "mcrypt_encryptmcrypt_genericmsql_create_db",
                                   "msql_data_seekmsql_fetch_rowmsql_fieldname",
                                   "msql_fieldtypemsql_numfieldsmsql_select_db",
                                   "msql_tablenamemssql_num_rowsmssql_pconnect",
                                   "mysql_db_querymysql_list_dbsmysql_num_rows",
                                   "mysql_pconnectocicollgetelemocicolumnscale",
                                   "ocisavelobfileocisetprefetchodbc_close_all",
                                   "odbc_fetch_rowodbc_field_lenodbc_field_num",
                                   "odbc_setoptionopenssl_verifyora_columnname",
                                   "ora_columnsizeora_columntypeora_fetch_into",
                                   "ovrimos_commitovrimos_cursorovrimos_result",
                                   "pdf_begin_pagepdf_get_bufferpdf_open_ccitt",
                                   "pdf_open_imagepdf_setlinecappdf_show_boxed",
                                   "pg_fetch_arraypg_fieldisnullpg_fieldprtlen",
                                   "posix_getgrgidposix_getgrnamposix_getlogin",
                                   "posix_getpwnamposix_getpwuidpreg_match_all",
                                   "pspell_suggestread_exif_datasesam_errormsg",
                                   "sesam_rollbacksesam_seek_rowsession_decode",
                                   "session_encodeset_time_limitshm_remove_var",
                                   "substr_replaceswf_actionplayswf_actionstop",
                                   "swf_definefontswf_definelineswf_definepoly",
                                   "swf_definerectswf_definetextswfdisplayitem",
                                   "swf_labelframeswf_pushmatrixswf_startshape",
                                   "sybase_connectudm_free_agentxml_set_object",
                                   "xslt_transformzend_logo_guidzip_entry_name",
                                   "zip_entry_openzip_entry_read"
                                  ),14,1);

() = define_keywords_n ($1, strcat(
                                   "array_intersectarray_multisort",
                                   "cpdf_begin_textcpdf_setlinecapcreate_function",
                                   "dbase_numfieldsdbplus_freelockdbplus_rcrtlike",
                                   "dbplus_setindexdbplus_unselectdbplus_xlockrel",
                                   "domxml_add_rootdomxml_childrenerror_reporting",
                                   "fbsql_create_dbfbsql_data_seekfbsql_db_status",
                                   "fbsql_fetch_rowfbsql_field_lenfbsql_insert_id",
                                   "fbsql_select_dbfbsql_tablenamefunction_exists",
                                   "get_object_varshw_array2objrechw_deleteobject",
                                   "hw_getchildcollhw_insertobjecthw_modifyobject",
                                   "hw_new_documenthw_objrec2arrayhw_pipedocument",
                                   "ibase_fetch_rowifx_create_blobifx_create_char",
                                   "ifx_free_resultifx_update_blobifx_update_char",
                                   "ifxus_free_slobifxus_open_slobifxus_read_slob",
                                   "ifxus_seek_slobifxus_tell_slobimagecolorexact",
                                   "imagedashedlineimagefontheightimagepsfreefont",
                                   "imagepsloadfontimap_headerinfoimap_last_error",
                                   "imap_num_recentingres_num_rowsingres_pconnect",
                                   "ingres_rollbackircg_disconnectircg_ignore_add",
                                   "ircg_ignore_delldap_explode_dnldap_get_option",
                                   "ldap_get_valuesldap_next_entryldap_set_option",
                                   "mb_convert_kanamb_detect_ordermcal_date_valid",
                                   "mcal_event_initmcal_time_validmsql_fieldflags",
                                   "msql_field_seekmsql_fieldtablemsql_freeresult",
                                   "msql_listfieldsmsql_listtablesmsql_num_fields",
                                   "mssql_data_seekmssql_fetch_rowmssql_select_db",
                                   "mysql_create_dbmysql_data_seekmysql_fetch_row",
                                   "mysql_field_lenmysql_insert_idmysql_select_db",
                                   "mysql_tablenameob_get_contentsocicolumnisnull",
                                   "ocidefinebynameodbc_autocommitodbc_fetch_into",
                                   "odbc_field_nameodbc_field_typeodbc_num_fields",
                                   "odbc_proceduresodbc_result_allodbc_statistics",
                                   "ovrimos_connectovrimos_executeovrimos_prepare",
                                   "pdf_add_outlinepdf_add_pdflinkpdf_add_weblink",
                                   "pdf_attach_filepdf_close_imagepdf_end_pattern",
                                   "pdf_fill_strokepdf_place_imagepdf_set_leading",
                                   "pdf_setlinejoinpdf_setpolydashpdf_setrgbcolor",
                                   "pdf_stringwidthpg_errormessagepg_fetch_object",
                                   "posix_getgroupsposix_getrlimitprinter_end_doc",
                                   "sesam_fetch_rowsession_destroyset_file_buffer",
                                   "swf_enddoactionswf_getfontinfoswf_oncondition",
                                   "swf_perspectiveswf_placeobjectswf_shapelineto",
                                   "swf_shapemovetoswf_startbuttonswf_startsymbol",
                                   "sybase_num_rowssybase_pconnectudm_alloc_agent",
                                   "udm_api_versionwddx_packet_endxml_parser_free",
                                   "yaz_scan_resultzip_entry_close"
                                  ),15,1);

() = define_keywords_n ($1, strcat(
                                   "aspell_check_rawcall_user_method",
                                   "cpdf_add_outlinecpdf_fill_strokecpdf_import_jpeg",
                                   "cpdf_set_creatorcpdf_set_leadingcpdf_setlinejoin",
                                   "cpdf_setrgbcolorcpdf_set_subjectcpdf_stringwidth",
                                   "cybermut_testmacdbase_add_recorddbase_get_record",
                                   "dbase_numrecordsdbplus_getuniquedbplus_rcrtexact",
                                   "dbplus_rsecindexdbplus_unlockreldisk_total_space",
                                   "domxml_new_childextension_loadedfbsql_autocommit",
                                   "fbsql_field_namefbsql_field_seekfbsql_field_type",
                                   "fbsql_num_fieldsfdf_set_encodingfilepro_retrieve",
                                   "filepro_rowcountget_current_userget_defined_vars",
                                   "get_parent_classgetprotobynumberhighlight_string",
                                   "htmlspecialcharshw_document_sizehw_free_document",
                                   "hw_getanchorsobjhw_getparentsobjhw_incollections",
                                   "ibase_field_infoibase_free_queryibase_num_fields",
                                   "icap_fetch_eventicap_list_alarmsicap_list_events",
                                   "icap_store_eventifxus_close_slobifxus_write_slob",
                                   "imagecolorstotalimagecopyresizedimagepsslantfont",
                                   "imap_fetchheaderimap_listmailboximap_scanmailbox",
                                   "imap_unsubscribeimap_utf7_decodeimap_utf7_encode",
                                   "ingres_fetch_rowircg_html_encodeircg_set_current",
                                   "is_uploaded_fileldap_first_entryldap_free_result",
                                   "ldap_get_entriesldap_mod_replacemcal_day_of_week",
                                   "mcal_day_of_yearmcal_fetch_eventmcal_list_alarms",
                                   "mcal_list_eventsmcal_store_eventmcrypt_create_iv",
                                   "mdecrypt_genericmhash_keygen_s2kmsql_fetch_array",
                                   "msql_fetch_fieldmsql_free_resultmsql_list_fields",
                                   "msql_list_tablesmssql_field_namemssql_field_seek",
                                   "mssql_field_typemssql_num_fieldsmysql_field_name",
                                   "mysql_field_seekmysql_field_typemysql_num_fields",
                                   "ob_iconv_handlerocicolumntyperawocifreestatement",
                                   "ociinternaldebugocinewcollectionocinewdescriptor",
                                   "ociserverversionocistatementtypeodbc_field_scale",
                                   "odbc_foreignkeysodbc_free_resultodbc_gettypeinfo",
                                   "odbc_longreadlenodbc_primarykeysopenssl_free_key",
                                   "ovrimos_num_rowsovrimos_rollbackpdf_add_bookmark",
                                   "pdf_end_templatepdf_get_fontnamepdf_get_fontsize",
                                   "pdf_initgraphicspdf_set_durationpdf_setgray_fill",
                                   "pdf_setlinewidthpdf_set_text_posprinter_draw_bmp",
                                   "printer_draw_pieprinter_end_pagesesam_diagnostic",
                                   "sesam_disconnectsesam_field_namesesam_num_fields",
                                   "session_registerswf_actiongeturlswf_definebitmap",
                                   "swf_fonttrackingswf_modifyobjectswf_removeobject",
                                   "swf_shapecurvetoswf_shapefilloffsybase_data_seek",
                                   "sybase_fetch_rowsybase_select_dbwddx_deserialize",
                                   "xml_error_string"
                                  ),16,1);

() = define_keywords_n ($1, strcat(
                                   "apache_lookup_uriconnection_status",
                                   "cpdf_save_to_filecpdf_setgray_fillcpdf_set_keywords",
                                   "cpdf_setlinewidthcpdf_set_text_posdbplus_freerlocks",
                                   "dbplus_restoreposdbplus_xunlockreldomxml_attributes",
                                   "domxml_new_xmldocfbsql_change_userfbsql_fetch_array",
                                   "fbsql_fetch_assocfbsql_fetch_fieldfbsql_field_flags",
                                   "fbsql_field_tablefbsql_free_resultfbsql_list_fields",
                                   "fbsql_list_tablesfbsql_next_resultfilepro_fieldname",
                                   "filepro_fieldtypeget_class_methodsget_resource_type",
                                   "hw_docbyanchorobjhw_insertdocumentibase_free_result",
                                   "icap_delete_eventifx_affected_rowsifx_byteasvarchar",
                                   "ifx_textasvarcharifxus_create_slobignore_user_abort",
                                   "imagecolorclosestimagecolorresolveimagefilltoborder",
                                   "imagegammacorrectimagepsencodefontimagepsextendfont",
                                   "imagesetthicknessimap_getmailboxesimap_mail_compose",
                                   "imap_setflag_fullingres_autocommitingres_field_name",
                                   "ingres_field_typeingres_num_fieldsircg_channel_mode",
                                   "mb_output_handlermcal_append_eventmcal_date_compare",
                                   "mcal_delete_eventmcal_is_leap_yearmcrypt_list_modes",
                                   "msql_fetch_objectmssql_fetch_arraymssql_fetch_field",
                                   "mssql_free_resultmssql_next_resultmysql_change_user",
                                   "mysql_fetch_arraymysql_fetch_assocmysql_fetch_field",
                                   "mysql_field_flagsmysql_field_tablemysql_free_result",
                                   "mysql_list_fieldsmysql_list_tablesob_implicit_flush",
                                   "ocicollassignelemocifetchstatementocifreecollection",
                                   "ociwritelobtofileopenssl_x509_freeopenssl_x509_read",
                                   "ovrimos_fetch_rowovrimos_field_lenovrimos_field_num",
                                   "pdf_add_locallinkpdf_add_thumbnailpdf_begin_pattern",
                                   "pdf_continue_textpdf_get_parameterpdf_get_pdi_value",
                                   "pdf_makespotcolorpdf_open_pdi_pagepdf_setmiterlimit",
                                   "pdf_set_parameterpdf_set_text_risepfpro_process_raw",
                                   "printer_create_dcprinter_delete_dcprinter_draw_line",
                                   "printer_draw_textprinter_start_docpspell_new_config",
                                   "sesam_fetch_arraysesam_field_arraysesam_free_result",
                                   "session_save_pathset_error_handlersocket_get_status",
                                   "swf_getbitmapinfoswf_shapecurveto3swf_startdoaction",
                                   "sybase_field_seeksybase_num_fieldsudm_get_doc_count",
                                   "udm_get_res_fieldudm_get_res_paramwddx_packet_start",
                                   "xml_parser_createxpath_new_contextxslt_fetch_result"
                                  ),17,1);

() = define_keywords_n ($1, strcat(
                                   "array_count_valuesconnection_aborted",
                                   "connection_timeoutconvert_cyr_stringcpdf_continue_text",
                                   "cpdf_finalize_pagecpdf_output_buffercpdf_setmiterlimit",
                                   "cpdf_set_text_risedbplus_undopreparefbsql_fetch_object",
                                   "filepro_fieldcountfilepro_fieldwidthget_included_files",
                                   "get_required_filesgmp_perfect_squarehw_getchildcollobj",
                                   "hw_getchilddoccollhw_getsrcbydestobjhw_output_document",
                                   "ibase_fetch_objecticonv_get_encodingiconv_set_encoding",
                                   "ifx_htmltbl_resultimagealphablendingimagecolorallocate",
                                   "imagecopymergegrayimagecopyresampledimagecreatefromgif",
                                   "imagecreatefrompngimagefilledellipseimagefilledpolygon",
                                   "imap_createmailboximap_deletemailboximap_getsubscribed",
                                   "imap_renamemailboxingres_fetch_arrayingres_field_scale",
                                   "ircg_is_conn_aliveldap_count_entriesmb_detect_encoding",
                                   "mcal_days_in_monthmcal_event_set_endmcrypt_generic_end",
                                   "mcrypt_get_iv_sizemcrypt_module_openmove_uploaded_file",
                                   "msql_affected_rowsmssql_fetch_objectmssql_field_length",
                                   "mysql_fetch_objectocicolumnprecisionopenssl_pkcs7_sign",
                                   "openssl_x509_parseovrimos_fetch_intoovrimos_field_name",
                                   "ovrimos_field_typeovrimos_num_fieldsovrimos_result_all",
                                   "pdf_add_annotationpdf_add_launchlinkpdf_begin_template",
                                   "pdf_close_pdi_pagepdf_place_pdi_pagepdf_setgray_stroke",
                                   "pg_client_encodingprinter_create_penprinter_delete_pen",
                                   "printer_draw_chordprinter_get_optionprinter_select_pen",
                                   "printer_set_optionprinter_start_pagepspell_config_mode",
                                   "pspell_config_replsesam_fetch_resultsession_unregister",
                                   "socket_set_timeoutswf_shapefillsolidswf_shapelinesolid",
                                   "sybase_fetch_arraysybase_fetch_fieldsybase_free_result",
                                   "xml_get_error_codezip_entry_filesize"
                                  ),18,1);

() = define_keywords_n ($1, strcat(
                                   "cpdf_add_annotationcpdf_setgray_stroke",
                                   "dbase_delete_recorddbplus_freealllocksfbsql_affected_rows",
                                   "fbsql_fetch_lengthsfdf_next_field_nameget_extension_funcs",
                                   "hw_document_bodytaghw_document_contenthw_getobjectbyquery",
                                   "ifx_blobinfile_modeifx_fieldpropertiesimagecolorsforindex",
                                   "imagecreatefromjpegimagecreatefromwbmpimap_clearflag_full",
                                   "imap_fetch_overviewimap_fetchstructureimap_listsubscribed",
                                   "imap_mailboxmsginfoingres_fetch_objectingres_field_length",
                                   "ldap_get_attributesldap_get_values_lenldap_next_attribute",
                                   "mb_convert_encodingmcrypt_generic_initmcrypt_get_key_size",
                                   "mhash_get_hash_namemysql_affected_rowsmysql_escape_string",
                                   "mysql_fetch_lengthsmysql_get_host_infoodbc_specialcolumns",
                                   "ovrimos_free_resultovrimos_longreadlenpdf_get_image_width",
                                   "pdf_open_image_filepdf_set_border_dashpdf_set_text_matrix",
                                   "printer_create_fontprinter_delete_fontprinter_draw_elipse",
                                   "printer_select_fontpspell_new_personalsesam_affected_rows",
                                   "session_module_namesession_write_closesocket_set_blocking",
                                   "swf_actiongotoframeswf_actiongotolabelswf_actionnextframe",
                                   "swf_actionprevframeswf_actionsettargetswf_addbuttonrecord",
                                   "sybase_fetch_objectudm_set_agent_paramwddx_serialize_vars"
                                  ),19,1);

() = define_keywords_n ($1, strcat(
                                   "call_user_func_array",
                                   "cpdf_set_text_matrixdbase_replace_record",
                                   "domxml_get_attributedomxml_set_attribute",
                                   "get_declared_classesget_magic_quotes_gpc",
                                   "hw_getremotechildrenimagecolordeallocate",
                                   "imagecolorexactalphaimagecreatetruecolor",
                                   "imagefilledrectangleircg_fetch_error_msg",
                                   "ldap_first_attributemb_convert_variables",
                                   "mb_decode_mimeheadermb_encode_mimeheader",
                                   "mb_internal_encodingmcal_create_calendar",
                                   "mcal_delete_calendarmcal_event_set_alarm",
                                   "mcal_event_set_classmcal_event_set_start",
                                   "mcal_event_set_titlemcal_next_recurrence",
                                   "mcal_rename_calendarmcrypt_enc_self_test",
                                   "mhash_get_block_sizemysql_get_proto_info",
                                   "odbc_field_precisionodbc_tableprivileges",
                                   "openssl_error_stringopenssl_pkcs7_verify",
                                   "pdf_closepath_strokepdf_get_image_height",
                                   "pdf_set_border_colorpdf_set_border_style",
                                   "pdf_set_char_spacingpdf_setrgbcolor_fill",
                                   "pdf_set_word_spacingprinter_create_brush",
                                   "printer_delete_brushprinter_select_brush",
                                   "pspell_clear_sessionpspell_config_create",
                                   "pspell_config_ignorepspell_save_wordlist",
                                   "readline_add_historysesam_settransaction",
                                   "snmp_get_quick_printsnmp_set_quick_print",
                                   "sybase_affected_rowsudm_add_search_limit",
                                   "udm_free_ispell_dataudm_load_ispell_data",
                                   "wddx_serialize_valuexslt_set_sax_handler"
                                  ),20,1);

() = define_keywords_n ($1, strcat(
                                   "array_merge_recursive",
                                   "cpdf_closepath_strokecpdf_set_char_spacing",
                                   "cpdf_set_current_pagecpdf_setrgbcolor_fill",
                                   "cpdf_set_word_spacingget_defined_constants",
                                   "get_defined_functionsget_loaded_extensions",
                                   "hw_getchilddoccollobjimagecolortransparent",
                                   "imagecreatefromstringingres_field_nullable",
                                   "mcrypt_get_block_sizemysql_get_client_info",
                                   "mysql_get_server_infoodbc_columnprivileges",
                                   "odbc_procedurecolumnsopenssl_get_publickey",
                                   "openssl_pkcs7_decryptopenssl_pkcs7_encrypt",
                                   "pdf_get_pdi_parameterpdf_open_memory_image",
                                   "pdf_set_horiz_scalingpreg_replace_callback",
                                   "pspell_add_to_sessionreadline_list_history",
                                   "readline_read_historyrestore_error_handler",
                                   "session_cache_limitersession_is_registered",
                                   "xml_parse_into_structxml_parser_get_option",
                                   "xml_parser_set_optionyp_get_default_domain"
                                  ),21,1);

() = define_keywords_n ($1, strcat(
                                   "call_user_method_array",
                                   "cpdf_set_horiz_scalinghw_document_attributes",
                                   "hw_document_setcontenthw_getobjectbyqueryobj",
                                   "imagecolorclosestalphaimagecolorresolvealpha",
                                   "ingres_field_precisionmb_preferred_mime_name",
                                   "mcrypt_enc_get_iv_sizemcrypt_get_cipher_name",
                                   "mcrypt_list_algorithmsmssql_get_last_message",
                                   "mysql_unbuffered_queryopenssl_get_privatekey",
                                   "pdf_setrgbcolor_strokepdf_set_text_rendering",
                                   "pg_set_client_encodingprinter_draw_rectangle",
                                   "printer_draw_roundrectpspell_add_to_personal",
                                   "pspell_config_personalreadline_clear_history",
                                   "readline_write_historyregister_tick_function",
                                   "satellite_exception_idswf_actionwaitforframe"
                                  ),22,1);

() = define_keywords_n ($1, strcat(
                                   "cpdf_place_inline_image",
                                   "cpdf_set_page_animationcpdf_setrgbcolor_stroke",
                                   "cpdf_set_text_renderingcybercash_base64_decode",
                                   "cybercash_base64_encodecybermut_creerreponsecm",
                                   "dbplus_setindexbynumberdefine_syslog_variables",
                                   "fbsql_database_passwordhw_getobjectbyquerycoll",
                                   "imagetruecolortopaletteimap_mime_header_decode",
                                   "java_last_exception_getmb_decode_numericentity",
                                   "mb_encode_numericentitymb_substitute_character",
                                   "mcal_event_set_categorymcrypt_enc_get_key_size",
                                   "mcrypt_module_self_testpspell_config_save_repl",
                                   "quoted_printable_decodeswf_actiontogglequality",
                                   "swf_shapefillbitmapclipswf_shapefillbitmaptile",
                                   "sybase_get_last_messageudm_clear_search_limits",
                                   "xml_set_default_handlerxml_set_element_handler"
                                  ),23,1);

() = define_keywords_n ($1, strcat(
                                   "get_magic_quotes_runtime",
                                   "mcal_event_add_attributemcrypt_enc_is_block_mode",
                                   "mssql_min_error_severitypspell_store_replacement",
                                   "session_set_save_handlerset_magic_quotes_runtime",
                                   "unregister_tick_functionxslt_output_endtransform",
                                   "zip_entry_compressedsize"
                                  ),24,1);

() = define_keywords_n ($1, strcat(
                                   "fdf_set_javascript_action",
                                   "imap_rfc822_parse_adrlistimap_rfc822_parse_headers",
                                   "imap_rfc822_write_addressjava_last_exception_clear",
                                   "mcal_event_set_recur_nonemcrypt_enc_get_block_size",
                                   "mcrypt_enc_get_modes_nameopenssl_x509_checkpurpose",
                                   "pdf_closepath_fill_strokepspell_config_runtogether",
                                   "satellite_exception_valuesession_get_cookie_params",
                                   "session_set_cookie_paramssybase_min_error_severity"
                                  ),25,1);

() = define_keywords_n ($1, strcat(
                                   "cpdf_closepath_fill_stroke",
                                   "cybermut_creerformulairecmfdf_set_submit_form_action",
                                   "get_html_translation_tablehw_getobjectbyquerycollobj",
                                   "mcal_event_set_descriptionmcal_event_set_recur_daily",
                                   "mssql_min_message_severityprinter_logical_fontheight",
                                   "register_shutdown_functionsatellite_caught_exception",
                                   "sybase_min_client_severitysybase_min_server_severity",
                                   "xml_get_current_byte_indexxslt_output_begintransform"
                                  ),26,1);

() = define_keywords_n ($1, strcat(
                                   "dbase_get_record_with_names",
                                   "ircg_lookup_format_messagesmcal_event_set_recur_weekly",
                                   "mcal_event_set_recur_yearlymcrypt_module_is_block_mode",
                                   "sybase_min_message_severityxml_get_current_line_number",
                                   "zip_entry_compressionmethod"
                                  ),27,1);

() = define_keywords_n ($1,
                        "readline_completion_function",
                        28,1);

() = define_keywords_n ($1, strcat(
                                   "ircg_register_format_messages",
                                   "mcrypt_enc_is_block_algorithmxml_get_current_column_number",
                                   "xml_set_notation_decl_handler"
                                  ),29,1);

() = define_keywords_n ($1, strcat(
                                   "mcrypt_enc_get_algorithms_name",
                                   "xml_set_character_data_handler"
                                  ),30,1);

() = define_keywords_n ($1, strcat(
                                   "cpdf_global_set_document_limits",
                                   "mcal_fetch_current_stream_eventmcrypt_module_get_algo_key_size"
                                  ),31,1);

() = define_keywords_n ($1,
                        "mcrypt_module_is_block_algorithm",
                        32,1);

() = define_keywords_n ($1, strcat(
                                   "mcal_event_set_recur_monthly_mday",
                                   "mcal_event_set_recur_monthly_wdaymcrypt_module_get_algo_block_size"
                                  ),33,1);

() = define_keywords_n ($1, strcat(
                                   "mcrypt_enc_get_supported_key_sizes",
                                   "mcrypt_enc_is_block_algorithm_mode"
                                  ),34,1);

() = define_keywords_n ($1,
                        "xml_set_external_entity_ref_handler",
                        35,1);

() = define_keywords_n ($1,
                        "xml_set_unparsed_entity_decl_handler",
                        36,1);

() = define_keywords_n ($1,
                        "mcrypt_module_is_block_algorithm_mode",
                        37,1);

() = define_keywords_n ($1,
                        "xml_set_processing_instruction_handler",
                        38,1);

() = define_keywords_n ($1,
                        "mcrypt_module_get_algo_supported_key_sizes",
                        42,1);
%}}}

%!%+
%\function{php_mode}
%\synopsis{php_mode}
%\usage{Void php_mode ();}
%\description
% This is a mode that is dedicated to faciliate the editing of PHP language files.
% It calls the function \var{php_mode_hook} if it is defined. It also manages
% to recognice whetever it is in a php block or in a html block, for those people
% that doesnt seperate function from form ;)
%
% Functions that affect this mode include:
%#v+
%  function:             default binding:
%  php_top_of_function        ESC Ctrl-A
%  php_end_of_function        ESC Ctrl-E
%  php_mark_function          ESC Ctrl-H
%  php_mark_matching          ESC Ctrl-M
%  php_indent_buffer          Ctrl-C Ctrl-B
%  php_insert_class           Ctrl-C Ctrl-C
%  php_insert_function        Ctrl-C Ctrl-F
%  php_insert_bra             {
%  php_insert_ket             }
%  php_insert_colon           :
%  php_format_paragraph       ESC q
%  indent_line                TAB
%  newline_and_indent         RETURN
%  goto_match                 Ctrl-\
%  php_insert_tab             Ctrl-C Ctrl-I
%#v-
% Variables affecting indentation include:
%#v+
% PHP_INDENT
% PHP_BRACE
% PHP_BRA_NEWLINE
% PHP_KET_NEWLINE
% PHP_Colon_Offset
% PHP_CONTINUED_OFFSET
% PHP_Class_Offset
% PHP_Autoinsert_Comments
% PHP_Switch_Offset
%#v-
% Hooks: \var{php_mode_hook}
%!%-
define php_mode( )
{
   variable kmap = "PHP";
   set_mode( kmap, 2 );
   use_keymap( kmap );
   use_syntax_table( kmap );
   set_buffer_hook( "par_sep", "php_paragraph_sep" );
   set_buffer_hook( "indent_hook", "php_indent_region_or_line" );
   set_buffer_hook( "newline_indent_hook", "php_newline_and_indent" );

   mode_set_mode_info( "PHP", "fold_info", "//{{{\r//}}}\r\r" );
   mode_set_mode_info( "PHP", "init_mode_menu", &php_init_menu );
   run_mode_hooks( "php_mode_hook" );
}

provide( "php_mode" );