summaryrefslogtreecommitdiff
path: root/settings
diff options
context:
space:
mode:
authorbenj <benj@rse8.com>2016-05-15 21:19:51 -0700
committerbenj <benj@rse8.com>2016-05-15 21:19:51 -0700
commit529fb864f0ef8719d477b9f12bc2686b34db7039 (patch)
treea9af49221a217eeeb352b8823e02e7cda81826d4 /settings
downloademacs-529fb864f0ef8719d477b9f12bc2686b34db7039.tar
emacs-529fb864f0ef8719d477b9f12bc2686b34db7039.tar.gz
emacs-529fb864f0ef8719d477b9f12bc2686b34db7039.tar.bz2
emacs-529fb864f0ef8719d477b9f12bc2686b34db7039.tar.lz
emacs-529fb864f0ef8719d477b9f12bc2686b34db7039.tar.xz
emacs-529fb864f0ef8719d477b9f12bc2686b34db7039.tar.zst
emacs-529fb864f0ef8719d477b9f12bc2686b34db7039.zip
initial minimal setup
Diffstat (limited to 'settings')
-rw-r--r--settings/sane-defaults.el92
-rw-r--r--settings/setup-clojure-mode.el7
-rw-r--r--settings/setup-ido.el48
-rw-r--r--settings/setup-markdown-mode.el17
-rw-r--r--settings/setup-multiple-cursors.el7
-rw-r--r--settings/setup-package.el32
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)