diff --git a/Documentation/Configuration.md b/Documentation/Configuration.md index 1035286ce..6de4c3b5e 100644 --- a/Documentation/Configuration.md +++ b/Documentation/Configuration.md @@ -5,7 +5,7 @@ used as a command line tool or as an API. ## Command Line Configuration -A `swift-format` configuration file is a JSON file with the following +A `.swift-format` configuration file is a JSON file with the following top-level keys and values: * `version` _(number)_: The version of the configuration file. For now, this @@ -92,7 +92,7 @@ top-level keys and values: An example `.swift-format` configuration file is shown below. -```javascript +```json { "version": 1, "lineLength": 100, @@ -118,6 +118,18 @@ You can also run this command to see the list of rules in the default $ swift-format dump-configuration +## Global Configuration + +If no `.swift-format` can be found for the current project/file, the configuration directories +are searched for a `swift-format/config.json` file. While the filename is different,the +configuration format stays the same. + +Locations that are searched, in this order: + +- `~/Library/Application Support/swift-format/config.json` +- `$XDG_CONFIG_HOME/swift-format/config.json` +- `~/.config/swift-format/config.json` + ## API Configuration The `SwiftConfiguration` module contains a `Configuration` type that is diff --git a/README.md b/README.md index 6b29d73eb..54615583b 100644 --- a/README.md +++ b/README.md @@ -167,10 +167,12 @@ subcommands: or off respectively, regardless of whether the output is going to a terminal. -* `--configuration `: The path to a JSON file that contains +* `--configuration `: The path to a JSON file that contains [configurable settings](#configuring-the-command-line-tool) for - `swift-format`. If omitted, a default configuration is use (which - can be seen by running `swift-format dump-configuration`). + `swift-format`. If no file is found, `swift-format` tries to load the json + data as a string, if valid. If the parameter is omitted, a default + configuration is used (which can be seen by running + `swift-format dump-configuration`). * `--ignore-unparsable-files`: If this option is specified and a source file contains syntax errors or can otherwise not be parsed successfully by the @@ -202,14 +204,18 @@ JSON-formatted file named `.swift-format` in the same directory. If one is found, then that file is loaded to determine the tool's configuration. If the file is not found, then it looks in the parent directory, and so on. +If there is no project specific configuration file, the +[config directories](Documentation/Configuration.md#Global-Configuration) +are checked for a `swift-format/config.json` configuration file. + If no configuration file is found, a default configuration is used. The settings in the default configuration can be viewed by running `swift-format dump-configuration`, which will dump it to standard output. -If the `--configuration ` option is passed to `swift-format`, then that -configuration will be used unconditionally and the file system will not be -searched. +If the `--configuration ` option is passed to `swift-format`, +then that configuration will be used unconditionally and the file system will +not be searched. See [Documentation/Configuration.md](Documentation/Configuration.md) for a description of the configuration file format and the settings that are