Absolute Beginner's Guide to Emacs (2012)
jesshamrick.com
jesshamrick.com
(The setting in question I am referring to is load-prefer-newer)
Should I spend time and effort on the middle ones? I admit my feeling comes from standing on the outside lurking. Emacs masters of course know that this 'middle one' feeling is non-sense.
But from the perspective of a newbie who sets out to master an editor/IDE, considering the ratio of effort spent on learning/customization/configuration vs. productivity gain (in a certain time span, let's say 20 years), I am trying to decide to take the plunge and learn emacs seriously, in the midst of big IDEs, Atom/Bracket, Neovim (let's hope it delivers).
Now please tell me I am so wrong.
Furthermore, writing extensions for emacs is much more pleasant than writing extensions for Eclipse, and is done much more widely. And, emacs has been around long enough that you have literally decades worth of extensions already available to you. Additionally, emacs is used widely enough that people are quick to add emacs support for new things: if I pick up a new esoteric language tomorrow, I can be 99% sure that there's no Eclipse support for it, but I can be 100% sure that there's already an emacs mode for it and it's probably on the emacs package manager already, to boot.
All this is both a plus and a minus, in some ways: learning emacs is probably not worth it unless you're willing to put the time and effort into building up your emacs configuration into something IDE-like, but if that's what you want to do, then emacs can do truly amazing things. So yes, what you said rings more or less true for vanilla emacs, but you're radically underselling emacs as a platform for building better things.
I don't know if you're "so wrong", but if your concern is speed, then you should just learn about emacs-server and emacsclient.
Emacs covers the whole spectrum of "basic editing" to "wizardly stuff you couldn't have imagined" and you can transition between those at your own pace.
Also, I think that if you are putting Vim in the same bin as Sublime and Notepadd++, you're probably still missing a lot.
It has a lot of elisp functions (1.6m lines iirc) that are very useful for shaping text including, but not limited to, almost everything that people think is so unique to IDE.
Elisp and the editor pieces within Emacs are focused on providing you the tools to manipulate text of all types and from many different sources and outputs, not just a few programming languages.
People write academic papers, books, organize their lives and yes program with emacs.
Yes it's much much more then an ide.
Whatever you do, master something and become truly fluent with it. It's worth your time and will pay you back many times over.
How many languages do your "big ones" support? How easy it is to add a support for a new language?
It's not a terrible investment of effort to learn Emacs for these kinds of limited uses. I don't know anything about the more advanced modes, or the more non-standard/essential key combinations, but I get by for what I ask of it.
You may ask, "Why the heck are you getting her to use emacs???". I started doing consulting this year and initially for tax reasons decided to have my wife run the company (while I did the programming). It has worked out spectacularly in that my wife loves the job and I can concentrate only on working with the clients. We have to do double entry accounting, though. We're using ledger-cli which has great Emacs org-mode support, so I'm hoping to get her going on that.
Now that I'm using ledger I would never, ever go back to GnuCash. It's not that GnuCash is bad -- it isn't. But when I started doing actual accounting (especially with foreign currencies), I could never get anything to balance in ledger. After working at it I finally understood why -- I was doing it all wrong! Being a complete neophyte I had no idea what the difference was between LIFO, FIFO and average cost or how I could represent it in my accounting. GnuCash would say "You made this much capital gains" and I just accepted it. With ledger I would look at the reports and go, "Hey... what the heck... why isn't that number zero???". There are some other big, big wins with ledger. The first is that you are working with a text file. As a programmer, this is massive. Why do I need a stupid GUI? A nice descriptive DSL is waaaaay more convenient. Ledger itself is just a reporting tool that takes the data that you enter into the file and answers questions that you give it (which forces you to think of appropriate questions, which in turn showed me what I didn't understand...) I actually use vim (there is a vim mode as well), but emacs org mode is unbelievably fantastic (I'm a converted emacs user) and probably worth learning emacs for. The mixture of ledger and org mode is probably the best possible interface for an accounting program.
The other really big win is that you can put your accounting in source control. I can not express to you the amount of ass-saving this has brought me. Every time I make a change into the ledger I commit the change to git. Real accountants (which I hire to take my amateur stuff and do real accounting with) aren't supposed to change things in their ledger. It's kind of a law or something ;-) They can only add things (including notations). I do the same thing with ledger and git. I can find out what the ledger said at any given date. And I have incredibly readable diffs.
This last point is so incredibly important that I could not ever possibly think of using GnuCash again. This is not to say that ledger isn't without its faults. There are also some competing programs that were inspired by ledger which are worth checking out (bean-counter is one and there is a haskel implementation whose name I forget -- hledger???). There are also some things you can not do in ledger. There is no integrated payroll calculator, or invoice tracker, or anything like that. However, since the DSL is pretty easy to generate, it's quite easy to write scripts to do pretty much everything you might want to do. For my company (me and my wife), it is perfect. I don't think I would want to power a large corporation on it. I believe the Software Freedom Conservency still does their accounting on ledger, though.
Hope that helps :-)
I'm an on-again, off-again contributor to GnuCash but I really like ledger too, and especially hledger because just knowing it's Haskell puts my mind at ease about several things.
What you described about source control is really interesting because there are a lot of parallels between Git's commits and double-entry accounting's journal entries. There are some really close correspondences--like Git's revert and a reverting journal entry (i.e. the opposite movements of money to the transaction being reverted). Of course in accounting the master branch really is the one 'true' view of the world but it's interesting to think in terms of the Git analogy and imagine divergent branches which could be e.g. explorations of different scenarios for your business.
Afaik no one has ever implemented such a system....
Did I get everything correct? Do you think recommending hledger as a "real world Haskell program" is a good strategy?
Another cool real-world Haskell app is Silk.[1] Looking at the site, there's no mention of Haskell and no obvious way to tell that that is the implementation language. And that's the beauty of it! :-)
A good example from this article would be M-q for auto-fill. I was super excited when I discovered that command after spending some time redoing line breaks manually before thinking "I'm sure somebody has solved this problem in Emacs before." I'm sure there are tons of useful text editing hacks that would be really useful that just haven't even occurred to me yet.
With Emacs and Evil, you can get the best of both worlds.
http://tuhdo.github.io/helm-intro.html
Ace-jump is slick too: http://emacsrocks.com/e10.html
IDE's like IntelliJ let you type a lot less. Emacs has made some great progress in this direction in the past few years.
1. Remap Caps Lock to Control and press it with my ring finger rather than my pinkie when possible (e.g C-a, C-s, C-d). I still use my pinkie for C-g or C-r, but diminishing the number of times it is used was very helpful
2. Map more keybindings to use Alt rather than Control.
I've been using Emacs keybindings for a really long time now, but I think I could be convinced to try the Ergo Emacs keybindings. My only worry is that my keyboard is French Canadian (with dead keys), so I'd probably need to first start by remapping a bunch of shortcuts.
A little surprised you've remapped capslock to ctrl, but also remap keybindings to alt. IMHO, alt is more of a stumbling block than control, because you pretty much have to take a hand off of the home row to use it. I find pressing capslock with the pinky not to be a problem, and if anything, have really appreciated a Steve Yegge tip of binding C-x, C-m to M-x (as well as C-x-m, for ultra laziness.)
(I'm quite keen to try it some day! Love your work in the Emacs community by the way.)