This started as a post to ask a question I was stumped with. But in the process of writing the question, I solved the problem. rubber ducked myself without realizing it.
Anyway, GNU Emacs is cool, and I’m deep in the hole now. I might be able to make the transition to using it as my IDE at some point, but that seems to be involved, with language servers and all that.
One thing that was driving me a little crazy was the window behavior. I was able to solve that with a plugin called window-purpose which allows you to assign modes and buffers to a specific “purpose” and then lock the window into only showing new buffers based on that information. So I can have a main editing window where all editable file buffers appear, and a sidebar with some specific buffers locked into place. It can also save that window configuration and load it later. Which I use to standardize the window configuration every time I open Emacs.
Sadly, the Emacs community on Reddit is rife with AI content for some reason, and thus it is a pretty useless source of information. I don’t really understand the subs fascination with running LLMs inside of Emacs. But I digress.
Org-Mode is pretty dope, and Org-Roam is even doper. I’ve used things like Logseq pretty extensively, but I eventually stopped using it as much, mainly because you’re locked into using their interface/editor for the whole thing. It’s nice being able to use Emacs for other text editing, and then jumping into an Org file and gaining all that functionality automatically.
I also wasn’t a huge fan of the way the markdown files were generated in Logseq, where every file is just a massive unordered list on the backend. Now, I get that Org-Mode and Org-Roam are effectively the same thing, using a header hierarchy, but it feels a lot more deliberate, and you can enter text outside that hierarchy since you get to decide when to use the hierarchy or not.
In Logseq you’re always working inside the hierarchy, which can be annoying when working externally and creating markdown files outside the Logseq application, intending them to be loaded by the system. What makes Emacs different is that I have access to all the underlying functions right inside the editor. I could use Emacs to extend Emacs’ own functionality, life, while I’m using Emacs.
If I wanted to interact with an API endpoint and take it’s output and feed it through an Org-Mode capture template, it likely wouldn’t hard. Doing that in Logseq requires writing a plugin using its Javascript API in an external editor, and packaging it up, loading it into the software, testing within the software in developer mode, then going back to my code editor to address errors and refine the tool. The development loop is just way more cumbersome.
Anyway, I could go on and on. Is anyone else using Emacs here?
I can’t wait until this site converts enough people to Linux that we can have a proper vim vs emacs struggle session.
I found a YouTube link in your comment. Here are links to the same video on alternative frontends that protect your privacy:
∞ 🏳️⚧️Edie [it/its, she/her, fae/faer, love/loves, ze/hir, des/pair, none/use name, undecided]@hexbear.netEnglish1·15 days agoI use spacemacs, which is using emacs as a medium to summon the dark lord (vim)
never used it but I’ve always had a fondness for LISP (not that I actually use it for anything…). The extensibility sounds really cool, but idk what I’d do with it. I use neovim currently if we want to get a struggle sesh goin
(not that I actually use it for anything…)
If you wanted to change that and were looking to tinker, you should check out the Guix distro; I switched largely for the chance to use Guile Scheme even more than I already was.
Do you find yourself running into any limits for package availability with guix? I’m a bit invested in NixOS, but have contemplated jumping over to guix land. I’m pretty novice though, so with NixOS I really appreciate that a lot of modules have already been written not only for packaging, but for using the packages in systemd services. I also like using deploy-rs to update all my machines at the same time.
Not terribly though (as with any more niche project) there are always pockets where this is the case.
I remember needing to verify that Guix had everything I needed or I was able to get said things, in some way, before switching (including things like the full Linux kernel and not just Linux Libre); I was able for, basically, 99% of everything. I still ended up having to package a few bits of software myself (you can look up Guix packages at https://packages.guix.gnu.org/).
That said, – while I occasionally run across a package I was curious about but hasn’t been packaged, yet – all my necessary stuff are pretty much there. And, while I’ve never used Nix, a novel experience (for me), when I switched to Guix, was being able to actually package stuff myself; there’s modules which package build systems (e.g. C, Rust, Python, Meson, Java, etc.) which take a lot of the knowledge out from you being responsible for. Again, can’t compare against Nix but it sounds similar to what you’re describing. And there are predefined services to use packages with the Shepherd service manager (since Guix doesn’t use
systemd
); I, likewise, find them helpful.I dunno if all this info.'s useful but feel free to ask me any further question (if you want); I do really love the OS so I’m always happy to help others at least try it out, even if it isn’t for them (in the end).
Also using Emacs. If you are a dev magit is another must have. Even if there was a decent substitute for it (which I doubt - saw a lot of IDE churn and Emacs was very capable of keeping up with the times) I’d still use it just to use it and Org-mode.
I use emacs as the bootloader for magit at this point. Probably a top 10 best computer programs invented by humans as it’s transformed my workflow (referring to both emacs and magit)
Magit bestows godlike powers upon anybody who wields it.
The development loop is just way more cumbersome.
I think Emacs timeless innovation is that the “Dev loop” is gone and replaced with REPL-driven interaction (interactive programming)
I swear interactive programming is the most natural and human-like way to create programs and emacs and lisp have spoiled me on this.
There is no arbitrary degree of separation between you and the program. VScode has massive overhead, Zed is a fat Rust binary, both programs have to shell out an “API” for you to abide by (they also drink the ai kool aid but thats another issue)
but that seems to be involved, with language servers and all that.
Not really, there’s a built in LSP interface with eglot and there’s also native tree-sitter support that can replace regex based highlighting. Its as easy as making sure the LSP binary is in your PATH and that the tree sitter grammar is also accessible.
Yeah I’ve learned so much from just totally fucking up my init.el file and figuring things out. I’m going to dig into learning LISP. I managed to get an implementation of LanguageTool set up (languagetool.el). I’m always fighting against the oddities of Windows, which none of these tools have instructions for.
But being able to hit
M :
and just evaluate code right in the editor is so nice. Much of my programing chops is rooted in powershell and the workflow is very similar.Running emacs ontop of windows is pretty tough. Maybe using emacs within WSL could help that.
I know in windows there’s no posix ls command so emacs has to emulate it in lisp.
I tried to get powershell working out of curiosity but it was a disaster. Eshell is actually good enough for most tasks I’ve learned. But yeah, emacs gets mad of you try replacing the shell with cmd, it comes with a shell that looks a lot line cmd, but isn’t? I’m not in front if it right now, but its done kind of middle man application.
One of the weirdest things I had to do was change where the home directory was for my profile in my environment variables. ~ would default to some appdata folder instead of my c:/users/username folder.
It’s been fine most of the time. But you have to put in the extra work of adding things to your path manually (like JDK for running the languagetool-server.jar file) because Windows doesn’t think you would ever want to run an application from the command line…
Winget doesn’t make it any easier either. Nothing is standardized. I only use emacs on windows because I use windows at work you manage our domain.