hauleth

hauleth

Question as in the title. Are You using EditorConfig in your projects?

  • Yes
  • Yes, but not in Elixir projects
  • No
  • I didn’t know about EditorConfig
0 voters

Most Liked

hauleth

hauleth OP

For me it is irritating as the editor need to reload edited file after each save, which sometimes screw the undo (I have persistent undo in Vim enabled). Additionally it fires file watchers twice, so sometimes it can cause “wasted cycles” when running tests twice after each change.

Additionally mix format will not work with files that aren’t UTF-8. While most editors use that by default it not always can be a case, for example Windows sometimes use UTF-16 which will crash the mix format:

$ echo 'Łukasz' | iconv -f UTF-8 -t UTF-16 | mix format -
mix format failed for stdin
** (UnicodeConversionError) invalid encoding starting at <<254, 255, 1, 65, 0, 117, 0, 107, 0, 97, 0, 115, 0, 122, 0, 10>>
    (elixir 1.10.0) lib/string.ex:2223: String.to_charlist/1
    (elixir 1.10.0) lib/code/formatter.ex:198: Code.Formatter.to_algebra/2
    (elixir 1.10.0) lib/code/formatter.ex:236: Code.Formatter.to_algebra!/2
    (elixir 1.10.0) lib/code.ex:645: Code.format_string!/2
    (mix 1.10.0) lib/mix/tasks/format.ex:418: Mix.Tasks.Format.format_file/2
    (elixir 1.10.0) lib/task/supervised.ex:90: Task.Supervised.invoke_mfa/2
    (elixir 1.10.0) lib/task/supervised.ex:35: Task.Supervised.reply/5
    (stdlib 3.10) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
$ echo 'Łukasz' | iconv -f UTF-8 -t CP1250 | mix format -
mix format failed for stdin
** (UnicodeConversionError) invalid encoding starting at <<163, 117, 107, 97, 115, 122, 10>>
    (elixir 1.10.0) lib/string.ex:2223: String.to_charlist/1
    (elixir 1.10.0) lib/code/formatter.ex:198: Code.Formatter.to_algebra/2
    (elixir 1.10.0) lib/code/formatter.ex:236: Code.Formatter.to_algebra!/2
    (elixir 1.10.0) lib/code.ex:645: Code.format_string!/2
    (mix 1.10.0) lib/mix/tasks/format.ex:418: Mix.Tasks.Format.format_file/2
    (elixir 1.10.0) lib/task/supervised.ex:90: Task.Supervised.invoke_mfa/2
    (elixir 1.10.0) lib/task/supervised.ex:35: Task.Supervised.reply/5
    (stdlib 3.10) proc_lib.erl:249: :proc_lib.init_p_do_apply/3

Yes, but it will not manage all files in projects. Erlang files or Makefiles will not be formatted via mix format. And if you configure tabstop option then GitHub will also show files in diffs and file display with proper indentation depth.

What is more, some editors (for sure Vim, but I assume that others as well) can display vertical line on the “line length limit” which is useful to write code “formatted” already, without the need for running mix format in the background. None of the editors I know can read .formatter.exs to do so (however I could easily implement that for Vim if needed).

The for me in EditorConfig is to make it pass before even being sent to the CI, as most of these “fixes” can be applied automatically by editor (proper indentation characters, indentation width, charsets, etc.). This is also handy for root = true option for a lot of tools, as this marks the “main” directory of the project and such tools can “stop” when traversing the directory tree in lookup for “root directory”.

axelson

axelson

Scenic Core Team

I marked yes, although I don’t use it in all my projects (or even most of them). But I like having it and want to use it in more projects. Even if it is only as documentation about the expected config.

hauleth

hauleth OP

It is more about using it anywhere. I understand that most people will not use it everywhere, because sometimes it doesn’t make sense, because internal projects not always need them.

Last Post!

OvermindDL1

OvermindDL1

I use .editorconfig files only to keep some basics consistent for text editors that don’t know about the formatters. It’s extremely insufficient with a lot of settings though, so I have a couple changes in rustfmt.toml and similar for Elixir as well (I use freedom formatter for elixir as I like some settings changed).

Where Next? Top

Trending in Dev Env & Tools Top

srowley
I have really enjoyed dialing in a set of static analysis tools and skills that help me help LLMs write better code. One gap I haven’t se...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews