The next step of my journey was making syntax specific color themes and a few syntax specific settings. Most notably syntax level tab settings that supported either a tab interval or a tab list. If you are writing COBOL you are going to want to have a tab list. Some languages you will need set to four spaces and other languages you will need to use actual tabs. In particular you still need to use tabs for certain Linux settings files.
I don't know about you, but I'm rather visual. I'm notorious for having 3-9 editors installed on any desktop computer. Not just so I have lots of different editors, not really. It is so I have editors that look different. When I'm contracting and working with Qt I will have QtCreator open.
I will usually have another editor open on the other monitor to edit things that aren't part of the current project or to hold snippets I'm assembling for later pasting into one of the project files.
For my Read Only files I want something shocking and ugly.
Admit it! You've all done it. Opened a file you "thought" you put into Read Only mode in your favorite editor then edited the file and saved it. A really great thing in the days before we had source code management were you would save the file back to the sacred source directory.
When you go to college they teach you about Pavlov's Dogs. You are taught this so you know how to train others and most importantly know how to train yourself. He used sound. For editing I use color. This color is safe to edit and what I'm supposed to be working on. This color is safe to edit but not part of my project so be sure to do something with it. No touchy.
I decided to extend the Pavlovian color training in this editor by allowing the user to associate a theme with each syntax. I haven't much thought about how to tweak it to include Read Only yet.
Hopefully you read all of the steps I went through in the previous blog posts. You will note that I complained about how tightly coupled stuff was to main window and how house of cards like the startup process was. I got to a good first stage for the decoupling when I issued the pull request. I don't care if they pull it or not. In a month or so I will most likely take the repo down and nuke the package files.
The last vestiges of the tight coupling with MainWindow and the Jenga like startup have started rearing their ugly heads with this new feature. Adding insult to injury it appears as if the QDialog event loop has a parameter losing bug with queued connections. I'm rather certain I can work around that last with a bit of a hack, but the reason the queued connection was needed in the first place is to hack around the Jenga-like startup. At some point you have to stop stacking hack upon hack.
The branch I currently have for this (which is no where near a condition one should consider pulling down, just some safety check-ins) was supposed to be adding this simply theme per syntax feature. It's going to have to become a God-like move and the new base of the project, tossing history. The MainWindow class created by the original developers is going to have to be scrapped and re-developed from scratch. Since I ultimately wanted to allow for multiple MainWindow instances underneath a server I will have to tackle that at this time as well.
It will be quite a while before a new pair of package files are available.