6 ms·
EditorConfig
- codebeaker 11y agoFor more see the numerous older discussions of this https://news.ycombinator.com/from?site=editorconfig.org https://news.ycombinator.com/from?site=editorconfig.org
- usea 11y agoHN has a direct link to this feature now. There's a link under the story labeled "past." Although it goes to the official search instead of your link. Cheers.
- Already__Taken 11y ago> For Windows Users: To create an .editorconfig file within Windows Explorer, you need to create a file named .editorconfig., which Windows Explorer will automatically rename to .editorconfig What a neat trick I had no idea. Been renaming those files on the cli all this time. On a related note: Why has it gone the way that I must look at code your way. Is there no chance of decoupling the presentation with logic like the web has long preached us (not saying that worked). Tabs to spaces shouldn't be some messy commit regardless of your preference on the matter. Anyway, nice project. I understand your search preferences up from the project root not down from my preferences because it's controlling other people's coding standards.
- Sujan 11y agoYou can _look_ at it whatevery way you want - that's the job of your IDE. But if you _edit_ (in) it, your changes should be saved in the way the author decided to keep one standard in one codebase. PS: Whooop on the Windows trick! So useful.
- mkohlmyr 11y agoThat's assuming the code-base was still saved as a representation rather than a syntax tree that can be viewed in whatever way a given developer prefer. There's no reason that has to be the case. In fact intuitively i'd be inclined to say its probably easier to write a VCS for a syntax tree than a free text string?
- qznc 11y agoThe modern/popular way is to run a format tool before you commit. (gofmt, clang-format, etc) A VCS for syntax trees means you need the One True Data Format(tm) for syntax trees in any language. Finding consensus on formatting per project is easier than unifying all syntax tree representations globally.
- WorldMaker 11y agoAdditionally, there are many reasons you might want to commit work in progress code that doesn't/won't parse correctly to a "proper" syntax tree. While there are certainly workarounds (pseudo-trees for "malformed"/"unfinished" sections), there's entire neighborhoods of bikesheds to paint there. (Amongst the major compilers thus far the only ones I've seen invest useful time in mostly unified intermediate syntax trees is the Roslyn compilers for C#/VB, often compilers don't care but Roslyn had the opportunity/drive/interest to try to merge a lot of editor support directly into the compiler infrastructure.) (Aside: I built a cool proof of concept for what I think is the most useful "smart middle ground" here, which is to use syntax highlighting lexers (tokenizers) for a useful effect in creating smart character-based diffs. Syntax highlighting lexers are designed for intermediate code and with output as ordinary character diffs you don't have to bikeshed a universal token stream format. The tokenized diffs were cleaner and faster than the equivalent non-tokenized character diff. https://github.com/WorldMaker/tokdiff https://github.com/WorldMaker/tokdiff if anyone wants to play with it.)
- Sujan 11y agoLast time I checked my codebases were all plain text files. But yes, having a syntax tree would solve this problem quite nicely. (But to make it work universally you have to decide on a representation of this syntax tree to be able to represent it in plain text files to make it work with all the editors and IDEs that don't support that syntax tree stuff... And then we're back to .editorconfig, aren't we?)
- michaelmior 11y agoPerforming merges and handling conflicts seems like a harder problem than for text.
- bsimpson 11y agoI've often wondered this. I find columnar alignment of key:value pairs (in CSS, dictionaries, etc) to be much easier to read, but I find that I'm an outlier because most people get upset when they see whitespace changes in a diff. (FWIW, `?w=0` will hide whitespace changes on GitHub). It would be rad if an editor like Sublime or Atom understood columns and displayed code that way without needing to reindent everything in the file every time you add a longer key.
- 1wd 11y agoIt's called elastic tabstops. [1] The page links some editors that implement this and some plugins for other editors. Apparently SublimeText's plugin is incorrect though. It does not mention Atom, but it was discussed in [2]. [1] http://nickgravgaard.com/elastic-tabstops/ http://nickgravgaard.com/elastic-tabstops/ [2] https://discuss.atom.io/t/elastic-tabstops/16/23 https://discuss.atom.io/t/elastic-tabstops/16/23
- Macha 11y agoI find it more readable up until the difference in key lengths becomes larger (font and text-decoration for example), at which point I have trouble matching the values with the shorter names.
- oneeyedpigeon 11y agoJust right-align your property names. I know that sounds ridiculous, but give it a go: body { font-size: 16px; margin-bottom: 100px; padding-top: 40px; color: rgb(100, 100, 100); background-color: rgb( 90, 255, 3); }
- Already__Taken 11y agoOh way better yes. I sometimes like to indent dependent properties too: body { width: 400px; margin: 20px; position: absolute; bottom: 0; right: 0; background: #ccc; }
- cheezburgler 11y agoyes, because coding style can be reduced to charset and indentation choice
- Zombieball 11y agoI also noticed the limited set of rules. Does anyone on HN have suggestions for code style guides with cross IDE support? Ideally I would like something similar to Google's code style guidelines with settings to import into IntelliJ and Eclipse for Java, html/css, sass, JavaScript, maybe even frameworks such angular. The Google guidelines only appear to have IDE settings for Java (in this list).
- beaker52 11y agoNo, but ignoring these basic project conventions can lead to issues when another developer tries to work with the file, specifically around charset and line endings.
- beaker52 11y agoeditorconfig only defines the following properties: charset indent_style indent_size tab_width end_of_line trim_trailing_whitespace insert_final_newline These are all sensible things to enforce (with the exception of tab_width, which is actually a display preference). Subjectively, other things are mostly flexible.
- Maken 11y agoThere are more properties listed in the complete list (link is above the short list), mostly about parenthesis and braces. I guess they aren't listed in the main page because they are language-specific.
- teamhappy 11y agoBut editors can infer these settings anyway.
- 11y ago
- ossreality 11y agoYay! Another new project that pisses all over xdg config dir specifications.
- cakeface 11y agoI don't know what xdg is. Can you provide a link? Is it a better technical solution than what editorconfig has set out to do? I think that you were just being snarky, but if there is a competing standard that is actually something I'd like to hear about.
- fakeanon 11y agohttp://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html http://standards.freedesktop.org/basedir-spec/basedir-spec-l... It lets users specify their config directory.
- jessaustin 11y agoBut since no one does that, the result is that everyone has half of their config files in $HOME, and the other half in $HOME/.config.
- ossreality 11y ago/shrug yeah because people like EditorConfig and Atom write new projects and literally opt to ignore the standard. It's just frustrating, annoying and a bit arrogant. "Oh just fucking throw it in their home dir. They won't mind. No one shows dot-prefixed files, right?!" Uh.
- morgellons 11y agoXDG config dirs are for per-user configuration. EditorConfig is for per-project configuration. Having EditorConfig use XDG config directories in any way would defeat the entire purpose, which is to distribute settings to be shared by all users of a project.
- guidopallemans 11y agoCould this be extended to keyboard shortcuts? I always feel like the effort I have to do setting the shortcuts on a new IDE is redundant, and shared with a lot of people
- eyko 11y agoUm... No thank you? pd: the last thing I want as a developer is a developer on Windows overriding my OSX keyboard shortcuts (or viceversa).
- madeofpalk 11y agoSublimeText shortcuts and other preferences are just text files on the filesystem, which you can share. Hell, in SublimeText, the menu items to change keyboard prefs just opens the JSON for for you to edit by hand
- untothebreach 11y agoI think that is a different problem than what this solves, as this tries to make it easy to enforce a code style for a project across multiple editors, while shortcuts are inherently more personal and editor-specific.
- drumdance 11y agoThe IDE has now become an abstraction. Love it.
- captn3m0 11y agoFor those who don't know, github recently started supporting editorconfig[0] files in repos, which means that if your repo has an editorconfig, it will be respected by github in the online code viewer. Without an editorconfig file, the default indentation on github is 8 spaces, because that's how pre tags work. See the link for more info. [0]: https://github.com/isaacs/github/issues/170#issuecomment-137993149 https://github.com/isaacs/github/issues/170#issuecomment-137...
- nzoschke 11y agoNice. I'm addicted to automatically running `gofmt` on .go file saves. Now I'm crazy sensitive to whitespace and formatting discrepancies that show up in .js or .css files from different environments. It seems like EditorConfig has a shot at improving this, particularly since GitHub supports it. Next step, strict linters/formatters for all languages. Edit: Based on other comments pointing to the Javascript standard style project, I found this to auto format .js files in Sublime Text: https://packagecontrol.io/packages/StandardFormat https://packagecontrol.io/packages/StandardFormat
- metalliqaz 11y agoWasn't there an old standard for text format strings that could be placed at the end of source files that would be understood by Vim and Emacs? I never used it, but this reminds me of it.
- dschep 11y agoVim has modeline[0]. Is that what you meant? [0] http://vimdoc.sourceforge.net/htmldoc/options.html#%27modeline%27 http://vimdoc.sourceforge.net/htmldoc/options.html#%27modeli...
- telotortium 11y agoAnd the Emacs equivalent, file-local variables[0]. However, these are editor-specific, as far as I'm aware, although Python was able to extract the commonalities between them to support file encoding in PEP 0263[1]. [0] http://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables http://www.gnu.org/software/emacs/manual/html_node/emacs/Spe... [1] https://www.python.org/dev/peps/pep-0263/ https://www.python.org/dev/peps/pep-0263/