Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Syntax Highlighting Scripts Within (Read 74726 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Syntax Highlighting Scripts Within

Reply #50
I have updated the Notepad++ Language file to include a lot of the cwb_hooks fields and also the panels_ui fields.

Mine was based on a previous version posted here.

Code: [Select]
<NotepadPlus>
    <UserLang name="foobar2000" ext="foob TAGZ fcs foo">
        <Settings>
            <Global caseIgnored="yes" />
            <TreatAsSymbol comment="no" commentLine="yes" />
            <Prefix words1="no" words2="no" words3="no" words4="no" />
        </Settings>
        <KeywordLists>
            <Keywords name="Delimiters">&apos;00&apos;00</Keywords>
            <Keywords name="Folder+">BlockBegin</Keywords>
            <Keywords name="Folder-">BlockEnd</Keywords>
            <Keywords name="Operators">&apos; ( ) , [ ] | =</Keywords>
            <Keywords name="Comment">1 1 2 2 0//</Keywords>
            <Keywords name="Words1">%album artist% %album% %date% %artist% %title% %tracknumber% %genre% %subgenre% %performer% %instrument% %composer% %conductor% %orchestra% %publisher% %work% %cat#% %tempo% %situation% %rating% %emyfav% %bpm% %check sm% %score% %check ly% %lyrics% %check tad% %check q% %check gs% %check pi% %check lc% %added% %downloaded% %length% %cwb_systemdate%</Keywords>
            <Keywords name="Words2">%isplaying% %_ispaused% %_composer% %_comment% %__channels% %_date% %_directoryname% %disc% %_diskwriter_index% %_foobar2000_version% %_filename% %_filename_ext% %_genre% %_isplaying% %ispaused% %_length% %_length_seconds% %_path% %_path_raw% %_playlist_number% %_subsong% %__bitrate% %__extrainfo% %__replaygain_album_gain% %__replaygain_album_peak% %__replaygain_track_gain% %__replaygain_track_peak% %__samplerate% %playback_time% %length% %length_seconds% %_time_elapsed% %_time_elapsed_seconds% %_time_remaining% %_time_remaining_seconds% %play_count% %codec% %codec_profile% %filename% %filename_ext% %directoryname% %path% %subsong% %path_sort% %length_seconds% %filesize% %bitrate% %channels% %samplerate% %__mp3_stereo_mode% %added% %_system_year% %_system_month% %_system_day% %_system_hour% %last_played% %_selected_back% %_back% %_selected_back_no_focus% %_selected_text% %_time_total% %_time_total_seconds% %bitrate% %_width% %_height% %_trackinfo_mode% %_trackinfo_notrack% %cwb_systemdate% %cwb_systemdatetime% %cwb_activelist% %cwb_activelist_count% %cwb_playinglist% %cwb_playinglist_count% %cwb_queueindex% %cwb_queueindexes% %cwb_queuelength% %cwb_queue_end_playlist% %cwb_next_title% %cwb_next_artist% %cwb_playback_order%</Keywords>
            <Keywords name="Words3">$if $if2 $if3 $ifequal $ifgreater $iflonger $select $repeat $panel $drawrect $font $imageabs $imageabs2 $button $button2 $sorted $pad</Keywords>
            <Keywords name="Words4">$put $puts $get $abbr $lower $upper $num $caps $caps2 $len $pad $pad_right $cut $padcut $padcut_right $insert $add $sub $mul $div $muldiv $mod $min $max $left $right $and $or $xor $not $fix_eol $fix_eol2 $meta $meta_sep $mets_num $mets_test $info $char $strcmp $stricmp $directory $greater $longer $strchr $strrchr $strstr $progress $progress2 $replace $ext $substr $rgb $transition $blend $rand $trim $tab $crlf $longest $shortest $set_style $calculate_blend_target $offset_colour $setpvar $glass $getpvar $eval $align $alignset $alignrel $alignabs $calcwidth $calcheight $fileexists $cwb_urldecode $cwb_httpclean $cwb_removethe $cwb_ltrim $cwb_datediff</Keywords>
        </KeywordLists>
        <Styles>
            <WordsStyle name="DEFAULT" styleID="11" fgColor="000000" bgColor="FFFFFF" fontName="Courier New" fontStyle="0" fontSize="10" />
            <WordsStyle name="FOLDEROPEN" styleID="12" fgColor="FF8000" bgColor="FFFF80" fontName="" fontStyle="0" />
            <WordsStyle name="FOLDERCLOSE" styleID="13" fgColor="FF8040" bgColor="FFFF80" fontName="" fontStyle="0" />
            <WordsStyle name="KEYWORD1" styleID="5" fgColor="0000FF" bgColor="FFFFFF" fontName="Arial" fontStyle="0" fontSize="10" />
            <WordsStyle name="KEYWORD2" styleID="6" fgColor="4646FF" bgColor="FFFFFF" fontName="Arial" fontStyle="0" fontSize="10" />
            <WordsStyle name="KEYWORD3" styleID="7" fgColor="FF0000" bgColor="FFFFFF" fontName="Courier New" fontStyle="0" fontSize="11" />
            <WordsStyle name="KEYWORD4" styleID="8" fgColor="FF4646" bgColor="FFFFFF" fontName="Courier New" fontStyle="0" fontSize="11" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="FFFF00" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="008000" bgColor="FFFFFF" fontName="Arial" fontStyle="2" fontSize="10" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="FF0080" bgColor="FFFFFF" fontName="Arial" fontStyle="0" fontSize="10" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="000000" bgColor="FFFFFF" fontName="Courier New" fontStyle="0" />
            <WordsStyle name="DELIMINER1" styleID="14" fgColor="A25151" bgColor="FFFFFF" fontName="Arial" fontStyle="0" />
            <WordsStyle name="DELIMINER2" styleID="15" fgColor="FFFFFF" bgColor="FFFFFF" fontName="" fontStyle="0" />
        </Styles>
    </UserLang>
</NotepadPlus>

Syntax Highlighting Scripts Within

Reply #51
yet another syntax highlighter  for Sublime Text editor - DX/OGL based editor with python extensions
I accidentally run to this editor which uses TextMate style syntax definitions (Apple XML p-lists) so I guess this would work on Mac too:

tagz.tmLanguage
Code: [Select]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>tagz fcs</string>
</array>
<key>name</key>
<string>foobar2000: tagz</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>%(_foobar2000_version|_path_raw|album|album artist|artist|bitrate|channels|codec|codec_profile|date|directoryname|discnumber|filename|filename_e
xt|filesize|filesize_natural|genre|ispaused|isplaying|last_modified|length|length_ex|length_samples|l
ength_seconds|length_seconds_fp|list_index|list_total|path|path_sort|playback_time|playback_time_rema
ining|playback_time_remaining_seconds|playback_time_seconds|queue_index|queue_indexes|queue_total|rep
laygain_album_gain|replaygain_album_peak|replaygain_track_gain|replaygain_track_peak|samplerate|subso
ng|title|totaldiscs|totaltracks|track artist|tracknumber|meta_branch|meta_branch_remap)%</string>
<key>name</key>
<string>keyword.tagz</string>
</dict>
<dict>
<key>match</key>
<string>%(artist webpage url|band|bpm|comment|commercial information url|composer|conductor|content group|copyright|copyright url|encoded by|encoding settings|file webpage url|genre|style|internet radio webpage url|isrc|lyrics|original album|original artist|original release date|owner|paymemt url|performer|publisher|publisher url|radio station|remixed by|source webpage url|subtitle|unsynced lyrics|writer)%</string>
<key>name</key>
<string>entity.other.inherited-class.tagz</string>
</dict>
<dict>
<key>match</key>
<string>%&lt;(artist|album artist|producer|composer|performer|genre)&gt;%</string>
<key>name</key>
<string>support.function.tagz</string>
</dict>
<dict>
<key>match</key>
<string>\$\b(abbr|ansi|ascii|blend|caps|caps2|channels|char|crc32|crlf|cut|date|day_of_month|directory|dir
ectory_path|ext|filename|fix_eol|get|hex|hsl|info|insert|left|len|len2|longer|longest|lower|meta|meta
_num|meta_sep|meta_test|month|num|pad|pad_right|padcut|padcut_right|progress|progress2|put|puts|repea
t|replace|rgb|right|roman|rot13|strchr|strcmp|stricmp|stripprefix|strrchr|strstr|substr|swapprefix|ta
b|time|transition|trim|upper|year)\b</string>
<key>name</key>
<string>support.function.tagz</string>
</dict>

<dict>
<key>match</key>
<string>\$\b(?i:if|if2|if3|ifequal|ifgreater|iflonger|and|or|not|xor|greater|select|add|div|max|min|mod|mul|muldiv
|rand|sub)\b</string>
<key>name</key>
<string>keyword.control.tagz</string>
</dict>
<dict>
<key>match</key>
<string>%\b(?i:|title|is_locked|lock_name|size|length|filesize|filesize_raw|is_active|is_playing|play_count|first
_played|last_played|played_per_day|added|rating|lock|length_hours|length_seconds|filesize_natural|isp
laying|isactive|list_index|list_total|_list)\b%</string>
<key>name</key>
<string>support.class.tagz</string>
</dict>
<dict>
<key>match</key>
<string>\$\b(?i:set_global|get_global|set_style|set_font|reset_font|calculate_blend_target|offset_colour|meta_bran
ch_swapprefix|meta_branch_stripprefix|meta_branch_remap_swapprefix|meta_branch_remap_stripprefix)\b</string>
<key>name</key>
<string>support.function.cui.tagz</string>
</dict>
<dict>
<key>match</key>
<string>\$\b(?i:drawellipse|drawimage|drawrect|drawroundrect|drawstring|drawtext|drawtextex|fillrect|findfile|font
|getcaption|getimagewidth|gettextheight|gettextwidth|gradientrect|imageabs|imageabs_rc|imagebutton|is
visible_c|movepanel|setparcentmode|showpanel|textbutton)\b</string>
<key>name</key>
<string>constant.other.pss.tagz</string>
</dict>
<dict>
<key>match</key>
<string>\$\b(?i:addcolour|averagecolour|blendcolour|drawblurrect|drawellipse|drawfocusrect|drawrect|drawroundrect|
drawstring|drawtext|drawtextex|drawthemerect|drawtriangle|el_scale|enabledraw|fillrect|fillroundrect|
findfile|font|getgroupformat|getimagewidth|getlastpos|getsyscolour|gettextheight|gettextwidth|gradien
trect|ifequal|imageabs|imageabs_rc|measurestring|popuphide|popupsize|popuptracknum|puts|rgb|setcoordi
nate|setworldtransform|subcolour|xorcolour)\b</string>
<key>name</key>
<string>constant.other.elp.tagz</string>
</dict>
<dict>
<key>match</key>
<string>\$\b(?i:calc_text|draw_image|draw_line|draw_rect|draw_text|eval|fill_draw_rect|fill_rect|gp_calc_string|gp
_calc_string_path|gp_draw_arc|gp_draw_ellipse|gp_draw_line|gp_draw_pie|gp_draw_rectangle|gp_draw_stri
ng|gp_draw_string_path|gp_fill_ellipse|gp_fill_pie|gp_fill_rectangle|gp_set_brush|gp_set_font|gp_set_
pen|gp_set_smoothing_mode|gp_set_string_format|gp_set_text_rendering_hint|round_rect|set_brush|set_fo
nt|set_font_color|set_org|set_pen|set_size|sum)\b</string>
<key>name</key>
<string>constant.other.gb.tagz</string>
</dict>
<dict>
<key>match</key>
<string>%\b(?i:_system_year|_system_month|_system_day|_system_day_of_week|_system_hour|is_status_pane|_isplaying|
_ispaused|_time_elapsed_seconds|_time_elapsed|_is_group|_themed|_display_index|_selected_back_no_focu
s|_selected_back|_back|_width|_height||lastfm_bio|lastfm_album_content|lastfm_similar_artist|lastfm_a
rtist_playcount|lastfm_album_playcount|lastfm_artist_listeners|lastfm_album_listeners|\[el]_is_hide|\[el]_is_hide_item|_height|_is_hide|_width|el_backcolour|el_direct_item_count|el_focused|el_foob
ar2000_path|el_group_count|el_group_depth|el_group_first_path|el_group_format|el_group_index|el_group
_row|el_height|el_is_collapsed|el_is_empty|el_is_group|el_is_hide_item|el_is_noheader|el_is_selected|
el_is_themed|el_is_valid|el_isplaying|el_item_count|el_item_count2|el_item_index|el_item_index2|el_po
pup_height|el_popup_width|el_preset_index|el_preset_name|el_row_height|el_selected|el_subgroup_count|
el_subgroup_count2|el_subgroup_index|el_sum_length|el_sum_length_seconds|el_total_group_count|el_tota
l_group_index|el_total_item_count|el_user_profile_path|el_width|foo|__ADD_ART_ROW__|__ART_MARGIN__|__
ART_PATH__|__ART_ROW__|__FOCUS__|__IS_ART_ON_GH__|__IS_REFLECTION__|__PLAY_BG__|__PLAY_TEXT__|__SEL_B
G__|__TEXT__|gb_calc_*|gb_calc_height|gb_calc_width|gb_calc_x|gb_calc_y|gb_col|gb_col_count|gb_focuse
d|gb_group|gb_height|gb_isplaying|gb_item_count|gb_item_index|gb_length|gb_length_seconds|gb_mouse_ov
er|gb_playlist_number|gb_row|gb_row_count|gb_subitem_count|gb_track_count|gb_track_index|gb_width)\b%</string>
<key>name</key>
<string>variable.parameter.tagz</string>
</dict>
<dict>
<key>match</key>
<string>"\b(.*?)\b"</string>
<key>name</key>
<string>string.tagz</string>
</dict>
<dict>
<key>match</key>
<string>'\b(.*?)\b'</string>
<key>name</key>
<string>string.tagz</string>
</dict>
<dict>
<key>begin</key>
<string>//</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.tagz</string>
</dict>
</dict>
<key>end</key>
<string>$\n?</string>
<key>name</key>
<string>comment.line.double-slash.tagz</string>
</dict>
<dict>
<key>begin</key>
<string>"|'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.tagz</string>
</dict>
</dict>
<key>end</key>
<string>"|'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.tagz</string>
</dict>
</dict>
</dict>
<dict>
<key>match</key>
<string>(?\$)[a-zA-Z0-9_\-]*\(|%[a-zA-Z0-9_\-\s]*%)</string>
<key>name</key>
<string>invalid.deprecated.tagz</string>
</dict>
</array>
<key>scopeName</key>
<string>source.tagz</string>
</dict>
</plist>
tmLanguage files are not auto reloaded, so for that make a *.sublime-options file with the same base name as the .tmLanguage file with some text in it, i.e.:
tagz.sublime-options
Code: [Select]
extensions tagz fcs
or get it from here and extract the archive to "%appdata%\Sublime Text\Packages"

screen-shots:
[a href=\"http://img218.imageshack.us/img218/7685/sshot1zx.png\" target=\"_blank\"]

Syntax Highlighting Scripts Within

Reply #52
thanks 2E7AH. Sublime text is an amazing text editor!

Syntax Highlighting Scripts Within

Reply #53
Anyone who wants to try the fine 2E7AH contribution should just be sure to replace the following line:
<string>(?sad.gif\$)[a-zA-Z0-9_\-]*\(|%[a-zA-Z0-9_\-\s]*%)</string>
which probably was altered by the forum software (emoticons enabled).
Correct form is
<string>(?:(\$)[a-zA-Z0-9_\-]*\(|%[a-zA-Z0-9_\-\s]*%)</string>

Syntax Highlighting Scripts Within

Reply #54
I use Notepad2-mod for just about all text based tasks...
I find its feature set has the perfect balance of speed, advanced features, utility, and general Windows Notepad replacement.
It takes INI files for configuration.

Does anybody here have a custom "Notepad2" config you may have created for the foobar syntax?
It would be great to "emulate" the foobar2000 syntax color scheme of "Sublime Text Editor" (previous post) in "Notepad2" !!


Syntax Highlighting Scripts Within

Reply #55
* EDIT *
Unfortunately, I just discovered that Notepad2 is hard coded with the schemes it accepts; editing the INI file does nothing.
You would have to modify the source code of Notepad2 to have foobar2000 TAGZ syntax included in this text editor.
Bummer.
Anybody here want to have a go at modifying the source of Notepad2-mod :-)
here is the homepage [code.google.com - BSD Licence]: http://code.google.com/p/notepad2-mod/

Syntax Highlighting Scripts Within

Reply #56
New lexer should be made for Scintilla component which this editor uses, but I doubt anyone can justify the effort just make foobar title formatting colorful. AFAIK it can be easier to extend SciTE (> v2.10) with lexers written in Lua. Finally IMHO Notepad++ is easiest and feature rich editor for which 'tagz' syntax highlighting is provided some posts above.
I only wish Linux world had real Notepad++ alternative

Syntax Highlighting Scripts Within

Reply #57
Well, for now --until a coder with love for Notepad2 comes around-- I have a workaround for scripting in foobar2000...

Utilize the closest matching existing syntax scheme built in to "Notepad2-mod".

After some trial testing, I decided the "AutoIt3 Script" scheme in "Notepad2-mod" is a good TAGZ scripting scheme for foobar2000.
It is easy on the eyes and there are no glaring wrong elements.

In a nutshell
- the "Variables" ($if; $meta, $stricmp, etc) are colored "Olive"
- the "Strings" ('anything enclosed by single quote marks like here') are "Blue-Green"
- the "Operators" (a syntax argument enclosed by start-end parenthesis like here) will change color to "Bold Red" when you click on any parenthesis character,
thus it very easy to see the "start" and "end" parenthesis of the argument.

That's it, nothing more, but it works nicely.

I must mention, there is one small problem...
"Comments" do not change color ("Autoit" uses the ";" (semicolon) and not the "//" (double slashes)), but there is a workaround...

Instead of typing this: // This is a comment (which will come out as black text)
Type this: //; This is a comment

And... to change the color of the comment strings, go to "View > Customize Schemes > AutoIt3 Script > Comment (sub-menu) > Fore... (button)"

That's it for me, thanks for reading.

Syntax Highlighting Scripts Within

Reply #58
The good news is that I have some C++ code for a titleformatting lexer for Scintilla/Scilexer lying around somewhere. The bad news is that I just never got around to packaging it as a scilexer extension DLL.

 

Syntax Highlighting Scripts Within

Reply #59
foobar2000 syntax for PSPad v2011/11/10
- conforms to the newest stable version (foobar2000 v1.1.9)
- contains syntax highlighter AND definition file - just press CTRL+SPACE and get list of all available commands with full description of syntax
- autocompletes fields & functions for you.
- included is also syntax for foo_albumlist.dll, foo_ui_columns.dll, foo_plorg.dll, foo_playcount.dll and foo_uie_esplaylist.dll
- easy installation even for first time users

Screenshot


Download
Code: [Select]
http://www.mediafire.com/file/31f9w9ghzjyfzau/PSPad-Foobar2000_syntax-v20111110.zip


Enjoy

Syntax Highlighting Scripts Within

Reply #60
foobar2000 syntax for PSPad v2011/11/14 - new version. Adding because now it works with selections, that is important, time saving feature. Few bugfixes and improvements were made as well.

Code: [Select]
http://www.mediafire.com/file/pb613srw30n0pin/PSPad-Foobar2000_syntax-v20111114.zip

Syntax Highlighting Scripts Within

Reply #61
foobar2000 syntax for PSPad v2012/01/02. Now it works with almost all tag fields which foobar supports (- at least all documented), for existing fields was made description more fitting and precise. Also was added syntax for foo_textdisplay.dll and of course few minor tweaks & fixes. In next version I'd like to add to fields like $meta() or $info() selection box with all available options... but that will take some time.

Code: [Select]
http://www.mediafire.com/?lyyfi1fxoolsoi5

Re: Syntax Highlighting Scripts Within

Reply #62
Does anyone have a working syntax highlighting file for Sublime Text 3? The previously posted sublime file doesn't work for version 3 so I've been trying to build my own but I'm still new to xml and regex.
I am root

Re: Syntax Highlighting Scripts Within

Reply #63
Does anyone have a working syntax highlighting file for Sublime Text 3? The previously posted sublime file doesn't work for version 3 so I've been trying to build my own but I'm still new to xml and regex.
Update is anyone is interested. I put together a working syntax file for Sublime Text 3.

Code: [Select]
%YAML 1.2
---
name: Foobar2000
file_extensions: [foobar, f2k, fb2k, fb, tagz]
scope: source.tagz
contexts:
  main:
    # Strings begin and end with quotes, and use backslashes as an escape
    # character
    - match: '"'
      scope: punctuation.definition.string.begin.tagz
      push: double_quoted_string

    # Comments STARTS with a '//' and finish at the end of the line (end of line see 'line_comment:')
    - match: '//'
      scope: punctuation.definition.comment.tagz
      push: line_comment

    - match: '\b(if|if2|if3|ifequal|ifgreater|iflonger|and|or|not|xor|greater|select|add|div|max|min|mod|mul|muldiv|rand|sub)\b'
      scope: keyword.control.tagz

    # Numbers
    - match: '\b(-)?[0-9.]+\b'
      scope: constant.numeric.tagz

    - match: '%(_foobar2000_version|_path_raw|album|album artist|artist|bitrate|channels|codec|codec_profile|date|directoryname|discnumber|filename|filename_e
              xt|filesize|filesize_natural|genre|ispaused|isplaying|last_modified|length|length_ex|length_samples|l
              ength_seconds|length_seconds_fp|list_index|list_total|path|path_sort|playback_time|playback_time_rema
              ining|playback_time_remaining_seconds|playback_time_seconds|queue_index|queue_indexes|queue_total|rep
              laygain_album_gain|replaygain_album_peak|replaygain_track_gain|replaygain_track_peak|samplerate|subso
              ng|title|totaldiscs|totaltracks|track artist|tracknumber|meta_branch|meta_branch_remap)%'
      scope: keyword.tagz

    # Globals
    - match: '\$\b(init_ps_global|set_global|get_global|get_ps_global|set_style|set_font|reset_font|calculate_blend_target|offset_colour|meta_bran
                  ch_swapprefix|meta_branch_stripprefix|meta_branch_remap_swapprefix|meta_branch_remap_stripprefix)\b'
      scope: support.function.cui.tagz

    # PSS
    - match: '\b(drawellipse|drawimage|drawrect|drawroundrect|drawstring|drawtext|drawtextex|fillrect|findfile|font|getcaption|
                getimagewidth|gettextheight|gettextwidth|gradientrect|imageabs|imageabs_rc|imagebutton|isvisible_c|movepanel|movepanel_c|
                setparcentmode|showpanel|showpanel_c|textbutton)\b'
      scope: constant.other.pss.tagz

    - match: '\b(SETGLOBAL|REFRESH)\b'
      scope: constant.other.pss.tagz

    - match: '\b(addcolour|averagecolour|blendcolour|drawblurrect|drawellipse|drawfocusrect|drawrect|drawroundrect|
                drawstring|drawtext|drawtextex|drawthemerect|drawtriangle|el_scale|enabledraw|fillrect|fillroundrect|
                findfile|font|getgroupformat|getimagewidth|getlastpos|getsyscolour|gettextheight|gettextwidth|gradien
                trect|ifequal|imageabs|imageabs_rc|measurestring|popuphide|popupsize|popuptracknum|puts|rgb|setcoordi
                nate|setworldtransform|subcolour|xorcolour)\b'
      scope: constant.other.elp.tagz

      # System variables
    - match: '\b(_system_year|_system_month|_system_day|_system_day_of_week|_system_hour|is_status_pane|_isplaying|_ispaused|
                _time_elapsed_seconds|_time_elapsed|_is_group|_themed|_display_index|_selected_back_no_focus|_selected_back|_back|_width|
                _height||lastfm_bio|lastfm_album_content|lastfm_similar_artist|lastfm_artist_playcount|lastfm_album_playcount|lastfm_artist_listeners|
                lastfm_album_listeners|\[el]_is_hide|\[el]_is_hide_item|_height|_is_hide|_width|el_backcolour|el_direct_item_count|el_focused|
                el_foobar2000_path|el_group_count|el_group_depth|el_group_first_path|el_group_format|el_group_index|el_group_row|el_height|
                el_is_collapsed|el_is_empty|el_is_group|el_is_hide_item|el_is_noheader|el_is_selected|el_is_themed|el_is_valid|el_isplaying|
                el_item_count|el_item_count2|el_item_index|el_item_index2|el_popup_height|el_popup_width|el_preset_index|el_preset_name|el_row_height|
                el_selected|el_subgroup_count|el_subgroup_count2|el_subgroup_index|el_sum_length|el_sum_length_seconds|el_total_group_count|
                el_total_group_index|el_total_item_count|el_user_profile_path|el_width|foo|
                __ADD_ART_ROW__|__ART_MARGIN__|__ART_PATH__|__ART_ROW__|__FOCUS__|__IS_ART_ON_GH__|__IS_REFLECTION__|__PLAY_BG__|__PLAY_TEXT__|__SEL_BG__|__TEXT__|
                gb_calc_*|gb_calc_height|gb_calc_width|gb_calc_x|gb_calc_y|gb_col|gb_col_count|gb_focused|gb_group|gb_height|gb_isplaying|gb_item_count|
                gb_item_index|gb_length|gb_length_seconds|gb_mouse_over|gb_playlist_number|gb_row|gb_row_count|gb_subitem_count|gb_track_count|gb_track_index|gb_width)\b'
      scope: variable.parameter.tagz

    # Functions
    - match: '\b(abbr|ansi|ascii|blend|caps|caps2|channels|char|crc32|crlf|cut|date|day_of_month|directory|
                directory_path|ext|filename|fix_eol|get|hex|hsl|info|insert|left|len|len2|longer|longest|lower|meta|
                meta_num|meta_sep|meta_test|month|num|pad|pad_right|padcut|padcut_right|progress|progress2|put|puts|
                repeat|replace|rgb|right|roman|rot13|strchr|strcmp|stricmp|stripprefix|strrchr|strstr|substr|swapprefix|
                tab|time|transition|trim|upper|year)\b'
      scope: support.function.tagz

    - match: '\b(calc_text|draw_image|draw_line|draw_rect|draw_text|eval|fill_draw_rect|fill_rect|gp_calc_string|
                gp_calc_string_path|gp_draw_arc|gp_draw_ellipse|gp_draw_line|gp_draw_pie|gp_draw_rectangle|
                gp_draw_string|gp_draw_string_path|gp_fill_ellipse|gp_fill_pie|gp_fill_rectangle|gp_set_brush|gp_set_font|
                gp_set_pen|gp_set_smoothing_mode|gp_set_string_format|gp_set_text_rendering_hint|round_rect|set_brush|
                set_font|set_font_color|set_org|set_pen|set_size|sum)\b'
      scope: constant.other.gb.tagz

  double_quoted_string:
    - meta_scope: string.quoted.double.tagz
    - match: '\\.'
      scope: constant.character.escape.tagz
    - match: '"'
      scope: punctuation.definition.string.end.tagz
      pop: true

  # Comments END
  line_comment:
    - meta_scope: comment.line.tagz
    - match: '\n'
      pop: true
I am root