this post was submitted on 22 Nov 2023
1 points (100.0% liked)

Emacs

313 readers
2 users here now

A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!

Get Emacs

Rules

  1. Posts should be emacs related
  2. Be kind please
  3. Yes, we already know: Google results for "emacs" and "vi" link to each other. We good.

Emacs Resources

Emacs Tutorials

Useful Emacs configuration files and distributions

Quick pain-saver tip

founded 1 year ago
MODERATORS
 

I have been a user of emacs for more than a decade. I am not a pro, but my config has swollen little by little. What really got me into emacs was the interaction with the python repl. It was amazing. Only Jupyter notebooks did something similar for me. Lately I have been using VScode, as the notebook experience for data science is very good and emacs cannot really compete here as notebooks are web based since the beggining, and vscode is an electron app. Packages like ein was just an ok replacement. Also I have been using logseq instead of org-mode, as the android app is very good and allow me to add stuff from the camera and using the pen with the whiteboard. I am mainly using org-mode to define large project files and leaving logseq for note taking.

The later but the hype with neovim and in much smaller scale with helix got me interest, as I have been using less emacs lately. So I decided to try them. And for the first time I feel I was in the presence of real competitors. Emacs has always been about text editing + poweful ide like tools added using plugins made by the community using a scripting language, in emacs case elisp. I liked VSCode despite the bloat because it was similar in spirit, a editor that can customize and make tools for using a scripting language, javascript. I never like vi/vim. Modal typing is nice for using command without modifier keys. But you could only use those commands on vi /vim, so I did not see the point in learning a typing system for some type saving. I always laugh with the emacs pinky meme, when in practice most vim users used screen and tmux and use ctrl all the time. And alt+tab for geeting to the browser. Plugins were not really enough for my coding and they were awful in comparison with the emacs ecosystem. And you can get evil mode in emacs. But neovim is a different beast. The change from the old vimscript to Lua and how the community embraced the change turn it into an editor very close to emacs. I installed the lazyvim distro, and my experience was very similar to doom emacs. Actually I found a bit better to update all the packages installed by default. And the interaction python was also closer to emacs thanks to iron.nvim. I could installed in a remote machine that I have issue installing a new version of emacs due to lack of permissions. So very nice experience.

Helix is a monolitic editor that comes with "battery include", and it doesn't have a plugin system yet (although the devs might add a scheme like scripting in the future). But the editor is much more feature complete than neovim without plugins. It lacks a repl interaction, so I cannot really use but it looks nice and might have a interesting future.

My conclusion is that editors of all kinds are becoming more and more like emacs, a core with a plugin system. Emacs is a very tiny core and the rest is elisp so you can change everything, but most people never get close to try to do that. Neovim+Lua is a good example that a you don't need so much flexibilty and you don't even need a powerful scripting language. Lua point is to be simple enough without losing too much power. Vscode+JS is a similar story. We are witnessing carcinisation for editors.

you are viewing a single comment's thread
view the rest of the comments
[–] erez@alien.top 1 points 1 year ago (1 children)

10 years of using something and you still think Emacs has a core with plugins?

I always wondered what do people think when they say emacs, usually that's kinda what you get from non-users who think emacs is, like Vi, a set of keyboard shortcuts. It's not, and those are not plugins. And besides, the core-with-plugins model is so ancient there are ruins on top of the buried ruins that are that model, so it's not new, and it's not what emacs is.

[–] MagosTychoides@alien.top 1 points 1 year ago (1 children)

I know emacs is lisp almost all the way down. But except for a few hardcore lispers and distros mantainers, most users only make plugins or simple functions to give emacs more IDE features. The core-with-plugins is old but most software and editors are not build in that way. It is what got me to use emacs. I used some IDEs before that and they were bloated as hell. The model is good and emacs is a extreme example of it.

[–] erez@alien.top 1 points 1 year ago

That's the point, it isn't. Emacs is not core with plugins. You have the core engine which is C and is interpreting everything, including the lisp code that governs emacs, and you extend and manipulate that lisp code with your own.

So first, there is not a core in the sense that most other programs see it. The core is not emacs. It's a lisp interpreter. Geared towards e-lisp and using e-lisp in a way that creates emacs, in the sense of buffers and windows and frames etc, but it's not "emacs" in the sense that vim's core is the program itself. I am not that familiar with VScode architecture, and I know it runs over electron and V8 etc, but it does have the VScode "core" on top of those, which you can't change, only tack into, with plug ins, which brings me to the next issue:

There are no "plug ins". Plug ins mean you attach a to b without influencing b other than using b's resources. When you plug in a lamp, the lamp doesn't rewrite your electricity, it just uses it. When you write lisp code, you can change fundamental elements in emacs, you can manipulate how emacs does things not just relating to your part, but to everything in emacs. You can basically rewrite emacs itself. You can't rewrite vim or VSCode or any other editor that you use.

I also don't understand what is the difference between the model in the way it has been used so far to what you see now. To me it's the same one, just different takes on the model, some more permissive, some less extensive. Just because X comes with batteries and the kitchen sink and Y comes bare bones does not change their architecture, and the idea of giving the user a scripting or configuration API to manipulate stuff while keeping the core away is as ancient as computers. That's basically how Operating Systems and programming languages work, and a lot of programs come with this model (or at least pretend to).