Created
November 2, 2015 11:01
-
-
Save Astrac/8ac2cb16f1363a4fab2d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(require 'package) | |
(add-to-list 'package-archives | |
'("melpa" . "http://melpa.milkbox.net/packages/") t) | |
(defun ensure-package-installed (&rest packages) | |
"Assure every package is installed, ask for installation if it’s not. | |
Return a list of installed packages or nil for every skipped package." | |
(mapcar | |
(lambda (package) | |
;; (package-installed-p 'evil) | |
(if (package-installed-p package) | |
nil | |
(if (y-or-n-p (format "Package %s is missing. Install it? " package)) | |
(package-install package) | |
package))) | |
packages)) | |
;; activate installed packages | |
(package-initialize) | |
(when (not package-archive-contents) | |
(package-refresh-contents)) | |
(ensure-package-installed | |
'ag | |
'ensime | |
'scala-outline-popup | |
'neotree | |
'paredit | |
'exec-path-from-shell | |
'color-theme-sanityinc-tomorrow | |
'multi-term | |
'cider | |
'rainbow-delimiters | |
'git-timemachine | |
'git-gutter | |
'magit | |
'highlight-symbol | |
'ace-jump-mode | |
'evil | |
'cyberpunk-theme | |
'solarized-theme | |
'smyx-theme | |
'sublime-themes | |
'restclient | |
'ethan-wspace | |
'multiple-cursors | |
'grizzl | |
'perspective | |
;; 'persp-projectile | |
;; 'projectile | |
'yaml-mode | |
'json-mode | |
'find-file-in-repository | |
'feature-mode | |
'xkcd) | |
;; Highlight symbol keybindings | |
(global-set-key (kbd "C-c f") 'highlight-symbol-at-point) | |
(global-set-key (kbd "C-c n") 'highlight-symbol-next) | |
(global-set-key (kbd "C-c p") 'highlight-symbol-prev) | |
(global-set-key (kbd "C-c r") 'highlight-symbol-query-replace) | |
;; Multiple cursors | |
(global-set-key (kbd "C-c l") 'mc/edit-lines) | |
(global-set-key (kbd "C-c d") 'mc/mark-next-like-this) | |
(global-set-key (kbd "C-c D") 'mc/mark-previous-like-this) | |
(global-set-key (kbd "C-c a") 'mc/mark-all-like-this) | |
;; Comment/uncomment shortcut | |
(global-set-key (kbd "s-/") 'comment-or-uncomment-region) | |
;; Let ethan-wspace take care of final new lines | |
(setq mode-require-final-newline nil) | |
;; Set up perspective | |
;; (persp-mode) | |
;; Set up projectile | |
;;(setq projectile-completion-system 'grizzl) | |
;;(projectile-global-mode) | |
;; (define-key projectile-mode-map (kbd "s-s") 'projectile-persp-switch-project) | |
;; Find file in repository | |
(global-set-key (kbd "C-x p") 'find-file-in-repository) | |
;; MacOSX work-around for executable paths (needed by ensime) | |
(when (memq window-system '(mac ns)) | |
(exec-path-from-shell-initialize)) | |
;; Enable ensime on scala-mode | |
(add-hook 'scala-mode-hook 'ensime-scala-mode-hook) | |
;; Disable auto-complete-mode on scala-mode to avoid double suggestions | |
(add-hook 'scala-mode-hook '(lambda () (auto-complete-mode 0))) | |
;; Enable line numbers | |
(global-linum-mode 1) | |
;; Enable IDO with flex-matching everywhere | |
(ido-mode 1) | |
(setq ido-enable-flex-matching t) | |
(setq ido-everywhere t) | |
;; Do not shouw splash screen | |
(setq inhibit-startup-message t | |
inhibit-startup-echo-area-message t) | |
;; Set zsh as shell for multi-term | |
(setq multi-term-program "/bin/zsh") | |
;; Needed for zsh integration and term colours | |
(setq system-uses-terminfo nil) | |
;; Increase the size of the history for multi-term | |
(add-hook 'term-mode-hook | |
(lambda () | |
(setq term-buffer-maximum-size 10000))) | |
;; Allow pasting in multi-term | |
(add-hook 'term-mode-hook | |
(lambda () | |
(define-key term-raw-map (kbd "C-y") 'term-paste))) | |
;; Show/hide neotree with F8 | |
(global-set-key [f8] 'neotree-toggle) | |
;; Enable git gutter | |
(global-git-gutter-mode +1) | |
;; Enable paredit on lisp and elisp | |
(autoload 'enable-paredit-mode "paredit" "Turn on pseudo-structural editing of Lisp code." t) | |
(add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode) | |
(add-hook 'eval-expression-minibuffer-setup-hook #'enable-paredit-mode) | |
(add-hook 'ielm-mode-hook #'enable-paredit-mode) | |
(add-hook 'lisp-mode-hook #'enable-paredit-mode) | |
(add-hook 'lisp-interaction-mode-hook #'enable-paredit-mode) | |
(add-hook 'scheme-mode-hook #'enable-paredit-mode) | |
;; Highlight symbol keymappings | |
(global-set-key [(control f3)] 'highlight-symbol-at-point) | |
(global-set-key [f3] 'highlight-symbol-next) | |
(global-set-key [(shift f3)] 'highlight-symbol-prev) | |
(global-set-key [(meta f3)] 'highlight-symbol-query-replace) | |
;; Remove whitespace before saving | |
(add-hook 'before-save-hook 'delete-trailing-whitespace) | |
;; Ace-jump keys | |
(define-key global-map (kbd "C-c SPC") 'ace-jump-mode) | |
;; ENSIME settings | |
(global-set-key (kbd "s-.") 'ensime-edit-definition) | |
(global-set-key (kbd "s-,") 'ensime-pop-find-definition-stack) | |
;; Scala outline popup keybinding | |
(global-set-key (kbd "C-a") 'scala-outline-popup) | |
;; Enables evil mode | |
(evil-mode 1) | |
(add-hook 'term-mode-hook '(lambda () (turn-off-evil-mode))) | |
;; Set theme | |
(load-theme 'tao-yang t) | |
(set-face-attribute 'mode-line nil :height 140) | |
;; Increase line-spacing | |
(setq-default line-spacing 3) | |
;; Do not put the freakin' backup files in the same folder I am working in please! | |
(setq backup-directory-alist `((".*" . ,temporary-file-directory))) | |
(setq auto-save-file-name-transforms `((".*" ,temporary-file-directory t))) | |
;; INSERT hash on a Mac UK keyboard | |
(global-set-key (kbd "M-3") '(lambda () (interactive) (insert "#"))) | |
;; Re-map home/end to move to the beginning and end of the line | |
(global-set-key (kbd "<end>") 'end-of-line) | |
(global-set-key (kbd "<home>") 'beginning-of-line) | |
;; Map magit-status | |
(global-set-key (kbd "C-c m") 'magit-status) | |
;; Whitespace OCD helper | |
(global-ethan-wspace-mode 1) | |
;; Be like wind moving through your splits | |
(windmove-default-keybindings) | |
;; Enable perspective mode | |
(persp-mode) | |
(set-default-font "Source Code Pro 13") | |
;; Generated settings | |
(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 | |
("40bc0ac47a9bd5b8db7304f8ef628d71e2798135935eb450483db0dbbfff8b11" "603a9c7f3ca3253cb68584cb26c408afcf4e674d7db86badcfe649dd3c538656" "b3775ba758e7d31f3bb849e7c9e48ff60929a792961a2d536edec8f68c671ca5" "3cc2385c39257fed66238921602d8104d8fd6266ad88a006d0a4325336f5ee02" "987b709680284a5858d5fe7e4e428463a20dfabe0a6f2a6146b3b8c7c529f08b" "e9776d12e4ccb722a2a732c6e80423331bcb93f02e089ba2a4b02e85de1cf00e" "46fd293ff6e2f6b74a5edf1063c32f2a758ec24a5f63d13b07a20255c074d399" "6eaebdc2426b0edfff9fd9a7610f2fe7ddc70e01ceb869aaaf88b5ebe326a0cd" "e80932ca56b0f109f8545576531d3fc79487ca35a9a9693b62bf30d6d08c9aaf" "9558f71c706fba7b136e75d9c5e73ddd2c9d91e76e2b18f733d4ab2f388f3b72" "9823333060f12954e41174bfa4c271b94028ff8452b93f9459b362cc89ce39c2" "95f954ce018bbff3107b357bd87d060db195a2d5c6b70411587223597fde171d" "39f98624caf410e66c4e03f36a1c373ea8ed9177cd9d12dfd6c0a53825599f60" "a041a61c0387c57bb65150f002862ebcfe41135a3e3425268de24200b82d6ec9" "b825687675ea2644d1c017f246077cdd725d4326a1c11d84871308573d019f67" "dba244449b15bdc6a3236f45cec7c2cb03de0f5cf5709a01158a278da86cb69b" "34e7163479ef3669943b3b9b1fabe639d6e0a0453e0de79cea2c52cb520d3bc4" "19ba41b6dc0b5dd34e1b8628ad7ae47deb19f968fe8c31853d64ea8c4df252b8" "868f73b5cf78e72ca2402e1d48675e49cc9a9619c5544af7bf216515d22b58e7" "8288b9b453cdd2398339a9fd0cec94105bc5ca79b86695bd7bf0381b1fbe8147" "cedd3b4295ac0a41ef48376e16b4745c25fa8e7b4f706173083f16d5792bb379" "62408b3adcd05f887b6357e5bd9221652984a389e9b015f87bbc596aba62ba48" "94ba29363bfb7e06105f68d72b268f85981f7fba2ddef89331660033101eb5e5" "90edd91338ebfdfcd52ecd4025f1c7f731aced4c9c49ed28cfbebb3a3654840b" "d677ef584c6dfc0697901a44b885cc18e206f05114c8a3b7fde674fce6180879" "8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" "e16a771a13a202ee6e276d06098bc77f008b73bbac4d526f160faa2d76c1dd0e" "06f0b439b62164c6f8f84fdda32b62fb50b6d00e8b01c2208e55543a6337433a" "f0a99f53cbf7b004ba0c1760aa14fd70f2eabafe4e62a2b3cf5cabae8203113b" default))) | |
'(projectile-project-root-files | |
(quote | |
(".git" "rebar.config" "project.clj" "SConstruct" "pom.xml" "build.sbt" "build.gradle" "Gemfile" "requirements.txt" "tox.ini" "package.json" "gulpfile.js" "Gruntfile.js" "bower.json" "composer.json" "Cargo.toml" "mix.exs")))) | |
(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. | |
'(hl-line ((t (:background "midnight blue" :underline nil)))) | |
'(mode-line-buffer-id ((t (:foreground "gray80" :weight bold)))) | |
'(persp-selected-face ((t (:inherit mode-line :foreground "gray60"))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment