5 ms·
If you’re running emacs 29+ I posit you get less value out of a starter kit or framework than beforehand. Treesitter is baked in for syntax, eglot is baked in
by ljm 3y ago
If you’re running emacs 29+ I posit you get less value out of a starter kit or framework than beforehand.
Treesitter is baked in for syntax, eglot is baked in for language servers (intellisense), project and tab-bar give you scoped workspaces. use-package is baked in for downloading and configuring dependencies.
Modus-themes are also built in now, so you can use modus-operandi and modus-vivendi out of the box. Two incredible themes with a lot of research invested in them.
My config is a few hundred lines of unadulterated elisp now and most of the code is around completion and fuzzy searching.
The point being, modern emacs is a lot more viable from a vanilla config now than it ever has been.
Edit: changed emacs 28 to emacs 29
- b0afc375b5 3y agoTypo, I think you meant 29+. 28 doesn't have treesitter and all the goodies you mentioned.
- ljm 3y agoYou’re right; updated.
- ashton314 3y agoI agree! But some of those things don’t come turned on/easily set up by default, hence this starter kit using only one 3rd-party package (which-key) by default and just focused on configuring built-ins to better defaults. Stock Emacs can be so comfy these days. Just still got dumpy defaults.
- weikju 3y agoMakes me want to try out a config from scratch again.. but.. need.. to.. get.. work.. done....
- ashton314 3y agoThe --init-directory flag with 29.1 makes this easy. :)
- weikju 3y agostill won't prevent me from wasting time on configuring from scratch though. I think I'll wait... LOL. Maybe.
- trip-zip 3y agoHaha. That's been my status for about 4 years. I switched to doom emacs and I keep saying, "as soon as things slow down, I'll build this from scratch..."
- evjan 3y agoI spent one day doing this a few months ago and I’m so happy now.
- TheFreim 3y ago> If you’re running emacs 29+ I posit you get less value out of a starter kit or framework than beforehand. This was actually the motivating factor for the creation of this framework. The creator posted this to reddit: > Hi, author here. I created this in response to a few of my lab mates wanting to get started with Emacs. Additionally, Emacs 29 has so much awesome stuff out-of-the box (use-package, eglot, tree-sitter, minibuffer completion improvements, etc.) that I wanted to see how nice I could make Emacs using just the defaults. I failed a little bit (gotta have which-key—best package for discoverability IMO, wish it were built-in) but by and large I think this project is a success. :) I've gotten several people started by just pointing them to this repository.
- foobarqux 3y agotreesitter is not exactly "baked in" too well at the moment. There isn't really auto-install/configuration of the grammars and as far as I can tell there isn't even a list of URLs for grammars, you have to supply those manually. There is treesit-auto which isn't quite there yet (why isn't treesit-language-source-alist populated automatically?) Compare with Mason on Neovim which is much closer to "everything just works" (and niche treesitter modes seem to be available there long before they are available on Emacs)
- ashton314 3y agoYeah, the tree-sitter situation needs some work for sure. I considered adding the treesit-auto [1] package, but that's not in /(non)?GNU-ELPA/, so I left it out. > Isn't even a list of URLs for grammars Actually there is: if you run `treesit-install-language-grammar` and answer, say, `python`, it will auto-populate with the right URL. This doesn't work with every language, (e.g. Elixir isn't on the list) but it's a start. Again: definitely needs some more work. [1]: https://github.com/renzmann/treesit-auto https://github.com/renzmann/treesit-auto
- lycopodiopsida 3y agoSecond that. In detail - IMO the decision of making of every mode a <mode>-ts variant is a very bad one and will hurt the ecosystem a lot. Now you have to remap all the major-mods and hooks and god knows what. There is also a huge mess - e.g. go-mode has nothing to do with go-ts-mode, they are completely unrelated and differ in functionality, other that one could assume based on name alone. What if the author of go-mod will decide to support ts, how should he name it, go-ts-ts-mode? Similar to evil, people will figure it out over time, producing packages similar to evil-collection, but it is again a half-assed step from emacs where I can only applaud to neovim for making right, if brave, decisions. If you have decided that TS is the future, go all-in. It is also cool how much emacs29 supports, but the quality is often meh. Project.el is an arcane mode, which updates the cache of projects very unreliably and also what it considers a project is a bit magic. Eglot is cool, but again, as everything in emacs, has big tradeoffs - DAP is bound to lsp, which brings in something like 30 packages, including treemacs - why? In short: I gave my custom config a good run, and the good stuff is good: vertico, marginalia, embark(!!), corfu are pretty cool packages. Elpaca is also very good, doing for emacs the same stuff lazy.nvim is doing for neovim. But once I've descended a level deeper into configuring it for non-lisp programming, I was clearly in for a huge yak shaving. Neovim is for me a better editor for programming, sorry for the rant.
- SloopJon 3y agoI use a mostly vanilla Emacs on macOS from emacsforosx.com, and I am definitely a laggard when it comes to adopting some of these modern features. I'd love to use eglot to make Emacs as smart as VS Code, but it takes some doing, so I'm still leaning on a TAGS file for navigation. Meanwhile, each new version seems to break something in my crusty old .emacs file. My latest frustration is that drag and drop stopped working after upgrading from 28 to 29. I don't know if a starter kit is necessarily the answer, but there's something to be said for a batteries included approach.
- schmooser 3y agoOn macOS try emacs-mac-port, it has many goodies comparing to emacsformacos.com: - The only Emacs that works with window managers, I use Magnet.app to resize windows using shortcuts - Integration with other macOS apps, like Tip.app[1], so selection (region) in Emacs is recognised by macOS and sent to Tip.app as stdin From downsides, it won't compile with xwidgets support (webkit). [1]: https://github.com/tanin47/tip https://github.com/tanin47/tip
- brabel 3y agoI've just moved to emacs 29 and was able to remove half of the stuff I had from my init file! Specially using eglot instead of buggy and ugly lsp-ui made a lot of difference. eglot does things the emacs way, not the vs-code ripoff that is lsp-ui, and it is much easier to setup.
- gpderetta 3y agoThanks for the pointer to modus-theme. Vivendi-tinted is very close to what I normally run. Time to update to 29 and get rid of more customisation!
- evjan 3y agoOh wow thanks for this. Just deleted a bunch of config and packages.
- evjan 3y agotab-bar is what I've wanted for so long without knowing it!
- ljm 3y agotab-bar and project.el are fantastic. Projectile of course gives you a load more functionality, but I prefer to use out of the box options when I can. The risk is always pulling in too much and then nuking performance with bloat, or not applying fancy packages consistently (hydra for some things, not for others, for example). My config is pretty threadbare these days, which is a relief when I plan to rewrite it in literate format.
- Corsome 3y ago> Treesitter is baked in for syntax, eglot is baked in for language servers (intellisense), Sadly the two of them don't seem to mix well together (eg rust-mode works well with eglot but rust-ts-mode makes eglot ask for LSP server binary and then still does not connect). Looks like it's early toothing problems but it's not that straightforward (at least yet).
- billfruit 3y agoIs there code-completion/intellisense baked-in as of Emacs 29? I think not. Why can't something that is built into IDEs like Intellij be built into Emacs even after 30+ years of development?
- G3rn0ti 3y agoYou don’t understand how Emacs works. It is not supposed to be an IDE from the get-go. But there are extensions that together can turn it into one. For whatever language you program with.
- billfruit 3y agoI understand that, my point was that the LSP server which is required for code completion to work is not built in/packaged together with Emacs.
- G3rn0ti 3y agoThere are hundreds of language servers out there. Even VScode does not ship all of those. Emacs‘ LSP client „lsp-mode“ tries to download them for you if possible. For example, in case of JavaScript and TypeScript you don’t have to provide it yourself.
- ljm 3y agoIt is built in, and it’s better with eglot. It’s just not enabled by default because emacs isn’t used exclusively for programming.
- billfruit 3y agoIt's not built in, eglot is only an LSP client, it requires a LSP server to function which is not included with Emacs.
- G3rn0ti 3y agoSee my comment above. LSP servers are complicated beasts coming with a lot of specific dependencies. It is simply impossible to ship all available language servers together with Emacs. Even VSCode does not do it. For popular languages it downloads them automatically for you. But this is exactly what "lsp-mode" (the alternative to "eglot.el") does, too [1]. If you are an expert in a specific language it also should not be too difficult for you to install and setup one yourself. My personal prediction, however, is this: Thanks to the advent of the static parser framework "treesitter" we will see language servers becoming obsolete in the long run. Treesitter enables an editor to load a parser backend as a plugin and on top of that provides a powerful query API to semantically analyse your code. This should be sufficient to implement all of what an external language server does already but inside the editor's process. [1] https://emacs-lsp.github.io/lsp-mode/page/languages/ https://emacs-lsp.github.io/lsp-mode/page/languages/