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:
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
Yusuke, you have lost your mind!