|
;; global variables |
|
(setq |
|
global-font-lock-mode 1 |
|
inhibit-startup-screen t |
|
create-lockfiles nil |
|
make-backup-files nil |
|
column-number-mode t |
|
scroll-error-top-bottom t |
|
show-paren-delay 0.5 |
|
use-package-always-ensure t |
|
ensime-startup-notification nil |
|
sentence-end-double-space nil) |
|
|
|
(global-display-line-numbers-mode) |
|
|
|
;; buffer local variables |
|
(setq-default |
|
indent-tabs-mode nil |
|
tab-width 4 |
|
c-basic-offset 4) |
|
|
|
;; modes |
|
(electric-indent-mode +1) |
|
|
|
;; global keybindings |
|
(global-unset-key (kbd "C-z")) |
|
|
|
;; the package manager |
|
(require 'package) |
|
(setq |
|
package-archives '(("gnu" . "http://elpa.gnu.org/packages/") |
|
("org" . "http://orgmode.org/elpa/") |
|
("melpa" . "http://melpa.org/packages/") |
|
("melpa-stable" . "http://stable.melpa.org/packages/")) |
|
package-archive-priorities '(("melpa-stable" . 1))) |
|
|
|
(package-initialize) |
|
(when (not package-archive-contents) |
|
(package-refresh-contents) |
|
(package-install 'use-package)) |
|
(require 'use-package) |
|
|
|
(custom-set-variables |
|
;; custom-set-variables was added by Custom. |
|
;; If you edit it by hand, you could mess it up, so be careful. |
|
;; Your init file should contain only one such instance. |
|
;; If there is more than one, they won't work right. |
|
'(custom-safe-themes |
|
(quote |
|
("d677ef584c6dfc0697901a44b885cc18e206f05114c8a3b7fde674fce6180879" "8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" default))) |
|
'(global-display-line-numbers-mode t) |
|
'(package-selected-packages |
|
(quote |
|
(helm-swoop auto-complete switch-window company-mode which-key evil-nerd-commenter evil-surround helm-ag evil-leader window-number dired markdown-mode markdown projectile neotree migemo helm-migemo use-package)))) |
|
(custom-set-faces |
|
;; custom-set-faces was added by Custom. |
|
;; If you edit it by hand, you could mess it up, so be careful. |
|
;; Your init file should contain only one such instance. |
|
;; If there is more than one, they won't work right. |
|
) |
|
|
|
(use-package evil |
|
:ensure t |
|
:pin melpa-stable) |
|
(use-package ensime |
|
:ensure t |
|
:pin melpa-stable) |
|
(use-package helm |
|
:ensure t |
|
:pin melpa-stable) |
|
(use-package helm-swoop |
|
:ensure t |
|
:pin melpa-stable) |
|
(use-package solarized-theme |
|
:ensure t |
|
:pin melpa-stable) |
|
|
|
(use-package migemo |
|
:ensure t |
|
:pin melpa-stable) |
|
(use-package helm-projectile |
|
:ensure t |
|
:pin melpa-stable) |
|
|
|
(use-package projectile |
|
:ensure t |
|
:pin melpa-stable) |
|
|
|
(use-package helm-ag |
|
:ensure t |
|
:pin melpa-stable) |
|
|
|
(use-package evil-leader |
|
:ensure t |
|
:pin melpa-stable) |
|
|
|
(use-package evil-nerd-commenter |
|
:ensure t |
|
:pin melpa-stable) |
|
|
|
(use-package which-key |
|
:ensure t |
|
:pin melpa-stable) |
|
|
|
(use-package switch-window |
|
:ensure t |
|
:pin melpa-stable) |
|
|
|
(use-package eshell |
|
:ensure t |
|
:pin melpa-stable) |
|
|
|
(use-package auto-complete |
|
:ensure t |
|
:pin melpa-stable) |
|
(ac-config-default) |
|
|
|
(use-package evil-surround |
|
:ensure t |
|
:config |
|
(global-evil-surround-mode 1)) |
|
|
|
|
|
(add-to-list 'exec-path "/usr/local/bin") |
|
|
|
;; You can surround in visual-state with S<textobject> or gS<textobject>. Or in normal-state with ys<textobject> or yS<textobject>. |
|
(require 'evil) |
|
(evil-mode 1) |
|
|
|
(require 'ensime) |
|
;; neotree |
|
(require 'neotree) |
|
|
|
|
|
;; helm-swoop |
|
;; helm from https://github.com/emacs-helm/helm |
|
(require 'helm) |
|
(require 'helm-swoop) |
|
(require 'migemo) |
|
|
|
;; Split direcion. 'split-window-vertically or 'split-window-horizontally |
|
(setq helm-swoop-split-direction 'split-window-vertically) |
|
|
|
;; If nil, you can slightly boost invoke speed in exchange for text color |
|
(setq helm-swoop-speed-or-color t) |
|
|
|
;; ;; Go to the opposite side of line from the end or beginning of line |
|
(setq helm-swoop-move-to-line-cycle t) |
|
|
|
;; Optional face for line numbers |
|
;; Face name is `helm-swoop-line-number-face` |
|
(setq helm-swoop-use-line-number-face t) |
|
|
|
;; If you prefer fuzzy matching |
|
(setq helm-swoop-use-fuzzy-match t) |
|
|
|
|
|
;; utf-8 |
|
(set-language-environment 'utf-8) |
|
(setq locale-coding-system 'utf-8) |
|
(set-default-coding-systems 'utf-8) |
|
(set-terminal-coding-system 'utf-8) |
|
(set-selection-coding-system |
|
(if (eq system-type 'windows-nt) |
|
'utf-16-le ;; https://rufflewind.com/2014-07-20/pasting-unicode-in-emacs-on-windows |
|
'utf-8)) |
|
(prefer-coding-system 'utf-8) |
|
|
|
|
|
;; solarized |
|
(require 'solarized) |
|
(load-theme 'solarized-dark) |
|
|
|
|
|
;; projectile |
|
(projectile-global-mode) |
|
(setq projectile-completion-system 'helm) |
|
(helm-projectile-on) |
|
|
|
;;(setq projectile-switch-project-action 'neotree-projectile-action) |
|
|
|
(defun neotree-project-dir () |
|
"Open NeoTree using the git root." |
|
(interactive) |
|
(let ((project-dir (projectile-project-root)) |
|
(file-name (buffer-file-name))) |
|
(neotree-toggle) |
|
(if project-dir |
|
(if (neo-global--window-exists-p) |
|
(progn |
|
(neotree-dir project-dir) |
|
(neotree-find file-name))) |
|
(message "Could not find git project root.")))) |
|
|
|
|
|
;; show available keys as you type |
|
(require 'which-key) |
|
(which-key-mode) |
|
|
|
|
|
(defun switch-to-previous-buffer () |
|
"Switch to previously open buffer. |
|
Repeated invocations toggle between the two most recently open buffers." |
|
(interactive) |
|
(switch-to-buffer (other-buffer (current-buffer) 1))) |
|
|
|
|
|
(require 'evil-leader) |
|
(define-key evil-normal-state-map (kbd "<SPC>") nil) |
|
(evil-leader/set-leader "<SPC>") |
|
(global-evil-leader-mode) |
|
(evil-leader/set-key |
|
"f s" 'save-buffer |
|
"b l" 'helm-buffers-list |
|
"w h" 'windmove-left |
|
"w l" 'windmove-right |
|
"w j" 'windmove-down |
|
"w k" 'windmove-up |
|
"w q" 'delete-window |
|
"w w" 'switch-window |
|
"s s" 'helm-swoop |
|
"p s" 'helm-ag-project-root |
|
"p f" 'helm-projectile-find-file |
|
"p n" 'neotree-project-dir |
|
"p p" 'projectile-switch-project |
|
"q q" 'save-buffers-kill-terminal |
|
"; l" 'evilnc-comment-or-uncomment-lines |
|
"e e" 'ensime-print-errors-at-point |
|
"e t" 'ensime-type-at-point |
|
"e d" 'ensime-edit-definition |
|
"e r" 'ensime-inf-switch |
|
"TAB" 'switch-to-previous-buffer |
|
"c l" 'load-file |
|
"b k" 'kill-buffer) |
|
|
|
;; evil-mode and neotree |
|
(evil-define-key 'normal neotree-mode-map (kbd "TAB") 'neotree-enter) |
|
(evil-define-key 'normal neotree-mode-map (kbd "SPC") 'neotree-quick-look) |
|
(evil-define-key 'normal neotree-mode-map (kbd "q") 'neotree-hide) |
|
(evil-define-key 'normal neotree-mode-map (kbd "RET") 'neotree-enter) |
|
(evil-define-key 'normal neotree-mode-map (kbd "g") 'neotree-refresh) |
|
(evil-define-key 'normal neotree-mode-map (kbd "n") 'neotree-next-line) |
|
(evil-define-key 'normal neotree-mode-map (kbd "p") 'neotree-previous-line) |
|
(evil-define-key 'normal neotree-mode-map (kbd "A") 'neotree-stretch-toggle) |
|
(evil-define-key 'normal neotree-mode-map (kbd "H") 'neotree-hidden-file-toggle) |