The .punctuation spans should probably be of the default text color (black/white depending on the theme)
The languages names are not obvious to guess, I had to print the list to know what names to use. A good improvement could be to make them lowercase, and replace non-alphabetic characters with - (for instance, HTML Erlang would become html-erlang). It would require you to write your own equivalent of find_syntax_by_name tho.
Here is the list of languages in case someone wants to see it: