Towards a better Emacs
This post lists some customizations and libs towards a better Emacs IMO. This is an evolving document.
Updated: 4 July 2017
Adding Marmalade
;; In ~/.emacs/init.el
(require 'package)
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)
Better Defaults
M-x package-install[RET] better-defaults [RET]
Smex
M-x package-install[RET] smex [RET]
;; In ~/.emacs/init.el
;; smex
(global-set-key (kbd "M-x") 'smex)
(global-set-key (kbd "M-X") 'smex-major-mode-commands)
;; This is your old M-x.
(global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)
Window Navigation
(global-set-key (kbd "C-x <up>") 'windmove-up)
(global-set-key (kbd "C-x <down>") 'windmove-down)
(global-set-key (kbd "C-x <right>") 'windmove-right)
(global-set-key (kbd "C-x <left>") 'windmove-left)
Find files in git project
M-x package-install [RET] find-file-in-repository [RET]
Ignoring certain files and folders while doing grep
;; Ignoring certain directories while doing rgrep
(eval-after-load "grep"
'(progn
(add-to-list 'grep-find-ignored-files "*.tmp")
(add-to-list 'grep-find-ignored-directories "node_modules")
(add-to-list 'grep-find-ignored-directories "dist")))
Duplicate a line
(defun duplicate-line()
(interactive)
(move-beginning-of-line 1)
(kill-line)
(yank)
(open-line 1)
(next-line 1)
(yank)
)
(global-set-key (kbd "C-d") 'duplicate-line)
Auto complete
M-x package-install-packages
;; Search for auto-complete in MELPA, mark it to be installed by pressing i at the column and then press x to install
Keep auto save files out of current dir
(setq backup-directory-alist
`((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
`((".*" ,temporary-file-directory t)))
Running emacs as daemon
I have added the following lines to my shell rc
alias ed="emacs --daemon"
alias ec="emacsclient -t"
alias ek="emacsclient -e '(kill-emacs)'"
Zenburn Theme
M-x package-install zenburn-theme
(load-theme 'zenburn t)
JS editing
M-x package-install[RET] js2-mode [RET]
M-x package-install[RET] ac-js2 [RET]
(add-hook 'js-mode-hook 'js2-minor-mode)
(add-hook 'js2-mode-hook 'ac-js2-mode)
(setq js2-highlight-level 3)
Keys
Follow this
Speedbar in the current frame
Speedbar is great for tree navigation. It comes with emacs 24+ by default. To open speedbar in current frame, use this
Find any file in a git project
Use helm and helm-ls-git to get a fast and fantastic project browser.
M-x (global-set-key (kbd "C-x C-d") 'helm-browse-project)