Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> The fact that everyone has to have a non-empty, non trivial .emacs file means it is maximally unsuitable - for everyone.

The fact that I have a non trivial .emacs file ensures that when I switch machines, I only have to transfer a single file to enable an identical development environment.

I can't speak for VS Code, as I've only ever played with it a couple of times, but can I do the same thing there? I don't want to spend hours finding and installing packages to recreate my dev environment, or play with various GUI settings to recreate my preferred theme. With Emacs, I can `package-install-selected-packages` on a new build, and I'm using an exact clone of my usual config.



There is an integrated settings/extensions sync feature (not yet available on the main release, probably next month). [1]

Or there is a popular extension that does exactly the same thing. [2]

Or you can also do it manually, import/export your settings in JSON and generate a list of `code --install-extension x` that you run on your other machines. [3]

[1] https://code.visualstudio.com/docs/editor/settings-sync

[2] https://marketplace.visualstudio.com/items?itemName=Shan.cod...

[3] https://stackoverflow.com/a/49398449/652669


> The fact that I have a non trivial .emacs file ensures that when I switch machines, I only have to transfer a single file to enable an identical development environment.

I just want to pull this particular sentence out for emphasis in case anyone is reading the "New employee 2 workflow at company X" comment and thinking that it's even the least bit true.


For me it is

    home-manager switch
and I don't only have my full Emacs configuration, but a full development environment with Rust, Go, etc. Though you could probably also configure VS Code that way.


Nix support for VS Code is pretty painful. Only a tiny subset of extensions are listed in nixpkgs, and those are often broken (e.g. Python) when old binary versions are pulled from the CDN.

If somebody could make a VS code extension that seamlessly pulls down other extensions by altering the nix config, it'd be perfect.


Thanks for the information! I haven't tried configuring VS Code through Nix yet. I guess I'll wait a while before doing another attempt.


I've never needed more than 2-3 VSCode packages for a given workflow. They're usually easy to find and at the top of the list when I search for a language. Settings live in a settings.json file in your home directory and/or workspace (the latter is so that shared settings can be committed to version-control). You can have both and they get merged, with the project settings overriding user-level settings.


I'm not familiar with emacs. Does that mean that you don't need to install any supporting software like indexers, linters, syntax highlighters, etc? Does the emacs file contain all that or tell it how to download all the plugins?

If you could just copy one file and get all that, that's pretty cool.


No. It doesn’t. You still need to install and configure plenty of 3rd party packages and tools that are completely outside of emacs. For C++, things like cscope, ctags (or maybe etags or gtags), clang autocomplete tooling, etc.

These, their dependencies and layouts, typically change from machine to machine, OS to OS, distribution to distribution and version to version. So placing it in your emacs config isn’t really portable.


Same for vscode? ex: if you want eslint, you install it from npm.


My experience with VS code has been a couple clicks for C++, Python (2 & 3), and a smattering of other languages and configuration files (YAML, cmake, etc.) on a fairly large (~1MLoC) enterprise code base.

Another click for remote editing over ssh.

No pain and most importantly no constant tinkering.

VS Code started very humbly a few years back and was useless to me because it only supported JavaScript and a couple other things with no plugins to speak of. It has since grown into a seriously powerful tool.


The 'one file' installs the other tools for you. At least mine does. I move between machines regularly, and when I do I just install emacs according to the recommended method for the particular OS and copy my init.el file to the new machine. All the packages I depend on are installed the first time I run emacs. And my init.el would be considered pretty basic by the standards of an advanced user.


You install something like spacemacs or doom emacs for vs code parity. And then it lazy loads packages based on the file type.

You enable features in config by uncommenting, and it auto installs.


The "Emacs file" can contain that yes. Since .emacs is written in Lisp (Emacs Lisp) you can basically tell it to do anything om start up.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: