aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc/editorconfig.txt
blob: 04a057e5ffb12d58e7848d142ab5e25be2d98ad6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
*editorconfig.txt*  Nvim


                            NVIM REFERENCE MANUAL


EditorConfig integration                                        *editorconfig*

Nvim natively supports EditorConfig. When a file is opened, Nvim searches
upward through all of the parent directories of that file looking for
".editorconfig" files. Each of these is parsed and any properties that match
the opened file are applied.

For more information on EditorConfig, see https://editorconfig.org/.

                                               *g:editorconfig* *b:editorconfig*
EditorConfig integration can be disabled globally by adding >lua

    vim.g.editorconfig = false
<
to the user's |init.lua| file (or the Vimscript equivalent to |init.vim|). It
can also be disabled per-buffer by setting the |b:editorconfig| buffer-local
variable to `false`.

When Nvim finds a valid .editorconfig file it will store the applied
properties in the buffer variable |b:editorconfig| if it was not already set to
`false` by the user.

                                                     *editorconfig-properties*
The following properties are supported by default:

                                                           *editorconfig_root*
root                    If "true", then stop searching for .editorconfig files
                        in parent directories. This property must be at the
                        top-level of the .editorconfig file (i.e. it must not
                        be within a glob section).

                                                        *editorconfig_charset*
charset                 One of "utf-8", "utf-8-bom", "latin1", "utf-16be", or
                        "utf-16le". Sets the 'fileencoding' and 'bomb'
                        options.

                                                    *editorconfig_end_of_line*
end_of_line             One of "lf", "crlf", or "cr". These correspond to
                        setting 'fileformat' to "unix", "dos", or "mac",
                        respectively.

                                                   *editorconfig_indent_style*
indent_style            One of "tab" or "space". Sets the 'expandtab' option.

                                                    *editorconfig_indent_size*
indent_size             A number indicating the size of a single indent.
                        Alternatively, use the value "tab" to use the value of
                        the tab_width property. Sets the 'shiftwidth' and
                        'softtabstop'.

                                           *editorconfig_insert_final_newline*
insert_final_newline    "true" or "false" to ensure the file always has a
                        trailing newline as its last byte. Sets the
                        'fixendofline' and 'endofline' options.

                                                *editorconfig_max_line_length*
max_line_length         A number indicating the maximum length of a single
                        line. Sets the 'textwidth' option.

                                                      *editorconfig_tab_width*
tab_width               The display size of a single tab character. Sets the
                        'tabstop' option.

                                       *editorconfig_trim_trailing_whitespace*
trim_trailing_whitespace
                        When "true", trailing whitespace is automatically
                        removed when the buffer is written.

                                              *editorconfig-custom-properties*
New properties can be added by adding a new entry to the "properties" table.
The table key is a property name and the value is a callback function which
accepts the number of the buffer to be modified, the value of the property
in the .editorconfig file, and (optionally) a table containing all of the
other properties and their values (useful for properties which depend on other
properties). The value is always a string and must be coerced if necessary.
Example: >lua

    require('editorconfig').properties.foo = function(bufnr, val, opts)
      if opts.charset and opts.charset ~= "utf-8" then
        error("foo can only be set when charset is utf-8", 0)
      end
      vim.b[bufnr].foo = val
    end
<
 vim:tw=78:ts=8:noet:ft=help:norl: