:toc: macro :toclevels: 5 :figure-caption!: = Sublime Text Kit [link=http://badge.fury.io/rb/sublime_text_kit] image::https://badge.fury.io/rb/sublime_text_kit.svg[Gem Version] [link=https://www.alchemists.io/projects/code_quality] image::https://img.shields.io/badge/code_style-alchemists-brightgreen.svg[Alchemists Style Guide] [link=https://circleci.com/gh/bkuhlmann/sublime_text_kit] image::https://circleci.com/gh/bkuhlmann/sublime_text_kit.svg?style=svg[Circle CI Status] Sublime Text Kit is a command line interface for managing Sublime Text metadata for multiple projects, sessions, snippets, etc. This allows you to avoiding manual maintenance of your workspace so you can stay focused on your own work. toc::[] == Features * Manages project metadata (`.sublime-project` and `.sublime-workspace` files). * Manages session metadata so you can quickly toggle between projects via the `CONTROL+COMMAND+p` shortcut. * Prints all of your custom snippets in either link:https://asciidoctor.org[ASCII Doc] or link:https://daringfireball.net/projects/markdown[Markdown] format. == Requirements . link:https://www.ruby-lang.org[Ruby] . link:https://www.sublimetext.com[Sublime Text] == Setup To install, run: [source,bash] ---- gem install sublime_text_kit ---- == Usage === Command Line Interface (CLI) From the command line, type: `sublime_text_kit` .... USAGE: -c, --config ACTION Manage gem configuration. Actions: edit or view. -h, --help Show this message. -m, --metadata ACTION Manage project metadata. Actions: create, delete, or recreate. -S, --session Rebuild session metadata. -s, --snippets [FORMAT] View snippets. Formats: markdown or ascii_doc. Default: ascii_doc. -u, --update Update project and session metadata based on current settings. -v, --version Show gem version. .... === Customization This gem can be configured via a global configuration: `~/.config/sublime_text_kit/configuration.yml`. It can also be configured via link:https://www.alchemists.io/projects/xdg[XDG] environment variables. An example configuration could be: [source,yaml] ---- :project_roots: - "~/Engineering/Organizations" - "~/Engineering/OSS" :metadata_dir: "~/Dropbox/Cache/Sublime" :snippets_format: :markdown ---- Feel free to take this configuration, modify, and save as your own. The `project_roots` key defines the root level directories where your project folders are located. When project metadata (i.e. `.sublime-project`, `.sublime-workspace`) is generated, the name of the metadata file will be the same name as the project folder. All project metadata, regardless of root location, is written to the same metadata directory as defined by the `metadata_dir` key. If using the example settings shown above and assuming the following directory structure exists… .... ~/Engineering/OSS/example ~/Engineering/OSS/sublime_text_kit .... ...project metadata will be created in the `metadata_dir` as follows: .... ~/Dropbox/Cache/Sublime/example.sublime-project ~/Dropbox/Cache/Sublime/example.sublime-workspace ~/Dropbox/Cache/Sublime/sublime_text_kit.sublime-project ~/Dropbox/Cache/Sublime/sublime_text_kit.sublime-workspace .... The `snippets_format` key allows you define what format to print your snippets as. You can always override your default configuration by specifying the format from the command line: `sublime_text_kit -s ascii_doc`. For example, this is how link:https://www.alchemists.io/projects/sublime_text_setup/#_snippets[snippets documentation] is generated for the link:https://www.alchemists.io/projects/sublime_text_setup[Sublime Text Setup] project. === Workflow The following demonstrates a default Sublime Text setup: 1. Start by defining your configuration: `sublime_text_kit --config edit`. 2. Shutdown Sublime Text (i.e. `COMMAND+q`). 3. Run `sublime_text_kit --update` which will create project metadata and rebuild session metadata so Sublime Text has a complete project history from which to switch between via the `CONTROL+COMMMAND+p` shortcut. 4. Launch Sublime Text and use the `CONTROL+COMMAND+p` keyboard shortcut to toggle between projects. Notice that you can (fuzzy type) project names to jump between them. 5. Navigate through your project workload with ease. 🎉 === Troubleshooting * When rebuilding your session, ensure Sublime Text is shut down or changes might not be applied properly. * When rebuilding project metadata, ensure the `metadata_dir` -- as defined via your configuration -- points to an existing directory which can contain `.sublime-project` and `.sublime-workspace` files. == Development To contribute, run: [source,bash] ---- git clone https://github.com/bkuhlmann/sublime_text_kit.git cd sublime_text_kit bin/setup ---- You can also use the IRB console for direct access to all objects: [source,bash] ---- bin/console ---- == Tests To test, run: [source,bash] ---- bundle exec rake ---- == Versioning Read link:https://semver.org[Semantic Versioning] for details. Briefly, it means: * Major (X.y.z) - Incremented for any backwards incompatible public API changes. * Minor (x.Y.z) - Incremented for new, backwards compatible, public API enhancements/fixes. * Patch (x.y.Z) - Incremented for small, backwards compatible, bug fixes. == Code of Conduct Please note that this project is released with a link:CODE_OF_CONDUCT.adoc[CODE OF CONDUCT]. By participating in this project you agree to abide by its terms. == Contributions Read link:CONTRIBUTING.adoc[CONTRIBUTING] for details. == Community Feel free to link:https://www.alchemists.io/community[join the commmunity] for discussions related to this project and much more. == License Read link:LICENSE.adoc[LICENSE] for details. == Changes Read link:CHANGES.adoc[CHANGES] for details. == Credits * Built with link:https://www.alchemists.io/projects/gemsmith[Gemsmith]. * Engineered by link:https://www.alchemists.io/team/brooke_kuhlmann[Brooke Kuhlmann].