On 23 May 2019, at 11:15, Stefan Daschek stefan@daschek.net wrote:
The Ruby bundle currently supports reformatting a file with RuboCop (“Reformat Document”), and checking the document’s syntax using `ruby -wc.
So far there is no support for automatically checking (or maybe even reformatting) a file everytime it is saved.
For RuboCop, there are (at least) four stand-alone RuboCop bundles providing additional features:
- https://github.com/fazibear/Rubocop.tmbundle https://github.com/fazibear/Rubocop.tmbundle
- https://github.com/mrdougal/textmate2-rubocop https://github.com/mrdougal/textmate2-rubocop
- https://github.com/goyox86/rubocop-tmbundle https://github.com/goyox86/rubocop-tmbundle
- https://github.com/noniq/RuboCop.tmbundle https://github.com/noniq/RuboCop.tmbundle (Disclaimer: This bundle was written by me).
Recently various alternatives to RuboCop emerged, especially:
- https://github.com/testdouble/standard https://github.com/testdouble/standard (uses RuboCop internally, “No configuration“)
- https://github.com/samphippen/rubyfmt https://github.com/samphippen/rubyfmt (autoformatting only, optimized for speed)
Both tools are still pre-1.0, but actively developed.
I’d like to add support for both standardrb and rubyfmt to TextMate. However, I’m not yet sure about the following questions:
- Should the Ruby bundle be extended to support these? Or should one or more stand-alone bundles be created?
- What would be the best way to tell TextMate which (if any) linting / formatting tool it should use for a given ruby file or project?
What’s the goal here? Are standard https://github.com/testdouble/standard or rubyfmt https://github.com/samphippen/rubyfmt better than RoboCop? Because it’s pretty straightforward to make an existing command executed on save.
Assuming we want to add support for these tools I would say they should live in the Ruby bundle. But at the same time if you want to support both it gets slightly more complicated.
Usually when a TextMate bundle executes a command it’s expected to be available in the PATH or it can also check for a specific environment variable, like TM_RUBY.
Since these new tools seem to not be ready for day to day use, I recommend they be turned off by default. This can be configured via another environment variable that can be placed inside .tm_properties to enable.