#+SETUPFILE: ../../../template/level-2.org
#+TITLE: emacs IDE
#+DATE: <2017-06-11 Sun 00:00>
#+AUTHOR: vaeringjar
#+EMAIL: vaeringjar@land
#+DESCRIPTION: Analysis of the different options for making emacs behave more like an IDE.
#+KEYWORDS: diy emacs


* Post

I got into this after listening to people talk about using emacs-like
keybindings in other IDEs. Some even have worked on projects to deblob
and [install vscode](https://github.com/fusion809/vscode-installer)
with their own setup. And while I find interesting the idea of a free
version of visual studio driven on the backs of one of the companies
that formerly had such strong feelings against the libre-posix-land, I
also have a soft spot for emacs and will always return to it.


* What does an IDE need?

The emacswiki sums this up with three different articles. Together, in
my opinion, these three cover the basics of an IDE in emacs jargon:

- [programming
  utilities](https://www.emacswiki.org/emacs/CategoryProgrammerUtils)
- [modes](https://www.emacswiki.org/emacs/CategoryModes)
- [code project
  management](https://www.emacswiki.org/emacs/CategoryProject)

** Auto-Completion Modes

The ability to type a few chars in a given language:

- [predictive](http://www.dr-qubit.org/Emacs_Predictive_Completion_package.html),
  entry on [emacswiki](https://www.emacswiki.org/emacs/PredictiveMode)
- [robe](https://github.com/dgutov/robe)
- [irony-mode](https://github.com/Sarcasm/irony-mode/), entry on
  [emacswiki](https://www.emacswiki.org/emacs/irony-mode)
- [gocode](https://github.com/nsf/gocode)


* [jedi-starter](https://github.com/wernerandrew/jedi-starter) for emacs as a Python IDE

Has a [demo and tutorial
video](https://www.youtube.com/watch?v=6BlTGPsjGJk).

Builds on top of these:

- [projectile](https://github.com/bbatsov/projectile)
- [auto-complete](https://github.com/auto-complete/auto-complete)
- [epc](https://github.com/tkf/python-epc)
- [jedi.el](https://github.com/davidhalter/jedi)

Install either manually or with package.el.


* [emacs-ide](https://emacs-ide.tuxfamily.org/)

_Tested this back in February, review pending..._


* [atilaneves](https://atilanevesoncode.wordpress.com/)

Átila has a [video
presentation](https://www.youtube.com/watch?v=5FQwQ0QWBTU) about using
emacs as an ide.

- [Emacs as a Python 3 IDE: at
  last!](https://atilanevesoncode.wordpress.com/2015/01/29/emacs-as-a-python-3-ide-at-last/) -
  2015/01/29
- [Emacs as a C++ IDE:
  headers](https://atilanevesoncode.wordpress.com/2016/01/18/emacs-as-a-c-ide-headers/) -
  2016/01/18

Átila suggests an IDE should have the following. And regardless of
which features an IDE should subjectively or objectively possess,
emacs can extend to provide them.

- Jump to Definition
- Auto-completion
- On-the-fly syntax highlighting
- Find file in project
- Compile with one key press
- Graphical debugger

** [cmake-ide](https://github.com/atilaneves/cmake-ide)

_Review pending..._


** [ropemacs-py3k](https://github.com/atilaneves/ropemacs_py3k)

_Review pending..._


* [cedet](http://cedet.sourceforge.net/)

- [emacswiki](https://www.emacswiki.org/emacs/CollectionOfEmacsDevelopmentEnvironmentTools)
  has a summary of features in cedet
