Emacs 27.1
lists.gnu.org
lists.gnu.org
Though it's bleeding edge, I haven't experienced any issues: everything just works.. faster!
It always amazes me that some people are willing to put in such hard work, alone, for open source. The fact that one guy managed to speed up all of Emacs 2x-20x in his spare time for no pay is frankly amazing. Certainly puts my side-projects to shame.
For many people this is about scratching an itch, their own itch.
They improve upon it not for the sake of "open source", but for the sake of making the very same tools they rely on to be better tools.
This is how open-source used to work, and this is how it grew.
Apart of a few well known projects, the open source world is not so rosy.
I'm building an app that exports GPX files (XML file where you can store GPS positions, POIs, routes etc).
All the examples files on the official website ( https://www.topografix.com/gpx.asp ) are broken (they return a blank page) and to validate that your file is compliant you have to compile a 15 years old C++ library first (for some reason they refuse to release a binary).
I have built my own OSM server to pre-generate tiles so my app has offline capabilities (I have a very slow internet connection so online maps are quite laggy).
I use it mostly to build routes that I export as gpx files to my Android phone (vehicle nav with Osmand and trekking with Iphigénie).
Solved a lot of weird open formats issue we had
My point was not that GPX is hard (it's not) but that when something is open source most of the time you have to put some elbow grease in it because no one is paid to make it polished.
FWIW, it took me less time to write the GPX export code than to look for a binary of the validation tool, fail, then launch WSL and compile the goddam tool.
Here's the update log of the project.
an OSS project will do so much and may die, the next one will try a new branch (from scratch, influenced a bit by the other or fully reusing the old ones)
to save energy it's good to think and plan for continuations.. your project will be much more useful if kept clear so other can jump in and extend or rewrite it without struggle
There was some minor brokenness native comp caused to my setup so still not using this branch. But most stuff did surprisingly work perfectly well.
FWIW this is libgccjit-10-dev, the most recently available package I could find in my install (debian based Google gLinux).
Not sure if I have the motivation to go build it, but who knows! Beats writing design docs, which is the other thing I could be doing ;-)
mkdir gcc
cd gcc
git clone git://gcc.gnu.org/git/gcc.git src
mkdir build
mkdir install
PREFIX=$(pwd)/install
cd build
../src/configure \
--enable-host-shared \
--enable-languages=jit,c++ \
--disable-bootstrap \
--enable-checking=release \
--prefix=$PREFIX \
--disable-multilib
nice make -j4 # altering the "4" to however many cores you have
[0]May need to install some prerequisites listed here https://gcc.gnu.org/install/prerequisites.html (the error message from the configure might not be obvious so better go through the list first, think I needed MPC and MPFR, whatever I found with apt-cache search libmpc and libmpfr worked).
And then configure and make emacs with PATH, LIBRARY_PATH, LD_LIBRARY_PATH including your gcc build (install/bin and install/lib).
[0] taken and modified from https://gcc.gnu.org/onlinedocs/gcc-6.4.0/jit/internals/index...
edit: formatting
https://gist.github.com/AllenDang/f019593e65572a8e0aefc96058...
upd: Looks like the proper way of building is with gcc, but it builds without GUI. I need GUI.
Thanks for all your great tips on Twitter, btw. :)
I might try compiling it on my personal machine this week while I’m at work. I’ll keep you informed as well if anything interesting happens.
If so, you might want to get in contact with the author. I imagine that OSX isn't as well tested as Linux.
(setq comp-speed 3)
Then you should tell it to recompile all of your elisp files: (native-compile-async "~/.emacs.d/elpa/" <n> t)
(native-compile-async "<path/to/system/elisp/files>" <n> t)
Where <n> is the number of threads you want. It's also possible than you have deferred compilation and that's the problem?I did have to use clang instead of gcc to get past some errors about not finding Appkit.h. I'll have to do more digging and try and get gcc working. Thanks for your help though!
Adding harfbuzz gives emacs much better text shaping and let’s emacs get rid of whatever ancient library they were using before. Similarly the old dependency (and security liability) on imagemagick can be dropped.
Other improvements should just allow certain elisp code to use C functions to run faster. I think it is a testament to the versatility of emacs lisp as a language that these things were good enough while implemented in pure elisp that they could still be productively used, so no one needed to first request new C functions before they could implement e.g. lsp clients or calculators.
FTI "If you give HarfBuzz a font and a string containing a sequence of Unicode codepoints, HarfBuzz selects and positions the corresponding glyphs from the font, applying all of the necessary layout rules and font features. HarfBuzz then returns the string to you in the form that is correctly arranged for the language and writing system."
https://harfbuzz.github.io/what-is-harfbuzz.html#what-is-tex...
Now... Now that I am on 4g internet... I admit things can feel slow wicket than I'd care for. :(
Tramp is agnostic in most things (well, you need an ssh client at least).
These days I just tmux on the server, open emacs and hack away (as long as you can install things on the server).
TRAMP also feels faster to me; I presume it's due to background jobs adjusting their casual I/O usage when TRAMP is detected, like writing backup/lock files, scanning directories for VCS info, etc. which has high latency on SSHFS.
I also like using `/sudo:root@localhost:/foo` for editing local files with different user permissions (plus the same command and terminal behaviour as with SSH)
/ssh:you@remotehost|sudo:remotehost:/path
Doing any further actions on a file opened that way also applies the hops there as well. For the example above opening a shell or running a shell-command would run those through sudo on the remote host.[0]: https://www.gnu.org/software/emacs/manual/html_node/tramp/Ad...
Within a few days I migrated all my note-taking and task-managfement-systems to Emacs. Previously I was using Evernote, Bear app, Ulysses app for note taking and TaskPaper + OmniFocus for project management.
Emacs + Org-Mode replaced all those apps and many more. And it makes me `dance' with my data by using Elisp to transform all my data into ways I need and want.
I realized that I didn't use Emacs to its full potential in 2013 because I was reluctant to dive into (E)Lisp. This time I made a full dive into it. And I am absolutely loving it. I had some contanct with Scheme some twenty years ago, and that influenced me very much. But CL and Elisp offer much more.
Emacs does not need to be an IDE, but it can be a decent one. (Yes, I know and use intelliJ: PyCharm and PHPStorm). It can be used for everything text: Note taking, programming, transforming text. But via org-mode for much more than text: Project- and task-management, ascii-tables, note-management system. I even initiate my Google searches from within Emacs and keep a track of my searches via org-capture.
Thank you for all the maintainers!
--
Edit:
- I am a user of a Mac with a US keyboard. Using an app named "Karabiner Elements" to remap my keys. I have my caps and enter key behave like a Control key whenever I hit them in combo with other keys. That way I have two control keys in reach of both my pinkies.
- r/emacs and r/orgmode are super helpful communities
- learn to program in Lisp and have a look at Lisp macros. That's a very useful concept to write DSLs to transform code very easily. - scratch buffer is your friend in learning elisp. Place the cursor after the last colon of your code and hit `C-x C-e`, that will evaluate that line.
- Learn about debugging your Elisp code. Edebug (`edebug-defun`) is your friend. See http://blog.binchen.org/posts/my-work-flow-to-debug-emacs-pl...
- Be patient. Once you have mastered the basics, you'll fly!
How do you recommend diving deeper? I feel like there is so much to Emacs that would make me much more productive, but I'm apprehensive to dive below the surface
Re diving in Lisp:
1. I deleted my previous `.emacs` file and started from scratch.
2. I learned all about the internal help system of Emacs. `C-h f' will let me look up help for a function (it's "docstring"), `C-h v' will let me look up a variable, etc. - Navigating help via `C-h i' and then 'm' (for menu) will let me search the TOC entries in the help page. `l' (lower L) will let me go back in help.
3. Read good old recommended Lisp books. Seibel and many more are the classics.
4. Write code! Practical code that you need. Solve problems. Think of use-cases. - For instance, I needed to parse my Kindle annotations, which are saved like a log file in a file on the Kindle itself (the file is named `My Clippings.txt'. I had written a parser in Python to get the entries out of the file, now I did it in Elisp. Or you need a convenience function that performs several steps you need daily in your text-editing or org-files (creating template files, navigating the headars, whatnot).
5. Read the source code of the packages. They have wonderful examples for how to write code in Elisp. For instance `org-table.el'. It gave me many ideas for how to write idiomatic Elisp. - You can go to the source code of a package by looking up a function you use (`C-h f org-table-create RET', then click the hyperlinked package name `org-table.el'; that'll bring you right to the function in the package).
6. Read good code. For instance: Magnar Sveen. He has written many excellent packages. `dash.el' and `s.el' and some more. Check his github, read the code, and check his http://emacsrocks.com/ videos.
---
[^1]: "The names of procedures and syntactic forms that cause side effects end with an exclamation point ( ! ).". Source: https://www.scheme.com/tspl2d/intro.html
I'm starting a new project this week, and a fresh, empty org-roam database in my Spacemacs instance is really nice. I'm filing all these links and little org documents with references to each other and documenting my learning as I go. I'm also using Karabiner, Spacemacs, Org-Mode, etc etc. The Emacs subreddit is consistently one of the most helpful out there, it's fantastic.
(I used a new, clean org-roam database in an empty ~/Org folder because I wanted to leave behind all the cruft and stuff from the previous project, including potentially client-specific stuff.)
(ooh, ooh, I forgot: Emacs and org-mode are 2 things I donate to monthly. Emacs via $10 to the FSF, and org-mode via $5 via Github direct to the maintainer.)
Edit: Re "I used a new, clean org-roam database in an empty ~/Org folder because I wanted to leave behind all the cruft and stuff from the previous project, including potentially"
Exactly what I did and what gave me a boost in learning Emacs+Elisp and a fresh start. My old `.emacs' file was holding me back!
With a good keyboard setup (two Control keys on the left and right) Emacs keybindings aren't that bad. Actually I like them.
I use Spacemacs which is also a community made emacs configuration and it's great. The fact that I could have made the customization myself does not make this configuration any worse.
If anything I found doom to make it easier to stay close to the 'intended' way to customize emacs, since it heavily encourages you to use 'use-package' and 'general.el' to manage your extensions, and gives you good startup performance if you use them as intended (allowing the lazy-loading to do its work).
Although it's possible I was simply more familiar with the 'right' way to do it when I moved to Doom from Spacemacs. Either way I got the impression it felt quite close to the way to manipulate 'native' emacs (but with a lot of sensible defaults that I couldn't be bothered to figure out myself).
1. Languages where people put a lot of effort into implementing bespoke support inside Emacs itself (as Elisp packages)
2. Languages where no one bothered to make Emacs-specific features, but are now supported quite well via LSP
Python seems to be in the #1 camp, and that seems to be what you describe.
The #2 camp, however, is superior in my experience, so I would suggest trying that instead.
I haven't worked that much with Python for a while, but at one point I used lsp-mode and pyls and it seemed pretty good: https://emacs-lsp.github.io/lsp-mode/page/lsp-pyls/
You can also choose Microsoft's Python LSP server instead: https://emacs-lsp.github.io/lsp-python-ms/
1.1. Languages where people have written full parsers and analysers in Emacs Lisp.
1.2. Languages where the Emacs support relies on external programs to provide intelligence.
Only very few languages (e.g. JavaScript) fall in subcategory 1.1.
Similarly, while js2-mode's built-in formatter is quite good, Prettier is both more (and more easily) configurable and more shareable - it can enforce an agreed-upon style at the codebase level without any editor-specific tooling or configuration, and the consequent absence of bikeshedding is welcome.
Something about how we used CMakeLists and had our project set out made it difficult to get autocomplete/gtags and everything to work the way I wanted.
I know it's possible, but could never get everything to play nicely together.
On the other hand, every other language I've had a brilliant experience with in emacs (using spacemacs).
- lsp-mode (IDE smartness) - company (completion pop up) - selectrum/ivy/helm (command awesomeness) - projectile (project management) - magit (greatest Git interface you will ever use)
I believe the amount of people disliking magit fits on one digit
That's one of the hardest parts of trying to config Emacs in general -- so many packages and they all seem to do the same thing and I think I need just one but sometimes people have like, all of them installed. It's confusing!
https://github.com/ashton314/.dotfiles
I use selectrum for just about everything. The only reason I keep ivy and counsel around as for the packages counsel-rg (ripgrip with real time results) and swiper.
It is a very good question you ask. I have spent many months experimenting with these various packages. I actually wrote a blog post about switching from Helm to Ivy. I suppose I should write a follow up on about switching to Selrctrum.
If you would like to talk more one on one, please DM me via one of the channels listed on my blog:
- Spacebar “leader” key. If you’re familiar with Vim, space is your leader key, and many functions lie behind it.
- Layers. Spacemacs has a packaging system called “layers” that are a collection of curated Emacs packages. The great thing about layers is all the wiring the layer author has done. Many packages are condensed down to a one-line config. Just add “python” to the array of installed layers in your config file and it will install a lot of what you have above. There are a few config toggles (e.g., override the language server that is used by default), but they are pretty well documented in the Spacemacs docs.
Also, use the Spacemacs develop branch! I’ve been on it for years. Master has not had many (any?) updates in a long time. If you do this make sure you are reading the docs for the develop branch when perusing layers online!
Oh and if you are a security conscious user, you might not like the fact that Spacemacs downloads tons of code which might or might not have been reviewed by someone you can trust and might or might not have been signed...
I've been on develop for ages, and don't really remember many breakages, I do however only pull sporadically.
Doom Emacs is a way better choice now IMO.
Like, I'm jumping ship as I write this. My job for the next few days is converting my config to Doom.
I might go back and see if I can get the native-code version of Emacs running with Spacemacs, it might speed it up.
Drop emacs and look elsewhere.
How? if you turn your text editor into an IDE with plugins then you make Emacs an IDE. In my mind an IDE "understands" the entire project not just the opened file.
A high quality language server can provide 99% of what a high quality IDE can (like Intellij). IDEs still have an edge, like with debugging, profiling, or SQL db integration. I've mostly ditched Intellij in favor of Emacs for a large Scala project, something I wouldn't have ever dreamed of doing 5 years ago.
I still use Intellij for debugging, but hopefully debugging servers and some Elisp will solve that problem soon.
- Visual representation of data structures
- Navigating in binary libraries
- Architecture diagrams with two way editing
- Integration with ticket and source control systems, so that I can relate an issue with a branch and respective set of changed lines of code
- Live unit tests
- Live static analysis, as one types
- Incremental compilation, when hitting run almost everything is pre-compiled
- SQL database integration, ER diagrams, OR mappings generation
- Management of server instances and cloud services
- Memory profilers
- GC tuning tools
- Code metrics
- Graphical debuggers for GPGPU programming
- Graphical debuggers for threads, tasks and processes
- Handling of processes as single project for micro-services debugging
And a couple of other stuff, basically the kind of goodies one gets with Visual Studio Enterprise.
- learning curve thats significantly smaller despite larger feature set.
- find definition
- find usages
- rename
- extract method
- detect code duplication
- highlight unused symbols(vars or functions)
- understand frameworks and libraries
- can suggest useful transformation or code simplification
- Intellij can understand type documentation like JSDoc and PHPDoc and use it in completion and highlight errors if using the wrong type or object member
- smart spellchecking, spellchecking that understand when it is in a comment or if it is a symbol name
- good VCS support(diff, commit, push)
- good debugging support
- IDEs have by default a lot of linting and code analyzing tools setup, trying to go from Intellij to VS Code defaults is a big downgrade , maybe it could be partially fixed by installing many plugins but I personally want to pay for a good program made by professionals and keep them profitable(and not have JetBrains fail or get bought by Google or Microsoft)
> - find usages
> - rename
Emacs has these covered, especially when using LSP modes
> - extract method
I don't know what this is, sorry
> - detect code duplication
> - highlight unused symbols(vars or functions)
This is what linters and static analysis tools are for, and emacs integrates with them nicely via flycheck.
> - understand frameworks and libraries
not sure what this implies, sorry
> - can suggest useful transformation or code simplification
> - Intellij can understand type documentation like JSDoc and PHPDoc and use it in completion and highlight errors if using the wrong type or object member
More static analysis tooling, doesn't need to be built-in to the IDE, just hooked in with something like flycheck.
> - smart spellchecking, spellchecking that understand when it is in a comment or if it is a symbol name
emacs can kinda do this via flyspell but it's not perfect. You're right, this is a good idea.
> - good VCS support(diff, commit, push)
magit!
> - good debugging support
I'm mostly clueless here, sorry.
> - IDEs have by default a lot of linting and code analyzing tools setup, trying to go from Intellij to VS Code defaults is a big downgrade , maybe it could be partially fixed by installing many plugins but I personally want to pay for a good program made by professionals and keep them profitable(and not have JetBrains fail or get bought by Google or Microsoft)
aye, there's the rub. I suppose the "I" in IDE is the real value: the package deal with all the linters and analysis tools already hooked in. Various LSP modes have made it vastly easier to reach feature parity with this stuff in emacs with minimal effort, but I also definitely understand why things like Intellij are desirable and useful.
>not sure what this implies, sorry
A couple of things off the top of my head:
— list all HTTP endpoints in a Spring (or whatever) application, with their arguments, input and output format, possible error codes, etc.
— DSL completion, as in this example (pay close attention, it's not SQL): https://www.jetbrains.com/idea/features/screenshots/16/why_i...
— an ability to quickly jump from an ORM model to its corresponding database table
Stuff like that.
Threads
* New variable 'main-thread' holds Emacs's main thread. This is handy in Lisp programs that run on a non-main thread and want to signal the main thread, e.g., when they encounter an error.
* 'thread-join' now returns the result of the finished thread.
* 'thread-signal' does not propagate errors to the main thread. Instead, error messages are just printed in the main thread.
* 'thread-alive-p' is now obsolete, use 'thread-live-p' instead.
* New command 'list-threads' shows Lisp threads. See the current list of live threads in a tabulated-list buffer which automatically updates. In the buffer, you can use 's q' or 's e' to signal a thread with quit or error respectively, or get a snapshot backtrace with 'b'.
When I mean an IDE understand a library an example is jQuery, an IDE can have a plugin or just analyze the libraries you use (like analyze a .dll/.jar) and help you, my point is that the IDE is not limited to only the text files in your src folder, it can analyze your lib/vendors/node_moduloes folders too.
>More static analysis tooling, doesn't need to be built-in to the IDE, just hooked in with something like flycheck.
The IDE seems to work very fast as you type with incomplete code that would just fail if you run it through an external tool, not sure if this language servers stay up in background and keep state or each time you need to ask them to re-analyze everything and how fast and well works with incomplete code as you type.
About debugging support, for most stuff you just put breakpoints and press a Debug button, the code will stop and you get a nice overview like you get this days in browsers , including an eval repl in the current context where the program is paused. Super cool to understand soem complex library or framework you run it line by line and see how the framework inits, where it reads it's config , how it setups things , and all those steps that happen before your own code runs.
Extract method. maybe you work on some code that is not that clean, like some super long function and you can sport that this 12 lines of code can be made a function with some inputs and an output, you highlight the lines and use the Extract method, it will create a function from those lines and use it at the current place.
Or you have stuff like a missing parameter in the JSDoc the IDE offers to fix it , or you want to add JSDoc the IDE will create it for you, fill the types if it can detect them.
Most of this stuff are plugins , and you can turn things on and off, exclude folders, add your own rules etc - it is not a giant monolith that is not configurable.
Why imagine? I have emacs open and it's doing this with React right now (tide mode).
Cool, so Emacs understand that there are 2 different components and not get confused by react/angular sepecial syntax ? At this point is Emacs still a text editor as the initial comment that start this thread said or it become an IDE buy extending it with enough plugins? (see how this comment thread started)
I've been calling emacs an IDE for a long time. https://news.ycombinator.com/item?id=72895
> I don't know what this is, sorry
You mark/select/highlight some lines of code and then you hit a key, and this creates a method out of the code. The IDE is smart enough to see what is the "input" and what is the "output" of these lines of code, and will create a method with the right parameters and with the right return value. But usually, the IDE doesn't support all such code blocks, for example, if there is more than one "output".
>I don't know what this is, sorry
In emacs, try M-x tide-refactor. It's the "extract to function in module scope" option.
I'll only use Emacs for making small configuration changes, or when working with small POC type of stuff, or writing small CLI projects. I do use it extensively for magit and org-mode, org-journal, and my REST API interface via org-verb (instead of Postman/curl/httpie) though.
An example of a language that can't be analyzed by IDE tooling is the English language. Case in point the English language can't be compiled either.
The parent poster is basically saying that there are languages that are so complex that to even program in these languages you (usually) need IDE tooling to assist you. C++ and Java are good examples of this.
I've seen Java codebases use reflection heavily enough to utterly confuse the IDE.
This will not work for stuff that is random object from a JSON but so far I never worked with random data.
I rather prefer C++ and Java than any of those "I don't need IDE" languages.
I have been using IDE based languages since I became a Borland customer around 1991, and while XEmacs allowed me to survive without IDEs to the point that I still remember most of my way around ELisp, I don't miss those days.
"Anders Hejlsberg on Modern Compiler Construction"
https://www.youtube.com/watch?v=wSdV1M7n4gQ
Basically ability to see the language AST at all time, do time checking with broken code, incremental compilation, REPL and IDE editing experience is fused together.
Here is another short examples,
"7 minutes of Pharo Smalltalk for Rubyists"
https://www.youtube.com/watch?v=HOuZyOKa91o
"MountainWest RubyConf 2014 - But Really, You Should Learn Smalltalk"
It makes logical sense that a program that can understand the entire project provide you more help then a more limited program. For example you refactor some code and make a typo in a function name, now because you changed the function name this function is no longer used from other code(because that code uses an old name), because is not used anymore it is highlighted in the IDE as unused and you just caught a typo error (I am expecting now that TDD would have caught this, or a typo in a var name but not everybody is testing everything and the problem is caught in the IDE without any effort from you)
Can your plugin go that?
Agreed with the first. Disagreed with the second.
LSP only ensures that the interests of independent Editors and bigger IDEs to a bigger degree aligns than they used to be before.
It's not a war. This should represent a win-win for everyone.
> The days of IDEs are numbered.
Nope, IDEs will never die, they just change again. Editors are becoming IDEs now, merging both to become more than before.
https://akrl.sdf.org/gccemacs.html as posted already in this thread, compiling more of emacs with gcc, very interesting change to the core architecture.
> the old problems remain the same.
from the linked article - Lexical-binding is used by default - Portable dumping used instead of unexec
What exactly are you talking about?
So here's my two cents:
Even though Emacs is not mainstream, I somewhat agree that the ecosystem is much better now and I can get to configure it as IDE. Sometimes things break, sometimes it takes frustrating amount of time to configure/fix things -- which is probably 1 click away in VSCode. And regardless anything, despite LSP, nothing just works out of box or is immediately obvious. And for these reason alone I think the mainstream IDEs are here to stay.
That said, I don't care (or think doesn't matter) if Emacs remains mainstream or not, as long as the ecosystem remains healthy and strong, and it gets the work done. It will keep it afloat like past whatever 30-40 years. However, that doesn't mean it can survive without being competitive. For me, the single BIGGEST ISSUE that made me consider trying VSCode is performance. On two companies I've worked with, the C++ parser performance with LSP running is just purely BAD (more so on MacOS I think). And quite honestly I can see myself getting frustrated enough someday and move.
Not for me. I've tried to use LSP for Chromium's code base(~40k files) and it was miserable. It took 8-10 hours to index it and each time the LSP server started it used 10GB of RAM to work.
Comparing it QtCreator's Code Model (the old one which everyone hates, not clang based) takes 2 Min to start from zero without blocking the GUI.
I only got intelligence on as much of the project as it had finished parsing at a given point in time, obviously, but I wasn't stuck waiting for it to finish before I could work. This was using php-language-server and lsp-mode for Emacs.
I'm really missing graphql and styled components syntax highlighting and generally a bugless properly working webdev mode. Currently it keeps messing up indentation and losing syntax highlighting.
I tried moving to VS code, and I saw how amazing an editor designed for webdev can be. But despite all the issues, I'm still much more productive in emacs, so I went back.
I really wish it was possible to setup emacs for modern webdev, but I haven't found a way yet.
Any tips/advice?
""" Disclosure: I'm the author of rjsx-mode)
The best setup I've found is to use js2-mode for .js and rjsx-mode for .jsx, which parse the buffer for syntax highlighting, local refactoring (with js2r) and basic linting. For typescript, use typescript-mode. Flow support is quite bad ATM
nvm.el replaces the shell scripts from nvm.
Add a jsconfig.json to your project root and enable tide-mode for completion. This has worked far better than tern-mode, which some people recommend.
For fuller linting than what js2/rjsx offer, use flycheck. Eslint support is built-in, so it should just work, I think.
[2018 update: I prefer using tslint, which you can accomplish with:
(flycheck-add-mode 'typescript-tslint 'js2-mode)
(flycheck-add-mode 'typescript-tslint 'rjsx-mode)]
Finally, for build management, I use prodigy to run webpack, babel, ts, etc.
[1] https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=41182...
It's like 100x better than TAGS files (because I don't have to generate them) and has made my navigation of a new codebase much, much more smooth and effective.
After trying out both, I prefer Eglot, mainly because I find it faster and less intrusive than lsp-mode. It also composes better with built-in packages, such as flymake . I use gopls and pyls as language servers.
[1] OK, one brief mention
That way I can always get back to any previous state and I can use git bisect to find the culprit when a package update causes a regression of some kind.
https://emacs.stackexchange.com/questions/28731/easiest-way-...
The best thing with this release (as far as I am aware) is the JSON parser implemented in C. This should make lsp-more a lot snappier.
Often, there'll be big changes on the master branch after a release, so it tends to be a little less stable (and I normally just need Emacs to work, so not interested).
Finally, about time!
Is there any work towards making Emacs be usable immediately, while config being loaded asynchronously in background, adding features like syntax highlighting without blocking the main editing experience?
semacs () {
emacs --eval "(setq server-name \"$1\")" --daemon
}
`semacs foo` then starts an emacs server named foo and and `emacsclient -s foo -c` attaches to it.There are voices who demand to lean more toward VS Code in that aspect, so maybe in another 10+ years emacs will finally innovate itself there.