+TITLE: Emacs for developers
+AUTHOR: Pierre Lecocq
+DESCRIPTION: Learn using Emacs as a developer
+KEYWORDS: emacs, developer
This document will (hopefully) help you to use Emacs as a developer.
- Work in progress, so stay tuned.
- Exports are handled by the author for the moment and do not reflect the very last changes (but are recent anyway). A scripted solution will be provided soon for contributors.
**** Contributions or requests
Do not hesitate to send a pull request or open an issue to fix, add, discuss, ... etc.
** Who is the target of this tutorial
Well, this is a good question. And I won't give an answer but some elements of answer.
What is sure is that it is not written for the people thanked below (Bastien, Dimitri, Sacha, Nic, Avdi, and so on ...), but what is interseting with Emacs is that even if you are a beginner, an intermediate / advanced user or an every day power user, you can learn from others each time you open a web page or a manual dealing with Emacs.
Therefore, this tutorial is written for people who want to improve their experience. Simple as that. Whatever is their knowledge, their feeling, their usage, their config file size (without any pun), etc ...
Remember one thing: Emacs is 30+ years old and brings new users everyday. It is a clue that this is a piece of software that deserve some attention.
Table of contents
- 1.1 [[./chapters/01-introduction.org#brief-history][Brief history]]
- 1.2 [[./chapters/01-introduction.org#how-to-get-emacs][How to get Emacs?]]
- 1.3 [[./chapters/01-introduction.org#more-than-an-editor][More than an editor]]
- 1.4 [[./chapters/01-introduction.org#the-perfect-development-tool][The perfect development tool]]
- [[./chapters/02-the-basics.org][The basics]]
- 2.1 [[./chapters/02-the-basics.org#config-files][Config files]]
- 2.2 [[./chapters/02-the-basics.org#executing-commands][Executing commands]]
- 2.3 [[./chapters/02-the-basics.org#key-bindings][Key bindings]]
- 2.3.1 [[./chapters/02-the-basics.org#manipulate-files][Manipulate files]]
- 2.3.2 [[./chapters/02-the-basics.org#manipulate-the-current-line][Manipulate the current line]]
- 2.3.3 [[./chapters/02-the-basics.org#selecting-a-region][Selecting a region]]
- 2.3.4 [[./chapters/02-the-basics.org#commenting][Commenting]]
- 2.3.5 [[./chapters/02-the-basics.org#windows][Windows]]
- 2.3.6 [[./chapters/02-the-basics.org#buffers][Buffers]]
- 2.3.7 [[./chapters/02-the-basics.org#cancel-a-command][Cancel a command]]
- 2.3.8 [[./chapters/02-the-basics.org#the-most-useless-command][The most useless command]]
- 2.4 [[./chapters/02-the-basics.org#help][Help!]]
- [[./chapters/03-building-your-own-editor.org][Building your own editor]]
- 3.1 [[./chapters/03-building-your-own-editor.org#first-basic-configuration][First basic configuration]]
- 3.2 [[./chapters/03-building-your-own-editor.org#general-basic-configuration][General basic configuration]]
- 3.3 [[./chapters/03-building-your-own-editor.org#backup-files][Backup files]]
- 3.4 [[./chapters/03-building-your-own-editor.org#setting-up-the-locales][Setting up the locales]]
- 3.5 [[./chapters/03-building-your-own-editor.org#more-configuration][More configuration]]
- 3.6 [[./chapters/03-building-your-own-editor.org#modes][Modes]]
- 3.7 [[./chapters/03-building-your-own-editor.org#package-managers][Package managers]]
- 3.8 [[./chapters/03-building-your-own-editor.org#some-useful-packages][Some useful packages]]
- 3.9 [[./chapters/03-building-your-own-editor.org#code-navigation][Code navigation]]
- 3.10 [[./chapters/03-building-your-own-editor.org#setting-a-color-theme][Setting a color theme]]
- [[./chapters/04-emacs-developing-environments.org][Emacs developing environments]]
- 4.1 [[./chapters/04-emacs-developing-environments.org#emacs-for-ruby-developers][Emacs for Ruby developers]]
- 4.2 [[./chapters/04-emacs-developing-environments.org#emacs-for-python-developers][Emacs for Python developers]]
- 4.3 [[./chapters/04-emacs-developing-environments.org#emacs-for-ccobjective-c][Emacs for C/C++/Objective-C developers]]
- 4.4 [[./chapters/04-emacs-developing-environments.org#emacs-for-go-developers][Emacs for Go developers]]
- 4.5 [[./chapters/04-emacs-developing-environments.org#emacs-for-php-developers][Emacs for PHP developers]]
- 4.6 [[./chapters/04-emacs-developing-environments.org#emacs-for-java-developers][Emacs for Java developers]]
- 4.7 [[./chapters/04-emacs-developing-environments.org#emacs-for-r-and-statistics][Emacs for R and statistics]]
- [[./chapters/05-special-features.org][Special features]]
- 5.1 [[./chapters/05-special-features.org#emacs-as-a-file-manager][Emacs as a file manager]]
- 5.2 [[./chapters/05-special-features.org#working-locally-vs-remotely][Working locally vs remotely]]
- 5.3 [[./chapters/05-special-features.org#organize-your-work-write-papers-and-manage-your-agenda][Organize your work, write papers and manage your agenda]]
- 5.4 [[./chapters/05-special-features.org#emails-in-emacs][Emails in Emacs]]
- 5.5 [[./chapters/05-special-features.org#some-great-emacs-tips-and-tricks][Some great Emacs tips and tricks]]
- 5.6 [[./chapters/05-special-features.org#coming-from-other-editors-ie-vim][Coming from other editors (i.e Vim or SublimeText)]]
- [[./chapters/06-readings-and-resources.org][Readings and resources]]
Here is a video that covers the basics of this tutorial.
It is a simple, annoted but efficient demo of a session in Emacs.
[[https://github.com/pierre-lecocq/emacs4developers/tree/master/demo][Here is the links, the sources and the dedicated config file!]]
If you need a detailed and explained Gnus (an Emacs mail reader) configuration example, please refer to [[http://qsdfgh.com/articles/gnus-configuration-example.html][this dedicated article]]
This document is also available in [[./exports/emacs4developers.org][a single ORG file]], [[./exports/emacs4developers.pdf][PDF]], [[./exports/emacs4developers.odt][ODT]] and [[./exports/emacs4developers.html][HTML]].
The content of this project itself is licensed under the [[http://creativecommons.org/licenses/by/3.0/us/deed.en_US][Creative Commons Attribution 3.0 license]], and the underlying source code used to format and display that content is licensed under the [[http://opensource.org/licenses/mit-license.php][MIT license]].
Contributors list can be found [[https://github.com/pierre-lecocq/emacs4developers/network/members][here]].
I want to thank some of the great people who make Emacs a very intersting piece of software or make its community very active (the sort order is absolutely not important here):
Bastien Guerry ([[https://twitter.com/bzg2][@bzg2]]), Dimitri Fontaine ([[https://twitter.com/tapoueh][@tapoueh]]), Julien Danjou ([[https://twitter.com/juldanjou][@juldanjou]]), Sacha Chua ([[https://twitter.com/sachac][@sachac]]), Steve Purcell ([[https://twitter.com/sanityinc][@sanityinc]]), Nic Ferrier ([[https://twitter.com/nicferrier][@nicferrier]]), Avdi Grimm ([[https://twitter.com/avdi][@avdi]]), Magnars ([[https://twitter.com/magnars][@magnars]]), Steve Yegge ([[https://twitter.com/SteveYegge][@SteveYegge]]), Bozhidar Batsov ([[https://twitter.com/bbatsov][@bbatsov]]), Xah Lee ([[https://twitter.com/xahlee][@xahlee]]), and many more ...
You should check those people and their work over the web, twitter, youtube, ...
And thank you for reading this !