Files
doomemacs/modules/tools/editorconfig/README.org
Henrik Lissner 64b085b381 fix(editorconfig): default to native binary, if available
The default editorconfig implementation was changed upstream to the
elisp one, but — for the principle of least surprise — I believe it
should be the other way around: if the user has the native binary
installed, they're likely expecting it to be used; it will fall back to
the elisp implementation otherwise.

Also updates documentation to reflect these changes and removes the
doctor warning about a missing binary.

Ref: editorconfig/editorconfig-emacs#209
2025-09-18 00:24:04 -04:00

84 lines
3.3 KiB
Org Mode

#+title: :tools editorconfig
#+subtitle: Let someone else argue tabs and spaces
#+created: December 27, 2015
#+since: 0.9
* Description :unfold:
This module adds [[https://editorconfig.org/][EditorConfig]] support to Emacs, allowing users to dictate code
style on a per-project basis with =.editorconfig= files ([[https://editorconfig-specification.readthedocs.io/][formal specification]]),
with or without the native editorconfig binary.
** Maintainers
- [[doom-user:][@hlissner]]
[[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
- [[doom-package:editorconfig-emacs]]
** Hacks
- *Special integration for =dtrt-indent=:* If the local editorconfig file
specifies ~indent_style~ or ~indent_size~, the [[doom-package:dtrt-indent]] (which tries to
guess your indent settings by analyzing your text file) will bow out.
- *Special integration for =ws-butler=:* this module will use [[doom-package:ws-butler]] to
enforce ~trim_trailing_whitespace~.
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module has one optional dependency: the native ~editorconfig~ binary.
Without it, a built-in elisp implementation will be used, which is claimed to be
faster and more secure.
If you choose to install the binary, [[https://github.com/editorconfig#contributing][many implementations]] are available, usually
through your OS package manager (if not built from source yourself).
* Usage
You will need to write an ~.editorconfig~ file in your project (this is usually
in the root of your project) you can find out about all the properties [[https://editorconfig.org/#example-file][here]].
* TODO Configuration
#+begin_quote
󱌣 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
** Adding support for more major modes
Out the box, the editorconfig plugin supports many Emacs major modes, but it's
possible you'll find one it doesn't support. Adding support is easy so long as
you know that mode's indentation variables. For example, ~coffee-mode~ has a
~coffee-tab-width~ variable that controls indentation width in CoffeeScript
files. Editorconfig already supports this language, but let's pretend it
doesn't:
The ~editorconfig-indentation-alist~ variable contains a list of major modes and
their indentation variables. To add coffee-mode to it:
#+begin_src emacs-lisp
;; in $DOOMDIR/config.el
(after! editorconfig
(add-to-list 'editorconfig-indentation-alist '(coffee-mode coffee-tab-width)))
#+end_src
But what if you don't know the correct indentation variable(s). Use [[kbd:][SPC h v]] ([[kbd:][C-h
v]] for non-evil users) to peruse all the available variables in your current
session of Emacs. Look for variables that have the words =indent=, =offset= or
=tab-width= in them. They will be prefixed with the plugin they belong to (e.g.
~rustic-indent-offset~).
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
󱌣 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote