Last active
May 8, 2018 20:02
-
-
Save hlolli/28f7782be53d33d2d1996a0310c74f6f to your computer and use it in GitHub Desktop.
Emacs-Live styled quick-start script
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
(require 'package) | |
(package-initialize) | |
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) | |
;; First run of this emacs config | |
(when (not (package-installed-p 'use-package)) | |
(package-refresh-contents) | |
(package-install 'use-package) | |
(package-install 'quelpa-use-package) | |
;; create tmp dir | |
(unless (file-exists-p "~/.emacs.d/tmp") | |
(make-directory "~/.emacs.d/tmp"))) | |
(eval-when-compile | |
;; (setq use-package-ensure-function 'quelpa) | |
(require 'use-package) | |
(require 'quelpa-use-package)) | |
;; Automatic indentation mode | |
(use-package aggressive-indent | |
:ensure t | |
:config (global-aggressive-indent-mode t)) | |
;; Every 4 days, try updateing the packages | |
(use-package auto-package-update | |
:ensure t | |
:config | |
(setq auto-package-update-delete-old-versions t | |
auto-package-update-interval 4) | |
(auto-package-update-maybe)) | |
;; The swiss-army knife for Clojure development | |
(use-package cider | |
:ensure t | |
:config (setq cider-repl-history-file "~/.emacs.d/tmp/cider-history" | |
;; Change t to nil to disable the welcome message in Cider | |
cider-repl-display-help-banner t | |
cider-repl-wrap-history t | |
cider-repl-pop-to-buffer-on-connect 'display-only) | |
:bind (:map cider-mode-map | |
("C-c C-b" . cider-eval-buffer) | |
("C-c d" . cider-print-docstring))) | |
;; Basic clojure-mode with indent rules etc. | |
(use-package clojure-mode | |
:ensure t | |
:init | |
(add-hook 'clojure-mode-hook | |
(lambda () | |
(paredit-mode) | |
(eldoc-mode t) | |
(rainbow-delimiters-mode) | |
(flycheck-mode 1)))) | |
;; Powerful auto-completions | |
(use-package company | |
:ensure t | |
:config | |
(global-company-mode)) | |
;; Let's use the default Emacs-Live theme | |
(use-package cyberpunk-theme | |
:ensure t | |
:config (when (display-graphic-p) | |
(load-theme 'cyberpunk t))) | |
;; Dim Emacs when it's out of focus | |
(use-package dimmer | |
:ensure t | |
:init (dimmer-mode)) | |
;; Flashing eval | |
(use-package eval-sexp-fu | |
;; Bug in upstream: Don't ensure! | |
:quelpa (eval-sexp-fu :fetcher github :repo "hlolli/eval-sexp-fu.el" :upgrade nil) | |
:init (add-hook 'emacs-lisp-mode-hook #'turn-on-eval-sexp-fu-flash-mode) | |
(add-hook 'emacs-lisp-mode-hook #'turn-on-eval-sexp-fu-flash-mode) | |
(add-hook 'clojure-mode-hook #'turn-on-eval-sexp-fu-flash-mode) | |
(add-hook 'cider-repl-mode-hook #'turn-on-eval-sexp-fu-flash-mode)) | |
;; (use-package emacs-lisp-mode) | |
;; Show pre-written text in autocompletions | |
(use-package flx-ido | |
:ensure t | |
:init | |
(flx-ido-mode 1) | |
(setq ido-enable-flex-matching t | |
ido-use-faces t)) | |
;; Completions when finding files | |
(use-package ido | |
:ensure t | |
:config | |
(setq ido-enable-prefix nil | |
ido-enable-flex-matching t | |
ido-use-filename-at-point nil | |
ido-auto-merge-work-directories-length -1 | |
ido-use-virtual-buffers t | |
ido-save-directory-list-file | |
(expand-file-name "ido.hist" "~/.emacs.d/tmp/")) | |
(ido-mode t) | |
(ido-everywhere 1)) | |
;; Paredit mode for structural editing | |
;; makes sure the brackets always match | |
;; learn the commands http://pub.gajendra.net/src/paredit-refcard.pdf | |
(use-package paredit | |
:ensure t | |
:config | |
(add-hook 'emacs-lisp-mode-hook #'paredit-mode) | |
;; enable in the *scratch* buffer | |
(add-hook 'lisp-interaction-mode-hook #'paredit-mode) | |
(add-hook 'ielm-mode-hook #'paredit-mode) | |
(add-hook 'lisp-mode-hook #'paredit-mode) | |
(add-hook 'eval-expression-minibuffer-setup-hook #'paredit-mode) | |
(add-hook 'cider-repl-mode-hook #'paredit-mode)) | |
;; Highlight matching parenthesis | |
(use-package paren | |
:config | |
(show-paren-mode +1)) | |
(use-package rainbow-delimiters | |
:ensure t) | |
(use-package smex | |
:ensure t | |
:bind ("M-x" . smex)) | |
(use-package yasnippet | |
:ensure t | |
:config (yas-global-mode t)) | |
;; Built-in modes config | |
(add-hook 'emacs-lisp-mode-hook #'eldoc-mode) | |
(add-hook 'emacs-lisp-mode-hook #'paredit-mode) | |
(add-hook 'emacs-lisp-mode-hook #'rainbow-delimiters-mode) | |
(add-hook 'lisp-interaction-mode-hook #'emacs-lisp-mode) | |
(add-hook 'eval-expression-minibuffer-setup-hook #'eldoc-mode) | |
(add-hook 'eval-expression-minibuffer-setup-hook #'paredit-mode) | |
;; Disable blinking cursor | |
(blink-cursor-mode 0) | |
;; Display the column number | |
(column-number-mode t) | |
;; Show the time | |
(display-time-mode) | |
;; Write yes as y and no as n | |
(fset 'yes-or-no-p 'y-or-n-p) | |
;; Highlight the current line | |
(global-hl-line-mode t) | |
;; Display the line number | |
(line-number-mode t) | |
;; Hide the menu bar | |
(menu-bar-mode -1) | |
;; Save history | |
(savehist-mode 1) | |
;; Display the zoom value | |
(size-indication-mode t) | |
;; Hide the scrollbar | |
(toggle-scroll-bar -1) | |
;; Hide the toolbar | |
(tool-bar-mode -1) | |
;; Use ibuffer instead of buffer-list | |
(global-set-key (kbd "C-x C-b") 'ibuffer) | |
;; Try to load Fira Mono font it exists | |
(let ((default-font (if (member "Fira Mono" (font-family-list)) | |
"Fira Mono" "DejaVu Sans Mono"))) | |
(set-face-attribute 'default nil | |
:font default-font | |
:height 120 | |
:weight 'normal | |
:width 'normal) | |
;; Enlarge just a tiny bit | |
(text-scale-adjust +1)) | |
(setq ac-ignore-case nil | |
backup-directory-alist '(("." . "~/.emacs.d/tmp/autosaves")) | |
custom-file "~/.emacs.d/tmp/custom.el" | |
create-lockfiles nil | |
electric-indent-inhibit t | |
frame-title-format '((:eval (if (buffer-file-name) (abbreviate-file-name (buffer-file-name)) "%b"))) | |
user-full-name "John Smith" | |
user-mail-address "example@email.com" | |
ido-save-directory-list-file "~/.emacs.d/tmp/ido.last" | |
inhibit-startup-message t | |
require-final-newline t | |
ring-bell-function 'ignore | |
savehist-additional-variables '(kill-ring search-ring regexp-search-ring) | |
savehist-file "~/.emacs.d/tmp/savehist" | |
smex-save-file (concat user-emacs-directory ".smex-items") | |
scroll-margin 2 ;; nice scrolling | |
scroll-conservatively 100000 | |
scroll-preserve-screen-position 1) | |
;; init.el ends here |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment