Wish something be done about proper threading support, but I understand it's a herculean task at this point.
(For those unfamiliar, GccEmacs is a parallel branch of Emacs that uses libgccjit to compile ELisp straight to native code. It does it transparently - compiling in the background and then substituting bytecode-compiled functions for native-compiled.)
I would agree about adding concurrency and parallelism; but threading is very much a WorseIsBetter approach, which I certainly wouldn't like to use directly.
Co-routines or futures would seem a better fit for Lispy semantics. Actors seem too different and heavyweight, but I'd still prefer them to threading!
What is the aim?
Edit: I could see some things like syntax highlighting being a benefit. Though, I somewhat expect those to already be moving to lsp tricks. Layout, in general, makes sense to be a bit more responsive. But I'm not clear how general threading helps with that.
Edit2: are there good benchmarks for emacs to look at and play with?
But there are a lot of various smaller things in Emacs and elisp module ecosystem that would benefit from being able to run off the main thread. Emacs performance is fighting death by a thousand cuts, with almost everything being tied to the main thread (despite async features being used to pretend it's not).
--
I would guess Eww would have a similar issue, although I've never been able to get it to work (I use emacs-w3m, which has a separate process).
I've found some programming modes to be very slow and prone to freezing; most noticably Scala using Metals (which uses lsp).
That said, valid points. I am curious to benchmark parts of emacs now. (I turned off most programming features, since most of my code is remote and the network at home kills me.)
For Gnus it was using the built-in fetchers like nnrss, which would block the Emacs process until downloads finished. Using a cron job to fetch RSS feeds avoided this, but it would still take a while to check for updates even from local files. This was around 2012, so Gnus might have improved since.
FYI my current setup is described at http://chriswarbo.net/blog/2017-01-14-rss_to_maildir.html
Most of the Emacs code I've seen that spawns a process spawns a short shell script: no custom binary needed.
Since then, Evil-mode has effectively superseded it. I wish I had learnt vim-like editing a long time ago, as Vim-bindings seem to be mostly well-maintained in every editor.
Emacs-bindings are also in most editors, but it's not as useful since people (most people? in any case, me) usually customize the default shortcuts quite a bit. And less manpower to maintain them.
At work, I had to make some simple modifications in a go project. I've never done go before, so I had to google how to add support for it on emacs. There's always more than one choice, which one is the best maintained package? Is there an optional but ubiquitous plugin that will make it more enjoyable?
With Doom, you just add the go layer and you're good to go. I'm fine spending time setting up, i.e., a clojure config, since I use it all the time. It's well-spent effort. Not as much for a language I seldom have to use.
https://github.com/hlissner/doom-emacs
edit: Changeed Spacemacs to Doom Emacs, whoops.
I'm guessing you meant to say Doom Emacs there?
That is a fantastic description of Spacemacs
[1] https://magit.vc
[2] https://www.emacswiki.org/emacs/TrampMode
I can't wait for it to hit release so everybody can play with it!
Is there a way to have emacs with custom shortcuts as a ready package where I can modify those shortcuts before digging in with all the rest.
I do not mind keyboard shortcuts in gneeral and use them all the time, it's just those in Emacs are hard to learn/remember knowing that I wish to change them anyway .
I am looking for the way to set those by myself but it seems I need to learn a lot before I can do it and thus it blocks me from moving forward with exploring Emacs deeper.
I've got a very custom Emacs keybindings/shortcuts setup but... Sadly it requires some hackery: basically there's the whole major/minor modes shenanigan where one mode's shortcut can take precedence over the other(s). And if you want to define your own shortcuts which take precedence, all the time, over everything else, you need to dig a bit deep. And then even deeper because invariably there's this or that minor mode you'll want to use where after all you won't want your own shortcut but that one of the mode.
> I am looking for the way to set those by myself but it seems I need to learn a lot before I can do it
Sadly this is true. I've got I'd say about 100 lines of code related only to keybindings. Now, once set up, it's pure bliss. For example I've got mod+{i,j,k,l} to move the cursor around, anywhere (text, menus, anything). It makes even more sense than vim's hjkl (ijkl mimics the cursor arrow keys layout, which is more natural and ijkl is easier to type than hjkl too).
> ... and thus it blocks me from moving forward with exploring Emacs deeper.
I can understand that. I'd say the easiest would be to define your own minor mode as explained here:
https://stackoverflow.com/questions/683425/globally-override...
This should get you started: if you do it like in the answer and make sure they always take precedence you should be good to go and can deal with the gory details later on.
Still in early stages, but I think that's one to keep an eye on.
Unfortunately, most seem to be relatively dead from what I've seen.
That and tramp not working too well over crappy internet. :(
; use ssh instead of scpx mode for tramp
; this should work a lot better with ssh connection sharing
(setq tramp-default-method "ssh")That is, a lot of my remote editing is not just idle edits, but edit, run build, burn down compile output of tests and other items I'm working.
If I really want hell, I'll try and run lsp remotely.
None of this would matter, if I hadn't built up so much muscle memory from when I did have good internet and it did just transparently work.
For the large XML files, I have to switch to fundamental mode, because it struggles to highlight everything, and sometimes the xmls are pure ass and are basically all on one line. I've written a python script that will prettify the xml because emacs locks up when I try to do that. My colleagues just tell me to use sublime text.
I'm curious why other editors don't trip as badly on long lines.
Emacs rewards me for learning it better, and when I think about what it does, and is capable of doing, I'm just in awe. I highly recommend reading Mastering Emacs if you would like to become a more effective Emacs user.
After using it for years I can say my single biggest gripe with Emacs is its performance. Elisp is powerful but slow, and has many warts. The developments with GccEmacs excites me, and there is still GuileMacs. As a more experienced user Emacs frustrates me because at times I demand too much of it. And when that happens, I try to temper that frustration with the understanding that the program is 36 years and 5 days old to the day, and has outlived many other pieces of software. Computers looked different in 85 than they did today, and the fact that I have saved truly days of programming time due how effective it makes me cannot be overlooked.
I want Emacs to continue to improve. I want it to get even better than it already is, but I am so grateful for the people who have made it what it is today.