Introduction
I was a vimer before, I used the best editor in this planet. One day, a guy told me that there is also an awesome editor here, which is better than Vim/Vi (IMO, In some way, I don’t want to start a holy war). What always convinced me is that Vim is the best, but action is loader than words. I could only defeat this guy that Vim is best after I try Emacs. Finally, I try Emacs for half of a year and I turn to be an Emacser :)
Install
Before install this .emacs.d, make sure you have backup your configuration.
git clone https://github.com/samrayleung/emacs.d.git ~/.emacs.d
And then run dependency.sh
to install dependencies
bash dependency.sh
Features
Evil
Even though I am an Emacser now, I have to admit that the way Vim edit file is the most efficent way, so there is no need to give it up. By the way, it is said that Emacs is “a great operating system, lacking only a decent ediotr”, now I have Evil, I have them both.
Ivy
I choose Ivy instead of Helm, becuase Ivy is simple, clear(compare with Helm) but powerful enough to suit all my need. If you are interested in Ivy as I do, you could check this post From Helm, To Ivy
Company
As for the completion framework, my choice is company-mode. Althoug auto-complete has better document, but company is easier to setup and less brittle
What’s in my .emacs.d
File | Package | Description |
init-auto-completion | company-mode | Modular in-buffer completion framework for Emacs |
company-quickhelp | Documentation popup for Company | |
company-statistics | Sort completion candidates by previous completion choice | |
company-anaconda | Anaconda backend for company-mode(For Python-mode) | |
company-jedi | Company backend for Python jedi(For python-mode) | |
company-web | Emacs company backend for ac-html(For web-mode) | |
company-shell | Company mode completion backends for shell scripting(For sh-mode) | |
company-c-headers | Auto-completion for C/C++ headers using Company | |
company-tern | Tern backend for company-mode | |
company-restclient | Company-mode completion back-end for restclient-mode | |
company-go | Company backend for gocode(For go-mode) | |
company-racer | Company backend for racer(For rust-mode) | |
init-better-default | dired+ | Extensions to Dired |
ranger | Bringing the goodness of ranger to dired | |
restart-emacs | A simple emacs package to restart emacs from within emacs | |
init-better-editting | window-numbering | Numbered window shortcuts, makes it easy to switch window |
smartparens | Automatic insertion, wrapping and paredit-like navigation with user defined pairs | |
hungry-delete | Enable hungry delete in all modes | |
which-key | Displays available keybindings in popup | |
rainbow-delimiters | Hightlight brackets according to their depth | |
beacon | Highlight the cursor whenever the window scrolls | |
ztree | Compare directory tree | |
region-state | Show number of chars/lines or rows/columns | |
origam | Flexible text folding | |
imenu-list | Show imenu entries in a seperate buffer | |
undo-tree | Treat undo history as a tree | |
wgrep | Wriable grep buffer and apply the changes to files | |
popup | Visual Popup User interface | |
init-c-c++ | irony-mode | C/C++ minor mode powered by libclang(For C-mode) |
init-chinese | youdao-dictionary | Youdao Dictionary interface for Emacs |
chinese-pyim | A Chinese input method which support quanpin, shuangpin and wubi | |
chinese-pyim-basedict | The default pinyin dict of chinese-pyim | |
init-elisp | paredit | minor mode for editing parentheses |
init-eshell | shell-pop | helps you to use shell easily on Emacs. Only one key action to work |
eshell-prompt-extras | Display extra information for you eshell prompt | |
init-evil | evil | Extensible Vi layer for Emacs |
evil-surround | Emulate surround.vim from Vim | |
evil-nerd-commenter | Comment/uncomment lines effciently. Like Nerd commenter in Vim | |
evil-magit | evil-based key bindings for magit | |
evil-mc | Multiple cursors for evil-mode | |
init-go | go-mode | Major mode for the Go programming language |
go-eldoc | eldoc for go-mode | |
init-ivy | counsel | Various completion function using ivy |
swiper | Isearch with an overview. Oh man! | |
ivy | Incremental Vertical | |
avy | tree-based completion | |
counsel-projectile | Ivy integration for projectile | |
init-keybinding | general | Convenience wrapper for keybindings |
hydra | Make bindings that stick around | |
init-markdown | markdown-mode | Major mode for Markdown-formatted text |
pandoc-mode | Minor mode for interacting with Pandoc | |
markdown-preview-mode | markdown realtime preview minor mode | |
init-misc | pdf-tools | Support library for PDF document |
keyfreq | track command frequencies | |
selectric-mode | IBM Selectric mode for Emacs | |
circe | Client for IRC in Emacs | |
try | Try out Emacs package | |
engine-mode | Define and query search engines from within Emacs | |
init-org | org | One of most powerful package in emacs for GTD, document management |
org-pomodoro | Pomodoro implementation for org-mode | |
org-bullets | Show bullets in org-mode as UTF-8 character | |
ox-gfm | Github Flavored Markdown back-end for Org Export Engine | |
ox-twbs | Bootstrap compatible HTML Back-End for Org Export Engine | |
ox-reveal | reveal.js Presentation Back-End for Org Export Engine | |
htmlize | Convert buffer text and decorations to HTML | |
org-download | Image drap-and-drop for Emacs org-mode | |
org-page | A static site generator based on org-mode | |
init-programming | yasnippet | Yet another snippet extension for Emacs |
yaml-mode | Major mode for editing YAML files | |
json-mode | Major mode for editing JSON files | |
nginx-mode | Major mode for editing nginx config files | |
exec-path-from-shell | Get environment variables such as $PATH from the shell | |
expand-region | Increase selected region nu semantic units | |
projectile | Manage and navigate projects in Emacs easily | |
dumb-jump | Jump to defintion for multiple languages without configuration | |
restclient | An interactive HTTP client for emacs | |
projectile-speedbar | Projectile integration for speedbar | |
symbol-overlay | Highlight symbols with keymap-enabled overlays | |
init-python | anaconda-mode | Code navidation, documentation lookup and completion for Python |
elpy | Emacs python development environment | |
py-autopep8 | Use autopep8 to beautify a python buffer | |
py-isort | Use isort to sort the imports in a Python buffer | |
column-enfore-mode | Highlight text that extends beyond a column | |
virtualenvwrapper | A featureful virtualenv tool for Emacs | |
init-rust | rust-mode | A major emacs mode for editing Rust source code |
racer | code completion, goto-definition and docs browsing for Rust via racer | |
init-scheme | geiser | Emacs and Scheme talk to each other |
init-syntax-checking | flycheck | On-the-fly syntax checking |
flycheck-rust | Flycheck: Rust additions and Cargo support | |
init-ui | popwin | Popup Window Manager |
molokai-theme | molokai-theme with Emacs theme engine | |
color-theme-sanityinc-tomorrow | A version of Chris Kempson’s various Tomorrow themes | |
zenburn-theme | A low contrast color theme for Emacs | |
gruvbox-theme | A retro-groove colour theme for Emacs | |
spaceline | Modeline configuration library for powerline | |
diminish | Diminished modes are minor modes with no modeline display | |
init-version-control | magit | A git porcelain inside Emacs |
git-timemachine | Walk through git revision of a file | |
git-gutter | Port of Sublime Text plugin GitGutter | |
itit-web | web-beautify | Format HTML,CSS and Javascript/Json |
web-mode | major mode for editing web templates | |
js2-mode | Improved JavaScript editing mode | |
nodejs-repl | Run Node.js REPL | |
js2-refactor | A JavaScript refactoring library for Emacs | |
ac-js2 | Auto-complete source for js2-mode, with navigation | |
skewer-mode | live browser Javascript, Css, and HTML interaction | |
emmet-mode | Unofficial Emmet’s support for emacs | |
vue-mode | Major mode for vue component based on web-mode and mmm-mode |