My IDE in Emacs (mainly for Python)
I’m writing this article up to mainly keep track of the current state of my IDE in Emacs, how to set one up, and to keep my to-do list.
Implemented Features #
Default Emacs Library Includes #
I use the following from the library that comes with Emacs (as of version 23)
- Viper-mode (viper-mode 3, though I’m sure 5 would be good too)
- Windmove (through keybindings, for moving around windows easier)
- hideshow (for code folding)
- ibuffer (for listing on buffers when buffer switching)
- ido (for listing of file in a directory in the minibuffer
Code to instantiate:
(setq viper-mode t)
(require 'viper)
(load-library "hideshow")(add-hook 'python-mode-hook 'hs-minor-mode)
(require 'ido)
(ido-mode 'both)
Keybindings #
(global-set-key (kbd "C-x C-l") 'windmove-right)
(global-set-key (kbd "C-x C-h") 'windmove-left)
(global-set-key (kbd "C-x C-k") 'windmove-up)
(global-set-key (kbd "C-x C-j") 'windmove-down)
(global-set-key (kbd "C-x C-;") 'hippie-expand)
(global-set-key (kbd "C-x C-g") 'find-name-dired)
(global-set-key (kbd "C-c C-t") 'ansi-term)
Viper Keybindings (in .viper) #
(setq viper-expert-level '3)
(setq viper-inhibit-startup-message 't)
(setq-default indent-tabs-mode nil) ; I think this makes tabs into spaces
(setq viper-shift-width 4) ; don't touch or else...Makes searching w/ regex default
(setq viper-re-search t) ; don't touch or else...
; The following is for hideshow to work ALMOST similar to vi folding;(there were keybindings I didn't like)
(define-key viper-vi-global-user-map "zt" 'hs-toggle-hiding)
(define-key viper-vi-global-user-map "zM" 'hs-hide-all)
(define-key viper-vi-global-user-map "zm" 'hs-hide-block)
(define-key viper-vi-global-user-map "zR" 'hs-show-all)
(define-key viper-vi-global-user-map "zr" 'hs-show-block)
Features implemented using external files #
Yasnippet (for bundling and snippets) #
Yasnippet provides me features along the lives of textmates bundling, which I think definitely makes things faster in the long run. After all, who wants to write boilerplate code?
http://manual.macromates.com/en/bundles
Yasnippet site:
http://code.google.com/p/yasnippet/
lusty-explorer.el (for a great tab completion file navigator) #
Followed this emacs-fu guide:
http://emacs-fu.blogspot.com/2010/07/navigating-through-files-and-buffers.html
And downloaded the .el here:
http://www.emacswiki.org/emacs/LustyExplorer
Specifically I have the following in my .emacs:
(when
(require 'lusty-explorer nil 'noerror) ;; overrride the normal file-opening, buffer switching
(global-set-key (kbd "C-x C-f") 'lusty-file-explorer)
(global-set-key (kbd "C-x b") 'lusty-buffer-explorer)
)
Desired features #
I have yet to implement this, but I would like:
-
Better file search (the ones I could find don’t do what I’m looking for)
-
Specifically, looking for a smart find that allow autocompletion
-
Looking for something along the lines of eclipse
-