For paid-plan users, our new configuration format provides top-level keys to specify separate options for each supported language. This allows you to fine-tune each language independently for a more comprehensive code fixing experience.
The configuration for each language must now fall under the relevant name. For instance, observe the example config file below:
php:
risky: true
version: 8.4
preset: laravel
enabled:
- ternary_to_elvis_operator
disabled:
- single_import_per_statement
monolithic: true
finder:
exclude:
- "modules"
- "node_modules"
- "nova"
- "nova-components"
- "storage"
- "spark"
- "vendor"
name: "*.php"
not-name:
- "*.blade.php"
- "_ide_helper.php"
js:
tab-width: 4
use-tabs: false
print-width: 120
double-quotes: false
trailing-commas: es5
semicolons: true
arrow-parens: always
bracket-same-line: false
bracket-spacing: true
finder:
exclude:
- "modules"
- "node_modules"
- "nova"
- "nova-components"
- "storage"
- "spark"
- "vendor"
name:
- "*.js"
- "*.jsx"
not-name:
- "*.min.js"
ts: false
css: false
py: true
As can be seen, the php, js, ts, css and py keys each allow for PHP, Javascript, Typescript, CSS and Python configuration respectively. Writing false after such a key disables fixing for that language; writing true enables our default fixes for it. If you want to customize, you can instead write out the configuration manually under the language you want.
In the above example, it can be seen that custom PHP and Javascript configurations are used, along with the default Python one and no other languages.
{info} If you removed the
tsorcsskeys, the behavior would remain the same; removing any such language's key replaces it with its default behavior, ie.truefor PHP andfalsefor all others.
You may notice that the PHP and Javascript configurations look different. In fact, every language has its own separate configuration options, with PHP retaining the PHP-only ones.
We describe each new language's options below. For all languages, the finder key works the same.
Setting php: true translates to the following:
php:
risky: false
version: 8.4
preset: recommended
monolithic: true
tab-width: 4
use-tabs: false
finder:
exclude:
- "modules"
- "node_modules"
- "nova"
- "nova-components"
- "storage"
- "spark"
- "vendor"
name: "*.php"
not-name:
- "*.blade.php"
- "_ide_helper.php"
PHP configuration is the same as before, other than that all PHP config options must fall under the php key as above. Read more about PHP configuration here.
Setting js: true translates to the following:
js:
tab-width: 4
use-tabs: false
print-width: 120
double-quotes: false
trailing-commas: es5
semicolons: true
arrow-parens: always
bracket-same-line: false
bracket-spacing: true
finder:
exclude:
- "modules"
- "node_modules"
- "nova"
- "nova-components"
- "storage"
- "spark"
- "vendor"
name:
- "*.js"
- "*.jsx"
not-name:
- "*.min.js"
tab-width are 2 and 4.use-tabs are false and true.print-width are integers between 20 and 200. We'd recommend 80, 100, or 120.double-quotes are false and true.trailing-commas are none, es5, or all.semicolons are false and true.arrow-parens are avoid and always.bracket-same-line are false and true.bracket-spacing are false and true.Setting ts: true translates to the following:
ts:
tab-width: 4
use-tabs: false
print-width: 120
double-quotes: false
trailing-commas: es5
semicolons: true
arrow-parens: always
bracket-same-line: false
bracket-spacing: true
finder:
exclude:
- "modules"
- "node_modules"
- "nova"
- "nova-components"
- "storage"
- "spark"
- "vendor"
name: "*.ts"
tab-width are 2 and 4.use-tabs are false and true.print-width are integers between 20 and 200. We'd recommend 80, 100, or 120.double-quotes are false and true.trailing-commas are none, es5, or all.semicolons are false and true.arrow-parens are avoid and always.bracket-same-line are false and true.bracket-spacing are false and true.Setting css: true translates to the following:
css:
tab-width: 4
use-tabs: false
print-width: 120
double-quotes: false
finder:
exclude:
- "modules"
- "node_modules"
- "nova"
- "nova-components"
- "storage"
- "spark"
- "vendor"
name:
- "*.css"
- "*.scss"
- "*.less"
tab-width are 2 and 4.use-tabs are false and true.print-width are integers between 20 and 200. We'd recommend 80, 100, or 120.double-quotes are false and true.Setting vue: true translates to the following:
vue:
tab-width: 4
use-tabs: false
print-width: 120
double-quotes: false
trailing-commas: es5
semicolons: true
arrow-parens: always
bracket-same-line: false
bracket-spacing: true
indent-script-and-style: false
whitespace-sensitivity: css
finder:
exclude:
- "modules"
- "node_modules"
- "nova"
- "nova-components"
- "storage"
- "spark"
- "vendor"
name: "*.vue"
tab-width are 2 and 4.use-tabs are false and true.print-width are integers between 20 and 200. We'd recommend 80, 100, or 120.double-quotes are false and true.trailing-commas are none, es5, or all.semicolons are false and true.arrow-parens are avoid and always.bracket-same-line are false and true.bracket-spacing are false and true.indent-script-and-style are false and true.whitespace-sensitivity are css, strict and ignore.Setting py: true translates to the following:
py:
version: 3.11
preset: pep8
options:
tab-width: 4
use-tabs: false
print-width: 120
multiline-split-indent: 4
join-short-lines: false
comment-indent: 4
finder:
exclude:
- "modules"
- "node_modules"
- "nova"
- "nova-components"
- "storage"
- "spark"
- "vendor"
name: "*.py"
version key specifies the Python grammar version to use. 2.7 and 3.11 are allowed values, 3.11 being the default, and additionally, 2 is an alias for 2.7 and 3 is an alias for 3.11.preset key are pep8, google, chromium or facebook. We'd recommend either pep8 or google.options key contains several suboptions for further, fine-tuned customizations. These options are as follows:
tab-width are 2 and 4.use-tabs are false and true.print-width are integers between 20 and 200. We'd recommend 80, 100, or 120.multiline-split-indent key specifies the extra indentation used when a line is split across several lines. Valid values are integers between 2 and 8. We'd recommend 4.join-short-lines key specifies whether to join several short lines into one, eg. making a small 'if' statement a one-liner. Valid values are false or true.comment-indent specifies indentation required after a line for a trailing comment. Valid values are integers between 2 and 8.Note that for Python, we allow a preset along with a set of extra options for fine-tuning their behavior. The presets will have the side effect of changing the defaults for options, which are overriden by setting these keys explicitly:
pep8 will set use-tabs to false, print-width to 79, tab-width to 4, multiline-split-indent to 4, join-short-lines to true and comment-indent to 2.google, facebook and chromium will all do the same, albeit setting column-width to 80.{info} It's important to remember the preset does a lot more than just choose defaults for the
optionskey - the internal differences in behavior will be noticeable and substantial, albeit not directly configurable. Hence, for example, choosing the