Created
February 1, 2018 09:56
-
-
Save minikomi/cdb53d4e544f2168b18ebdaf7a94f3f0 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
; macros | |
(defmacro eval-after-load-all (features form) | |
"Arrange that if, and only if, all `FEATURES' are loaded, `FORM' is evaluated." | |
(declare (indent defun)) | |
(if (null (cdr features)) | |
`(eval-after-load ,(car features) ,form) | |
`(eval-after-load ,(car features) (eval-after-load-all ,(cdr features) ,form)))) | |
(defmacro after (features &rest body) | |
"Arrange that if, and only if, all `FEATURES' are loaded, `BODY' is evaluated. | |
Additionally, `BODY' is wrapped in a lambda so that it is properly byte-compiled." | |
(declare (indent defun)) | |
`(eval-after-load-all ,features ((lambda () (quote (progn ,@body)))))) | |
(defmacro after! (features &rest body) | |
"Load `FEATURES' now, and arrange that `BODY' is evaluated when they are. | |
Additionally, `BODY' is wrapped in a lambda so that it is properly byte-compiled." | |
(declare (indent defun)) | |
`(progn | |
(mapc 'require (list ,@features)) | |
(eval-after-load-all ,features ((lambda () (quote (progn ,@body))))))) | |
(defmacro with-hook (hook &rest body) | |
"Add to the value of `HOOK', all of the actions in `BODY'." | |
(declare (indent 1)) | |
`(add-hook ,hook (lambda () (progn ,@body)))) | |
; remove chrome, fix keys etc. -- | |
(setq inhibit-startup-message t) | |
(tool-bar-mode -1) | |
(show-paren-mode 1) | |
(menu-bar-mode -1) | |
(setq ring-bell-function 'ignore) | |
(global-set-key (quote [134217893]) "\\") | |
(setq backup-directory-alist `(("." . "~/.saves"))) | |
(setq backup-by-copying t) | |
(setq delete-old-versions t | |
kept-new-versions 6 | |
kept-old-versions 2 | |
version-control t) | |
; packages -- | |
(require 'package) | |
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") | |
("org" . "http://orgmode.org/elpa/") | |
("marmalade" . "http://marmalade-repo.org/packages/") | |
; ("melpa-stable" . "http://melpa-stable.milkbox.net/packages/") | |
("melpa" . "http://melpa.milkbox.net/packages/" ) | |
)) | |
(package-initialize) | |
(defun require-package (package) | |
(setq-default highlight-tabs t) | |
(unless (package-installed-p package) | |
(unless (assoc package package-archive-contents) | |
(package-refresh-contents)) | |
(package-install package))) | |
(require-package 'color-theme) | |
; evil -- | |
(add-hook 'text-mode-hook 'turn-on-auto-fill) | |
(setq evil-want-C-u-scroll t) | |
(require-package 'evil) | |
(evil-mode 1) | |
(require-package 'evil-leader) | |
(require-package 'evil-search-highlight-persist) | |
(require-package 'evil-org) | |
(setq evil-emacs-state-cursor '("red" box)) | |
(setq evil-normal-state-cursor '("green" box)) | |
(setq evil-visual-state-cursor '("orange" box)) | |
(setq evil-insert-state-cursor '("red" bar)) | |
(setq evil-replace-state-cursor '("red" bar)) | |
(setq evil-operator-state-cursor '("red" hollow)) | |
(global-evil-search-highlight-persist t) | |
(global-evil-leader-mode) | |
(evil-leader/set-leader ",") | |
(evil-leader/set-key "SPC" 'evil-search-highlight-persist-remove-all) | |
(add-to-list 'evil-emacs-state-modes 'racket-repl-mode) | |
(define-key evil-normal-state-map (kbd "C-r") 'redo) | |
(define-key evil-normal-state-map (kbd "C-w <left>") 'evil-window-left) | |
(define-key evil-normal-state-map (kbd "C-w <down>") 'evil-window-down) | |
(define-key evil-normal-state-map (kbd "C-w <up>") 'evil-window-up) | |
(define-key evil-normal-state-map (kbd "C-w <right>") 'evil-window-right) | |
(define-key evil-normal-state-map "gq" 'evil-fill) | |
; ibuffer --- | |
(autoload 'ibuffer "ibuffer" "List buffers." t) | |
(evil-leader/set-key "TAB" 'ibuffer) | |
(add-hook 'ibuffer-mode | |
(lambda () (add-to-list 'ibuffer-never-show-predicates "^\\*"))) | |
; org --- | |
(require-package 'org) | |
(add-hook 'org-mode-hook (lambda () | |
(modify-syntax-entry (string-to-char "v") "w") | |
(org-display-inline-images) | |
)) ; Down arrow for collapsed drawer. | |
(setq org-startup-indented t) | |
(setq org-hide-leading-stars t) | |
(setq org-odd-level-only nil) | |
(setq org-insert-heading-respect-content nil) | |
(setq org-M-RET-may-split-line '((item) (default . t))) | |
(setq org-special-ctrl-a/e t) | |
(setq org-return-follows-link nil) | |
(setq org-use-speed-commands t) | |
(setq org-startup-align-all-tables nil) | |
(setq org-log-into-drawer nil) | |
(setq org-tags-column 1) | |
(setq org-ellipsis " \u25bc" ) | |
(setq org-speed-commands-user nil) | |
(setq org-blank-before-new-entry '((heading . nil) (plain-list-item . nil))) | |
(setq org-completion-use-ido t) | |
(setq org-indent-mode t) | |
(setq org-startup-truncated nil) | |
(global-auto-revert-mode t) | |
(prefer-coding-system 'utf-8) | |
(cua-mode t) | |
(setq cua-auto-tabify-rectangles nil) | |
(transient-mark-mode nil) | |
(setq cua-keep-region-after-copy t) | |
(require-package 'evil-org) | |
(defun my-insert-date (prefix) | |
"Insert the current date. With prefix-argument, use ISO format. With | |
two prefix arguments, write out the day and month name." | |
(interactive "P") | |
(let ((format (cond | |
((not prefix) "%Y-%m-%d %H:%M") | |
((equal prefix '(4)) "%Y-%m-%d") | |
((equal prefix '(16)) "%A, %d. %B %Y")))) | |
(insert (format-time-string format)))) | |
(define-key global-map (kbd "C-`") 'my-insert-date) | |
(setq org-capture-templates | |
'(("d" "Journal Entry" plain | |
(file+datetree "~/play/org/journal.org") | |
"%U\n\n%?" :empty-lines-before 1) | |
("f" "tracks" entry | |
(file+datetree "~/play/org/tracks.org") | |
"* %^{Description} %^g\n%?\n\nAdded: %U" | |
))) | |
(global-set-key (kbd "C-c c") 'org-capture) | |
(defun paste-clipboard-to-file (&optional filename temp-dir) | |
"Take a screenshot using the crosshairs and saveit to FILENAME, | |
if it is given or to a temp file in the TEMP-DIR | |
directory. Then add an orgmode style link at point." | |
(interactive) | |
(let* ((temporary-file-directory (or temp-dir "images")) | |
(fname (or filename (make-temp-file "img" nil ".jpg")))) | |
(call-process-shell-command (concat | |
"/usr/sbin/screencapture -s " fname)) | |
(insert "\n[[file:" fname "]]"))) | |
(setq org-image-actual-width '(450)) | |
(global-set-key (kbd "C-c p") 'paste-clipboard-to-file) | |
(setq org-clock-persist 'history) | |
(org-clock-persistence-insinuate) | |
; python -- | |
(setq-default indent-tabs-mode nil) | |
(setq default-tab-width 4) | |
; racket -- | |
(require-package 'racket-mode) | |
(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-enabled-themes (quote (sanityinc-tomorrow-night))) | |
'(custom-safe-themes | |
(quote | |
("06f0b439b62164c6f8f84fdda32b62fb50b6d00e8b01c2208e55543a6337433a" default))) | |
'(package-selected-packages | |
(quote | |
(ac-cider cider clojure-mode color-theme-sanityinc-tomorrow ace-jump-buffer evil-paredit paredit racket-mode evil-org evil-search-highlight-persist evil-leader evil color-theme)))) | |
(add-hook 'racket-mode-hook | |
'(lambda () | |
(define-key racket-mode-map (kbd "C-c C-l") 'racket-run) | |
(define-key racket-mode-map (kbd "C-c C-k") 'racket-test))) | |
; paredit -- | |
(require-package 'paredit) | |
(require-package 'evil-paredit) | |
(autoload 'enable-paredit-mode "paredit" "Turn on pseudo-structural editing of Lisp code." t) | |
(add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode) | |
(add-hook 'eval-expression-minibuffer-setup-hook #'enable-paredit-mode) | |
(add-hook 'ielm-mode-hook #'enable-paredit-mode) | |
(add-hook 'lisp-mode-hook #'enable-paredit-mode) | |
(add-hook 'lisp-interaction-mode-hook #'enable-paredit-mode) | |
(add-hook 'scheme-mode-hook #'enable-paredit-mode) | |
(add-hook 'racket-mode-hook #'enable-paredit-mode) | |
(add-hook 'clojure-mode-hook #'enable-paredit-mode) | |
(add-hook 'cider-mode-hook #'enable-paredit-mode) | |
(add-hook 'emacs-lisp-mode-hook 'evil-paredit-mode) | |
(add-hook 'racket-mode-hook 'evil-paredit-mode) | |
(add-hook 'clojure-mode-hook 'evil-paredit-mode) | |
(add-hook 'cider-mode-hook 'evil-paredit-mode) | |
(defun set-paredit-evil-keys (mode-name) | |
(evil-leader/set-key-for-mode mode-name | |
"W" 'paredit-wrap-round | |
"S" 'paredit-splice-sexp | |
"w (" 'paredit-wrap-round | |
"w [" 'paredit-wrap-square | |
"w {" 'paredit-wrap-curly | |
">" 'paredit-forward-slurp-sexp | |
"<" 'paredit-forward-barf-sexp | |
"+" 'paredit-backward-slurp-sexp | |
"*" 'paredit-backward-barf-sexp | |
"/" 'paredit-split-sexp | |
"?" 'paredit-join-sexp) | |
) | |
(mapc 'set-paredit-evil-keys | |
'(racket-mode | |
clojure-mode | |
cider-mode | |
emacs-lisp-mode)) | |
;; buffer switching | |
(require-package 'ace-jump-buffer) | |
(global-set-key [(control tab)] 'ibuffer) | |
;; themes | |
;; | |
(require-package 'color-theme-sanityinc-tomorrow) | |
(color-theme-sanityinc-tomorrow-night) | |
(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. | |
) | |
;; clojure | |
(require-package 'clojure-mode) | |
(require-package 'cider) | |
(add-to-list 'exec-path "/usr/local/bin") | |
(setq cider-show-error-buffer nil) | |
(require-package 'ac-cider) | |
(add-hook 'cider-mode-hook 'ac-flyspell-workaround) | |
(add-hook 'cider-mode-hook 'ac-cider-setup) | |
(add-hook 'cider-repl-mode-hook 'ac-cider-setup) | |
(eval-after-load "auto-complete" | |
'(progn | |
(add-to-list 'ac-modes 'cider-mode) | |
(add-to-list 'ac-modes 'cider-repl-mode))) | |
(add-hook 'cider-mode-hook 'ac-flyspell-workaround) | |
(add-hook 'cider-mode-hook 'ac-cider-setup) | |
(add-hook 'cider-repl-mode-hook 'ac-cider-setup) | |
(eval-after-load "auto-complete" | |
'(progn | |
(add-to-list 'ac-modes 'cider-mode) | |
(add-to-list 'ac-modes 'cider-repl-mode))) | |
(defface font-lock-func-face | |
'((nil (:foreground "#C3E3F0" :weight normal)) | |
(t (:bold f :italic f))) | |
"Font Lock mode face used for function calls." | |
:group 'font-lock-highlighting-faces) | |
(font-lock-add-keywords | |
'clojure-mode | |
'(("(\\s-*\\(\\_<\\(?:\\sw\\|\\s_\\)+\\)\\_>" | |
1 'font-lock-func-face))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment