# LSP-rome
[Rome](https://rome.tools/) unifies your development stack by combining the functionality of separate tools. It uses a single configuration file, has fantastic performance, and works with any stack. This package enables Sublime Text integration so that you can:
- Format files on save or when issuing the `LSP: Format Document` command
- See linting hints while you type and apply code fixes
- Perform refactors
The package supports JavaScript and TypeScript files.
## Installation
1. Install [LSP](https://packagecontrol.io/packages/LSP) and [LSP-rome](https://packagecontrol.io/packages/LSP-rome) via Package Control.
2. (Optional but recommended) Install [LSP-file-watcher-chokidar](https://github.com/sublimelsp/LSP-file-watcher-chokidar) via Package Control to enable functionality to notify the server about changes to the `rome.json` configuration file.
3. Restart Sublime.
## Configuration
Open the configuration file using the Command Palette `Preferences: LSP-rome Settings` command or from the Sublime menu.
> **Note**
> By default Rome requires a configuration file (`rome.json`) in the root of the project to enable syntax errors, formatting and linting. This can be changed through the `rome.requireConfiguration` option in `Preferences: LSP-rome Settings`.
## Rome Resolution
The package tries to use Rome from your project's local dependencies (`node_modules/rome`). We recommend adding Rome as a project dependency to ensure that NPM scripts and the extension use the same Rome version.
You can also explicitly specify the `rome` binary the extension should use by configuring the `rome.lspBin` setting in `LSP-rome` Settings.
If the project has no dependency on Rome and no explicit path is configured, the extension uses the Rome version managed by this package.
## Usage
### Format document
To format an entire document, open the _Command Palette_ (Ctrl/⌘+⇧+P) and select `LSP: Format Document`.
To format a text range, select the text you want to format, open the _Command Palette_ (Ctrl/⌘+⇧+P), and select `LSP: Format Selection`.
### Fix on save
To enable fix on save, open `Preferences: LSP Settings` from the _Command Palette_ and set:
```json
{
"lsp_code_actions_on_save": {
"quickfix.rome": true
}
}
```
### Imports Sorting [Experimental]
Rome has experimental support for imports sorting through the "Organize Imports" code action. This action is accessible through the _Command Palette_ (Ctrl/⌘+⇧+P) by selecting `LSP-rome: Organize Imports`.
Currently, this functionality needs to be explicitly enabled in the `rome.json` configuration file:
```json
{
"organizeImports": {
"enabled": true
}
}
```
You can add the following to `Preferences: LSP Settings` if you want the action to run automatically on save instead of calling it manually:
```json
{
"lsp_code_actions_on_save":{
"source.organizeImports.rome": true
}
}
```