Hello. Recently I found quite good code editor by Microsoft, available for Windows, Linux and Mac, titled as Visual Studio Code. It's pretty much just a text editor, with syntax highlighting feature and auto-completion feature. I'd recommend this editor alongside with other ones (like Notepad++ for Windows or Sublime Text for Linux) as it knows only two formats of line ends (omits Mac CR format on Windows), but it can seriously take over the place of your current text editor (even classic Notepad on Windows or gedit on Linux) It has also debugging options, though much limited compared to full Visual Studio IDE.

My goal is this: Create and release extension for Visual Studio Code for highlighting syntax of Quake engine shaders. I know that shader has this format:

And I would like to know how to make such syntax highlight using yo code. I mean, how to design keywords plus their parameters, how to design q3map2 directives (and allow for custom ones), allowing for custom surfaceparms, etc. Pretty much take plenty of notes from obsidian's Shader Manual and make syntax highlighter for VS Code out of that. It's great guide and making a tool for relatively new coding text editor to help to find its users also here between level designers would be great pleasure for me. But it's really new editor and I have to learn all the possibilities for it, including creation of custom syntax highlighter for custom languages (which shader is).

I haven't tried it myself, but here's syntax highlighting for Sublime:

Unfortunately, I do not have Sublime Text, so I could only look into syntax and borrow some methods, if it will correspond to my needs:

I need to identify all general directives (surfaceparm, and other non-q3map directives), q3map2 directives respectively (allowing for custom q3map directive in case of modified compiler), and stage related directives (map, clampmap, etc.) - custom directives should be visually different from the standard ones

Identify known keywords for each directives (e.g. surfaceparm nolightmap an so on, allowing for custom surfaceparms in case of modified engine & compiler) - there are number of more directives which would require custom keywording - again need to be visually different from standard ones

Identify each directive their positional parameters (required or not required)

Texture paths, keywords like $lightmap, *whiteimage, etc.

Numbers in numeric parameters

Block comments (using multiple line comments arranged into block) would be great to recognise

Shader must have a name (the very beginning of the {} code wrap)

Block comment just before a shader name could be a shader documentation (e.g. what's the purpose of that particular shader) - like a documentation feature

etc. There are plenty of other things to take care of. Also, the syntax highlighter would be required to be up to date with most recent q3map2 version (the official one)...

In fact, I just started using VS Code and it's really good editor. It lets me install various extensions which may turn it into a simple, yet full working IDE (something like Vim on Linux). I also installed Vim mode to VS Code, so I can use simple keyboard strokes to execute text editing commands. Just like Vim. It's pretty handy sometimes...