diff --git a/tests/syntax-tests/highlighted/ASP/test.asp b/tests/syntax-tests/highlighted/ASP/test.asp
new file mode 100644
index 0000000000..db61089595
--- /dev/null
+++ b/tests/syntax-tests/highlighted/ASP/test.asp
@@ -0,0 +1,36 @@
+[38;2;255;255;255m<[0m[38;2;249;38;114mhtml[0m[38;2;255;255;255m>[0m
+[38;2;255;255;255m<[0m[38;2;249;38;114mbody[0m[38;2;255;255;255m>[0m
+[38;2;124;120;101m[0m
+
+[38;2;248;248;242m<%[0m
+[38;2;249;38;114mFor[0m[38;2;248;248;242m [0m[38;2;255;255;255mi[0m[38;2;248;248;242m [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;249;38;114mTo[0m[38;2;248;248;242m [0m[38;2;190;132;255m5[0m
+[3;38;2;166;226;46mResponse[0m[38;2;248;248;242m.[0m[38;2;102;217;239mWrite[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mThe number is [0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;249;38;114m&[0m[38;2;248;248;242m [0m[38;2;255;255;255mi[0m[38;2;248;248;242m [0m[38;2;249;38;114m&[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m
[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
+[38;2;249;38;114mNext[0m
+[38;2;248;248;242m%>[0m
+
+[38;2;248;248;242m<%[0m
+[3;38;2;166;226;46mResponse[0m[38;2;248;248;242m.[0m[38;2;102;217;239mWrite[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mHello World![0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
+[38;2;248;248;242m%>[0m
+
+[38;2;248;248;242m<%[0m
+[38;2;249;38;114mDim[0m[38;2;248;248;242m [0m[38;2;255;255;255mx[0m[38;2;248;248;242m([0m[38;2;190;132;255m2[0m[38;2;248;248;242m,[0m[38;2;190;132;255m2[0m[38;2;248;248;242m)[0m
+[38;2;255;255;255mx[0m[38;2;248;248;242m([0m[38;2;190;132;255m0[0m[38;2;248;248;242m,[0m[38;2;190;132;255m0[0m[38;2;248;248;242m)[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mVolvo[0m[38;2;230;219;116m"[0m
+[38;2;255;255;255mx[0m[38;2;248;248;242m([0m[38;2;190;132;255m0[0m[38;2;248;248;242m,[0m[38;2;190;132;255m1[0m[38;2;248;248;242m)[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mBMW[0m[38;2;230;219;116m"[0m
+[38;2;255;255;255mx[0m[38;2;248;248;242m([0m[38;2;190;132;255m0[0m[38;2;248;248;242m,[0m[38;2;190;132;255m2[0m[38;2;248;248;242m)[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mFord[0m[38;2;230;219;116m"[0m
+[38;2;255;255;255mx[0m[38;2;248;248;242m([0m[38;2;190;132;255m1[0m[38;2;248;248;242m,[0m[38;2;190;132;255m0[0m[38;2;248;248;242m)[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mApple[0m[38;2;230;219;116m"[0m
+[38;2;255;255;255mx[0m[38;2;248;248;242m([0m[38;2;190;132;255m1[0m[38;2;248;248;242m,[0m[38;2;190;132;255m1[0m[38;2;248;248;242m)[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mOrange[0m[38;2;230;219;116m"[0m
+[38;2;255;255;255mx[0m[38;2;248;248;242m([0m[38;2;190;132;255m1[0m[38;2;248;248;242m,[0m[38;2;190;132;255m2[0m[38;2;248;248;242m)[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mBanana[0m[38;2;230;219;116m"[0m
+[38;2;255;255;255mx[0m[38;2;248;248;242m([0m[38;2;190;132;255m2[0m[38;2;248;248;242m,[0m[38;2;190;132;255m0[0m[38;2;248;248;242m)[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mCoke[0m[38;2;230;219;116m"[0m
+[38;2;255;255;255mx[0m[38;2;248;248;242m([0m[38;2;190;132;255m2[0m[38;2;248;248;242m,[0m[38;2;190;132;255m1[0m[38;2;248;248;242m)[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mPepsi[0m[38;2;230;219;116m"[0m
+[38;2;255;255;255mx[0m[38;2;248;248;242m([0m[38;2;190;132;255m2[0m[38;2;248;248;242m,[0m[38;2;190;132;255m2[0m[38;2;248;248;242m)[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mSprite[0m[38;2;230;219;116m"[0m
+[38;2;249;38;114mfor[0m[38;2;248;248;242m [0m[38;2;255;255;255mi[0m[38;2;249;38;114m=[0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;249;38;114mto[0m[38;2;248;248;242m [0m[38;2;190;132;255m2[0m
+[3;38;2;166;226;46mresponse[0m[38;2;248;248;242m.[0m[38;2;102;217;239mwrite[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116m
[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
+[38;2;249;38;114mfor[0m[38;2;248;248;242m [0m[38;2;255;255;255mj[0m[38;2;249;38;114m=[0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;249;38;114mto[0m[38;2;248;248;242m [0m[38;2;190;132;255m2[0m
+[3;38;2;166;226;46mresponse[0m[38;2;248;248;242m.[0m[38;2;102;217;239mwrite[0m[38;2;248;248;242m([0m[38;2;255;255;255mx[0m[38;2;248;248;242m([0m[38;2;255;255;255mi[0m[38;2;248;248;242m,[0m[38;2;255;255;255mj[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m&[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m
[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
+[38;2;249;38;114mnext[0m
+[3;38;2;166;226;46mresponse[0m[38;2;248;248;242m.[0m[38;2;102;217;239mwrite[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116m
[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
+[38;2;249;38;114mnext[0m
+[38;2;248;248;242m%>[0m
+
+[38;2;255;255;255m[0m[38;2;249;38;114mbody[0m[38;2;255;255;255m>[0m
+[38;2;255;255;255m[0m[38;2;249;38;114mhtml[0m[38;2;255;255;255m>[0m
diff --git a/tests/syntax-tests/highlighted/AppleScript/test.applescript b/tests/syntax-tests/highlighted/AppleScript/test.applescript
new file mode 100644
index 0000000000..f3692a841a
--- /dev/null
+++ b/tests/syntax-tests/highlighted/AppleScript/test.applescript
@@ -0,0 +1,25 @@
+[38;2;117;113;94m--[0m[38;2;117;113;94m This is a comment[0m
+
+[38;2;249;38;114mproperty[0m[38;2;248;248;242m [0m[38;2;255;255;255mdefaultClientName[0m[38;2;248;248;242m [0m[38;2;248;248;242m:[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mMary Smith[0m[38;2;230;219;116m"[0m
+
+[38;2;249;38;114mon[0m[38;2;248;248;242m [0m[38;2;166;226;46mgreetClient[0m[38;2;248;248;242m([0m[3;38;2;253;151;31mnameOfClient[0m[38;2;248;248;242m)[0m
+[38;2;248;248;242m [0m[38;2;102;217;239mdisplay dialog[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mHello [0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;249;38;114m&[0m[38;2;248;248;242m nameOfClient [0m[38;2;249;38;114m&[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m![0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
+[38;2;249;38;114mend[0m[38;2;248;248;242m greetClient[0m
+
+
+[38;2;249;38;114mscript[0m[38;2;248;248;242m [0m[38;2;166;226;46mtestGreet[0m
+[38;2;248;248;242m greetClient[0m[38;2;248;248;242m([0m[38;2;248;248;242mdefaultClientName[0m[38;2;248;248;242m)[0m
+[38;2;249;38;114mend script[0m
+
+[38;2;102;217;239mrun[0m[38;2;248;248;242m testGreet[0m
+[38;2;248;248;242mgreetClient[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mJoe Jones[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
+
+[38;2;249;38;114mset[0m[38;2;248;248;242m [0m[38;2;255;255;255mmyList[0m[38;2;248;248;242m [0m[38;2;249;38;114mto[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;190;132;255m1[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mwhat[0m[38;2;230;219;116m"[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255m3[0m[38;2;248;248;242m}[0m
+[38;2;249;38;114mset[0m[38;2;248;248;242m [0m[38;2;249;38;114mbeginning[0m[38;2;248;248;242m [0m[38;2;249;38;114mof[0m[38;2;248;248;242m myList [0m[38;2;249;38;114mto[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m
+[38;2;249;38;114mset[0m[38;2;248;248;242m [0m[38;2;249;38;114mend[0m[38;2;248;248;242m [0m[38;2;249;38;114mof[0m[38;2;248;248;242m myList [0m[38;2;249;38;114mto[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mfour[0m[38;2;230;219;116m"[0m
+
+[38;2;248;248;242mmyList[0m
+
+[38;2;249;38;114mtell[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mapplication[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mTextEdit[0m[38;2;230;219;116m"[0m
+[38;2;248;248;242m [0m[3;38;2;166;226;46mparagraph[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;249;38;114mof[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mdocument[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m
+[38;2;249;38;114mend tell[0m
diff --git a/tests/syntax-tests/highlighted/Fish/test.fish b/tests/syntax-tests/highlighted/Fish/test.fish
new file mode 100644
index 0000000000..3e7d8b8688
--- /dev/null
+++ b/tests/syntax-tests/highlighted/Fish/test.fish
@@ -0,0 +1,77 @@
+[38;2;255;255;255mset[0m[38;2;255;255;255m [0m[38;2;255;255;255mfish_greeting[0m[38;2;255;255;255m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m"[0m
+
+[38;2;249;38;114mbegin[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mset[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m--[0m[3;38;2;253;151;31mlocal[0m[38;2;255;255;255m [0m[38;2;255;255;255mAUTOJUMP_PATH[0m[38;2;255;255;255m [0m[38;2;255;255;255m$[0m[38;2;255;255;255mXDG_CONFIG_HOME[0m[38;2;255;255;255m/fish/functions/autojump.fish[0m
+[38;2;255;255;255m [0m[38;2;249;38;114mif[0m[38;2;255;255;255m [0m[38;2;255;255;255mtest[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;255;255;255m$[0m[38;2;255;255;255mAUTOJUMP_PATH[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msource[0m[38;2;255;255;255m [0m[38;2;255;255;255m$[0m[38;2;255;255;255mAUTOJUMP_PATH[0m
+[38;2;255;255;255m [0m[38;2;249;38;114mend[0m
+[38;2;249;38;114mend[0m
+
+[38;2;255;255;255mfish_vi_key_bindings[0m
+
+
+[38;2;249;38;114mfunction[0m[38;2;255;255;255m [0m[38;2;166;226;46mfish_prompt[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mset_color[0m[38;2;255;255;255m [0m[38;2;255;255;255mbrblack[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mn[0m[38;2;255;255;255m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m[[0m[38;2;230;219;116m"[0m[38;2;255;255;255m([0m[38;2;255;255;255mdate[0m[38;2;255;255;255m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m+%H:%M[0m[38;2;230;219;116m"[0m[38;2;255;255;255m)[0m[38;2;230;219;116m"[0m[38;2;230;219;116m] [0m[38;2;230;219;116m"[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mset_color[0m[38;2;255;255;255m [0m[38;2;255;255;255mblue[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mn[0m[38;2;255;255;255m [0m[38;2;255;255;255m([0m[38;2;255;255;255mhostname[0m[38;2;255;255;255m)[0m
+[38;2;255;255;255m [0m[38;2;249;38;114mif[0m[38;2;255;255;255m [0m[38;2;102;217;239m[[0m[38;2;255;255;255m [0m[38;2;255;255;255m$[0m[38;2;255;255;255mPWD[0m[38;2;255;255;255m [0m[38;2;255;255;255m!=[0m[38;2;255;255;255m [0m[38;2;255;255;255m$[0m[38;2;255;255;255mHOME[0m[38;2;255;255;255m [0m[38;2;102;217;239m][0m
+[38;2;255;255;255m [0m[38;2;255;255;255mset_color[0m[38;2;255;255;255m [0m[38;2;255;255;255mbrblack[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mn[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116m:[0m[38;2;230;219;116m'[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mset_color[0m[38;2;255;255;255m [0m[38;2;255;255;255myellow[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mn[0m[38;2;255;255;255m [0m[38;2;255;255;255m([0m[38;2;255;255;255mbasename[0m[38;2;255;255;255m [0m[38;2;255;255;255m$[0m[38;2;255;255;255mPWD[0m[38;2;255;255;255m)[0m
+[38;2;255;255;255m [0m[38;2;249;38;114mend[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mset_color[0m[38;2;255;255;255m [0m[38;2;255;255;255mgreen[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mprintf[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116m%s [0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;255;255;255m([0m[38;2;255;255;255m__fish_git_prompt[0m[38;2;255;255;255m)[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mset_color[0m[38;2;255;255;255m [0m[38;2;255;255;255mred[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mn[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116m| [0m[38;2;230;219;116m'[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mset_color[0m[38;2;255;255;255m [0m[38;2;255;255;255mnormal[0m
+[38;2;249;38;114mend[0m
+
+[38;2;249;38;114mfunction[0m[38;2;255;255;255m [0m[38;2;166;226;46mfish_greeting[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;255;255;255m([0m[38;2;255;255;255muname[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mro[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;255;255;255mawk[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116m{print " [0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[1mOS: [0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0;32m"$0"[0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0m"}[0m[38;2;230;219;116m'[0m[38;2;255;255;255m)[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;255;255;255m([0m[38;2;255;255;255muptime[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mp[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;255;255;255msed[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/^up //[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;255;255;255mawk[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116m{print " [0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[1mUptime: [0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0;32m"$0"[0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0m"}[0m[38;2;230;219;116m'[0m[38;2;255;255;255m)[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;255;255;255m([0m[38;2;255;255;255muname[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mn[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;255;255;255mawk[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116m{print " [0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[1mHostname: [0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0;32m"$0"[0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0m"}[0m[38;2;230;219;116m'[0m[38;2;255;255;255m)[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m [0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[1mDisk usage:[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0m[0m[38;2;230;219;116m"[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mne[0m[38;2;255;255;255m [0m[38;2;255;255;255m([0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mdf[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31ml[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mh[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;255;255;255mgrep[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mE[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116mdev/(xvda|sd|mapper)[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mawk[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116m{printf "[0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116mt%s[0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116mt%4s / %4s %s[0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116mn\n", $6, $3, $2, $5}[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msed[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/^\(.*\([8][5-9]\|[9][0-9]\)%.*\)$/[0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0;31m\1[0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0m/[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/^\(.*\([7][5-9]\|[8][0-4]\)%.*\)$/[0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0;33m\1[0m[38;2;190;132;255m\\[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0m/[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mpaste[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31msd[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116m'[0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255m)[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m
+
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m [0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[1mNetwork:[0m[38;2;190;132;255m\\[0m[38;2;230;219;116me[0m[0m[38;2;230;219;116m"[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m
+[38;2;255;255;255m [0m[38;2;117;113;94m#[0m[38;2;117;113;94m http://tdt.rocks/linux_network_interface_naming.html[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mne[0m[38;2;255;255;255m [0m[38;2;255;255;255m([0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mip[0m[38;2;255;255;255m [0m[38;2;255;255;255maddr[0m[38;2;255;255;255m [0m[38;2;255;255;255mshow[0m[38;2;255;255;255m [0m[38;2;255;255;255mup[0m[38;2;255;255;255m [0m[38;2;255;255;255mscope[0m[38;2;255;255;255m [0m[38;2;255;255;255mglobal[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mgrep[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mE[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116m: <|inet[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msed[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/^[[:digit:]]\+: //[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/: <.*//[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/.*inet[[:digit:]]* //[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31me[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/\/.*//[0m[38;2;230;219;116m'[0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mawk[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116mBEGIN {i=""} /\.|:/ {print i" "$0"[0m[38;2;190;132;255m\\[0m[38;2;230;219;116m\n"; next} // {i = $0}[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msort[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mcolumn[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mt[0m[38;2;255;255;255m [0m[3;38;2;253;151;31m-[0m[3;38;2;253;151;31mR1[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;117;113;94m#[0m[38;2;117;113;94m public addresses are underlined for visibility \[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msed[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/ \([^ ]\+\)$/ [0m[38;2;190;132;255m\\[0m[38;2;230;219;116m\e[4m\1/[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;117;113;94m#[0m[38;2;117;113;94m private addresses are not \[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msed[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/m\(\(10\.\|172\.\(1[6-9]\|2[0-9]\|3[01]\)\|192\.168\.\).*\)/m[0m[38;2;190;132;255m\\[0m[38;2;230;219;116m\e[24m\1/[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;117;113;94m#[0m[38;2;117;113;94m unknown interfaces are cyan \[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msed[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/^\( *[^ ]\+\)/[0m[38;2;190;132;255m\\[0m[38;2;230;219;116m\e[36m\1/[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;117;113;94m#[0m[38;2;117;113;94m ethernet interfaces are normal \[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msed[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/\(\(en\|em\|eth\)[^ ]* .*\)/[0m[38;2;190;132;255m\\[0m[38;2;230;219;116m\e[39m\1/[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;117;113;94m#[0m[38;2;117;113;94m wireless interfaces are purple \[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msed[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/\(wl[^ ]* .*\)/[0m[38;2;190;132;255m\\[0m[38;2;230;219;116m\e[35m\1/[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;117;113;94m#[0m[38;2;117;113;94m wwan interfaces are yellow \[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msed[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/\(ww[^ ]* .*\).*/[0m[38;2;190;132;255m\\[0m[38;2;230;219;116m\e[33m\1/[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msed[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/$/[0m[38;2;190;132;255m\\[0m[38;2;230;219;116m\e[0m/[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;249;38;114m|[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255msed[0m[38;2;255;255;255m [0m[38;2;230;219;116m'[0m[38;2;230;219;116ms/^/\t/[0m[38;2;230;219;116m'[0m[38;2;255;255;255m [0m[38;2;190;132;255m\[0m
+[38;2;255;255;255m [0m[38;2;255;255;255m)[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mecho[0m
+[38;2;255;255;255m [0m[38;2;255;255;255mset_color[0m[38;2;255;255;255m [0m[38;2;255;255;255mnormal[0m
+[38;2;249;38;114mend[0m
diff --git a/tests/syntax-tests/highlighted/Objective-C++/test.mm b/tests/syntax-tests/highlighted/Objective-C++/test.mm
new file mode 100644
index 0000000000..51989020e8
--- /dev/null
+++ b/tests/syntax-tests/highlighted/Objective-C++/test.mm
@@ -0,0 +1,68 @@
+[38;2;249;38;114m#import[0m[38;2;190;132;255m [0m[38;2;230;219;116m<[0m[38;2;230;219;116mFoundation/Foundation.h[0m[38;2;230;219;116m>[0m
+
+[3;38;2;102;217;239mclass[0m[38;2;248;248;242m [0m[4;38;2;102;217;239mHello[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mprivate[0m[38;2;248;248;242m:[0m
+[38;2;248;248;242m [0m[3;38;2;102;217;239mid [0m[38;2;248;248;242mgreeting_text[0m[38;2;248;248;242m;[0m
+
+[38;2;248;248;242m [0m[38;2;249;38;114mpublic[0m[38;2;248;248;242m:[0m
+[38;2;248;248;242m [0m[38;2;166;226;46mHello[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m greeting_text [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;230;219;116m@"[0m[38;2;230;219;116mHello, world![0m[38;2;230;219;116m"[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
+
+[38;2;248;248;242m [0m[38;2;166;226;46mHello[0m[38;2;248;248;242m([0m[38;2;249;38;114mconst[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mchar[0m[38;2;249;38;114m*[0m[38;2;248;248;242m [0m[3;38;2;253;151;31minitial_greeting_text[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m greeting_text [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242m[[0m[3;38;2;166;226;46mNSString[0m[38;2;248;248;242m [0m[38;2;102;217;239malloc[0m[38;2;248;248;242m][0m[38;2;248;248;242m initWithUTF8String[0m[38;2;249;38;114m:[0m[38;2;248;248;242minitial_greeting_text[0m[38;2;248;248;242m][0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
+
+[38;2;248;248;242m [0m[3;38;2;102;217;239mvoid[0m[38;2;248;248;242m [0m[38;2;166;226;46msay_hello[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;102;217;239mprintf[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;190;132;255m%s[0m[38;2;190;132;255m\n[0m[38;2;230;219;116m"[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242mgreeting_text [0m[38;2;102;217;239mUTF8String[0m[38;2;248;248;242m][0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
+[38;2;248;248;242m}[0m[38;2;248;248;242m;[0m
+
+[3;38;2;102;217;239m@[0m[3;38;2;102;217;239minterface[0m[38;2;248;248;242m [0m[38;2;166;226;46mGreeting[0m[38;2;248;248;242m [0m[38;2;248;248;242m:[0m[38;2;248;248;242m [0m[3;4;38;2;166;226;46mNSObject[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;249;38;114m@[0m[38;2;249;38;114mprivate[0m
+[38;2;248;248;242m Hello [0m[38;2;249;38;114m*[0m[38;2;248;248;242mhello[0m[38;2;248;248;242m;[0m
+
+[38;2;248;248;242m}[0m
+[38;2;248;248;242m- [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mid[0m[38;2;248;248;242m)[0m[38;2;166;226;46minit[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m- [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mvoid[0m[38;2;248;248;242m)[0m[38;2;166;226;46mdealloc[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m- [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mvoid[0m[38;2;248;248;242m)[0m[38;2;166;226;46msayGreeting[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m- [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mvoid[0m[38;2;248;248;242m)[0m[38;2;166;226;46msayGreeting[0m[38;2;166;226;46m:[0m[38;2;248;248;242m([0m[38;2;248;248;242mHello[0m[38;2;249;38;114m*[0m[38;2;248;248;242m)[0m[3;38;2;253;151;31mgreeting[0m[38;2;248;248;242m;[0m
+[3;38;2;102;217;239m@[0m[3;38;2;102;217;239mend[0m
+
+[3;38;2;102;217;239m@[0m[3;38;2;102;217;239mimplementation[0m[38;2;248;248;242m [0m[38;2;166;226;46mGreeting[0m
+[38;2;248;248;242m- [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mid[0m[38;2;248;248;242m)[0m[38;2;166;226;46minit[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;255;255;255mself[0m[38;2;248;248;242m [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;255;255;255msuper[0m[38;2;248;248;242m [0m[38;2;102;217;239minit[0m[38;2;248;248;242m][0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;255;255;255mself[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m hello [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mnew[0m[38;2;248;248;242m [0m[38;2;248;248;242mHello[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m [0m[38;2;255;255;255mself[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m}[0m
+
+[38;2;248;248;242m- [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mvoid[0m[38;2;248;248;242m)[0m[38;2;166;226;46mdealloc[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mdelete[0m[38;2;248;248;242m hello[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;255;255;255msuper[0m[38;2;248;248;242m [0m[38;2;102;217;239mdealloc[0m[38;2;248;248;242m][0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m}[0m
+
+[38;2;248;248;242m- [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mvoid[0m[38;2;248;248;242m)[0m[38;2;166;226;46msayGreeting[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m hello[0m[38;2;248;248;242m->[0m[38;2;248;248;242msay_hello[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m}[0m
+
+[38;2;248;248;242m- [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mvoid[0m[38;2;248;248;242m)[0m[38;2;166;226;46msayGreeting[0m[38;2;166;226;46m:[0m[38;2;248;248;242m([0m[38;2;248;248;242mHello[0m[38;2;249;38;114m*[0m[38;2;248;248;242m)[0m[3;38;2;253;151;31mgreeting[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m greeting[0m[38;2;248;248;242m->[0m[38;2;248;248;242msay_hello[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m}[0m
+[3;38;2;102;217;239m@[0m[3;38;2;102;217;239mend[0m
+
+[3;38;2;102;217;239mint[0m[38;2;248;248;242m [0m[38;2;166;226;46mmain[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+
+[38;2;248;248;242m [0m[3;38;2;166;226;46mNSAutoreleasePool[0m[38;2;248;248;242m [0m[38;2;249;38;114m*[0m[38;2;248;248;242mpool [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242m[[0m[3;38;2;166;226;46mNSAutoreleasePool[0m[38;2;248;248;242m [0m[38;2;102;217;239malloc[0m[38;2;248;248;242m][0m[38;2;248;248;242m init[0m[38;2;248;248;242m][0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m Greeting [0m[38;2;249;38;114m*[0m[38;2;248;248;242mgreeting [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242m[[0m[38;2;248;248;242mGreeting [0m[38;2;102;217;239malloc[0m[38;2;248;248;242m][0m[38;2;248;248;242m init[0m[38;2;248;248;242m][0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242mgreeting [0m[38;2;102;217;239msayGreeting[0m[38;2;248;248;242m][0m[38;2;248;248;242m;[0m
+
+[38;2;248;248;242m Hello [0m[38;2;249;38;114m*[0m[38;2;248;248;242mhello [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mnew[0m[38;2;248;248;242m [0m[38;2;248;248;242mHello[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mBonjour, monde![0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242mgreeting[0m[38;2;248;248;242m [0m[38;2;102;217;239msayGreeting[0m[38;2;102;217;239m:[0m[38;2;248;248;242mhello[0m[38;2;248;248;242m][0m[38;2;248;248;242m;[0m
+
+[38;2;248;248;242m [0m[38;2;249;38;114mdelete[0m[38;2;248;248;242m hello[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242mgreeting [0m[38;2;102;217;239mrelease[0m[38;2;248;248;242m][0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242mpool [0m[38;2;102;217;239mrelease[0m[38;2;248;248;242m][0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m}[0m
diff --git a/tests/syntax-tests/highlighted/Objective-C/test.m b/tests/syntax-tests/highlighted/Objective-C/test.m
new file mode 100644
index 0000000000..287c74002f
--- /dev/null
+++ b/tests/syntax-tests/highlighted/Objective-C/test.m
@@ -0,0 +1,32 @@
+[38;2;249;38;114m#import[0m[38;2;190;132;255m [0m[38;2;230;219;116m<[0m[38;2;230;219;116mmyClass.h[0m[38;2;230;219;116m>[0m
+[38;2;248;248;242m@import Foundation[0m
+[38;2;117;113;94m//[0m[38;2;117;113;94m Single line comments[0m
+
+[38;2;117;113;94m/*[0m
+[38;2;117;113;94m [0m[38;2;117;113;94m*[0m[38;2;117;113;94m Multi line comment[0m
+[38;2;117;113;94m [0m[38;2;117;113;94m*/[0m
+
+[3;38;2;102;217;239mint[0m[38;2;248;248;242m [0m[38;2;166;226;46mmain[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mint[0m[38;2;248;248;242m [0m[3;38;2;253;151;31margc[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;249;38;114mconst[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mchar[0m[38;2;248;248;242m [0m[38;2;249;38;114m*[0m[38;2;248;248;242m [0m[3;38;2;253;151;31margv[0m[38;2;248;248;242m[[0m[38;2;248;248;242m][0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[3;38;2;166;226;46mNSAutoreleasePool[0m[38;2;248;248;242m [0m[38;2;249;38;114m*[0m[38;2;248;248;242m pool [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242m[[0m[3;38;2;166;226;46mNSAutoreleasePool[0m[38;2;248;248;242m [0m[38;2;102;217;239malloc[0m[38;2;248;248;242m][0m[38;2;248;248;242m init[0m[38;2;248;248;242m][0m[38;2;248;248;242m;[0m
+
+[38;2;248;248;242m [0m[38;2;102;217;239mNSLog[0m[38;2;248;248;242m([0m[38;2;230;219;116m@"[0m[38;2;230;219;116mStorage size for int : [0m[38;2;190;132;255m%d[0m[38;2;230;219;116m [0m[38;2;190;132;255m\n[0m[38;2;230;219;116m"[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;249;38;114msizeof[0m[38;2;248;248;242m([0m[3;38;2;102;217;239mint[0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;102;217;239mNSLog[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;230;219;116m@"[0m[38;2;230;219;116mhello world[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;190;132;255mNO[0m[38;2;248;248;242m)[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;102;217;239mNSLog[0m[38;2;248;248;242m([0m[38;2;230;219;116m@"[0m[38;2;230;219;116mI am never run[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;190;132;255m0[0m[38;2;248;248;242m)[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;102;217;239mNSLog[0m[38;2;248;248;242m([0m[38;2;230;219;116m@"[0m[38;2;230;219;116mI am also never run[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m [0m[38;2;249;38;114melse[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;102;217;239mNSLog[0m[38;2;248;248;242m([0m[38;2;230;219;116m@"[0m[38;2;230;219;116mI print[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
+
+[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242mpool [0m[38;2;102;217;239mdrain[0m[38;2;248;248;242m][0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m}[0m
+
+[3;38;2;102;217;239m@[0m[3;38;2;102;217;239mimplementation[0m[38;2;248;248;242m [0m[38;2;166;226;46mMyClass[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[3;38;2;102;217;239mlong[0m[38;2;248;248;242m distance[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[3;38;2;166;226;46mNSNumber[0m[38;2;248;248;242m height[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m}[0m
diff --git a/tests/syntax-tests/highlighted/Regular Expression/test.re b/tests/syntax-tests/highlighted/Regular Expression/test.re
new file mode 100644
index 0000000000..912b568b79
--- /dev/null
+++ b/tests/syntax-tests/highlighted/Regular Expression/test.re
@@ -0,0 +1 @@
+[38;2;249;38;114m^[0m[38;2;190;132;255m\[[0m[38;2;248;248;242mS[0m[38;2;248;248;242mT[0m[38;2;248;248;242mA[0m[38;2;248;248;242mR[0m[38;2;248;248;242mT[0m[38;2;190;132;255m\][0m[38;2;249;38;114m\d[0m[38;2;249;38;114m\D[0m[38;2;249;38;114m\h[0m[38;2;249;38;114m\H[0m[38;2;249;38;114m\s[0m[38;2;249;38;114m\S[0m[38;2;249;38;114m[[0m[38;2;190;132;255ma[0m[38;2;190;132;255m-z[0m[38;2;249;38;114m][0m[38;2;249;38;114m\v[0m[38;2;249;38;114m\V[0m[38;2;249;38;114m\w[0m[38;2;249;38;114m\W[0m[38;2;249;38;114m.[0m[38;2;249;38;114m([0m[38;2;249;38;114m[[0m[38;2;190;132;255ma[0m[38;2;190;132;255m-z[0m[38;2;249;38;114m][0m[38;2;249;38;114m)[0m[38;2;249;38;114m{3,5}[0m[38;2;190;132;255m\[[0m[38;2;248;248;242mE[0m[38;2;248;248;242mN[0m[38;2;248;248;242mD[0m[38;2;190;132;255m\][0m[38;2;249;38;114m$[0m
diff --git a/tests/syntax-tests/highlighted/Ruby On Rails/test.rb b/tests/syntax-tests/highlighted/Ruby On Rails/test.rb
new file mode 100644
index 0000000000..9b2a9b661a
--- /dev/null
+++ b/tests/syntax-tests/highlighted/Ruby On Rails/test.rb
@@ -0,0 +1,22 @@
+[3;38;2;249;38;114mclass[0m[38;2;166;226;46m [0m[4;38;2;102;217;239mContactsController[0m[38;2;166;226;46m [0m[38;2;166;226;46m<[0m[38;2;166;226;46m [0m[3;4;38;2;166;226;46mApplicationController[0m
+[38;2;248;248;242m [0m[3;38;2;249;38;114mdef[0m[38;2;248;248;242m [0m[38;2;246;170;17mnew[0m
+[38;2;248;248;242m [0m[38;2;246;170;17m@[0m[38;2;255;255;255mcontact[0m[38;2;248;248;242m [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;102;217;239mContact[0m[38;2;248;248;242m.[0m[38;2;166;226;46mnew[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
+
+[38;2;248;248;242m [0m[3;38;2;249;38;114mdef[0m[38;2;248;248;242m [0m[38;2;246;170;17mcreate[0m
+[38;2;248;248;242m [0m[38;2;246;170;17m@[0m[38;2;255;255;255mcontact[0m[38;2;248;248;242m [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;102;217;239mContact[0m[38;2;248;248;242m.[0m[38;2;166;226;46mnew[0m[38;2;255;255;255m([0m[38;2;248;248;242msecure_params[0m[38;2;255;255;255m)[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;246;170;17m@[0m[38;2;255;255;255mcontact[0m[38;2;248;248;242m.[0m[38;2;248;248;242mvalid?[0m
+[38;2;248;248;242m [0m[38;2;102;217;239mUserMailer[0m[38;2;248;248;242m.[0m[38;2;248;248;242mcontact_email[0m[38;2;255;255;255m([0m[38;2;246;170;17m@[0m[38;2;255;255;255mcontact[0m[38;2;255;255;255m)[0m[38;2;248;248;242m.[0m[38;2;248;248;242mdeliver_now[0m
+[38;2;248;248;242m flash[0m[38;2;248;248;242m[[0m[38;2;246;240;128m:[0m[38;2;246;240;128mnotice[0m[38;2;248;248;242m][0m[38;2;248;248;242m [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114m"[0m[38;2;230;219;116mMessage sent from [0m[38;2;248;248;242m#{[0m[38;2;246;170;17m@[0m[38;2;255;255;255mcontact[0m[38;2;248;248;242m.[0m[38;2;102;217;239mname[0m[38;2;248;248;242m}[0m[38;2;230;219;116m.[0m[38;2;249;38;114m"[0m
+[38;2;248;248;242m redirect_to root_path[0m
+[38;2;248;248;242m [0m[38;2;249;38;114melse[0m
+[38;2;248;248;242m render [0m[38;2;246;240;128m:[0m[38;2;246;240;128mnew[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
+
+[38;2;248;248;242m [0m[38;2;166;226;46mprivate[0m
+
+[38;2;248;248;242m [0m[3;38;2;249;38;114mdef[0m[38;2;248;248;242m [0m[38;2;246;170;17msecure_params[0m
+[38;2;248;248;242m params[0m[38;2;248;248;242m.[0m[38;2;249;38;114mrequire[0m[38;2;255;255;255m([0m[38;2;246;240;128m:[0m[38;2;246;240;128mcontact[0m[38;2;255;255;255m)[0m[38;2;248;248;242m.[0m[38;2;248;248;242mpermit[0m[38;2;255;255;255m([0m[38;2;246;240;128m:[0m[38;2;246;240;128mname[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;246;240;128m:[0m[38;2;246;240;128memail[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;246;240;128m:[0m[38;2;246;240;128mcontent[0m[38;2;255;255;255m)[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
+[38;2;249;38;114mend[0m
diff --git a/tests/syntax-tests/highlighted/Tcl/test.tcl b/tests/syntax-tests/highlighted/Tcl/test.tcl
new file mode 100644
index 0000000000..8c87e2c7d5
--- /dev/null
+++ b/tests/syntax-tests/highlighted/Tcl/test.tcl
@@ -0,0 +1,22 @@
+[38;2;249;38;114mset[0m[38;2;248;248;242m part1 hello[0m
+[38;2;249;38;114mset[0m[38;2;248;248;242m part2 how[0m[38;2;248;248;242m;[0m[38;2;248;248;242m [0m[38;2;249;38;114mset[0m[38;2;248;248;242m part3 are[0m
+[38;2;249;38;114mset[0m[38;2;248;248;242m part4 you[0m
+
+[38;2;249;38;114mset[0m[38;2;248;248;242m part2[0m[38;2;248;248;242m;[0m
+
+[38;2;249;38;114mset[0m[38;2;248;248;242m greeting [0m[38;2;255;255;255m$[0m[38;2;255;255;255mpart1[0m[38;2;255;255;255m$[0m[38;2;255;255;255mpart2[0m[38;2;255;255;255m$[0m[38;2;255;255;255mpart3[0m[38;2;255;255;255m$[0m[38;2;255;255;255mpart4[0m
+
+[38;2;249;38;114mset[0m[38;2;248;248;242m somevar [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;248;248;242mThis[0m[38;2;248;248;242m is a literal $ sign, and this [0m[38;2;190;132;255m\}[0m[38;2;248;248;242m escaped[0m
+[38;2;248;248;242m [0m[38;2;248;248;242mbrace[0m[38;2;248;248;242m remains uninterpreted[0m
+[38;2;248;248;242m}[0m
+
+[38;2;249;38;114mset[0m[38;2;248;248;242m name Neo[0m
+[38;2;249;38;114mset[0m[38;2;248;248;242m greeting [0m[38;2;230;219;116m"[0m[38;2;230;219;116mHello, [0m[38;2;255;255;255m$[0m[38;2;255;255;255mname[0m[38;2;230;219;116m"[0m
+
+[38;2;249;38;114mvariable[0m[38;2;248;248;242m name NotNeo[0m
+
+[38;2;249;38;114mnamespace[0m[38;2;248;248;242m eval [0m[38;2;166;226;46mpeople[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mset[0m[38;2;248;248;242m name NeoAgain[0m
+[38;2;248;248;242m}[0m
+
diff --git a/tests/syntax-tests/highlighted/Textile/test.textile b/tests/syntax-tests/highlighted/Textile/test.textile
new file mode 100644
index 0000000000..f0b7a71dbe
--- /dev/null
+++ b/tests/syntax-tests/highlighted/Textile/test.textile
@@ -0,0 +1,40 @@
+[38;2;248;248;242m###. Single line comment[0m
+
+[38;2;248;248;242m###..[0m
+[38;2;248;248;242mMulti line comment.[0m
+
+[38;2;248;248;242mThis line is also part of comment.[0m
+
+[38;2;248;248;242mContinues till next block element[0m
+
+[38;2;249;38;114mp[0m[38;2;249;38;114m.[0m[38;2;248;248;242m This is not a comment, but I am a paragraph.[0m
+
+[38;2;124;120;101m[0m
+
+
+[38;2;249;38;114mh1[0m[38;2;249;38;114m.[0m[38;2;253;151;31m This is an [0m[38;2;255;255;255m<[0m[38;2;249;38;114mh1[0m[38;2;255;255;255m>[0m
+
+[38;2;249;38;114mh2[0m[38;2;249;38;114m.[0m[38;2;253;151;31m This is an [0m[38;2;255;255;255m<[0m[38;2;249;38;114mh2[0m[38;2;255;255;255m>[0m
+
+[38;2;249;38;114mh3[0m[38;2;249;38;114m.[0m[38;2;253;151;31m This is an [0m[38;2;255;255;255m<[0m[38;2;249;38;114mh3[0m[38;2;255;255;255m>[0m
+
+[38;2;249;38;114mh4[0m[38;2;249;38;114m.[0m[38;2;253;151;31m This is an [0m[38;2;255;255;255m<[0m[38;2;249;38;114mh4[0m[38;2;255;255;255m>[0m
+
+[38;2;249;38;114mh5[0m[38;2;249;38;114m.[0m[38;2;253;151;31m This is an [0m[38;2;255;255;255m<[0m[38;2;249;38;114mh5[0m[38;2;255;255;255m>[0m
+
+[38;2;249;38;114mh6[0m[38;2;249;38;114m.[0m[38;2;253;151;31m This is an [0m[38;2;255;255;255m<[0m[38;2;249;38;114mh6[0m[38;2;255;255;255m>[0m
+
+[38;2;248;248;242m--[0m
+
+[38;2;248;248;242m* [0m[38;2;248;248;242mItem[0m
+[38;2;248;248;242m** [0m[38;2;248;248;242mSub-Item[0m
+[38;2;248;248;242m* [0m[38;2;248;248;242mAnother item[0m
+[38;2;248;248;242m** [0m[38;2;248;248;242mAnother sub-item[0m
+[38;2;248;248;242m** [0m[38;2;248;248;242mYet another sub-item[0m
+[38;2;248;248;242m*** [0m[38;2;248;248;242mThree levels deep[0m
+
+[38;2;249;38;114mp[0m[38;2;166;226;46m{color:red}[0m[38;2;249;38;114m.[0m[38;2;248;248;242m This line will be red.[0m
+
+[3;38;2;228;46;112m%span%[0m[38;2;248;248;242m are enclosed in percent symbols.[0m
+
+[38;2;248;248;242mdiv. This is a new div element[0m
diff --git a/tests/syntax-tests/source/ASP/test.asp b/tests/syntax-tests/source/ASP/test.asp
new file mode 100644
index 0000000000..ebb01e82e8
--- /dev/null
+++ b/tests/syntax-tests/source/ASP/test.asp
@@ -0,0 +1,36 @@
+
+
+
+
+<%
+For i = 0 To 5
+Response.Write("The number is " & i & "
")
+Next
+%>
+
+<%
+Response.Write("Hello World!")
+%>
+
+<%
+Dim x(2,2)
+x(0,0)="Volvo"
+x(0,1)="BMW"
+x(0,2)="Ford"
+x(1,0)="Apple"
+x(1,1)="Orange"
+x(1,2)="Banana"
+x(2,0)="Coke"
+x(2,1)="Pepsi"
+x(2,2)="Sprite"
+for i=0 to 2
+response.write("")
+for j=0 to 2
+response.write(x(i,j) & "
")
+next
+response.write("
")
+next
+%>
+
+
+
diff --git a/tests/syntax-tests/source/AppleScript/test.applescript b/tests/syntax-tests/source/AppleScript/test.applescript
new file mode 100644
index 0000000000..e739a9ff7b
--- /dev/null
+++ b/tests/syntax-tests/source/AppleScript/test.applescript
@@ -0,0 +1,25 @@
+-- This is a comment
+
+property defaultClientName : "Mary Smith"
+
+on greetClient(nameOfClient)
+ display dialog ("Hello " & nameOfClient & "!")
+end greetClient
+
+
+script testGreet
+ greetClient(defaultClientName)
+end script
+
+run testGreet
+greetClient("Joe Jones")
+
+set myList to {1, "what", 3}
+set beginning of myList to 0
+set end of myList to "four"
+
+myList
+
+tell application "TextEdit"
+ paragraph 1 of document 1
+end tell
diff --git a/tests/syntax-tests/source/Fish/test.fish b/tests/syntax-tests/source/Fish/test.fish
new file mode 100644
index 0000000000..541b2e4f35
--- /dev/null
+++ b/tests/syntax-tests/source/Fish/test.fish
@@ -0,0 +1,77 @@
+set fish_greeting ""
+
+begin
+ set --local AUTOJUMP_PATH $XDG_CONFIG_HOME/fish/functions/autojump.fish
+ if test -e $AUTOJUMP_PATH
+ source $AUTOJUMP_PATH
+ end
+end
+
+fish_vi_key_bindings
+
+
+function fish_prompt
+ set_color brblack
+ echo -n "["(date "+%H:%M")"] "
+ set_color blue
+ echo -n (hostname)
+ if [ $PWD != $HOME ]
+ set_color brblack
+ echo -n ':'
+ set_color yellow
+ echo -n (basename $PWD)
+ end
+ set_color green
+ printf '%s ' (__fish_git_prompt)
+ set_color red
+ echo -n '| '
+ set_color normal
+end
+
+function fish_greeting
+ echo
+ echo -e (uname -ro | awk '{print " \\\\e[1mOS: \\\\e[0;32m"$0"\\\\e[0m"}')
+ echo -e (uptime -p | sed 's/^up //' | awk '{print " \\\\e[1mUptime: \\\\e[0;32m"$0"\\\\e[0m"}')
+ echo -e (uname -n | awk '{print " \\\\e[1mHostname: \\\\e[0;32m"$0"\\\\e[0m"}')
+ echo -e " \\e[1mDisk usage:\\e[0m"
+ echo
+ echo -ne (\
+ df -l -h | grep -E 'dev/(xvda|sd|mapper)' | \
+ awk '{printf "\\\\t%s\\\\t%4s / %4s %s\\\\n\n", $6, $3, $2, $5}' | \
+ sed -e 's/^\(.*\([8][5-9]\|[9][0-9]\)%.*\)$/\\\\e[0;31m\1\\\\e[0m/' -e 's/^\(.*\([7][5-9]\|[8][0-4]\)%.*\)$/\\\\e[0;33m\1\\\\e[0m/' | \
+ paste -sd ''\
+ )
+ echo
+
+ echo -e " \\e[1mNetwork:\\e[0m"
+ echo
+ # http://tdt.rocks/linux_network_interface_naming.html
+ echo -ne (\
+ ip addr show up scope global | \
+ grep -E ': <|inet' | \
+ sed \
+ -e 's/^[[:digit:]]\+: //' \
+ -e 's/: <.*//' \
+ -e 's/.*inet[[:digit:]]* //' \
+ -e 's/\/.*//'| \
+ awk 'BEGIN {i=""} /\.|:/ {print i" "$0"\\\n"; next} // {i = $0}' | \
+ sort | \
+ column -t -R1 | \
+ # public addresses are underlined for visibility \
+ sed 's/ \([^ ]\+\)$/ \\\e[4m\1/' | \
+ # private addresses are not \
+ sed 's/m\(\(10\.\|172\.\(1[6-9]\|2[0-9]\|3[01]\)\|192\.168\.\).*\)/m\\\e[24m\1/' | \
+ # unknown interfaces are cyan \
+ sed 's/^\( *[^ ]\+\)/\\\e[36m\1/' | \
+ # ethernet interfaces are normal \
+ sed 's/\(\(en\|em\|eth\)[^ ]* .*\)/\\\e[39m\1/' | \
+ # wireless interfaces are purple \
+ sed 's/\(wl[^ ]* .*\)/\\\e[35m\1/' | \
+ # wwan interfaces are yellow \
+ sed 's/\(ww[^ ]* .*\).*/\\\e[33m\1/' | \
+ sed 's/$/\\\e[0m/' | \
+ sed 's/^/\t/' \
+ )
+ echo
+ set_color normal
+end
diff --git a/tests/syntax-tests/source/Objective-C++/test.mm b/tests/syntax-tests/source/Objective-C++/test.mm
new file mode 100644
index 0000000000..6f8663fbe4
--- /dev/null
+++ b/tests/syntax-tests/source/Objective-C++/test.mm
@@ -0,0 +1,68 @@
+#import
+
+class Hello {
+ private:
+ id greeting_text;
+
+ public:
+ Hello() {
+ greeting_text = @"Hello, world!";
+ }
+
+ Hello(const char* initial_greeting_text) {
+ greeting_text = [[NSString alloc] initWithUTF8String:initial_greeting_text];
+ }
+
+ void say_hello() {
+ printf("%s\n", [greeting_text UTF8String]);
+ }
+};
+
+@interface Greeting : NSObject {
+ @private
+ Hello *hello;
+
+}
+- (id)init;
+- (void)dealloc;
+- (void)sayGreeting;
+- (void)sayGreeting:(Hello*)greeting;
+@end
+
+@implementation Greeting
+- (id)init {
+ self = [super init];
+ if (self) {
+ hello = new Hello();
+ }
+ return self;
+}
+
+- (void)dealloc {
+ delete hello;
+ [super dealloc];
+}
+
+- (void)sayGreeting {
+ hello->say_hello();
+}
+
+- (void)sayGreeting:(Hello*)greeting {
+ greeting->say_hello();
+}
+@end
+
+int main() {
+
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ Greeting *greeting = [[Greeting alloc] init];
+ [greeting sayGreeting];
+
+ Hello *hello = new Hello("Bonjour, monde!");
+ [greeting sayGreeting:hello];
+
+ delete hello;
+ [greeting release];
+ [pool release];
+ return 0;
+}
diff --git a/tests/syntax-tests/source/Objective-C/test.m b/tests/syntax-tests/source/Objective-C/test.m
new file mode 100644
index 0000000000..9ed16cba52
--- /dev/null
+++ b/tests/syntax-tests/source/Objective-C/test.m
@@ -0,0 +1,32 @@
+#import
+@import Foundation
+// Single line comments
+
+/*
+ * Multi line comment
+ */
+
+int main (int argc, const char * argv[]) {
+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+
+ NSLog(@"Storage size for int : %d \n", sizeof(int));
+ NSLog (@"hello world");
+ if (NO)
+ {
+ NSLog(@"I am never run");
+ } else if (0)
+ {
+ NSLog(@"I am also never run");
+ } else
+ {
+ NSLog(@"I print");
+ }
+
+ [pool drain];
+ return 0;
+}
+
+@implementation MyClass {
+ long distance;
+ NSNumber height;
+}
diff --git a/tests/syntax-tests/source/Regular Expression/test.re b/tests/syntax-tests/source/Regular Expression/test.re
new file mode 100644
index 0000000000..7e42456788
--- /dev/null
+++ b/tests/syntax-tests/source/Regular Expression/test.re
@@ -0,0 +1 @@
+^\[START\]\d\D\h\H\s\S[a-z]\v\V\w\W.([a-z]){3,5}\[END\]$
diff --git a/tests/syntax-tests/source/Ruby On Rails/test.rb b/tests/syntax-tests/source/Ruby On Rails/test.rb
new file mode 100644
index 0000000000..352f098cac
--- /dev/null
+++ b/tests/syntax-tests/source/Ruby On Rails/test.rb
@@ -0,0 +1,22 @@
+class ContactsController < ApplicationController
+ def new
+ @contact = Contact.new
+ end
+
+ def create
+ @contact = Contact.new(secure_params)
+ if @contact.valid?
+ UserMailer.contact_email(@contact).deliver_now
+ flash[:notice] = "Message sent from #{@contact.name}."
+ redirect_to root_path
+ else
+ render :new
+ end
+ end
+
+ private
+
+ def secure_params
+ params.require(:contact).permit(:name, :email, :content)
+ end
+end
diff --git a/tests/syntax-tests/source/Tcl/test.tcl b/tests/syntax-tests/source/Tcl/test.tcl
new file mode 100644
index 0000000000..79027b2ca6
--- /dev/null
+++ b/tests/syntax-tests/source/Tcl/test.tcl
@@ -0,0 +1,22 @@
+set part1 hello
+set part2 how; set part3 are
+set part4 you
+
+set part2;
+
+set greeting $part1$part2$part3$part4
+
+set somevar {
+ This is a literal $ sign, and this \} escaped
+ brace remains uninterpreted
+}
+
+set name Neo
+set greeting "Hello, $name"
+
+variable name NotNeo
+
+namespace eval people {
+ set name NeoAgain
+}
+
diff --git a/tests/syntax-tests/source/Textile/test.textile b/tests/syntax-tests/source/Textile/test.textile
new file mode 100644
index 0000000000..dd8e2ef981
--- /dev/null
+++ b/tests/syntax-tests/source/Textile/test.textile
@@ -0,0 +1,40 @@
+###. Single line comment
+
+###..
+Multi line comment.
+
+This line is also part of comment.
+
+Continues till next block element
+
+p. This is not a comment, but I am a paragraph.
+
+
+
+
+h1. This is an
+
+h2. This is an
+
+h3. This is an
+
+h4. This is an
+
+h5. This is an
+
+h6. This is an
+
+--
+
+* Item
+** Sub-Item
+* Another item
+** Another sub-item
+** Yet another sub-item
+*** Three levels deep
+
+p{color:red}. This line will be red.
+
+%span% are enclosed in percent symbols.
+
+div. This is a new div element