4 ms·
People definitely sleep on emacs, which is a shame, but I do get it. I switched to emacs fulltime for coding for my work a few years ago, and really had it tail
by grep_name 1y ago
People definitely sleep on emacs, which is a shame, but I do get it. I switched to emacs fulltime for coding for my work a few years ago, and really had it tailored to my preferences but drift (that took just slightly too long for me to keep up with while on the job) combined with AI features in other editors led me to land on Zed for code, which saddened me but is probably the best fit for coding.
However, Org-Mode is seriously a killer feature that is well worth it on its own. I use emacs to handle all my finances, notes with org-roam, blogging with ox-hugo, dotfiles in a massive org-tangle document, etc. I couldn't find anything remotely to compare it to, and have failed attempts at switching. There are tons of ways of interacting with Emacs that are just lightyears ahead of anything else. Literate programming and tangle are a godsend for tons of different use cases for me as well. I even keep running notes in the base of my codebase so I can hop to various files and capture locations in the relevant files as links in notes.
The only pain point for these tools for me is trying to use them as part of a commandline integration. I really wish org-mode and org-roam's functions were callable outside of emacs, e.g. for automated document generation from org-mode. One of the most painful things I've had to setup is an org-roam-server integration that updates and deploys org-roam-server when the git repo containing its files is updated. Only way to do that seemingly is to run emacs in a very strange way inside of a docker image. Intuitively it feels like org-roam-server should be able to build itself into a static website for deployment. Might seem like a nitpick, but it's really not -- that interface is a huge part of why I use it and not being able to host it without horribly hacky workarounds seems like a massive weakness.
- deafpolygon 1y agoWhich is why I've settled on neovim; I've written my code to be as modular as possible, so I can pull it in an CLI program if needs be.
- iLemming 1y agoNeovim is a text editor. You can't compare Emacs with just a text editor. Just like you can't compare Emacs with a browser, music player, note-taking app, email client, etc. Emacs, first and foremost, is a Lisp REPL, with an embedded text editor. Without deeply understanding and respecting this aspect it is difficult to appreciate what Emacs could be, what you can do with it. Imagine this — one morning I was watching my colleague showing me a bunch of things over a Zoom video, and I didn't feel comfortable interrupting him with "wait, don't scroll away, I didn't get that, allow me to read it", "hold on, I'm taking notes", etc. I sacrificed my lunch break to write a small Elisp command that runs tesseract to OCR the image in the clipboard. Now, I don't even have to ask my colleagues for explanations or tell them to share the url they are currently browsing — I can just grab it with a couple of keystrokes to make a note. And that's just one, single, isolated example. It cost me twenty minutes of my time. Twenty minutes of investment that paid itself many times over already. And I have tons of similar examples.
- deafpolygon 1y agoAnd this is why I stay away from eMacs.
- iLemming 1y ago"Staying away" implies understanding the perils or benefits, I don't think you ever fully understood either. My point is not to bash on your choice of an editor — I use Neovim myself (it serves me well occasionally). You "stay away" from Emacs most likely because you don't know any better. Do you use your editor to read and annotate pdfs? Or watch videos? Or manage the library of your ebooks? Or track your expenses? Or control project management like Jira? Or keep your knowledge base and note-taking? Or interact with LLMs? Or explore APIs like Postman? Or keep your spaced repetition flash cards like Anki? Or use it for chat over platforms like Telegram and Slack? Or find and read RFCs and manpages? Or to perform web-search, search through your browser history, Wikipedia, Youtube? Do you have etymology lookup, thesaurus, dictionaries, translation? Or to order pizza? Or measure distances between coordinates on a map? Automate things based on solar calendar or moon phases? Manage all your configs, aka dotfiles? List, browse and code review Pull Requests, etc., etc. Now tell me, what a sane person ever exposed to all this usefulness would ever reject it? Only those who never had patience to reach it, or those who are oblivious to the possibilities.
- deafpolygon 1y agoI only know my perspective: I get the appeal of Emacs but this is exactly where it falls short for me. It’s brittle, monolithic, and too controlling (restricting). Emacs owns the entire platform. If you want to use an external tool, you have to wrap it in Emacs abstractions. That means dealing with buffers, subprocess plumbing, or writing Elisp bindings. You’re not really integrating; you’re translating everything into “Emacs-speak.” Meanwhile, tools outside Emacs—like in a Unix shell—are composable by default. I can swap fzf for peco, tesseract for ocrmypdf, or even Neovim for Helix without rewriting my entire environment. That’s real modularity. With Emacs, everything is wired together internally, so small changes can break big things. And yeah, I can technically replicate workflows inside Emacs, but often it’s reinventing worse versions of tools I already have—eshell instead of zsh, eww instead of a browser, magit instead of plain git in a terminal. That makes it feel more like a self-contained OS than a part of the system. I’d rather keep my editor focused and compose my environment around it—not inside it. Plus, I rather do certain things in Lua, Python, shell, etc. where I can call it and run it through awk, sed, rg/grep, and so on. I can port that to any other platform and adapt it quickly rather than try to rewrite Lisp. So... to answer your points specifically -- Do you use your editor to read and annotate pdfs? -- Sure. Using my PDF editor. Or watch videos? -- I think that's a little easier in shell (mpv, vlc) or directly in a browser. Or manage the library of your ebooks? -- Calibre Or track your expenses? -- I have a tool for that. Or control project management like Jira? -- Jira or their respective tool(s). Or keep your knowledge base and note-taking? -- Neovim+Lua Or interact with LLMs? -- There's a shell script for that, browser, or the ChatGPT application. Or explore APIs like Postman? -- curl, wget, ... or Postman itself. Or keep your spaced repetition flash cards like Anki? -- Inside Anki. I have a simple shell tool that goes through them as well. Or use it for chat over platforms like Telegram and Slack? -- In their respective apps? Or find and read RFCs and manpages? -- My browser, or the shell. Or to perform web-search, search through your browser history, Wikipedia, Youtube? -- I think it's called a browser. Or the shell. Do you have etymology lookup, thesaurus, dictionaries, translation? -- Browser. Or the shell. Or to order pizza? -- Browser. Or the shell. Or measure distances between coordinates on a map? -- You got me there. Automate things based on solar calendar or moon phases? -- You got me here, too. I don't have a need for this. Manage all your configs, aka dotfiles? -- stow, git List, browse and code review Pull Requests, -- browser, git etc. -- etc. etc. -- etc. Now tell me, what a sane person ever exposed to all this usefulness would ever reject it? -- I feel like I answered this. Only those who never had patience to reach it, or those who are oblivious to the possibilities. -- I'm aware. Thanks, this was an entertaining 10 minutes to write.
- iLemming 1y ago> I really wish org-mode and org-roam's functions were callable outside of emacs What are you even talking about? It's like wishing for java programs to be able to execute without JVM, or Erlang-code without BEAM. While that's theoretically possible to a certain degree (using Graal and Lumen), it's not easily achievable. Org-mode is written in Elisp, of course it needs Emacs to run. You just need Emacs executable and you can absolutely run scripts in batch mode. I have done it many times, running tests on GitHub Actions, etc.
- jibal 1y ago"What are you even talking about?" Not understanding something is not a virtue, not something to act smug and superior about. "It's like wishing for java programs to be able to execute without JVM, or Erlang-code without BEAM." No, it's not like that. "Org-mode is written in Elisp, of course it needs Emacs to run." There are (incomplete of course) apps outside of emacs and elisp that process org-mode files. And even if there weren't, it makes sense to wish that there were. In the mind of a clear and competent thinker, the mere fact that org-mode needs emacs to run is not a reason not to wish it weren't.
- iLemming 1y ago> Not understanding something is not a virtue, not something to act smug and superior about. I'm sorry that I sounded like acting smug, I'm honestly just trying to understand what you're wishing for. An external (non-elisp) org-mode parser or something? I don't get your last paragraph in your latest response, like at all.
- grep_name 1y agoI thought I was pretty clear? It would be nice to be able to call functions from org-mode and its related packages without having Emacs installed, or with some minimal subset of emacs meant for the commandline which caters to the needs of people running headless commands. It would solve a whole ton of issues for me. In particular, org-roam-ui is amazing. To run it, I have to open emacs and then... have emacs launch it into a browser for me. But the hosted interface won't export to anything that can be statically (or dynamically, really) hosted, so I can never access this awesome note-viewing interface from the web, even though to do it locally I already have to use a browser? I have a project for hosting org-roam-ui as a website that took a ton of finagling to figure out and is extremely brittle. I had to finally load a custom .el script to prepare emacs to even try to evaluate the 'org-roam-ui' command from the commandline. If emacs prioritized headless / cli operations, this wouldn't have been such a nightmare, but it absolutely was. Just finding the right ports and re-assigning them to get out of each others way was a huge learning curve even for a seasoned emacs-er. > It's like wishing for java programs to be able to execute without JVM, or Erlang-code without BEAM No, it's not. It's wishing for basic functionality offered by all other markup languages of which I'm aware. That includes latex and everything supported by pandoc. Org-mode can do all sorts of crazy rendering tasks from its files, and it is worse than pulling teeth to get that functionality into a build pipeline of any kind.