Created
August 19, 2018 09:50
-
-
Save khebbie/90a606e26eaf22233f424f9e4a46a779 to your computer and use it in GitHub Desktop.
Simple spacemacs like init script for scala development
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
;; 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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment