# Configuration **Source:** [config.rs](https://github.com/rust-lang/rust-analyzer/blob/master/crates/rust-analyzer/src/config.rs) The [Installation](./installation.md) section contains details on configuration for some of the editors. In general `rust-analyzer` is configured via LSP messages, which means that it’s up to the editor to decide on the exact format and location of configuration files. Some clients, such as [VS Code](./vs_code.md) or [COC plugin in Vim](./other_editors.md#coc-rust-analyzer) provide `rust-analyzer` specific configuration UIs. Others may require you to know a bit more about the interaction with `rust-analyzer`. For the later category, it might help to know that the initial configuration is specified as a value of the `initializationOptions` field of the [`InitializeParams` message, in the LSP protocol](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#initialize). The spec says that the field type is `any?`, but `rust-analyzer` is looking for a JSON object that is constructed using settings from the list below. Name of the setting, ignoring the `rust-analyzer.` prefix, is used as a path, and value of the setting becomes the JSON property value. For example, a very common configuration is to enable proc-macro support, can be achieved by sending this JSON: { "cargo": { "buildScripts": { "enable": true, }, }, "procMacro": { "enable": true, } } Please consult your editor’s documentation to learn more about how to configure [LSP servers](https://microsoft.github.io/language-server-protocol/). To verify which configuration is actually used by `rust-analyzer`, set `RA_LOG` environment variable to `rust_analyzer=info` and look for config-related messages. Logs should show both the JSON that `rust-analyzer` sees as well as the updated config. This is the list of config options `rust-analyzer` supports: {{#include configuration_generated.md}}