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

Showing Posts 1 to 8

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.

Eiji

Eiji

For me mix format (called automatically on each file save) handles all formatting, so there is no need for such extra plugin in my editor.

I understand that it’s intended for projects with more than one developer, but if I remember correctly every commit may be rejected if specified check fails which is also possible to pair with mix format task.

NobbZ

NobbZ

Elixir has the formatter, hooks and CI make sure everything is well formatted.

Same for go, python, rust, or anything else the team or community agreed on a formatter to use.

Though for some languages or configstyle files there is no or linter available, there we do use editor config.

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”.

Eiji

Eiji

Heh … what should I say … I recommend Sublime Text 3 :077:

I do not have a tests for each file change as it’s generally bad idea. It may be good for small bugfix, but in normal case (enhancement or new feature) which requires to add and/or modify many files it would cause unnecessary fails.

It’s why I do not use Windows at all. They have their own standards. Look that people in France think that French is most important and everyone should know it, but it does not changes anything in typical daily English programming …

Well … Elixir was created for some purpose … If Erlang would have syntax, code, formatter and everything else from Elixir then Elixir would not be created. :smiley:

But seriously … Makefile is good example, but it’s not like that it’s used in really big percent of projects. Erlang team could create formatter if they would like to. The better way is to create formatter for each language rather than implement support for all languages in each editor which is obvious waste of time.

As said Makefile is a different case, but it’s really one file and alone does not gives enough arguments to introduce a generic formatter.

This should be able to work with Elixir formatter. Of course not many editors know .formatter.exs, but there is really no need for that. That’s why many editors have support for plugins.

NobbZ

NobbZ

That’s why I use the LS to format, the editor should send the buffer before save and wait for the formatter to return it and then save that as new buffer. Neither Emacs, nor visual code ever hat a problem with undo that way.

Is utf-16 even accepted by the elixir parser? So far I assumed that utf-8 were required for elixir source files.

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).

— All posts loaded —

Where Next? Top

Trending in Dev Env & Tools Top

dimitarvp
Yeah, feels the same here. :confused: And I made a much bigger investment, the iMac Pro I got was $8000 at the time I bought it (2019). ...
New
nseaSeb
Hey, have you seen this? It looks better than tmux—what do you think? Herdr is the runtime your coding agents live on — laptop, desktop...
New
lungarella-raffaele
Hi all, I am writing Elixir using Zed. Often times I like to “Go to definition” on standard libraries code and check out documentation an...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
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
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge &amp; Solve. They are GUI (Emerge) and State management (S...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews