Created
November 8, 2017 10:20
-
-
Save pechorin/8f04336eecc8e80a192e3e08aa2489f4 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
;; --- Melpa --- | |
(require 'package) | |
; list the repositories containing them | |
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") | |
("melpa" . "http://melpa.org/packages/"))) | |
(package-initialize) | |
; fetch the list of packages available (unless package-archive-contents (package-refresh-contents)) | |
; list the packages you want | |
(setq package-list '(expand-region | |
ibuffer-vc | |
which-key | |
dumb-jump | |
all-the-icons | |
all-the-icons-dired | |
ace-window | |
neotree | |
evil | |
evil-nerd-commenter | |
evil-org | |
general ; for keybindings | |
helpful | |
discover-my-major | |
material-theme | |
ivy ; use Ivy instead of Ido | |
swiper | |
counsel | |
fzf | |
projectile | |
projectile-rails | |
counsel-projectile | |
rg | |
robe | |
enh-ruby-mode | |
company | |
etags-select | |
rust-mode | |
racer)) | |
; install the missing packages | |
(dolist (package package-list) | |
(unless (package-installed-p package) | |
(package-install package))) | |
;; --- End of Melpa --- | |
;; Custom Emacs Variables | |
(set-default-font "Monaco 15" nil t) | |
;; aliases | |
(defalias 'yes-or-no-p 'y-or-n-p) ; y or n is enough | |
(defalias 'list-buffers 'ibuffer) ; always use ibuffer | |
(setq inhibit-splash-screen t | |
initial-scratch-message nil | |
icomplete-mode t) | |
; backup settings | |
(setq my-backup-dir "$HOME/.backup") | |
(setq make-backup-files t ; backup a file the first time it is saved | |
backup-directory-alist `((".*" . , my-backup-dir)) | |
backup-by-copying t | |
version-control t | |
delete-old-versions t) | |
(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. | |
'(ansi-color-faces-vector | |
[default default default italic underline success warning error]) | |
'(ansi-color-names-vector | |
["#242424" "#e5786d" "#95e454" "#cae682" "#8ac6f2" "#333366" "#ccaa8f" "#f6f3e8"]) | |
'(custom-enabled-themes (quote (deeper-blue))) | |
'(custom-safe-themes | |
(quote | |
("5dc0ae2d193460de979a463b907b4b2c6d2c9c4657b2e9e66b8898d2592e3de5" "98cc377af705c0f2133bb6d340bf0becd08944a588804ee655809da5d8140de6" default))) | |
'(dumb-jump-mode t) | |
'(fci-rule-color "#ECEFF1") | |
'(global-ede-mode t) | |
'(hl-sexp-background-color "#efebe9") | |
'(icomplete-mode t) | |
'(ivy-mode t) | |
'(package-selected-packages | |
(quote | |
(evil-org dumb-jump evil-nerd-commenter etags-select fzf general counsel-projectile projectile-rails counsel swiper projectile helpful ivy robe company-mode discover-my-major ibuffer-vc expand-region company racer rust-mode rg evil-leader project-explorer material-theme dired-subtree evil-goggles neotree all-the-icons-dired all-the-icons ace-window enh-ruby-mode))) | |
'(scroll-bar-mode nil) | |
'(show-paren-mode t) | |
'(tool-bar-mode nil) | |
'(tramp-syntax (quote default) nil (tramp)) | |
'(vc-annotate-background nil) | |
'(vc-annotate-color-map | |
(quote | |
((20 . "#B71C1C") | |
(40 . "#FF5722") | |
(60 . "#FFA000") | |
(80 . "#558b2f") | |
(100 . "#00796b") | |
(120 . "#2196f3") | |
(140 . "#4527A0") | |
(160 . "#B71C1C") | |
(180 . "#FF5722") | |
(200 . "#FFA000") | |
(220 . "#558b2f") | |
(240 . "#00796b") | |
(260 . "#2196f3") | |
(280 . "#4527A0") | |
(300 . "#B71C1C") | |
(320 . "#FF5722") | |
(340 . "#FFA000") | |
(360 . "#558b2f")))) | |
'(vc-annotate-very-old-color nil)) | |
(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. | |
) | |
;; End of custom-set-variables ;; | |
;; Evil | |
(evil-mode t) | |
(setq evil-emacs-state-modes (delq 'ibuffer-mode evil-emacs-state-modes)) | |
;; Ivy (instead of evil) | |
(ivy-mode 1) | |
(setq ivy-use-virtual-buffers t) | |
(setq enable-recursive-minibuffers t) | |
;(global-set-key (kbd "C-c C-r") 'ivy-resume) | |
;(global-set-key (kbd "<f6>") 'ivy-resume) | |
;(global-set-key (kbd "M-x") 'counsel-M-x) | |
(global-set-key (kbd "C-x C-f") 'counsel-find-file) | |
;(global-set-key (kbd "<f1> f") 'counsel-describe-function) | |
;(global-set-key (kbd "<f1> v") 'counsel-describe-variable) | |
;(global-set-key (kbd "<f1> l") 'counsel-find-library) | |
;(global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol) | |
;(global-set-key (kbd "<f2> u") 'counsel-unicode-char) | |
;(global-set-key (kbd "C-c g") 'counsel-git) | |
;(global-set-key (kbd "C-c j") 'counsel-git-grep) | |
;(global-set-key (kbd "C-c k") 'counsel-ag) | |
;(global-set-key (kbd "C-x l") 'counsel-locate) | |
;(global-set-key (kbd "C-S-o") 'counsel-rhythmbox) | |
;(define-key read-expression-map (kbd "C-r") 'counsel-expression-history) | |
;; all-the-icons | |
(require 'all-the-icons) | |
;; Neotree | |
(setq neo-smart-open t) | |
(setq neo-theme (if (display-graphic-p) 'icons 'arrow)) | |
(setq projectile-switch-project-action 'neotree-projectile-action) | |
(add-hook 'neotree-mode-hook | |
(lambda () | |
(define-key evil-normal-state-local-map (kbd "q") 'neotree-hide) | |
(define-key evil-normal-state-local-map (kbd "I") 'neotree-hidden-file-toggle) | |
(define-key evil-normal-state-local-map (kbd "z") 'neotree-stretch-toggle) | |
(define-key evil-normal-state-local-map (kbd "R") 'neotree-refresh) | |
(define-key evil-normal-state-local-map (kbd "m") 'neotree-rename-node) | |
(define-key evil-normal-state-local-map (kbd "c") 'neotree-create-node) | |
(define-key evil-normal-state-local-map (kbd "d") 'neotree-delete-node) | |
(define-key evil-normal-state-local-map (kbd "s") 'neotree-enter-vertical-split) | |
(define-key evil-normal-state-local-map (kbd "S") 'neotree-enter-horizontal-split) | |
(define-key evil-normal-state-local-map (kbd "RET") 'neotree-enter))) | |
;; Projectile | |
(projectile-mode) | |
(counsel-projectile-on) | |
(setq projectile-enable-caching t | |
projectile-completion-system 'ivy) | |
;; enh-ruby-mode | |
(autoload 'enh-ruby-mode "enh-ruby-mode" "Major mode for ruby files" t) | |
(add-to-list 'auto-mode-alist | |
'("\\(?:\\.rb\\|ru\\|rake\\|thor\\|jbuilder\\|gemspec\\|podspec\\|/\\(?:Gem\\|Rake\\|Cap\\|Thor\\|Vagrant\\|Guard\\|Pod\\)file\\)\\'" . enh-ruby-mode)) | |
(add-to-list 'interpreter-mode-alist '("ruby" . enh-ruby-mode)) | |
(setq enh-ruby-add-encoding-comment-on-save 0) | |
(add-hook 'ruby-mode-hook 'robe-mode) | |
;; rg.el (ripgrep) | |
(rg-enable-default-bindings (kbd "M-s")) | |
;; racer | |
(add-hook 'rust-mode-hook #'racer-mode) (add-hook 'racer-mode-hook #'eldoc-mode) | |
(add-hook 'racer-mode-hook #'company-mode) | |
;; evil org | |
(require 'evil-org) | |
(add-hook 'org-mode-hook 'evil-org-mode) | |
(evil-org-set-key-theme '(navigation insert textobjects additional calendar)) | |
;; Bindings | |
(which-key-mode) | |
;; Company mode (for autocomplete) | |
(global-company-mode) | |
(setq company-idle-delay 0.2) | |
(eval-after-load 'company '(push 'company-robe company-backends)) | |
;; Group ibuffer entries by git projects | |
(add-hook 'ibuffer-hook | |
(lambda () | |
(ibuffer-vc-set-filter-groups-by-vc-root) | |
(unless (eq ibuffer-sorting-mode 'alphabetic)))) | |
;; Dumb jump mode | |
(dumb-jump-mode) | |
(setq dumb-jump-default-project "~/work") | |
(setq dumb-jump-selector 'ivy) | |
(setq dumb-jump-force-searcher 'rg) | |
;; ~ Keybindings setup ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
(require 'general) | |
;; bind a key globally in normal state; keymaps must be quoted | |
(setq general-default-keymaps 'evil-normal-state-map) | |
(setq base-leader ",") | |
(setq project-leader "\\") | |
; leader commands for working | |
(general-define-key :prefix base-leader | |
"t" 'ns-next-frame | |
"n" 'neotree-toggle | |
"e" 'er/expand-region | |
"e" 'eval-last-sexp ; be fast in elisp debug :) | |
"E" 'eval-buffer | |
"r" 'rg | |
"R" 'rg-save-search | |
"d" 'fzf-directory) | |
; leader commands for projects | |
(general-define-key :prefix project-leader | |
"f" 'projectile-find-file | |
"r" 'rg-project | |
"d" 'fzf-projectile | |
"p" '(:keymap projectile-command-map :package projectile)) | |
(general-define-key :keymaps 'global | |
"C-s" 'swiper | |
"C-x C-b" 'ibuffer ; ibuffer instead of buffer-list | |
"C-=" 'er/expand-region | |
"M-;" 'evilnc-comment-or-uncomment-lines | |
"M-g q" 'dumb-jump-quick-look | |
"M-g o" 'dumb-jump-go-other-window | |
"M-g j" 'dumb-jump-go | |
"M-g i" 'dumb-jump-go-prompt | |
"M-g x" 'dumb-jump-go-prefer-external | |
"M-g z" 'dumb-jump-go-prefer-external-other-window) | |
; ibuffer for ex | |
(evil-ex-define-cmd "ls" 'ibuffer) | |
;; ~ Keybindings setup ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
(require 'mode-local) | |
(defvar-mode-local enh-ruby-mode projectile-tags-command "ripper-tags -R --exclude=node_modules --emacs") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment