reddit / emacs
What is the "best" GNU Emacs set up one could have just using built-in features?
AP145 · 2022-12-25 14:32
We will make a few assumptions for this thought experiment:
1) The distribution of Emacs used will be the vanilla GNU Emacs. No Doom Emacs, no Spacemacs, etc.
2) The newest versions of GNU Emacs can be used (Emacs 27, Emacs 28, Emacs 29).
3) Only built-in features of Emacs can be used. Packages that would only work on Emacs cannot be installed from anywhere, including Melpa, Non-GNU Elpa, and even GNU Elpa.
4) Software that is independent of Emacs can be installed. A pdf reader or a Ruby interpreter, for example, could be installed if necessary.
5) The configuration file can be changed in any way so long as the previous rules are followed.
vecksagos · 2022-12-25 14:58
you may like [system craft](https://www.youtube.com/@SystemCrafters), he is working in a [emacs config](https://github.com/SystemCrafters/crafted-emacs) with only built-in packages
gusbrs · 2022-12-25 15:16
It's the one made to fit your needs. ;-)
thetemp_ · 2022-12-25 16:10
1. Menu bar: Options: review all listed items and submenu items--except for Customize Emacs at the bottom--and select options according to preference.
2. Menu bar: Options: select Save Options.
3. Menu bar: Options: Customize Emacs: Custom Themes: select favorite theme, then click Save Theme Settings (if you like the Modus Themes, make sure you're running Emacs 28+ as it has them built-in)
4. Menu bar: Options: Customize Emacs: Top-level Customization Group: review all options in all listed customization groups and sub-groups, selecting and/or entering options as you go and saving them one Customize buffer at a time by clicking the Apply and Save button before moving to the next Customize buffer.
5. Last step: Menu bar: File: Visit New File...: locate and open your `user-init-file` (on a Linux system, it's either "\~/.emacs", "\~/.emacs.d/init.el", or "\~/.config/emacs/init.el"). Move your cursor to the very bottom of the buffer. Open a web browser. For each of your favorite packages, go to their GitHub page, then copy and paste their code at the bottom of your config file.
Last step is just a joke. :-D
Real last step: Instead of copying and pasting other packages' code, enter whatever Elisp you'd like Emacs to run when it loads your init file.
And when your done... Menu bar: File: Save. Restart Emacs.
Congratulations, you have just created the best Emacs setup you could possibly have using *only* built-in features. Note, however, that what is possible will change as you learn more about Emacs and Emacs-Lisp.
your_sweetpea · 2022-12-25 17:21
The big blocker to this is major modes, IMO. Pretty near everything else can be gotten quite nice, although without anything like completion popups right under your cursor (that said, I suspect the *Completions* buffer can be made fairly nice in vanilla Emacs 29, as per [mct.el's discontinuation](https://protesilaos.com/codelog/2022-04-14-emacs-discontinue-mct/))
`fido-vertical-mode` would get you within a couple of inches of Vertico, although I personally just find it a bit less nice, overall.
Past that, I think I'd mostly only miss Magit too terribly much.
franburstall · 2022-12-25 19:09
I would miss `auctex`, `pdf-tools` and `magit` to walk this road, not to mention `ivy` and `exwm`.
TunaCowboy · 2022-12-25 19:28
Given that everything in the emacs ecosystem is built upon built-in features and/or external software the only difference between reality and your thought experiment is the amount of code you'd have to write personally.
whale-sibling · 2022-12-25 19:31
`use-package` is built-in now...
But really, "best" here is subjective. my "best" isn't going to be your "best" and vice-versa.
jvillasante · 2022-12-25 20:05
I think they will need to change they approach to package management now that `use-package` is built-in.
There's also some instabilities I had, but overall, I think this is the closer to what OP is asking.
Nondv · 2022-12-25 20:10
Is it built-in?
jvillasante · 2022-12-25 20:14
https://www.reddit.com/r/emacs/comments/zgm5qd/usepackage_has_landed_into_emacs29_branch_yeah/
Nondv · 2022-12-25 20:15
interesting. Thanks!
Craksy · 2022-12-25 22:09
Yeah. The no melpa constraint basically translates to "how willing are you to reinvent the wheel in the name of purity?"
Once you've spent days getting everything set up how you want, you'll discover that you just reimplemented a bunch of packages, and likely worse, since each of those projects are dedicated towards whatever feature they provide.
wunderspud7575 · 2022-12-25 22:20
https://github.com/SystemCrafters/crafted-emacs/issues/260
doolio_ · 2022-12-25 22:46
Do you mean `icomplete-vertical-mode`?
your_sweetpea · 2022-12-25 22:50
Either/or.
deaddyfreddy · 2022-12-25 23:31
sounds senseless
g1rlchild · 2022-12-26 02:09
For sure The Emacs that I would set up for myself would be actively frustrating to almost any other Emacs user.
AP145 · 2022-12-26 03:04
As for completion, I know that icomplete-mode and ido-mode are built-in. Do you know what the differences between the two are?
fragbot2 · 2022-12-26 07:03
With one exception--ess--I could do this:
* vc-mode instead of magit for dealing with git.
* I use hyperbole's explicit buttons for "scripting" small workflows. I'd need to write my own interactive functions instead...or would probably go back to using small shell scripts.
* Instead of nano (see https://github.com/rougier/nano-emacs), I'd just use the stock theme (I did for almost 20 years).
Magit -> vc-mode would feel like a minor loss. Relativley, hyperbole to custom interactive elisp functions or standalone shells would feel like a larger loss. Losing nano would be aesthetically distressing but my workflow wouldn't change at all.
The one package I'd really miss is _Emacs Speaking Statistics_ (ESS). Its integration with org-mode's babel would take me from writing analytical reports with embedded dynamic graphics to explicitly writing R markdown which would be an enormous workflow change as I'd probably more to R studio.
aard_fi · 2022-12-26 13:00
There's pretty much no limit with the rules you've set - you could just re-implement whatever feature from other package is useful in your configuration file.
My emacs config is several thousand lines of code, grown over the last 25 years or so, and my emacs behaves very differently from stock before adding any external dependencies - and some of that stuff I've done so long ago that I forgot it's not stock emacs, and get surprised when I do something on a clean instance.
your_sweetpea · 2022-12-26 20:38
I don't really have a deep understanding of it to be honest. They're both minibuffer completion frameworks and Icomplete is considered to be the more "technically correct" one of the two (Ido came first, I think?), as I understand it, but Ido has *some* technical merits so people don't want to remove it?
`fido-mode` is built on Icomplete but implements some kind of compatibility interface for Ido, though, so I just reach for it as my default if I don't have Vertico installed.
Mind you, this is all just minibuffer completion, not in-buffer completion. For a "vanilla" config of emacs you'd also want to take a look at `completion-at-point` and `completion-at-point-functions` for in-buffer completion.
AP145 · 2022-12-26 20:41
Oh I just meant the question to be a thought experiment. I definitely install useful packages from the package repositories. However I have been trying to get on the minimalist Emacs setup bandwagon that has been running for quite some time apparently.
lisploli · 2022-12-27 03:27
I actually have all external packages in a separate config that optionally gets loaded from the normal one. Without that, Emacs is still quite nice and still way *better* than any other editor. But it's totally not fun without ef-themes. (I use wombat. Mostly because wombats are extremely cute.) And much of the specialized development stuff is missing of course so that's no fun either.
Some rather important packages got included in the main distribution recently, and I would expect this trend to continue as more extensive frameworks get replaced with smaller alternatives that actually can be included.
Now if you would also exclude those "third party" packages that come with Emacs (my distri puts 'em in /usr/share/emacs) things would become rather uncomfy. (Is it even possible? Will try some day.)
Anyways, such restrictions are rather pointless because you generally have access to packages whenever you have access to a prearranged config. If you want to reduce complexity, and stick to the emacs world instead of using nano or busybox, mg from openbsd might be worth a try.
Craksy · 2022-12-27 04:37
I also prefer the comfort of Emacs, but saying that Emacs without external packages is still *way better than any other editor* is... a stretch. Being generous.
You *make* Emacs better than other editors. Doing that without use of external pagkages... Well, most people just don't have that kind of time to spend fiddling with configs. Or patience for that matter.
I love spending time making my setup more efficient. Making it my own. What you're describing (and what seems to be the premise of the original post) sounds more like spending time just to make it bearable. At that point, is it actually still a better editor?
Emacs happens to also be a great toy, but my editor is first and foremost a tool.
Honestly fuck purity, Unix philosophy, and OSS cultism. If it means the difference between getting work done or not, I'd install vscode.
BunnyLushington · 2022-12-27 20:01
>sounds senseless
Entirely.
lisploli · 2022-12-28 16:03
Sure, what's "best" is first and foremost a subjective thing. Others already explained that to OP and I intentionally put "better" in cursive letters because this is my opinion and for me, it is "way better".
To explain that further, (and this probably should have been included in the post above) Emacs without third party packages still retains lots of functionality that I like. For example all the personalized hotkeys, the window management, the exposure of meta information in the modeline, the dired workflow and lots and lots of little self written functions.
I evaluated nano for some of my workflows, and it is "good", when compared to a non-juiced-up Emacs but even such a standard Emacs brings a lot more to the table as described above, thus I labeled it "way better". Nano is less complex tho, which is why I use it at times, but that's probably off-topic.
And since you mentioned the [Church](https://www.gnu.org/fun/jokes/gospel.html), I did not evaluate vi because I'm not an evil person and I did not evaluate VScode (not an editor anyways) because I'm not impure. And as long as one is good and pure, everything else will be provided plenty:
The righteous has enough to satisfy his appetite,
but the stomach of the wicked is in need.
-- Proverbs 13:25
deepaknegilachu · 2022-12-31 11:45
fido-verticle-mode = icomplete-vertical-mode + flex.
doolio_ · 2022-12-31 14:38
Ah, thank you.