integrated-development-environment-emacs.md 3.7 KB

IDEE - Integrated development environment in emacs

  1. Implement an IDE configuration for at least one of the follow languages (and framework), as a separate init, major-mode or minor-mode for emacs.
  2. Make compatible with evil-mode for users more familiar with vim.
  3. Program this in emacs lisp.
  4. Installation of the base IDEE without knowing anything about emacs beyond reading the welcome screen.
  5. Give users a way to group together their own IDE settings for undefined languages or frameworks.

Stakeholders

  1. Full stack developers
  2. Remote login developers
  3. Telecommute developers

Why?

  1. Too many IDEs to install. Time, space, uniformity across systems.
  2. Developers, especially full stack, use various languages and connect to multiple system in a single project.
  3. Most developers already know emacs or vim.

Stories

  1. Developers would like to easily install their IDE on any posix-friendly system.
  2. Users want to use familiar keybindings, whether emacs, vim, etc.
  3. Users would like to only need to install a single IDE, rather than one per language.
  4. Some developers would like to not need to install a JVM when not developing for a JVM.

Target Languages (and frameworks)

Select some of the most popular languages:

  • python (django)
  • java
  • groovy (grails)
  • csharp (.NET)
  • sql
  • javascript (jquery or angular)
  • c/cpp
  • PHP

Keybindings

Include emacs and vim defaults for typical text editing:

  • Save or discard changes
  • Quit the editor
  • Toggle to or from evil-mode
  • Highlight trailing whitespace
  • Highlight chars after column 80
  • Region line comments
  • Region block comments
  • Region or line indentation

IDE features

Emacs already has some of these, but it lacks straightfoward configuration, specifically per language and framework.

  • Easy to install and uninstall without knowing emacs, as a vim user
  • Documentation for all dependencies
  • Jump to Definition
  • Auto-completion
  • On-the-fly syntax highlighting
  • Find file in project
  • Compile with one key press
  • Run with one key binding
  • Graphical debugger
  • Code beautification/formatting
  • Keybindings for different window layouts
  • Refactorization

Nice to haves

  • evil-mode
  • multiple language support
  • extensible language support

Suggestions

  1. Install using a shell script users call that sets up the emacs init file, adds pertinent documentation to override the emacs welcome screen, and sets whether to use evil-mode or not.
  2. Add keybindings modes for OSX or Windows users.
  3. Target the most popular language(s) first.
  4. Reuse where others have started. See emacswiki.
  5. If not lisp, could also write in another scripting language that generates the .el files.
  6. Option or default run in the terminal outside emacs; the ansi-term has some limitations.
  7. As a dependency or an homage, examine the emacs-ide project for keybindings and window layout.
  8. If reusing the servers design from other implementation, keep a simple codebase. For example, only use a JVM if the target language is java. Or don't mix virtual machines with interpreters.

References

  1. growth of python use
  2. popular programming languages
  3. python-3
  4. c-language
  5. emacs-ide etc.
  6. emacs-ide