93 lines
2.7 KiB
Plaintext
93 lines
2.7 KiB
Plaintext
;; 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)
|