 So, I want to talk about something that really irks me as an IDA developer and is definitely a big reason why I will tell people to stay away from the language. The syntax highlighting in editors for IDA is terrible. Now, Visual Studio Code is one of the interesting ones in that you have some actually really good introspection for what the underlying stuff is doing, what it's identified everything as. So, you can actually determine why it's so bad. There's basically only one IDA grammar they call it for Visual Studio Code and it was written by an Alessandro Dessal who I assume has never worked with IDA in his life and this is how I feel about the majority of them because there's a lot of stuff lacking here. There isn't really any errors but there's a lot of stuff lacking here. There's a really good one. There we go. This is the same color as, what was this one I had open? Yeah, so why are these the same color? Is it because they're being identified as the same thing? So, this makes sense. This is correctly identified as a quoted string and more specifically a double quoted string. That's fine, nothing to say about that. So, yeah, this is just the first example and that's already looking a heck of a lot like somebody who's never actually worked with the language. That seems like the kind of thing a C developer would think. Let's just start to look through this. What's different about this? Oh, because it's no attempt at marking that at all. That's just a keyword. Some more specific scope would be nice but that's not the problem. Yeah, this part is right but that's not a function. That's a package. Should be using like meta.namespace or something, a module, something. This should be entity.name but other.attribute name is what you see for the attributes in HTML or XML. I could see actually reusing this for the attributes in IDA because they're basically the same thing but the name of the package is definitely not this. And furthermore, if this one is being labeled as this, why are these not? So I got that one right but this is attribute name. And then something you may have noticed when you used to see me do the videos using nano is that I would be able to correctly identify this which doesn't even look like they've made an attempt at. Even if we were to just be hard coding those indirectly instead of some kind of scope to mark it in the correct location, you'd be able to do that and then it would just also mark pure in some places where it's not actually an attribute but that would mostly check out fine. No attempt at all. Now what's this? What the fuck? I haven't asked the seventh line yet and this is just absurd. This is just absurd. I take it no attempt has been made at, yeah, yeah. Now, so that had got correct when most things would not but yeah then you're, what happens if we, oh boy. Kill yourself, please, kill yourself. So then if maybe you think GPS can do a better job, sort of, sort of. You'll notice it does highlight the aspect there but it doesn't highlight the aspect there. This is a bit annoying. It does, on the other hand though, do a considerably better job at identifying types as you'll notice and like you would want, it doesn't color that as a string because even though it is, it's just sort of a special syntax. Not really the same thing as a string literal like this would be. Well then here we have a bit of a representation of, that's a little over greedy when it marks the aspects. Instead of just marking size like I would think and then marking this as a delimiter and then this as a number, it goes, nope, whole things an aspect. And technically yes the whole thing is the aspect but at least conceptually with everything else is the identifier is the one that gets marked. You don't see with a type definition the entire thing get marked one color you just see the identifier get marked that color. So yeah, a bit weird. I don't like it but it definitely does a better job. It's just not good. Now GPS is obviously a commercial product. Well sort of they have it partially as a commercial product partially available under the GPL license unless you happen to get it through that licensing complicated. So that's obviously declared a fully finished product. They have that syntax highlighter working the way they want it to. So maybe some minor improvements but that's the way they want it to work. And many years it has not changed. Sorry it's changed a little bit. They added support for the aspects in there but that was it. Alessandro de Sol actually used the syntax highlighter he wrote as an example for this book. So that's definitely an instance of him saying hey I have a finished product here and that I got some things I'd like to say to that but I'll refrain from it in this video. Now Syncfusion they have a bunch of free resources. It's not even just stuff specifically for their products. They have this whole collection of these books. Many of them are great. Many of them are definitely worth downloading copies of. This one is pathetic though. This one does not come close to the quality I would expect out of Syncfusion. Well out of the books that they've published basically correct me if I'm wrong but I believe Del Sol is a Microsoft employee. This is sort of the quality I expect out of Microsoft but at least in past years, recent years they've been a lot better. Yeah not happy about how crappy that is combined with this being presented as highly legitimate finished work. If this were something like I came across a blogger trying to or a blog post about a guy trying to write this and his experience with it and his current progress then it would be a lot more lenient on it. That's not somebody saying this is finished. That's somebody saying it's a work in progress and maybe I'd be even willing to help out on that but this is pathetic. There are of course other examples if you look at other editors but I've mostly got the point made they're all roughly along those qualities. And even the thing that drives me bad is even as primitive as GNU Nano is I was able to get better highlighting than basically anything else had to offer. So I've been dinking around with actually defining one of these for I guess it's textmate in general but Visual Studio Code uses the textmate language grammars. So I've been dinking around with this and I can show off it's nowhere near complete yet but I can show off how it's doing a better job of scoping a lot of this stuff. So if we pull up something like this and we want to look at the original line you can see that for package it correctly recognizes that this is the the meta of a package and that actually will span down through the entire thing. It literally until it reaches the end and it looks like it's a bit too greedy there. So I'll need to fix that but then I can still recognize that this is a keyword and this concept of actually scoping it is useful because then it allows us to do things like this where if we click into the aspect definition or the aspect block I guess you could say you can see that it is recognizing that this is also a meta aspect and then we can just continuously drill down like that where I also need to make this be recognized as keyword inside of an aspect block and then you can just continuously build up like that which is one reason why ultimately this will have a much better definition or a much better result than I could ever get with Nano but should also really show how half-assed the idogrammer was that this all did and again they're basically all like that even the one from IDACORE you think would be excellent especially since it's a whole IDE dedicated to IDA and it's sort of crap but if we pull up just to show well I guess I don't need to do it in this one I can stop debugging that we pull up so you can see how other languages do it I'm not really sure which one of these is going to be a great example okay yeah you can see it a bit here where it's the meta preprocessor include and then this specific part is the include keyword over here it's the actual quoted include part but they're still part of the meta preprocessor include similarly you can see a meta function but then this is entity name function instead of the entity dot other dot attribute name that for some freaking reason they'll soul wanted to use and yeah basically they all wind up working like that they all have a bit of that depth where it tries to group in larger meta blocks which is useful for other tools but then it just continuously drilled down so that you can get the good highlighting yes I'm working on this in addition to a color theme the color theme is already published it's sort of still an in progress like beta thing but it's sort of done I'm just sort of tweaking little things and adding in things as I need them but yeah we'll eventually get a good text mate grammar for Ida there definitely not one now