“Mastering Emacs” ebook announced
masteringemacs.org
masteringemacs.org
https://github.com/bbatsov/prelude
I installed an earlier version of it 3+ years ago and then worked through the standard tutorial a couple of times, invoked with "C-h t" (control-key + h-key, then t-key).
After that, I was off and running with Emacs!
Once some familiarity with Emacs Lisp (elisp) has been acquired, a careful study of the prelude sources and the sources of various packages installed by prelude is a great way to acquire a deeper understanding of how to wire things together inside Emacs.
A decent way to get started learning elisp is to read the introductory text hosted on gnu.org:
An Introduction to Programming in Emacs Lisp
https://www.gnu.org/software/emacs/manual/eintr.html
Pro tip: if you haven't done so previously, you may want to remap your caps lock key (via OS settings) to act as an additional control-key – some users find caps lock easier to reach for with their left pinky finger than the left-control-key on many keyboards.
finally I am faster on emacs (with vim keybindings) that I am on atom or sublime. that, for me, is the tipping point.
Still, as far as non-IDEs go, it is pretty capable and I do enjoy using it.
http://plugins.jetbrains.com/?dbe
Someone wrote those modes for Emacs, which is great.
Anyway, that's not the point, and your classic attitude dissuade new users. My comment was made because someone is writing a book about mastering Emacs. It's a great topic, and in a competitive world with limited time, developers want to get started quickly.
Emacs isn't the right tool for everyone or every job. Neither is anything else, but Emacs facilitates building the tools to make it work for diverse tasks.
People wrote those extensions because Emacs was designed to be reconfigurable and extensible 30 odd years ago. Unlike IntelliJ, it was a core function not a feature.
Now, back to my point, if you're writing a book about mastering Emacs, like we are discussing, one of its main weaknesses is out of the box code-completion. Many new users would be well served by covering this topic. I've shown Emacs to many people over the years that's one of the biggest complaints. Hippie expansion wasn't going to cut it.
Btw, it seems many other people share my attitude and there are "Batteries Includes" versions of Emacs.
https://github.com/syl20bnr/spacemacs/blob/master/doc/DOCUME...
Optimizing for new User onboarding reduces the time to learn Emacs from 523 weeks to 520. It's still 10 years..
http://www.reddit.com/r/emacs/comments/1mt8a5/nearly_everyon...
C-M-x / is cool too. It will show all possible results in another window.
My point is that modern tools work better out of the box. Emacs packages have evolved but that don't ship standard and that creates resistance for new users. There are actually a few solutions so that requires research and experimentation (i.e. more time). ido, auto-complete, cedet ? Helm looks like it might be the new power user tool?
For code completion, I had decent success with company-mode and its clang backend. This was a good return on time invested as it took all of about 5 minutes to set up and worked immediately on both Linux and Mac OS X (only requirement is clang-3.something, I think - apparently works on Windows too, albeit unsupported). Initially I found it a bit slow, but after switching off the while-you-type completions I became much happier.
More recently I've started using rtags (https://github.com/Andersbakken/rtags) for code browsing. This was a bit tricker to set up, as I had to build my own copy of clang and llvm (rtags needs a more recent copy than company-mode so the one from the Linux package manager wasn't good enough). Luckily this wasn't too hard - the official instructions are perfectly clear - and it was relatively plain sailing from then on.
Compared to Visual Studio or Xcode the results overall are inferior. The browsing or completion fails more often than VS/Xcode, even with system symbols, for reasons I have yet to investigate, and of course it's far from plug-and-play, particularly in terms of automatically getting the right header paths for the current project. But it's proving workable, and is a huge improvement over ctags, particularly for C++.
For C++, well hopefully we have some new language to replace it in the future. But at least for jumping to symbol definitions/references, it shouldn't be a problem with GNU Global. For code completion, you can still use `company-gtags` to get completion symbols in your project. It's really simple. I know it's not really intelligent (i.e. only show completion candidates in current namespace), but instead throw you everything, but it's practical enough.
(For a long time, this kept me using Visual Studio+Visual Assist - which is OK - and Xcode - which is... mostly bearable - in preference to emacs. Everybody's different, but personally I get more value from good quality code completion and navigation than I do from emacs-quality text editing. Particularly true when I can load files into emacs if I need to do anything particularly advanced (mainly keyboard macro stuff or fancy elisp search/replace). Fortunately rtags + company mode have shuffled the tradeoffs around a bit, so I'm pretty comfortable with using emacs all the time now.)
Probably easier to get away without this stuff in C code, though personally I'd probably still get annoyed by the lack of intelligence in completing names of struct members.
Semantic is the equivalent to Intellisense in Visual Studio, though it's less smart on C++ code since C++ moves fast wiht its standard.
> Probably easier to get away without this stuff in C code, though personally I'd probably still get annoyed by the lack of intelligence in completing names of struct members.
Semantic or company-clang can give you code completion of struct members, and even nested struct.
(But suggestions welcome.)
Lightning Source is also worth looking into for direct distribution, but if you intend to sell on Amazon, CreateSpace is the service to beat.
(I work at Amazon, but not part of the MoD teams)