I have been using GNU Emacs since the late 1980s. It has been my life's editor, so to speak. At 59 1/2, it seems unlikely that I will ever switch to another editor. It's served me well. I am grateful to the hackers that created it.
I only just understood Emacs about a year ago, despite being a nerd for at least 30 years. I like to think I don't have too many regrets in life - but I'm kicking myself for not realizing what Emacs was way back then - or at any of the times I've tried it out in the past (writing it off as "a text editor")!
Never too late though, and on the plus side I've now got decades of hidden Emacs goodies still to discover!
Emacs has served me well over the years. I have a consistent editing platform throughout the changes of languages and document formats. Saved me lots of time to jump right into new languages or new projects.
Same here. 54 years old. I've used Emacs since James Gosling was still hacking at CMU in the early '80s. Took me some time to finally stop using the Gosmacs key bindings :) 35 years of Emacs use and still going strong and learning new things!
I'm really happy to see Emacs move faster, and especially the integration of package management since version 25. The old beast is still kicking!
For what it's worth, I've actually been using on macOS the Mituharu branch [1], available in MacPorts as "emacs-mac-app". This version adds the [s]essential[/s] smooth-scrolling feature, and just in general seems to be slightly better integrated into macOS (except that it doesn't define the standard macOS keybindings, which I had to create manually. Ironic)
Emacs is the one environment that I've been a fan of from afar. I recognize the brilliance and power of it, but a few things have always kept me away from using it on the Mac. And I've put in serious attempts, including going emacs-only, then a custom evil mode, then spacemacs -
- The server mode compatibility with the way Mac applications are set up. I'd ideally want an emacs server running in the background, and a client app open/close seamlessly whenever I'd like. What actually ends up happening is that I close the client windows but the app never "quits". So it's a zombie icon always hanging around my cmd+tab list.
- "Windows" (or Frames?) have generally not worked seamlessly for me. I've to always put in hacks in my config to ensure the emacs windows work like other apps do for mac. They're either too small and then size up when config is applied (which has some latency so it's noticeable when it happens), or they don't work at all.
- Font rendering. There is some minute rendering difference in the way the same fonts that renders on Vim/iTerm/Macvim/Sublime/VSCode/IntelliJ, but it's the worse by far on my emacs. :(
- All of these complaints are for the GUI mode tbh, which I prefer to use since I like to keep my terminal separate from my editor. Terminal-only emacs is something I tried a few years ago and I remember getting annoyed by keybinding issues etc.
Maybe all of the above are old issues that are no longer present, or maybe I was doing things the wrong way. It just never felt like it was a seamlessly integrated application on the Mac. I hope that has changed or will change. :)
I used Mitsuharu Yamamoto's emacs-mac distribution for some time (due to a suggestion I saw here on HN a while ago), but the upstream nextstep build (from the main GNU Emacs repository) actually feels a bit smoother/snappier to me, so I switched back a couple of months ago.
To install that “emacs-mac” branch of Emacs with the Homebrew package manager, see the instructions on https://github.com/railwaycat/homebrew-emacsmacport. Homebrew’s built-in formula directory doesn’t include that version of Emacs, so that linked repo is a “tap” that defines a formula for it. From the README of that repo, these were the only commands I needed to run:
brew tap railwaycat/emacsmacport
brew cask install emacs-mac
As someone who recently saw the light, and converted to Emacs (spacemacs), I am absolutely delighted that its going strong.
Emacs is the most delightful software I have ever used. I could evolve a flexible todo management productivity workflow, start writing a journal and start writing new posts in a distraction free environment all using Org Mode in just two days. A complete win for someone who went back to paper (rather unsuccessfully) to organize to-dos after finding digital tools inflexible.
And for python development on remote machine, I get editing and autocomplete on remote systems out of the box (spacemacs) due to Tramp. I was like wtf, why didn't I start using this beautiful piece of software years back.
The way Emacs is a programmable platform really changes how I view what a good software should be.
For instance, I was documenting a machine learning experiment in org mode file. I wanted to mention a metrics result generated as json by my machine learning code. I could just embed sh into the org file, execute it (on the remote machine without friction) and print result directly into the org file. I can trivially compare results in two files and record it back into org mode easily, even on a remote system.
It has made me think that we need more software which erases distinction of programming as something distinct from using software.
Emacs is really nice because it's essentially a text-mode Lisp machine with lots of small packages that integrate really well with each other.
This contrasts with ncurses based CLI tools, which are little silos. And of course, most GUI applications.
In particular, I'm really fond of Org, Magit, Notmuch and PDF-Tools. I feel they are really nice additions to classic Emacs. Some old packages are really nice too. E.g. AucTeX, Gnus, Calc, Dired, Eshell... Although I feel Eshell and Gnus would really benefit from some refactorings.
And of course the myriad of programming modes.
I feel I don't need much more than Emacs, Firefox and a tiling window manager on top of some underlying OS (preferably Unix).
This is a reasonably small release, I don’t have anything to say about it so I will instead do what most other people in this thread have done and make a general comment about emacs:
I think emacs has a few simple advantages:
1. It’s based on a high quality extensible programming language which supports writing extensible programs. This makes implementing new features, new language features, or just modifying/fixing existing ones possible and usually easy.
2. The primitives/idioms (hooks,buffers,buffer-local-variables,markers,interactive functions,advice,keymaps,text properties) tended to be good choices that allow separate modes/programs within the editor to interact well with one another. They also allow easy extension/modification/fixing of the system. I think modules (although useful and maybe necessary) do not typically fit into this category.
3. Emacs realises the idea of a programming environment built into a user interface (ie one where it is easy to interact with the user in a way that is not stdin/out). I feel like this is often touted as an advantage of html/JavaScript but in emacs one already has all the other useful programs/libraries to base one’s own creations on. On the web one always has to start from scratch. On the other hand elisp does not have any GL/canvas interface (although you can write an svg (or worse) and display it).
4. The documentation tends to be pretty good and when the documentation fails
Emacs certainly has disadvantages too. One is setting it up, another is that it often breaks and it can be hard to get used to emacs. I personally am not bothered by these because I already know enough to not mind/struggle much fixing things. Another issue is ide features but I don’t really use languages with separate ides (unless you count languages where emacs is the ide) so I don’t mind this. Indeed I mostly don’t use any of the ide attempt features like projectile or the static code parsing/analysis
Another huge advantage: low resource use. I'm often running resource-hungry machine learning and dataprocessing jobs on my laptop (and Slack), and when ram usage gets high often VSCode or Jetbeans IDEs will just freeze up, often requiring a restart (especially C++ Intelllisense). I've switched to Emacs exclusively now for coding (C++, Python and Julia), and the productivity gains from having a rock-solid editor that never freezes or crashes more than outweight the reduced featureset. To be fair though this seems not entirely the IDEs' problem, as I used to encounter this problem less on Windows; Linux just seems particularly bad at providing a smooth desktop experience when RAM usage is high.
Ah, Emacs -- the king of editors. IDEs come and go, but I've found nothing that has yet convinced me to leave the editor that got me started in Linux development during the 90s, in which I've done all of my best work ever since. Yes, I've tried VSCode -- several times. The difference between Emacs and VSCode is that one is an extensible editor, the other was built from the ground up to be shaped and morphed to match your workflow, no matter what that may be. Emacs Lisp is an always-on, instantaneous-feedback, comprehensive extension language -- and it's a Lisp, even if a flawed one. Emacs is also self-documenting and self-debugging, making extending it an easy part of using it. If you type M-. on any Elisp identifier, you will be taken straight to its definition -- even for C-implemented primitives of the Lisp VM (provided you have the Emacs sources and Emacs knows where they live). Emacs is thus open source in a more concretely real way than most open source software -- it makes examinjng its own source easy and even inviting.
The way things are going, I figure either Emacs will die or I will before I stop using it. I guess I'm a set-in-my-ways old-timer. So be it.
I had been away from emacs for almost 10 years since I stopped being a pro programmer. And even back then I wasn't really an emacs power-user. I just knew enough to be productive and slightly dangerous.
Recently, I reached my last nerve with MS Word and buckled down to ditch Word for emacs.
Today I do just about all my writing in emacs (markdown) and then generate word docx using pandoc at the end. Now, I use emacs all day everyday -- blessed. And I am more productive especially since I am actively pushing to keep increasing my power-user level.
Writing markdown with emacs is a huge step up. Now you get to take another big step up when you use org-mode instead of markdown. I'm actually pretty envious.
I wish I spent time learning how to use Emacs in the past to a degree where customizing my installation was faster than learning something else.
As I stand now, it seems really hard to justify to invest time into it when the benefits over using something very easy to work with (like JetBrains IDEs for Java or VS Code for Python) sound marginal.
I know experts can fly around in it and it looks amazing. Having a single point of entry for all kinds of things (ssh to VM, git, text editing, org mode, email...) sounds great, but it is so much work and it seems like I could always be spending time doing something immediately beneficial with the tools I already use. Not to mention that the end result might not even better for the given application (can I really hope to have easier time developing a Go app with Emacs and couple not-so-actively developed plugins than GoLand/VS Code?).
Picked up emacs in 1993 in a unix lab because it was the only thing that remotely made sense on these weird X-Windows systems. Was a good choice because I haven't had to learn anything new since. When I met RMS I thanked him for it.
I'm so thankful that I stumbled upon emacs in my first year of undergrad. That discovery led me to the wonderful world of Lisp, and really impacted how I view software design and the development process. As a C/C++, Clojure, Verilog/VHDL, and org-mode tool, I can't imagine using anything else. Python is the only use case that I haven't been 100% satisfied with, although I don't think Pycharm or VS code offer anything more compelling to me (could be wrong).
Congratulations and a huge thank you to all those involved! Emacs is a truly remarkable piece of software. I started using it for text editing over 20 years ago, now I use it pretty much as an operating system!
spacemacs! I was a long-time vim+tmux diehard and now i'm all about spacemacs. Org-mode and Magit are just too good to live without. There were a few hurdles when switching, mainly around auto-indent differences that were harder to configure with emacs. (dtrt-indent ftw, thank god for that). Also the regexes are different and not as good (i don't think emacs regexes do negative lookahead etc...) so some of the advanced substitution wizardry i used to do isn't quite as good.
But overall i prefer Spacemacs to vim for general development.
I recommend using the develop branch of spacemacs. It sometimes breaks but if there is something broken it gets fixed really fast, whereas if something is broken on master then it sometimes stays broken for a really long time.
Best bet is to just start from the beginning. My journey began with the emacs tour you get directed to the first time you start it up. With regards to muscle memory etc its a completely different animal to everything bar maybe the command line ...
A bit of advice: Emacs can do so many things (there’s a web browser included out of the box), but that doesn’t mean you should use it for everything. Despite the fact that “applications” within Emacs are usually better integrated than those outside of it, they are oftentimes fairly buggy. Emacs has a horrible case of featureitis, so I try to limit my usage of the bundled features that aren’t well-maintained, of which there are many.
As many others have suggested, take a look at Evil, the best Vim emulation for any platform. Just ease your way into it by replacing Vim, then some other CLI programs, then figure out when to stop when the Emacs version is no better than what you were using before.
Be sure to check Doom [1] as well. It's Emacs for « a stubborn vimmer ». One of its goals is to be fast and hacker friendly. It's a smaller community than Spacemacs.
Also, the default theme is fantastic along with great defaults for key bindings.
http://emacs.sexy/ points to a bunch of useful resources,
including an Awesome Emacs which points to a bunch more.
Tuhdo's tutorials feature a bunch of animated gifs about his use/setup, which is quite nice.
I haven't tried distributions like spacemacs or doom-emacs (which is lighter-weight than spacemacs, with fewer abstractions above emacs). I think emacs is software which benefits from being well understood by the user, to the extent of "if something breaks I can fix it".
My guess is that someone that has used vim for more than 20 years will never feel truly comfortable with emacs. I say this having started with emacs for a few years, and since switched to vim, now for almost 20 years.
Is the multi threaded implementation, being talked about for some time part of this release? Sometimes the single threaded nature of emacs causes problems while running complex setups like cider, nrepl etc.
I sometimes wish that Xi editor adopted an elisp port as one of the scripting engines. Not very likely, though; a suitable port does not exist in the first place so far.
Emacs-26 has threads yes. How many packages use them at the current time I do not know. With nrepl, though, most of the problems are likely to get from the interaction with an external process which has been able to happen asynchronously for a long time. So, threading (or its lack) might not be the problem.
Not from this release, but this is the most recent thing I've been able to find about concurrency:
> This is also only the first step in bringing threading to Emacs Lisp. Right now there’s effectively a global interpreter lock (GIL), and threads only run one at a time cooperatively. Like with generators, the Python influence is obvious. In theory, sometime in the future this interpreter lock will be removed, making way for actual concurrency.
> - In Dired, the 'Z' command on a directory name compresses all of its files.
Dired is so handy, but it does so much. Unless I were to use this feature often enough I fear I would never remember it was there and just break out to a terminal and `tar -zcf` manually.
I feel like something already exists for this, but it would be cool if there was a "Random Mode Tip of The Day" that one could invoke for discovery and practice of things like this.
[+] [-] jes|7 years ago|reply
[+] [-] mrspeaker|7 years ago|reply
Never too late though, and on the plus side I've now got decades of hidden Emacs goodies still to discover!
[+] [-] ddavis|7 years ago|reply
[+] [-] ww520|7 years ago|reply
[+] [-] intrasight|7 years ago|reply
[+] [-] AceJohnny2|7 years ago|reply
For what it's worth, I've actually been using on macOS the Mituharu branch [1], available in MacPorts as "emacs-mac-app". This version adds the [s]essential[/s] smooth-scrolling feature, and just in general seems to be slightly better integrated into macOS (except that it doesn't define the standard macOS keybindings, which I had to create manually. Ironic)
[1] https://bitbucket.org/mituharu/emacs-mac/
[+] [-] AceJohnny2|7 years ago|reply
[+] [-] manish_gill|7 years ago|reply
- The server mode compatibility with the way Mac applications are set up. I'd ideally want an emacs server running in the background, and a client app open/close seamlessly whenever I'd like. What actually ends up happening is that I close the client windows but the app never "quits". So it's a zombie icon always hanging around my cmd+tab list.
- "Windows" (or Frames?) have generally not worked seamlessly for me. I've to always put in hacks in my config to ensure the emacs windows work like other apps do for mac. They're either too small and then size up when config is applied (which has some latency so it's noticeable when it happens), or they don't work at all.
- Font rendering. There is some minute rendering difference in the way the same fonts that renders on Vim/iTerm/Macvim/Sublime/VSCode/IntelliJ, but it's the worse by far on my emacs. :(
- All of these complaints are for the GUI mode tbh, which I prefer to use since I like to keep my terminal separate from my editor. Terminal-only emacs is something I tried a few years ago and I remember getting annoyed by keybinding issues etc.
Maybe all of the above are old issues that are no longer present, or maybe I was doing things the wrong way. It just never felt like it was a seamlessly integrated application on the Mac. I hope that has changed or will change. :)
[+] [-] ddavis|7 years ago|reply
[+] [-] roryokane|7 years ago|reply
[+] [-] na85|7 years ago|reply
[+] [-] andbberger|7 years ago|reply
[+] [-] caiob|7 years ago|reply
[deleted]
[+] [-] laughingman2|7 years ago|reply
Emacs is the most delightful software I have ever used. I could evolve a flexible todo management productivity workflow, start writing a journal and start writing new posts in a distraction free environment all using Org Mode in just two days. A complete win for someone who went back to paper (rather unsuccessfully) to organize to-dos after finding digital tools inflexible.
And for python development on remote machine, I get editing and autocomplete on remote systems out of the box (spacemacs) due to Tramp. I was like wtf, why didn't I start using this beautiful piece of software years back.
The way Emacs is a programmable platform really changes how I view what a good software should be. For instance, I was documenting a machine learning experiment in org mode file. I wanted to mention a metrics result generated as json by my machine learning code. I could just embed sh into the org file, execute it (on the remote machine without friction) and print result directly into the org file. I can trivially compare results in two files and record it back into org mode easily, even on a remote system.
It has made me think that we need more software which erases distinction of programming as something distinct from using software.
[+] [-] nextos|7 years ago|reply
This contrasts with ncurses based CLI tools, which are little silos. And of course, most GUI applications.
In particular, I'm really fond of Org, Magit, Notmuch and PDF-Tools. I feel they are really nice additions to classic Emacs. Some old packages are really nice too. E.g. AucTeX, Gnus, Calc, Dired, Eshell... Although I feel Eshell and Gnus would really benefit from some refactorings.
And of course the myriad of programming modes.
I feel I don't need much more than Emacs, Firefox and a tiling window manager on top of some underlying OS (preferably Unix).
[+] [-] unknown|7 years ago|reply
[deleted]
[+] [-] triska|7 years ago|reply
Emacs is reliable, fast and elegant, and a joy to use as a truly integrated environment for all kinds of tasks, including software development.
[+] [-] codr7|7 years ago|reply
I have yet to come across anything that compares, and I definitely prefer having Lisp built in to Python bolted on to the side.
Emacs used to be considered quite slow, but compared to the latest offerings its pretty snappy.
Never got it to work well in Windows, but that's not an issue for me anymore.
[+] [-] dan-robertson|7 years ago|reply
I think emacs has a few simple advantages:
1. It’s based on a high quality extensible programming language which supports writing extensible programs. This makes implementing new features, new language features, or just modifying/fixing existing ones possible and usually easy.
2. The primitives/idioms (hooks,buffers,buffer-local-variables,markers,interactive functions,advice,keymaps,text properties) tended to be good choices that allow separate modes/programs within the editor to interact well with one another. They also allow easy extension/modification/fixing of the system. I think modules (although useful and maybe necessary) do not typically fit into this category.
3. Emacs realises the idea of a programming environment built into a user interface (ie one where it is easy to interact with the user in a way that is not stdin/out). I feel like this is often touted as an advantage of html/JavaScript but in emacs one already has all the other useful programs/libraries to base one’s own creations on. On the web one always has to start from scratch. On the other hand elisp does not have any GL/canvas interface (although you can write an svg (or worse) and display it).
4. The documentation tends to be pretty good and when the documentation fails
Emacs certainly has disadvantages too. One is setting it up, another is that it often breaks and it can be hard to get used to emacs. I personally am not bothered by these because I already know enough to not mind/struggle much fixing things. Another issue is ide features but I don’t really use languages with separate ides (unless you count languages where emacs is the ide) so I don’t mind this. Indeed I mostly don’t use any of the ide attempt features like projectile or the static code parsing/analysis
[+] [-] logicchains|7 years ago|reply
[+] [-] bdarnell|7 years ago|reply
[+] [-] bitwize|7 years ago|reply
The way things are going, I figure either Emacs will die or I will before I stop using it. I guess I'm a set-in-my-ways old-timer. So be it.
[+] [-] pnw_hazor|7 years ago|reply
Recently, I reached my last nerve with MS Word and buckled down to ditch Word for emacs.
Today I do just about all my writing in emacs (markdown) and then generate word docx using pandoc at the end. Now, I use emacs all day everyday -- blessed. And I am more productive especially since I am actively pushing to keep increasing my power-user level.
[+] [-] fredsir|7 years ago|reply
[+] [-] black-tea|7 years ago|reply
[+] [-] bbbobbb|7 years ago|reply
As I stand now, it seems really hard to justify to invest time into it when the benefits over using something very easy to work with (like JetBrains IDEs for Java or VS Code for Python) sound marginal.
I know experts can fly around in it and it looks amazing. Having a single point of entry for all kinds of things (ssh to VM, git, text editing, org mode, email...) sounds great, but it is so much work and it seems like I could always be spending time doing something immediately beneficial with the tools I already use. Not to mention that the end result might not even better for the given application (can I really hope to have easier time developing a Go app with Emacs and couple not-so-actively developed plugins than GoLand/VS Code?).
[+] [-] singingfish|7 years ago|reply
[+] [-] jakeinspace|7 years ago|reply
[+] [-] willtim|7 years ago|reply
[+] [-] andrenth|7 years ago|reply
[+] [-] tcoff91|7 years ago|reply
But overall i prefer Spacemacs to vim for general development.
I recommend using the develop branch of spacemacs. It sometimes breaks but if there is something broken it gets fixed really fast, whereas if something is broken on master then it sometimes stays broken for a really long time.
[+] [-] rusk|7 years ago|reply
[+] [-] raphinou|7 years ago|reply
[+] [-] snazz|7 years ago|reply
As many others have suggested, take a look at Evil, the best Vim emulation for any platform. Just ease your way into it by replacing Vim, then some other CLI programs, then figure out when to stop when the Emacs version is no better than what you were using before.
[+] [-] zaiste|7 years ago|reply
Also, the default theme is fantastic along with great defaults for key bindings.
[1]: https://github.com/hlissner/doom-emacs
[+] [-] rgoulter|7 years ago|reply
I haven't tried distributions like spacemacs or doom-emacs (which is lighter-weight than spacemacs, with fewer abstractions above emacs). I think emacs is software which benefits from being well understood by the user, to the extent of "if something breaks I can fix it".
[+] [-] coliveira|7 years ago|reply
[+] [-] ballpark|7 years ago|reply
[+] [-] IanS5|7 years ago|reply
[+] [-] unknown|7 years ago|reply
[deleted]
[+] [-] billfruit|7 years ago|reply
[+] [-] nine_k|7 years ago|reply
- Guile Emacs does not seem very alive: http://git.hcoop.net/?p=bpt/emacs.git
- Remacs, a Rust port, seems to be more alive: https://github.com/remacs/remacs Does not look usable as a daily driver, though.
I sometimes wish that Xi editor adopted an elisp port as one of the scripting engines. Not very likely, though; a suitable port does not exist in the first place so far.
[+] [-] phillord|7 years ago|reply
[+] [-] peterbecich|7 years ago|reply
> This is also only the first step in bringing threading to Emacs Lisp. Right now there’s effectively a global interpreter lock (GIL), and threads only run one at a time cooperatively. Like with generators, the Python influence is obvious. In theory, sometime in the future this interpreter lock will be removed, making way for actual concurrency.
https://nullprogram.com/blog/2018/05/31/
[+] [-] anoncake|7 years ago|reply
http://blog.unicode.org/2019/03/announcing-unicode-standard-...
[+] [-] merlincorey|7 years ago|reply
Dired is so handy, but it does so much. Unless I were to use this feature often enough I fear I would never remember it was there and just break out to a terminal and `tar -zcf` manually.
I feel like something already exists for this, but it would be cool if there was a "Random Mode Tip of The Day" that one could invoke for discovery and practice of things like this.
[+] [-] sys_64738|7 years ago|reply
[+] [-] roryokane|7 years ago|reply
[+] [-] creamidea|7 years ago|reply
When I installed the emacs on MacOS by the step at https://www.gnu.org/software/emacs/download.html#macos (`brew install emacs --with-cocoa`). I got an `Error: invalid options: --with-cocoa`
Finally, I found the solution here: https://emacs.stackexchange.com/a/47774/13172.
Now, I want to know who can modify this command at the official site.
PS: Homebrew 2.1.0 Homebrew/homebrew-core (git revision 024e26; last commit 2019-04-13) Homebrew/homebrew-cask (git revision 20182; last commit 2019-04-13)