Last active
February 20, 2020 01:43
-
-
Save kukagg/f09272169e6a22117e5db1ce871a05b1 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
;; packages | |
(setq package-enable-at-startup nil) | |
(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") | |
("marmalade" . "https://marmalade-repo.org/packages/") | |
("melpa" . "https://melpa.org/packages/"))) | |
(when (>= emacs-major-version 24) | |
(require 'package) | |
(add-to-list | |
'package-archives | |
;; '("melpa" . "http://stable.melpa.org/packages/") ; many packages won't show if using stable | |
'("melpa" . "http://melpa.milkbox.net/packages/") | |
t)) | |
(package-initialize) | |
;; use-package | |
(unless (package-installed-p 'use-package) | |
(package-refresh-contents) | |
(package-install 'use-package)) | |
(require 'use-package) | |
;; hide defaults | |
(menu-bar-mode -1) | |
(tool-bar-mode -1) | |
;; hides splash, faster startup | |
(setq inhibit-startup-screen t | |
inhibit-startup-buffer-menu t | |
inhibit-startup-message t | |
inhibit-startup-hooks t) | |
(savehist-mode 1) ;; save history | |
;; load evil | |
(use-package evil | |
:ensure t ;; install the evil package if not installed | |
:init ;; tweak evil's configuration before loading it | |
(setq evil-search-module 'evil-search) | |
(setq evil-ex-complete-emacs-commands nil) | |
(setq evil-vsplit-window-right t) | |
(setq evil-split-window-below t) | |
(setq evil-shift-round nil) | |
(setq evil-want-C-u-scroll t) | |
:config ;; tweak evil after loading it | |
(evil-mode) | |
;; example how to map a command in normal mode (called 'normal state' in evil) | |
(define-key evil-normal-state-map (kbd ", w") 'evil-window-vsplit) | |
(evil-define-key 'normal term-raw-map (kbd "p") 'term-paste) | |
;; evil related | |
(define-key evil-normal-state-map (kbd "M-.") nil) | |
(define-key evil-normal-state-map (kbd "M-,") nil)) | |
;; vim | |
;; t.pope surround | |
(require 'evil-surround) | |
(global-evil-surround-mode) | |
;;;;; multiple cursors | |
(require 'evil-mc) | |
(global-evil-mc-mode) | |
;;;;; multi-edit | |
(require 'evil-multiedit) | |
;; evil leader | |
(require 'evil-leader) | |
(global-evil-leader-mode) | |
;; Highlights all matches of the selection in the buffer. | |
(define-key evil-visual-state-map "R" 'evil-multiedit-match-all) | |
;; Match the word under cursor (i.e. make it an edit region). Consecutive presses will | |
;; incrementally add the next unmatched match. | |
(define-key evil-normal-state-map (kbd "M-d") 'evil-multiedit-match-and-next) | |
;; Match selected region. | |
(define-key evil-visual-state-map (kbd "M-d") 'evil-multiedit-match-and-next) | |
;; Insert marker at point | |
(define-key evil-insert-state-map (kbd "M-d") 'evil-multiedit-toggle-marker-here) | |
;; Same as M-d but in reverse. | |
(define-key evil-normal-state-map (kbd "M-D") 'evil-multiedit-match-and-prev) | |
(define-key evil-visual-state-map (kbd "M-D") 'evil-multiedit-match-and-prev) | |
;; OPTIONAL: If you prefer to grab symbols rather than words, use | |
;; `evil-multiedit-match-symbol-and-next` (or prev). | |
;; Restore the last group of multiedit regions. | |
(define-key evil-visual-state-map (kbd "C-M-D") 'evil-multiedit-restore) | |
;; RET will toggle the region under the cursor | |
(define-key evil-multiedit-state-map (kbd "RET") 'evil-multiedit-toggle-or-restrict-region) | |
;; ...and in visual mode, RET will disable all fields outside the selected region | |
(define-key evil-motion-state-map (kbd "RET") 'evil-multiedit-toggle-or-restrict-region) | |
;; For moving between edit regions | |
(define-key evil-multiedit-state-map (kbd "C-n") 'evil-multiedit-next) | |
(define-key evil-multiedit-state-map (kbd "C-p") 'evil-multiedit-prev) | |
(define-key evil-multiedit-insert-state-map (kbd "C-n") 'evil-multiedit-next) | |
(define-key evil-multiedit-insert-state-map (kbd "C-p") 'evil-multiedit-prev) | |
;; Ex command that allows you to invoke evil-multiedit with a regular expression, e.g. | |
(evil-ex-define-cmd "ie[dit]" 'evil-multiedit-ex-match) | |
;; commentary | |
(require 'evil-commentary) | |
(evil-commentary-mode 1) | |
;; theme | |
(load-theme 'badwolf t) | |
;; line numbers | |
;; (global-display-line-numbers-mode 1) | |
(add-hook 'prog-mode-hook '(lambda () | |
(if (version<= emacs-version "26.0.50") | |
(linum-mode) | |
(display-line-numbers-mode)))) | |
;; windmove | |
(when (fboundp 'windmove-default-keybindings) | |
(windmove-default-keybindings)) | |
;; smooth scroll | |
(setq redisplay-dont-pause t | |
scroll-margin 3 | |
scroll-step 1 | |
scroll-conservatively 10000 | |
scroll-preserve-screen-position 1) | |
;; powerline | |
(require 'powerline) | |
(powerline-default-theme) | |
;;;; clipboard | |
(setq select-enable-clipboard t) | |
(setq save-interprogram-paste-before-kill t) | |
;; clipboard for mac | |
(defun copy-from-osx () | |
(shell-command-to-string "pbpaste")) | |
(defun paste-to-osx (text &optional push) | |
(let ((process-connection-type nil)) | |
(let ((proc (start-process "pbcopy" "*Messages*" "pbcopy"))) | |
(process-send-string proc text) | |
(process-send-eof proc)))) | |
(setq interprogram-cut-function 'paste-to-osx) | |
(setq interprogram-paste-function 'copy-from-osx) | |
;; minibuffer | |
(setq mouse-yank-at-point t) | |
;; encoding | |
(setq locale-coding-system 'utf-8) | |
(set-selection-coding-system 'utf-8) | |
(prefer-coding-system 'utf-8) | |
;; time locale | |
(setq system-time-locale "C") | |
;; backup | |
(setq-default backup-directory-alist | |
`(("" . ,(expand-file-name "backup/" user-emacs-directory))) | |
auto-save-default nil | |
backup-by-copying t | |
delete-old-versions t) | |
;; lockfiles | |
(setq create-lockfiles nil) | |
;; large files limit increase | |
(setq large-file-warning-threshold 40000000) | |
;; highlighting parens | |
(use-package paren | |
:demand | |
:custom ((show-paren-delay 0)) | |
:config | |
(show-paren-mode t)) | |
;; auto-completion | |
(use-package ivy | |
:demand t | |
:ensure t | |
:diminish | |
:commands ivy-mode | |
:custom ((ivy-wrap t) | |
(ivy-height 8) | |
(ivy-display-style 'fancy) | |
(ivy-use-virtual-buffers t) | |
(ivy-case-fold-search-default t) | |
(ivy-re-builders-alist '((t . ivy--regex-ignore-order))) | |
(enable-recursive-minibuffers t)) | |
:config | |
(ivy-mode t) | |
:bind (:map ivy-minibuffer-map | |
("<RET>" . ivy-alt-done))) | |
;;;; syntax | |
(setq-default tab-width 2) | |
(setq-default tab-width 2 indent-tabs-mode nil) | |
(setq-default indent-tabs-mode nil) | |
(setq js-indent-level 2) | |
(setq python-indent 2) | |
(setq css-indent-offset 2) | |
(add-hook 'sh-mode-hook | |
(lambda () | |
(setq sh-basic-offset 2 | |
sh-indentation 2))) | |
(setq web-mode-markup-indent-offset 2) | |
;; checking | |
(add-hook 'after-init-hook #'global-flycheck-mode) | |
;; auto-indent with return key | |
(define-key global-map (kbd "RET") 'newline-and-indent) | |
;; javascript | |
(add-to-list 'auto-mode-alist '("\\.js\\'" . rjsx-mode)) | |
(add-hook 'js-mode-hook 'js2-minor-mode) | |
(add-hook 'js2-mode-hook 'ac-js2-mode) | |
(setq js2-highlight-level 3) | |
(setq js-indent-level 2) | |
;; Semicolons are optional in JS, do not warn about them missing | |
(setq js2-strict-missing-semi-warning nil) | |
;; rainbow | |
(add-hook 'prog-mode-hook 'rainbow-mode) | |
;; gargage collection | |
(setq gc-cons-threshold 20000000) | |
;; auto-save in /tmp | |
(setq backup-directory-alist | |
`((".*" . ,temporary-file-directory))) | |
(setq auto-save-file-name-transforms | |
`((".*" ,temporary-file-directory t))) | |
;; follow sym-links | |
(setq vc-follow-symlinks t) | |
;; one space after period | |
(setq sentence-end-double-space nil) | |
;; ask y/n instead of yes/no | |
(fset 'yes-or-no-p 'y-or-n-p) | |
;; auto refresh the buffer | |
(global-auto-revert-mode t) | |
;; modes | |
(use-package json-mode) | |
(use-package dockerfile-mode) | |
;;Neotree | |
(with-eval-after-load 'neotree | |
(evil-define-key 'evilified neotree-mode-map (kbd "C-w l") 'evil-window-right) | |
(evil-define-key 'evilified neotree-mode-map (kbd "C-w <right>") 'evil-window-right)) | |
(define-key global-map (kbd "M-g") 'neotree-toggle) | |
(use-package neotree | |
:ensure t | |
:config | |
(setq projectile-switch-project-action 'neotree-projectile-action) | |
(setq-default neo-show-hidden-files t) | |
(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))) | |
(neotree-show)) | |
(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-names-vector | |
["#080808" "#d70000" "#67b11d" "#875f00" "#268bd2" "#af00df" "#00ffff" "#b2b2b2"]) | |
'(custom-safe-themes | |
(quote | |
("fa2b58bb98b62c3b8cf3b6f02f058ef7827a8e497125de0254f56e373abee088" "123a8dabd1a0eff6e0c48a03dc6fb2c5e03ebc7062ba531543dfbce587e86f2a" "e1d09f1b2afc2fed6feb1d672be5ec6ae61f84e058cb757689edb669be926896" "a06658a45f043cd95549d6845454ad1c1d6e24a99271676ae56157619952394a" "b89ae2d35d2e18e4286c8be8aaecb41022c1a306070f64a66fd114310ade88aa" "4cf9ed30ea575fb0ca3cff6ef34b1b87192965245776afa9e9e20c17d115f3fb" "aded61687237d1dff6325edb492bde536f40b048eab7246c61d5c6643c696b7f" "44ef88be62a61ad370d55ade1b150e62f2a12bbf80f028e8d5fd4e0f85870f6c" "3be1f5387122b935a26e02795196bc90860c57a62940f768f138b02383d9a257" "bffa9739ce0752a37d9b1eee78fc00ba159748f50dc328af4be661484848e476" "174502267725776b47bdd2d220f035cae2c00c818765b138fea376b2cdc15eb6" "939ea070fb0141cd035608b2baabc4bd50d8ecc86af8528df9d41f4d83664c6a" default))) | |
'(enable-recursive-minibuffers t) | |
'(hl-todo-keyword-faces | |
(quote | |
(("TODO" . "#dc752f") | |
("NEXT" . "#dc752f") | |
("THEM" . "#2aa198") | |
("PROG" . "#268bd2") | |
("OKAY" . "#268bd2") | |
("DONT" . "#d70000") | |
("FAIL" . "#d70000") | |
("DONE" . "#86dc2f") | |
("NOTE" . "#875f00") | |
("KLUDGE" . "#875f00") | |
("HACK" . "#875f00") | |
("TEMP" . "#875f00") | |
("FIXME" . "#dc752f") | |
("XXX+" . "#dc752f") | |
("\\?\\?\\?+" . "#dc752f")))) | |
'(ivy-case-fold-search-default t) | |
'(ivy-display-style (quote fancy)) | |
'(ivy-height 8) | |
'(ivy-re-builders-alist (quote ((t . ivy--regex-ignore-order))) t) | |
'(ivy-use-virtual-buffers t) | |
'(ivy-wrap t) | |
'(notmuch-search-line-faces | |
(quote | |
(("unread" :foreground "#aeee00") | |
("flagged" :foreground "#0a9dff") | |
("deleted" :foreground "#ff2c4b" :bold t)))) | |
'(package-selected-packages | |
(quote | |
(racket-mode slime dockerfile-mode evil-leader neotree evil-multiedit evil-mc treemacs-magit treemacs-icons-dired treemacs-projectile treemacs-evil treemacs rainbow-mode evil-commentary writegood-mode writeroom-mode xterm-color yaml-mode web-mode tide synosaurus smex spaceline spacemacs-theme robe rjsx-mode markdown-mode json-mode evil-surround ac-js2 ag cider exec-path-from-shell use-package powerline-evil hackernews gruvbox-theme git-gutter flycheck evil-org evil-mu4e evil-magit badwolf-theme auto-complete))) | |
'(pdf-view-midnight-colors (quote ("#b2b2b2" . "#262626"))) | |
'(server-mode t) | |
'(show-paren-delay 0)) | |
(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. | |
) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment