7 ms·
In Emacs, everything looks like a service
- fgeytk2 2mo ago[dead]
- mimo84 2mo agoI have been using emacs for the past couple of years. Started because I wanted to try out org mode and stayed for the extreme flexibility it offers.
- smitty1e 2mo agoI've been on spacemacs.org for a while, but since I've got a Keychron G6 Pro where I can reprogram the caps lock, I'm going to try out some hard-core init.el stylings. Suggestions welcome.
- mimo84 2mo agoI also started on spacemacs but then I wanted to learn the basics of it and switched to writing my own configuration from scratch. What helped me the most is reading though the Mastering Emacs book by Mickey Petersen which is an amazing resource to learn the basics and beyond. Right now I'm in the process of reducing the number of external packages I use and I'm trying to use more of the built in functionality that is available "out of the box".
- smitty1e 2mo agoNice. I'm going to go through https://github.com/emacs-tw/awesome-emacs https://github.com/emacs-tw/awesome-emacs as well as https://www.masteringemacs.org/ https://www.masteringemacs.org/
- tmtvl 2mo agoAssuming you're on GNU/Linux: (setq read-process-output-max (with-temp-buffer (insert-file-contents "/proc/sys/fs/pipe-max-size") (string-to-number (buffer-string))))
- kandros 2mo agoOne of the pivotal moments in my career has been when I used Emacs just enough to truly understand what "Emacs is an operating system" means, not just as a joke but as something I could believe in
- bcjdjsndon 2mo agoBut you already had an operating system and you could already code... Did Emacs really give YOU any capability you didn't have before? Don't forget this is a text editor, not an IDE or some general purpose automation harness You could add lisp to mspaint and mspaint suddenly becomes awesome somehow? I don't follow the logic
- rausr 2mo ago> Don't forget this is a text editor, not an IDE or some general purpose automation harness It's more correctly a Lisp execution environment with a text editor added as a bonus ;)
- noufalibrahim 2mo agoA lisp interpreter with text editing primitives.
- DonHopkins 2mo agoAnd dynamic buffer local scoping.
- ryukafalz 2mo agoIt certainly did for me, because it let me trivially write code that integrates deeply into the rest of the system. A simple example: I wrote a function that let me highlight an X.509 cert in a YAML document, regardless of indentation, and pass it to 'openssl x509' to show me what it is. This has saved me lots of time over the years not having to copy/paste, fiddle with whitespace, etc. But it's only valuable because the functionality is now right at my fingertips in the environment I'm already in!
- pjmlp 2mo ago> A common refrain is that Emacs is an operating system (OS). This isn’t true, but what invites comparison to an OS is its ability to orchestrate applications and utilities above the OS kernel level. Only because Lisp Machines, or variations thereof didn't took off in the mainstream. "Symbolics Lisp Machine demo" https://www.youtube.com/watch?v=o4-YnLpLgtk https://www.youtube.com/watch?v=o4-YnLpLgtk "Emacs and Lisp" https://funcall.blogspot.com/2025/04/emacs-and-lisp.html https://funcall.blogspot.com/2025/04/emacs-and-lisp.html While Emacs was forked by Lucid as XEmacs to make one of the very first ideas of LSP, nowadays most features have been integrated back into Emacs https://dreamsongs.com/Cadillac.html https://dreamsongs.com/Cadillac.html "Lucid Energize Demo" https://www.youtube.com/watch?v=pQQTScuApWk https://www.youtube.com/watch?v=pQQTScuApWk
- deterministic 2mo ago> Only because Lisp Machines, or variations thereof didn't took off in the mainstream It apparently turned out that it was more efficient to compile Lisp to a "normal" CPU instead of using an expensive custom non-generic "Lisp" CPU.
- charcircuit 2mo agoEven if LISP machines took off, an editor running on them still would not be an OS. Such claims come from people who don't understand what a platform is and who can conflate any platform with an operating system. You also see these people calling web browsers operating systems. By this flawed definition you could even call things like Roblox an operating system.
- pjmlp 2mo ago"An operating system is a collection of things that don't fit into a language. There shouldn't be one" -- Dan Ingalls
- bcjdjsndon 2mo agoIn the Linux world, isn't the c compiler necessary for Linux to function?
- driva 2mo agoIt's a shell not an operating system but the concept of a shell isn't commonly understood.
- archargelod 2mo agoI see shell as an instrument through which you use other tools. In that sense, vi feels much more like a shell, because you have to use other standard unix programs with `:.!` for much functionality. Where Emacs comes with all bells and whistles included in one big distribution, much like an operating system.
- cturner 2mo agoSomething that undermines the operating system angle is that emacs does not implement hardware drivers. All interaction with the computer go via system calls. Norton Commander contains a text editor. Emacs operates at that level, whilst being reprogrammable.
- regexorcist 2mo agoMost people aren't using vim that way. For your example, tmux would be more like emacs in the sense that you live in it, manages your windows, etc. Vim is just another tool in some window along with others.
- girvel 2mo agoI did not get this argument. Diagrams are nice, and I probably missed something in lisp code (not used to lisp syntax), but I see no argument that Emacs has more service-like interaction with other apps or its plugins than say vim or vscode. I agree that emacs is the most OS-like, but I would love if someone explained what exactly is the point in the article
- floathub 2mo agoCame across this recently, which I find is a good and short intro to Emacs for people who don't use it: https://www.youtube.com/watch?v=mJZDmO5yOxE https://www.youtube.com/watch?v=mJZDmO5yOxE
- pedro_caetano 2mo agoNow I am really curious to see Anon Emoose's init.el
- deng 2mo agoThis just proves that you can cram pretty much anything into the client/server dichotomy if you just define "client", "server" and "request" broad enough. Similarly, I remember how desperately people tried to argue that Emacs follows the "Unix philosophy" as long as your LISP functions are doing just one thing, and do them well. I don't know what you would gain from these things. Emacs follows the idea of LISP machines, I think that much anybody can agree on. From there, Emacs can be or do pretty much whatever you want. It's excellent in communicating with CLI tools - you can call that client/server if you want, but I wouldn't know what you'd gain from that definition. The reality is that Emacs has gone through a lot of fads and hypes over its decades of existence, and each time, it has taken something along the way. Heck, there's a whole semantic parsing engine buried within (CEDET), which nowadays is pretty much unused, because then LSPs came along, and now we have agents (which Emacs btw is a pretty decent frontend for).
- znpy 2mo ago> Heck, there's a whole semantic parsing engine buried within (CEDET), which nowadays is pretty much unused In fairness that used to be common to have in most IDEs. I don’t know if it’s still the case but i remember that the first java language server was spun off the Eclipse’s java semantic parsing engine.
- stormking 2mo agoEmacs is a LISP refugee in Unixland. It doesn't follow the Unix philosophy, it follows the LISP philosophy. But it integrates. Forgot where I found this.
- rshackleford1 2mo agoBash is a shell refugee in Unixland. It doesn't follow the Unix philosophy, it follows the Shell philosophy. But it integrates. Why do you say such silly things?
- im3w1l 2mo agoUnix philosophy clearly favors and privileges certain methods of composition and interoperation. C-calls, program invocation, files and sockets/pipes. Calls inside various vms like lisp, java, python or wasm are not among those.
- bitwize 2mo agoIn Emacs, everything looks like a part of the core system. The whole thing is just one unvariegated blob of Lisp, which could be a strength or a weakness depending on your perspective. Me, I happen to like that sort of thing.
- kleiba2 2mo agoI've been an Emacs user for over 25 years. But last year I switched employers and they won't let me use it even for tasks where it would absolutely shine. Their argument is that all team members should use the same tools, and I guess that is a valid point. Unfortunately, I failed to convince my employer to make everybody else switch to Emacs. So, now I'm using lots of one-purpose tools, one for each separate task, a good deal less efficiently than I could use Emacs, and I'm still learning all the new UIs and keyboard mappings.
- jerf 2mo ago... how would they tell?
- kleiba2 2mo agoBy looking at my screen? But also, why would you disobey a direct instruction from you super?
- skilning 2mo ago> why would you disobey a direct instruction from you super? Because the instruction was stupid, based on marketing instead of utility, or otherwise given without any thought to how it impacts the actual day-to-day work of their subordinates. Why WOULDN'T you disobey a stupid instruction? What's the difference between "stop using this tool you're productive in and switch to this one that you're demonstrably LESS productive in for no reason other than I heard it was a good idea", and "Go strap some rocks onto your ankles and swim the English channel. I heard that was a good idea."?
- cindyllm 2mo ago[dead]
- deleted 2mo ago[deleted]
- BeetleB 2mo ago
- agentultra 2mo agoI learned a while ago that eMacs is more like a programming environment that has a text editor built in. Sort of like some SmallTalk images. When you think of it this way it’s pretty neat.
- SoftTalker 2mo agoEmacs itself can run as a client and server. To start the server: emacs --daemon Then use `emacsclient` to connect to it. All `emacsclient` instances whether in terminals or GUI are using the same server and can access the same open files and buffers. Unfortunately it only works locally. I've tried to forward the emacs server socket over ssh to a remote client and it doesn't work.
- rozularen 2mo agocould you see the reason it didn't work?
- SoftTalker 2mo agoIt's been a number of years, and all I really remember is coming to the conclusion that "emacsclient only works with a local server." It uses a domain socket for this, but forwarding that from a remote server doesn't seem to be enough. Simply editing a remote file over an ssh connection is easy enough using TRAMP, but that isn't the same as accessing existing buffers in a remote server.
- MarsIronPI 2mo agoForwarding the socket doesn't work, but if you use X11 then you can use `ssh -X`, and the remote Emacs will open a frame on your local X server. Do beware though that if you use the non-PGTK GTK build, closing this new frame will crash the remote Emacs.
- jolmg 2mo ago`ssh -X` has awful performance for some reason. You can see each line render individually when invoking the Info manual on Emacs even while within LAN. It's better if you enable TCP connections on your X11 server, setup a Wireguard VPN between your Emacs host and your X11 server host, and a firewall to only permit X11 connections over that. Throughput and latency then should be so good the remote Emacs window/frame will be indistinguishable from local ones (at least within LAN, haven't really tried over the internet). > Do beware though that if you use the non-PGTK GTK build, closing this new frame will crash the remote Emacs. Guess I've used the good one. Haven't had this problem. What I do have is that if you open a frame in a host that you then put to sleep long enough for the X11 connection to timeout on the Emacs host, then `emacs --daemon` will crash. When I've used it, I've just made sure to save buffers often. systemd would start `emacs --daemon` again on its own. `emacs --daemon` has no problem using multiple simultaneous X11 connections to different hosts, but it just doesn't handle the connections closing on their own. It also doesn't itself close X11 connections when all frames to an X11 server have been closed. So even if you close all of a machine's Emacs frames prior to putting it to sleep, it still causes `emacs --daemon` to crash.
- adi_kurian 2mo ago[dead]
- cyboru 2mo ago[dead]
- kickingvegas 2mo agoOP here. This post resonated far more than expected. Thanks all for the feedback!
- deleted 2mo ago[deleted]
- jhalloran 2mo agoOne thing that's easy to forget is how much of the "everything is a service" idea predates LSP. Emacs had long-running subprocesses, RPC-ish interactions, TRAMP, GUD, REPL integration, etc. LSP standardized one important interface, but it wasn't the beginning of the architecture.
- GregDavidson 2mo agoEmacs is a Platform. Operating Systems are also Platforms. Many other things are platforms. A platform is a layer of software designed to enable you to build new things on it. This should raise the question: What platform X would be good for building this thing Y I want to build? I often find X = Emacs, but also Racket, Rust, et al. An application which is also a good platform may be worth a greater learning investment than a simpler application would justify.