Skip to content

Instantly share code, notes, and snippets.

@khebbie
Created August 19, 2018 09:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save khebbie/90a606e26eaf22233f424f9e4a46a779 to your computer and use it in GitHub Desktop.
Save khebbie/90a606e26eaf22233f424f9e4a46a779 to your computer and use it in GitHub Desktop.
Simple spacemacs like init script for scala development
;; 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