Add emacs config

This commit is contained in:
Ian Adam Naval 2015-09-11 00:29:36 -04:00
parent f9135409a4
commit 564d72de60

92
emacs/emacs.dotflie Normal file
View File

@ -0,0 +1,92 @@
;; initialize packages
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/"))
(add-to-list 'package-archives
'("elpy" . "https://jorgenschaefer.github.io/packages/"))
(package-initialize)
;; line numbers
(global-linum-mode t)
(column-number-mode 1)
(setq linum-format "%4d ")
;; git gutter
(require 'git-gutter)
(global-git-gutter-mode t)
(git-gutter:linum-setup)
;; vim emulation
(require 'evil)
(evil-mode 1)
(require 'evil-surround)
(global-evil-surround-mode 1)
;; disable menubar
(menu-bar-mode -1)
;; 80 column marker
(require 'whitespace)
(setq whitespace-style '(face indentation trailing tab-mark lines-tail))
(global-whitespace-mode t)
;; prevent extraneous tabs
(setq-default indent-tabs-mode nil)
;; infer tab settings
(defun how-many-region (begin end regexp &optional interactive)
"Print number of non-trivial matches for REGEXP in region.
Non-interactive arguments are Begin End Regexp"
(interactive "r\nsHow many matches for (regexp): \np")
(let ((count 0) opoint)
(save-excursion
(setq end (or end (point-max)))
(goto-char (or begin (point)))
(while (and (< (setq opoint (point)) end)
(re-search-forward regexp end t))
(if (= opoint (point))
(forward-char 1)
(setq count (1+ count))))
(if interactive (message "%d occurrences" count))
count)))
(defun infer-indentation-style ()
;; if our source file uses tabs, we use tabs, if spaces spaces, and if
;; neither, we use the current indent-tabs-mode
(let ((space-count (how-many-region (point-min) (point-max) "^ "))
(tab-count (how-many-region (point-min) (point-max) "^\t")))
(if (> space-count tab-count) (setq indent-tabs-mode nil))
(if (> tab-count space-count) (setq indent-tabs-mode t))))
(infer-indentation-style)
;; auto remove trailing whitespace
(add-hook 'before-save-hook 'delete-trailing-whitespace)
(setq mode-require-final-newline t)
;; automatic pairs
(electric-pair-mode)
;; neotree
(require 'neotree)
(global-set-key [f8] 'neotree-toggle)
(add-hook 'neotree-mode-hook
(lambda ()
(define-key evil-normal-state-local-map (kbd "TAB") 'neotree-enter)
(define-key evil-normal-state-local-map (kbd "SPC") 'neotree-enter)
(define-key evil-normal-state-local-map (kbd "RET") 'neotree-enter)
(define-key evil-normal-state-local-map (kbd "q") 'neotree-hide)))
(neotree-toggle)
;; backup in separate directory
(setq backup-directory-alist `(("." . "~/.emacs.d/backups")))
(setq backup-by-copying t)
;; projectile
(projectile-global-mode)
(setq projectile-find-file (kbd "C-p"))
;;;;;;;;;;;;;;;;;;;
;; python config ;;
;;;;;;;;;;;;;;;;;;;
(elpy-enable)