Created
April 9, 2018 11:14
-
-
Save slaykovsky/8b249feaa34b73d938bfcc0412b2abab to your computer and use it in GitHub Desktop.
This file contains 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
;;; package --- Summary | |
;;; Commentary: | |
;;; Use it on your own risk :) | |
;;; Code: | |
(setq gc-cons-threshold 64000000) | |
(add-hook 'after-init-hook #'(lambda () (setq gc-cons-threshold 800000))) | |
;;; global vars | |
(setq | |
inhibit-startup-screen t | |
create-lockfiles nil | |
make-backup-files nil | |
column-number-mode t | |
scroll-error-top-bottom t | |
use-package-always-ensure t | |
sentence-end-double-space nil | |
select-enable-clipboard t | |
select-enable-primary t | |
ring-bell-function 'ignore | |
max-lisp-eval-depth most-positive-fixnum | |
browse-url-browser-function 'browse-url-chromium | |
message-kill-buffer-on-exit t | |
ivy-use-virtual-buffers t | |
max-specpdl-size most-positive-fixnum) | |
;;; buffer local variables | |
(setq-default | |
indent-tabs-mode nil | |
show-parn-delay 0.5 | |
tab-width 4 | |
c-basic-offset 4) | |
;;; package management | |
(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)) | |
(eval-when-compile | |
(require 'use-package)) | |
(require 'bind-key) | |
(require 'diminish) | |
(use-package magit | |
:bind ("C-c s" . magit-status)) | |
(use-package python-mode) | |
(use-package dockerfile-mode) | |
(use-package base16-theme) | |
(use-package bind-key) | |
(use-package dash) | |
(use-package dash-functional) | |
(use-package company) | |
(use-package smartparens) | |
(use-package org) | |
(use-package popwin) | |
(use-package s) | |
(use-package f) | |
(use-package expand-region) | |
(use-package markdown-mode+) | |
(use-package enh-ruby-mode) | |
(use-package org) | |
(use-package flycheck) | |
(use-package yaml-mode) | |
(use-package counsel) | |
(use-package ivy) | |
(use-package swiper) | |
(use-package rainbow-delimiters) | |
(use-package aggressive-indent) | |
(use-package intero) | |
(use-package anaconda-mode) | |
(use-package company-anaconda) | |
(use-package python-docstring) | |
(use-package py-isort) | |
(use-package diminish) | |
(use-package pip-requirements) | |
(use-package importmagic | |
:diminish importmagic-mode | |
:config | |
(add-hook 'python-mode-hook 'importmagic-mode)) | |
(use-package flycheck | |
:diminish flycheck-mode | |
:init (global-flycheck-mode)) | |
(use-package base16-theme) | |
(use-package autorevert | |
:init (global-auto-revert-mode)) | |
(require 'smartparens-config) | |
;;; modes | |
(remove-hook 'find-file-hooks 'vc-find-file-hook) | |
(electric-indent-mode 0) | |
(global-hl-line-mode -1) | |
(menu-bar-mode -1) | |
(scroll-bar-mode -1) | |
(tool-bar-mode -1) | |
(blink-cursor-mode -1) | |
(set-default 'truncate-lines t) | |
(show-paren-mode 't) | |
(global-visual-line-mode 't) | |
(global-flycheck-mode 't) | |
(ivy-mode t) | |
(desktop-save-mode 1) | |
(global-auto-revert-mode 1) | |
;;; global keybindings | |
(global-unset-key (kbd "C-z")) | |
(global-set-key (kbd "C-s") 'swiper) | |
(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-r") 'isearch-backward-regexp) | |
(global-set-key (kbd "C-M-s") 'isearch-forward) | |
(global-set-key (kbd "C-M-r") 'isearch-backward) | |
(global-set-key (kbd "C-;") 'toggle-comment-on-line) | |
(global-set-key (kbd "C-#") 'comment-or-uncomment-region) | |
;;; UI related stuff | |
(load-theme 'base16-gruvbox-dark-soft t) | |
(set-frame-font "Monospace 12") | |
;; Misc | |
(fset 'yes-or-no-p 'y-or-n-p) | |
(add-to-list 'auto-mode-alist '("Dockerfile\\'" . dockerfile-mode)) | |
(add-to-list 'auto-mode-alist '("Vagrantfile\\'" . enh-ruby-mode)) | |
;; Python | |
;; Python | |
(add-hook 'python-mode-hook 'anaconda-mode) | |
(add-hook 'python-mode-hook 'anaconda-eldoc-mode) | |
(add-hook 'python-mode-hook #'smartparens-mode) | |
(add-hook 'python-mode-hook 'python-docstring-mode) | |
(add-hook 'before-save-hook 'py-isort-before-save) | |
(eval-after-load "company" | |
'(add-to-list 'company-backends 'company-anaconda)) | |
;; Lisps | |
(defvar lisp-modes "clojure emacs-lisp cider-repl") | |
(defun standard-lisp-environment () | |
"A collection of modes to be enabled for a LISP." | |
(subword-mode 1) | |
(smartparens-mode 1) | |
(rainbow-delimiters-mode 1) | |
(aggressive-indent-mode 1) | |
(eldoc-mode 1)) | |
(defun append-suffix (suffix phrases) | |
"Take SUFFIX and append it to each of the PHRASES." | |
(mapcar #'(lambda (phrase) (concat phrase suffix)) phrases)) | |
(defun multiple-mode-add-hook (modes hook) | |
"Given a list of x-mode-hook symbols in MODES, add the HOOK to them." | |
(mapc (lambda (mode) (add-hook mode hook)) modes)) | |
(defun symbols-from-strings (strings) | |
"Given a list of STRINGS, get their symbol values." | |
(mapcar #'intern strings)) | |
(defun hook-up-modes (string hook) | |
"Using mode string STRING add a hook HOOK to it." | |
(let ((modes (symbols-from-strings | |
(append-suffix "-mode-hook" (split-string string))))) | |
(multiple-mode-add-hook modes hook))) | |
(hook-up-modes lisp-modes 'standard-lisp-environment) | |
;;; Custom VERY useful functions ^_^ | |
(defun duplicate-current-line-or-region (arg) | |
"Duplicates the current line or region ARG times. | |
if there is no region, the current line will be duplicated. | |
However, if there's a region, all lines that region covers | |
will be duplicated" | |
(interactive "p") | |
(let (beg end (origin (point))) | |
(if (and mark-active (> (point) (mark))) | |
(exchange-point-and-mark)) | |
(setq beg (line-beginning-position)) | |
(if mark-active | |
(exchange-point-and-mark)) | |
(setq end (line-end-position)) | |
(if mark-active | |
(exchange-point-and-mark)) | |
(setq end (line-end-position)) | |
(let ((region (buffer-substring-no-properties beg end))) | |
(dotimes (i arg) | |
(goto-char end) | |
(newline) | |
(beginning-of-visual-line) | |
(insert region) | |
(setq end (point))) | |
(goto-char (+ origin (* (length region) arg) arg))))) | |
(global-set-key (kbd "M-d") 'duplicate-current-line-or-region) | |
(defun toggle-comment-on-line () | |
"Comments or uncomments current line." | |
(interactive) | |
(comment-or-uncomment-region | |
(line-beginning-position) | |
(line-end-position))) | |
(provide 'init) | |
;;; init.el ends here |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment