diff options
Diffstat (limited to '')
| -rw-r--r-- | settings/sane-defaults.el | 92 | ||||
| -rw-r--r-- | settings/setup-clojure-mode.el | 7 | ||||
| -rw-r--r-- | settings/setup-ido.el | 48 | ||||
| -rw-r--r-- | settings/setup-markdown-mode.el | 17 | ||||
| -rw-r--r-- | settings/setup-multiple-cursors.el | 7 | ||||
| -rw-r--r-- | settings/setup-package.el | 32 |
6 files changed, 203 insertions, 0 deletions
diff --git a/settings/sane-defaults.el b/settings/sane-defaults.el new file mode 100644 index 0000000..9fc5532 --- /dev/null +++ b/settings/sane-defaults.el @@ -0,0 +1,92 @@ +;; Stolen from Magnars, with small mods +;; https://github.com/magnars/.emacs.d/blob/master/settings/sane-defaults.el + +;; Allow pasting selection outside of Emacs +(setq x-select-enable-clipboard t) + +;; Auto refresh buffers +(global-auto-revert-mode 1) + +;; setup eval elsip +(define-key global-map (kbd "C-x C-e") 'eval-last-sexp) + +;; Also auto refresh dired, but be quiet about it +(setq global-auto-revert-non-file-buffers t) +(setq auto-revert-verbose nil) + +;; Show keystrokes in progress +(setq echo-keystrokes 0.1) + +;; Move files to trash when deleting +(setq delete-by-moving-to-trash t) + +;; Transparently open compressed files +(auto-compression-mode t) + +;; Answering just 'y' or 'n' will do +(defalias 'yes-or-no-p 'y-or-n-p) + +;; UTF-8 please +(setq locale-coding-system 'utf-8) ; pretty +(set-terminal-coding-system 'utf-8) ; pretty +(set-keyboard-coding-system 'utf-8) ; pretty +(set-selection-coding-system 'utf-8) ; please +(prefer-coding-system 'utf-8) ; with sugar on top + +;; Show active region +(transient-mark-mode 1) +(make-variable-buffer-local 'transient-mark-mode) +(put 'transient-mark-mode 'permanent-local t) +(setq-default transient-mark-mode t) + +;; Don't highlight matches with jump-char - it's distracting +(setq jump-char-lazy-highlight-face nil) + +;; Always display line and column numbers +(setq line-number-mode t) +(setq column-number-mode t) + +;; Lines should be 80 characters wide, not 72 +(setq fill-column 80) + +;; Save a list of recent files visited. (open recent file with C-x f) +(recentf-mode 1) +(setq recentf-max-saved-items 100) ;; just 20 is too recent + +;; Save minibuffer history +(savehist-mode 1) +(setq history-length 1000) + +;; Allow recursive minibuffers +(setq enable-recursive-minibuffers t) + +;; More memory than even Magnars...cause the future keeps happening +;; 50 MB should be good +(setq gc-cons-threshold 50000000) + +;; warn when opening files bigger than 100MB +(setq large-file-warning-threshold 100000000) + +;; 80 chars is a good width. +(set-default 'fill-column 80) + +;; Add parts of each file's directory to the buffer name if not unique +(require 'uniquify) +(setq uniquify-buffer-name-style 'forward) + +(setq ediff-diff-options "-w") +(setq ediff-split-window-function 'split-window-horizontally) +(setq ediff-window-setup-function 'ediff-setup-windows-plain) + + +;; Offer to create parent directories if they do not exist +;; http://iqbalansari.github.io/blog/2014/12/07/automatically-create-parent-directories-on-visiting-a-new-file-in-emacs/ +(defun my-create-non-existent-directory () + (let ((parent-directory (file-name-directory buffer-file-name))) + (when (and (not (file-exists-p parent-directory)) + (y-or-n-p (format "Directory `%s' does not exist! Create it?" parent-directory))) + (make-directory parent-directory t)))) + +(add-to-list 'find-file-not-found-functions 'my-create-non-existent-directory) + +(provide 'sane-defaults) diff --git a/settings/setup-clojure-mode.el b/settings/setup-clojure-mode.el new file mode 100644 index 0000000..9928650 --- /dev/null +++ b/settings/setup-clojure-mode.el @@ -0,0 +1,7 @@ +(require 'clojure-mode) +(require 'clojure-mode-extra-font-locking) + +(add-hook 'clojure-mode-hook 'enable-paredit-mode) +(add-hook 'clojure-mode-hook 'prettify-symbols-mode) + +(provide 'setup-clojure-mode) diff --git a/settings/setup-ido.el b/settings/setup-ido.el new file mode 100644 index 0000000..6805260 --- /dev/null +++ b/settings/setup-ido.el @@ -0,0 +1,48 @@ +;; Stolen from magnars +;; https://github.com/magnars/.emacs.d/blob/master/settings/setup-ido.el + +(require 'ido) +(ido-mode t) +(setq ido-enable-prefix nil + ido-enable-flex-matching t + ido-case-fold nil + ido-auto-merge-work-directories-length -1 + ido-create-new-buffer 'always + ido-use-filename-at-point nil + ido-max-prospects 10) + +(require 'ido-vertical-mode) +(ido-vertical-mode) + +;; C-n/p is more intuitive in vertical layout +(setq ido-vertical-define-keys 'C-n-C-p-up-down-left-right) + +(defun my/ido-go-straight-home () + (interactive) + (cond + ((looking-back "~/") (insert "projects/")) + ((looking-back "/") (insert "~/")) + (:else (call-interactively 'self-insert-command)))) + +(defun my/setup-ido () + ;; Go straight home + (define-key ido-file-completion-map (kbd "~") 'my/ido-go-straight-home) + (define-key ido-file-completion-map (kbd "C-~") 'my/ido-go-straight-home) + + ;; Use C-w to go back up a dir to better match normal usage of C-w + ;; - insert current file name with C-x C-w instead. + (define-key ido-file-completion-map (kbd "C-w") 'ido-delete-backward-updir) + (define-key ido-file-completion-map (kbd "C-x C-w") 'ido-copy-current-file-name) + + (define-key ido-file-dir-completion-map (kbd "C-w") 'ido-delete-backward-updir) + (define-key ido-file-dir-completion-map (kbd "C-x C-w") 'ido-copy-current-file-name)) + +(add-hook 'ido-setup-hook 'my/setup-ido) + +;; Always rescan buffer for imenu +(set-default 'imenu-auto-rescan t) + +(add-to-list 'ido-ignore-directories "target") +(add-to-list 'ido-ignore-directories "node_modules") + +(provide 'setup-ido) diff --git a/settings/setup-markdown-mode.el b/settings/setup-markdown-mode.el new file mode 100644 index 0000000..13c5ec0 --- /dev/null +++ b/settings/setup-markdown-mode.el @@ -0,0 +1,17 @@ +(setq markdown-imenu-generic-expression + '(("title" "^\\(.*\\)[\n]=+$" 1) + ("h2-" "^\\(.*\\)[\n]-+$" 1) + ("h1" "^# \\(.*\\)$" 1) + ("h2" "^## \\(.*\\)$" 1) + ("h3" "^### \\(.*\\)$" 1) + ("h4" "^#### \\(.*\\)$" 1) + ("h5" "^##### \\(.*\\)$" 1) + ("h6" "^###### \\(.*\\)$" 1) + ("fn" "^\\[\\^\\(.*\\)\\]" 1) + )) + +(add-hook 'markdown-mode-hook + (lambda () + (setq imenu-generic-expression markdown-imenu-generic-expression))) + +(provide 'setup-markdown-mode) diff --git a/settings/setup-multiple-cursors.el b/settings/setup-multiple-cursors.el new file mode 100644 index 0000000..16852f6 --- /dev/null +++ b/settings/setup-multiple-cursors.el @@ -0,0 +1,7 @@ +(global-set-key (kbd "C-c <up>") 'mc/edit-lines) +(global-set-key (kbd "C-c <down>") 'mc/mark-all-like-this) +(global-set-key (kbd "C-c <C-right>") 'mc/mark-next-like-this) +(global-set-key (kbd "C-c <C-left>") 'mc/mark-previous-like-this) +(global-set-key (kbd "M-s m") 'mc/mark-all-in-eval) + +(provide 'setup-multiple-cursors) diff --git a/settings/setup-package.el b/settings/setup-package.el new file mode 100644 index 0000000..b30a85f --- /dev/null +++ b/settings/setup-package.el @@ -0,0 +1,32 @@ +(require 'package) +;; Taken from magnars setup-package.el +;; https://github.com/magnars/.emacs.d/blob/master/settings/setup-package.el +(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) +(add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t) +(package-initialize) + +(unless (file-exists-p "~/.emacs.d/elpa/archives/melpa") + (package-refresh-contents)) + +;; install dash once if it's not already installed +(when (not (package-installed-p 'dash)) (package-install 'dash)) +(require 'dash) +(defun packages-install (packages) + (--each packages + (when (not (package-installed-p it)) + (package-install it))) + (delete-other-windows)) + +(defun require-package (package &optional min-version no-refresh) + "Install given PACKAGE, optionally requiring MIN-VERSION. +If NO-REFRESH is non-nil, the available package lists will not be +re-downloaded in order to locate PACKAGE." + (if (package-installed-p package min-version) + t + (if (or (assoc package package-archive-contents) no-refresh) + (package-install package) + (progn + (package-refresh-contents) + (require-package package min-version t))))) + +(provide 'setup-package) |
