So I’m investigating a few things I could add to my language package that might be beneficial however these things are very likely to be somewhat personal or system driven and I’m not sure how the customization might proceed.
- Build system – For the language there are a number of different tools that could be used to build it. It could be as simple as running make if they set it up that way. It could be more complex like a single line compile. Or run a TCL script. Basically the variations are if not endless, then at least a fairly large solution space. So it’s difficult if not impossible to write something that’s going to solve everyone’s problem. At the same time, it feels kind of chintzy that there’s NOTHING to start from in terms of build systems.
So… if I create a basic build system that would execute one of the solutions (a fairly common tool) and parse the results, is there a way the user can easily expand or customize that? The build system would be in the package (so zipped up and relatively unaccessible for easy editing) so I don’t know if they can open the current embedded build system, and then save it in their project file and it’ll override the basic.
Another thought I had, I could try to create a snippet or command+snippet that would aid the user in creating a build system for their system. Not quite as out of the box useful, but has the potential to be FAR more customizeable. I have thought of trying to add additional fields into a *.sublime-project file that would keep the customization aspects local to that project.
- Indentation – I started playing with the automatic indentation preferences. It’s clear to me that this is one of those things that could be very personal or style variable. I’ve seen a lot of code styles for my language, and some are a bit wackier than others. If I create a default indentation ruleset, can the user turn it off, or easily modify it? The default “keep next line indent the same as current line” will get a person pretty far, but I don’t want my default style to be an annoyance if it’s not what the developer desires.