summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <martin.polden@gmail.com>2016-02-25 22:47:45 +0100
committerMartin Polden <martin.polden@gmail.com>2016-02-25 23:17:48 +0100
commit3974306870486650a0e5bb6669280bae12b694fe (patch)
treea69574c99d38f15b678dd47dd31f5b163c8079dd
parentc75c977394d062f11dbc1ed0379bf18fcf3c709e (diff)
Use use-package
-rw-r--r--lisp/init-appearance.el37
-rw-r--r--lisp/init-company-mode.el6
-rw-r--r--lisp/init-editing.el27
-rw-r--r--lisp/init-git.el105
-rw-r--r--lisp/init-go-mode.el54
-rw-r--r--lisp/init-ibuffer.el46
-rw-r--r--lisp/init-ido.el72
-rw-r--r--lisp/init-imenu.el14
-rw-r--r--lisp/init-javascript.el22
-rw-r--r--lisp/init-lisp.el4
-rw-r--r--lisp/init-mac.el4
-rw-r--r--lisp/init-markdown-mode.el19
-rw-r--r--lisp/init-nginx.el15
-rw-r--r--lisp/init-package.el33
-rw-r--r--lisp/init-projectile.el29
-rw-r--r--lisp/init-python-mode.el8
-rw-r--r--lisp/init-rainbow-delimiters.el10
-rw-r--r--lisp/init-sane-defaults.el7
-rw-r--r--lisp/init-server.el7
-rw-r--r--lisp/init-sessions.el13
-rw-r--r--lisp/init-tramp.el109
-rw-r--r--lisp/init-yaml-mode.el28
22 files changed, 330 insertions, 339 deletions
diff --git a/lisp/init-appearance.el b/lisp/init-appearance.el
index 52f29b7..23cb0fb 100644
--- a/lisp/init-appearance.el
+++ b/lisp/init-appearance.el
@@ -20,23 +20,27 @@
(global-hl-line-mode 1)
;; set theme
-(if (display-graphic-p)
- (progn (require-package 'material-theme)
- (load-theme 'material t))
- (set-face-background hl-line-face "gray13"))
+(when (display-graphic-p)
+ (use-package material-theme
+ :config (load-theme 'material t)))
;; highlight matching parentheses
(show-paren-mode 1)
;; highlight lines exceeding fill-column
-(require 'whitespace)
-(setq whitespace-style '(face empty lines-tail trailing))
-(setq whitespace-line-column nil)
-;; make whitespace-mode respect a mode-specific fill-column value
-(add-hook 'hack-local-variables-hook
- (lambda ()
- (when (derived-mode-p 'prog-mode)
- (whitespace-mode 1))))
+(use-package whitespace
+ :diminish whitespace-mode
+
+ :init
+ (setq whitespace-style '(face empty lines-tail trailing))
+ (setq whitespace-line-column nil)
+
+ :config
+ ;; make whitespace-mode respect a mode-specific fill-column value
+ (add-hook 'hack-local-variables-hook
+ (lambda ()
+ (when (derived-mode-p 'prog-mode)
+ (whitespace-mode 1)))))
;; disable word wrapping
(setq-default truncate-lines t)
@@ -45,13 +49,4 @@
(setq line-number-mode t
column-number-mode t)
-;; unclutter modeline
-(require-package 'diminish)
-(require 'diminish)
-(eval-after-load "whitespace" '(diminish 'whitespace-mode))
-(eval-after-load "whole-line-or-region" '(diminish 'whole-line-or-region-mode))
-(eval-after-load "projectile" '(diminish 'projectile-mode))
-(eval-after-load "subword" '(diminish 'subword-mode))
-(eval-after-load "autorevert" '(diminish 'auto-revert-mode))
-
(provide 'init-appearance)
diff --git a/lisp/init-company-mode.el b/lisp/init-company-mode.el
index 012bb36..7433937 100644
--- a/lisp/init-company-mode.el
+++ b/lisp/init-company-mode.el
@@ -1,7 +1,5 @@
-;; install packages
-(require-packages '(company company-go))
+(use-package company)
-(require 'company)
-(require 'company-go)
+(use-package company-go)
(provide 'init-company-mode)
diff --git a/lisp/init-editing.el b/lisp/init-editing.el
index 567a68f..8ffe1eb 100644
--- a/lisp/init-editing.el
+++ b/lisp/init-editing.el
@@ -1,9 +1,9 @@
-;; install packages
-(require-package 'whole-line-or-region)
+(use-package whole-line-or-region
+ :diminish whole-line-or-region-mode
-(require 'whole-line-or-region)
-(require 'misc)
-(require 'whitespace)
+ :config
+ ;; cut or copy the currrent line if no region is active
+ (whole-line-or-region-mode 1))
;; disable backup files
(setq make-backup-files nil)
@@ -19,11 +19,11 @@
'("z\\(sh[^/]*\\|login\\|logout\\|profile\\|preztorc\\)\\'"
. sh-mode))
-;; cut or copy the currrent line if no region is active
-(whole-line-or-region-mode 1)
-
;; use zap-up-to-char instead of zap-to-char
-(global-set-key (kbd "M-z") 'zap-up-to-char)
+(use-package misc
+ :ensure nil
+
+ :bind ("M-z" . zap-up-to-char))
;; swap RET and C-j
(global-set-key (kbd "RET") 'newline-and-indent)
@@ -63,7 +63,8 @@ Including indent-buffer, which should not be called automatically on save."
(message "Skipping indent-buffer in %s." major-mode)
(indent-buffer)))
-(global-set-key (kbd "C-c c") 'cleanup-buffer)
+(use-package whitespace
+ :bind ("C-c c" . cleanup-buffer))
;; keybindings for navigating elisp sources
(defun call-interactively-other-window (function &optional noselect)
@@ -109,6 +110,10 @@ NOSELECT is non-nil."
(global-set-key (kbd "C-c n") 'rename-this-buffer-and-file)
;; enable subword-mode in prog-mode
-(add-hook 'prog-mode-hook 'subword-mode)
+(use-package subword
+ :ensure nil
+ :diminish subword-mode
+ :config
+ (add-hook 'prog-mode-hook 'subword-mode))
(provide 'init-editing)
diff --git a/lisp/init-git.el b/lisp/init-git.el
index a858b40..3d225ad 100644
--- a/lisp/init-git.el
+++ b/lisp/init-git.el
@@ -1,39 +1,52 @@
-;; install packages
-(require-packages
- '(magit gitconfig-mode gitignore-mode))
-
-(require 'magit)
-(require 'gitconfig-mode)
-(require 'gitignore-mode)
-(require 'grep)
-(require 'vc-git)
-
;; use appropiate git-mode for .gitconfig and .gitignore extensions
-(add-to-list 'auto-mode-alist '("gitignore\\'" . gitignore-mode))
-(add-to-list 'auto-mode-alist '("gitconfig\\'" . gitconfig-mode))
-
-;; magit keybinding
-(global-set-key (kbd "C-x m") 'magit-status)
-
-;; magit blame keybinding
-(global-set-key (kbd "C-c b")
- (lambda ()
- (interactive)
- (if magit-blame-mode
- (magit-blame-quit)
- (call-interactively 'magit-blame))))
-
-;; disable gravatars
-(setq magit-revision-show-gravatars nil)
-
-(defun magit-diff-visit-file-noselect ()
- "Visit current item, but don't select it."
- (interactive)
- (let ((current-window (selected-window)))
- (call-interactively 'magit-diff-visit-file)
- (select-window current-window)))
-
-(add-hook 'magit-status-mode-hook
+(use-package gitignore-mode
+ :mode ("gitignore\\'" . gitignore-mode))
+
+(use-package gitconfig-mode
+ :mode ("gitconfig\\'" . gitconfig-mode))
+
+;; magit config
+(use-package magit
+ :init
+ ;; disable gravatars
+ (setq magit-revision-show-gravatars nil)
+
+ :bind (("C-x m" . magit-status)
+ ("C-c b" . git-blame)
+ ("C-c w" . git-branch-with-prefix)
+ ("C-c g" . git-grep-root))
+
+ :config
+ (defun git-blame ()
+ "Active or disable git blame."
+ (interactive)
+ (if magit-blame-mode
+ (magit-blame-quit)
+ (call-interactively 'magit-blame)))
+
+ (defun magit-diff-visit-file-noselect ()
+ "Visit current item, but don't select it."
+ (interactive)
+ (let ((current-window (selected-window)))
+ (call-interactively 'magit-diff-visit-file)
+ (select-window current-window)))
+
+ (defun git-branch-with-prefix ()
+ "Create and checkout <username>/BRANCH from master."
+ (interactive)
+ (let* ((prefix (concat user-login-name "/"))
+ (suffix (magit-read-string-ns (format "Branch name (prefix: %s)" prefix)))
+ (branch (concat prefix suffix)))
+ (magit-run-git "checkout" "-b" branch "master")))
+
+ (defun git-grep-root ()
+ "Run git-grep in the repository root."
+ (interactive)
+ (let ((git-root-path (magit-toplevel)))
+ (when git-root-path
+ (vc-git-grep (grep-read-regexp) "*" git-root-path))))
+
+ (add-hook 'magit-status-mode-hook
(lambda ()
;; make C-o and o behave as in dired
(define-key magit-status-mode-map (kbd "C-o")
@@ -41,25 +54,7 @@
(define-key magit-status-mode-map (kbd "o")
'magit-diff-visit-file)))
-(defun git-grep-root ()
- "Run git-grep in the repository root."
- (interactive)
- (let ((git-root-path (magit-toplevel)))
- (when git-root-path
- (vc-git-grep (grep-read-regexp) "*" git-root-path))))
-
-;; run git grep in the repository root
-(global-set-key (kbd "C-c g") 'git-grep-root)
-
-(defun git-branch-with-prefix ()
- "Create and checkout <username>/BRANCH from master."
- (interactive)
- (let* ((prefix (concat user-login-name "/"))
- (suffix (magit-read-string-ns (format "Branch name (prefix: %s)" prefix)))
- (branch (concat prefix suffix)))
- (magit-run-git "checkout" "-b" branch "master")))
-
-(global-set-key (kbd "C-c w") 'git-branch-with-prefix)
+ (add-hook 'git-commit-mode-hook 'flyspell-mode))
(defun grep-visit-buffer-other-window (&optional event noselect)
"Visit grep result in another window."
@@ -89,6 +84,4 @@
(define-key grep-mode-map (kbd "p")
'compilation-previous-error)))
-(add-hook 'git-commit-mode-hook 'flyspell-mode)
-
(provide 'init-git)
diff --git a/lisp/init-go-mode.el b/lisp/init-go-mode.el
index 2699080..51440d5 100644
--- a/lisp/init-go-mode.el
+++ b/lisp/init-go-mode.el
@@ -1,7 +1,29 @@
-;; install package
-(require-package 'go-mode)
-
-(require 'go-mode)
+(use-package go-mode
+ :init
+ ;; use goimports if available
+ (when (executable-find "goimports")
+ (setq gofmt-command "goimports"))
+
+ :config
+ ;; run gofmt before saving file
+ (add-hook 'before-save-hook 'gofmt-before-save)
+
+ ;; configure company-mode
+ ;; requires https://github.com/nsf/gocode for the backend
+ (when (and (featurep 'company) (featurep 'company-go))
+ (add-hook 'go-mode-hook (lambda ()
+ (setq-local company-backends '(company-go))
+ (company-mode))))
+
+ (add-hook 'go-mode-hook
+ (lambda ()
+ ;; C-c p runs gofmt on the buffer
+ (define-key go-mode-map (kbd "C-c p") 'gofmt)
+ ;; adjust fill-column
+ (setq-local fill-column 120)
+ ;; use flat imenu index
+ (setq-local imenu-create-index-function
+ #'go-mode-create-flat-imenu-index))))
(defun go-mode-create-imenu-index ()
"Create and return an imenu index alist. Unlike the default
@@ -28,28 +50,4 @@ items follow a style that is consistent with other prog-modes."
"Return a flat imenu index alist. See `go-mode-create-imenu-index'."
(apply 'nconc (mapcar 'cdr (go-mode-create-imenu-index))))
-(add-hook 'go-mode-hook
- (lambda ()
- ;; C-c p runs gofmt on the buffer
- (define-key go-mode-map (kbd "C-c p") 'gofmt)
- ;; adjust fill-column
- (setq-local fill-column 120)
- ;; use flat imenu index
- (setq-local imenu-create-index-function
- #'go-mode-create-flat-imenu-index)))
-
-;; run gofmt before saving file
-(add-hook 'before-save-hook 'gofmt-before-save)
-
-;; configure company-mode
-;; requires https://github.com/nsf/gocode for the backend
-(when (and (featurep 'company) (featurep 'company-go))
- (add-hook 'go-mode-hook (lambda ()
- (setq-local company-backends '(company-go))
- (company-mode))))
-
-;; use goimports if available
-(when (executable-find "goimports")
- (setq gofmt-command "goimports"))
-
(provide 'init-go-mode)
diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el
index 57e2029..2f194a4 100644
--- a/lisp/init-ibuffer.el
+++ b/lisp/init-ibuffer.el
@@ -1,31 +1,29 @@
-;; install package
-(require-package 'ibuffer-vc)
+(use-package ibuffer
+ :init
+ ;; disable confirmation for killing unmodified buffers
+ (setq ibuffer-expert t)
-;; load ibuffer and ibuffer-vc
-(require 'ibuffer)
-(require 'ibuffer-vc)
+ ;; sort buffers by name
+ (setq-default ibuffer-default-sorting-mode 'alphabetic)
-;; keep buffer list up to date and group ibuffer by repository root
-(add-hook 'ibuffer-hook
- (lambda ()
- (ibuffer-auto-mode 1)
- (ibuffer-vc-set-filter-groups-by-vc-root)
- ;; make C-o and o behave as in dired
- (define-key ibuffer-mode-map (kbd "o")
- 'ibuffer-visit-buffer-other-window)
- (define-key ibuffer-mode-map (kbd "C-o")
- 'ibuffer-visit-buffer-other-window-noselect)))
+ ;; hide empty filter groups
+ (setq ibuffer-show-empty-filter-groups nil)
-;; use ibuffer
-(global-set-key (kbd "C-x C-b") 'ibuffer-other-window)
+ ;; use ibuffer
+ :bind ("C-x C-b" . ibuffer-other-window)
-;; disable confirmation for killing unmodified buffers
-(setq ibuffer-expert t)
+ :config
+ ;; keep buffer list up to date and group ibuffer by repository root
+ (add-hook 'ibuffer-hook
+ (lambda ()
+ (ibuffer-auto-mode 1)
+ (ibuffer-vc-set-filter-groups-by-vc-root)
+ ;; make C-o and o behave as in dired
+ (define-key ibuffer-mode-map (kbd "o")
+ 'ibuffer-visit-buffer-other-window)
+ (define-key ibuffer-mode-map (kbd "C-o")
+ 'ibuffer-visit-buffer-other-window-noselect))))
-;; sort buffers by name
-(setq-default ibuffer-default-sorting-mode 'alphabetic)
-
-;; hide empty filter groups
-(setq ibuffer-show-empty-filter-groups nil)
+(use-package ibuffer-vc)
(provide 'init-ibuffer)
diff --git a/lisp/init-ido.el b/lisp/init-ido.el
index 03faddb..28f584f 100644
--- a/lisp/init-ido.el
+++ b/lisp/init-ido.el
@@ -1,37 +1,43 @@
-;; install packages
-(require-packages
- '(flx-ido ido-vertical-mode ido-ubiquitous smex))
-
-;; load ido
-(require 'ido)
-(ido-mode 1)
-(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)
-
-;; load flx-ido
-(require 'flx-ido)
-(flx-ido-mode 1)
-;; disable ido faces to see flx highlights.
-(setq ido-use-faces nil)
-
-;; vertical mode for ido
-(require 'ido-vertical-mode)
-(ido-vertical-mode 1)
-(setq ido-vertical-show-count t)
-
-;; load ido-ubiquitous (a better ido-everywhere)
-(require 'ido-ubiquitous)
-(ido-ubiquitous-mode 1)
+;; ido
+(use-package ido
+ :init
+ (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)
+
+ :config
+ (ido-mode 1))
+
+;; flx-ido
+(use-package flx-ido
+ :init
+ ;; disable ido faces to see flx highlights.
+ (setq ido-use-faces nil)
+
+ :config
+ (flx-ido-mode 1))
+
+;; ido-vertical-mode
+(use-package ido-vertical-mode
+ :init
+ (setq ido-vertical-show-count t)
+
+ :config
+ (ido-vertical-mode 1))
+
+;; ido-ubiquitous
+(use-package ido-ubiquitous
+ :config
+ (ido-ubiquitous-mode 1))
;; smex
-(require 'smex)
-(global-set-key (kbd "M-x") 'smex)
-(global-set-key (kbd "M-X") 'smex-major-mode-commands)
-(global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)
+(use-package smex
+ :bind (("M-x" . smex)
+ ("M-X" . smex-major-mode-commands)
+ ("C-c C-c M-x" . execute-extended-command)))
(provide 'init-ido)
diff --git a/lisp/init-imenu.el b/lisp/init-imenu.el
index 97448ec..0e76744 100644
--- a/lisp/init-imenu.el
+++ b/lisp/init-imenu.el
@@ -1,10 +1,10 @@
-(require 'imenu)
+(use-package imenu
+ :init
+ ;; make imenu automatically rescan buffers
+ (setq imenu-auto-rescan t)
-;; make imenu automatically rescan buffers
-(setq imenu-auto-rescan t)
-
-;; C-c i shows imenu
-;; imenu will use ido completion if ido-ubiquitous-mode is enabled
-(global-set-key (kbd "C-c i") 'imenu)
+ ;; C-c i shows imenu
+ ;; imenu will use ido completion if ido-ubiquitous-mode is enabled
+ :bind ("C-c i" . imenu))
(provide 'init-imenu)
diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el
index 5b61895..b9fd43a 100644
--- a/lisp/init-javascript.el
+++ b/lisp/init-javascript.el
@@ -1,8 +1,18 @@
-(require 'js)
-(add-to-list 'auto-mode-alist '("\\.\\(json\\|jshintrc\\)\\'" . js-mode))
+(use-package js
+ :ensure nil
-;; set indent level to 2
-(setq-default js-indent-level 2)
+ :init
+ ;; set indent level to 2
+ (setq-default js-indent-level 2)
+
+ :mode
+ ;; use js-mode for json and jshint
+ ("\\.\\(json\\|jshintrc\\)\\'" . js-mode)
+
+ :config
+ (add-hook 'js-mode-hook
+ (lambda ()
+ (define-key js-mode-map (kbd "C-c p") 'jq-reformat))))
;; use jq for reformatting json
(defun jq-reformat-region (begin end)
@@ -32,8 +42,4 @@
(jq-reformat-region (region-beginning) (region-end))
(jq-reformat-region (point-min) (point-max))))
-(add-hook 'js-mode-hook
- (lambda ()
- (define-key js-mode-map (kbd "C-c p") 'jq-reformat)))
-
(provide 'init-javascript)
diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el
index 86ac572..b90fd78 100644
--- a/lisp/init-lisp.el
+++ b/lisp/init-lisp.el
@@ -1,6 +1,4 @@
-(require-package 'paredit)
-
-(require 'paredit)
+(use-package paredit)
;; enable paredit
(add-hook 'emacs-lisp-mode-hook 'paredit-mode)
diff --git a/lisp/init-mac.el b/lisp/init-mac.el
index 3235a68..4c36bd1 100644
--- a/lisp/init-mac.el
+++ b/lisp/init-mac.el
@@ -29,8 +29,8 @@
(setq trash-directory "~/.Trash")
;; use path from shell
-(require-package 'exec-path-from-shell)
-(exec-path-from-shell-initialize)
+(use-package exec-path-from-shell
+ :config (exec-path-from-shell-initialize))
;; add binding for toggling fullscreen
(global-set-key (kbd "M-RET") 'toggle-frame-fullscreen)
diff --git a/lisp/init-markdown-mode.el b/lisp/init-markdown-mode.el
index cd6469e..e99bb68 100644
--- a/lisp/init-markdown-mode.el
+++ b/lisp/init-markdown-mode.el
@@ -1,17 +1,16 @@
-;; install package
-(require-package 'markdown-mode)
+(use-package markdown-mode
+ :mode
+ ;; use markdown mode for .md and .markdown extensions
+ ("\\.\\(md\\|markdown\\)\\'" . markdown-mode)
-(require 'markdown-mode)
-(require 'flyspell)
-
-;; use markdown mode for .md and .markdown extensions
-(add-to-list 'auto-mode-alist '("\\.\\(md\\|markdown\\)\\'" . markdown-mode))
-
-(add-hook 'markdown-mode-hook
+ :config
+ (add-hook 'markdown-mode-hook
(lambda ()
;; disable electric indent
(setq-local electric-indent-mode nil)
;; enable flyspell
- (flyspell-mode 1)))
+ (flyspell-mode 1))))
+
+(use-package flyspell)
(provide 'init-markdown-mode)
diff --git a/lisp/init-nginx.el b/lisp/init-nginx.el
index 42cc70b..a715ada 100644
--- a/lisp/init-nginx.el
+++ b/lisp/init-nginx.el
@@ -1,12 +1,7 @@
-;; install package
-(require-package 'nginx-mode)
-
-;; load nginx-mode
-(require 'nginx-mode)
-
-;; sites and ansible playbook files
-(add-to-list 'auto-mode-alist
- '("/nginx/\\(?:sites-\\(?:available\\|enabled\\)\\|files/.*/\\)" .
- nginx-mode))
+(use-package nginx-mode
+ :mode
+ ;; sites and ansible playbook files
+ ("/nginx/\\(?:sites-\\(?:available\\|enabled\\)\\|files/.*/\\)" .
+ nginx-mode))
(provide 'init-nginx)
diff --git a/lisp/init-package.el b/lisp/init-package.el
index d998720..f6e35a0 100644
--- a/lisp/init-package.el
+++ b/lisp/init-package.el
@@ -4,26 +4,21 @@
'("melpa" . "http://melpa.org/packages/") t)
(package-initialize)
-(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)))))
+;; install missing packages automatically
+(setq use-package-always-ensure t)
-(defun require-packages (packages)
- "Install a list of PACKAGES."
- (mapcar (lambda (package) (require-package package)) packages))
+;; install and load use-package
+(unless (package-installed-p 'use-package)
+ (package-install 'use-package))
-;; add ~/.emacs.d/site-lisp to load path, if it exists
-;; used for backported code and overriding existing packages
-(let ((site-lisp (expand-file-name "site-lisp" user-emacs-directory)))
- (when (file-directory-p site-lisp)
- (add-to-list 'load-path site-lisp)))
+;; install diminish
+(unless (package-installed-p 'diminish)
+ (package-install 'use-package))
+
+;; speed up loading of use-package
+(eval-when-compile
+ (require 'use-package))
+(require 'diminish)
+(require 'bind-key)
(provide 'init-package)
diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el
index d89c7f6..35f8893 100644
--- a/lisp/init-projectile.el
+++ b/lisp/init-projectile.el
@@ -1,21 +1,22 @@
-;; install package
-(require-package 'projectile)
+(use-package projectile
+ :diminish projectile-mode
-;; use a different prefix
-(setq projectile-keymap-prefix (kbd "C-c C-p"))
+ :init
+ ;; use a different prefix
+ (setq projectile-keymap-prefix (kbd "C-c C-p"))
-(require 'projectile)
+ ;; switching project opens the top-level directory
+ (setq projectile-switch-project-action 'projectile-dired)
-;; enable projectile mode in all buffers
-(projectile-global-mode 1)
+ ;; ignore remote projects
+ (setq projectile-ignored-project-function 'file-remote-p)
-;; C-x f finds file in project
-(global-set-key (kbd "C-x f") 'projectile-find-file)
+ :bind
+ ;; C-x f finds file in project
+ ("C-x f" . projectile-find-file)
-;; switching project opens the top-level directory
-(setq projectile-switch-project-action 'projectile-dired)
-
-;; ignore remote projects
-(setq projectile-ignored-project-function 'file-remote-p)
+ :config
+ ;; enable projectile mode in all buffers
+ (projectile-global-mode 1))
(provide 'init-projectile)
diff --git a/lisp/init-python-mode.el b/lisp/init-python-mode.el
index c4f0c30..88217a1 100644
--- a/lisp/init-python-mode.el
+++ b/lisp/init-python-mode.el
@@ -1,6 +1,6 @@
-(require 'python)
-
-(add-hook 'python-mode-hook
+(use-package python
+ :config
+ (add-hook 'python-mode-hook
(lambda ()
;; disable electric indent
(setq-local electric-indent-mode nil)
@@ -8,6 +8,6 @@
(setq-local fill-column 79)
;; use flat index in imenu
(setq-local imenu-create-index-function
- 'python-imenu-create-flat-index)))
+ 'python-imenu-create-flat-index))))
(provide 'init-python-mode)
diff --git a/lisp/init-rainbow-delimiters.el b/lisp/init-rainbow-delimiters.el
index cbe0059..71e75dc 100644
--- a/lisp/init-rainbow-delimiters.el
+++ b/lisp/init-rainbow-delimiters.el
@@ -1,8 +1,6 @@
-;; install package
-(require-package 'rainbow-delimiters)
-
-;; enable rainbow-delimiters in prog-mode
-(require 'rainbow-delimiters)
-(add-hook 'prog-mode-hook 'rainbow-delimiters-mode)
+(use-package rainbow-delimiters
+ :config
+ ;; enable rainbow-delimiters in prog-mode
+ (add-hook 'prog-mode-hook 'rainbow-delimiters-mode))
(provide 'init-rainbow-delimiters)
diff --git a/lisp/init-sane-defaults.el b/lisp/init-sane-defaults.el
index 5f6d80b..af8490e 100644
--- a/lisp/init-sane-defaults.el
+++ b/lisp/init-sane-defaults.el
@@ -20,7 +20,11 @@
(setq mouse-wheel-progressive-speed nil)
;; reload buffers automatically when files change on disk
-(global-auto-revert-mode 1)
+(use-package autorevert
+ :ensure nil
+ :diminish auto-revert-mode
+ :config
+ (global-auto-revert-mode 1))
;; reload dired buffers automatically and be quit about it
(setq global-auto-revert-non-file-buffers t)
@@ -39,7 +43,6 @@
(setq echo-keystrokes 0.1)
;; add directory to buffer name if filename is not unique
-(require 'uniquify)
(setq uniquify-buffer-name-style 'forward)
;; tetris score file
diff --git a/lisp/init-server.el b/lisp/init-server.el
index 12a223f..f6e510c 100644
--- a/lisp/init-server.el
+++ b/lisp/init-server.el
@@ -1,6 +1,7 @@
;; start server for emacsclient
-(require 'server)
-(unless (server-running-p)
- (server-start))
+(use-package server
+ :config
+ (unless (server-running-p)
+ (server-start)))
(provide 'init-server)
diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el
index d1510e7..0538942 100644
--- a/lisp/init-sessions.el
+++ b/lisp/init-sessions.el
@@ -1,9 +1,10 @@
-(require 'desktop)
+(use-package desktop
+ :init
+ ;; save list of open files in ~/.emacs.d/.emacs.desktop
+ (setq desktop-path (list user-emacs-directory))
-;; remember opened files
-(desktop-save-mode 1)
-
-;; save list of open files in ~/.emacs.d/.emacs.desktop
-(setq desktop-path (list user-emacs-directory))
+ :config
+ ;; remember opened files
+ (desktop-save-mode 1))
(provide 'init-sessions)
diff --git a/lisp/init-tramp.el b/lisp/init-tramp.el
index f7ce4e0..9d87adc 100644
--- a/lisp/init-tramp.el
+++ b/lisp/init-tramp.el
@@ -1,58 +1,63 @@
-(require 'tramp)
-
-;; use ssh as transfer method
-(setq tramp-default-method "ssh")
-
-;; make sudo:remote-host work as expected
-(add-to-list 'tramp-default-proxies-alist '(nil "\\`root\\'" "/ssh:%h:"))
-(add-to-list 'tramp-default-proxies-alist
- '((regexp-quote (system-name)) nil nil))
-
-;; workaround for long ControlPath on darwin
-;; https://trac.macports.org/ticket/29794
-(when (eq system-type 'darwin)
- (setq tramp-ssh-controlmaster-options
- "-o ControlPath=/tmp/%%r@%%h:%%p -o ControlMaster=auto -o ControlPersist=no"))
-
-;; disable vc integration for remote files
-(setq vc-ignore-dir-regexp
- (format "\\(%s\\)\\|\\(%s\\)"
- vc-ignore-dir-regexp
- tramp-file-name-regexp))
-
-(defun sudo-prefix-p (prefix)
- "Return t if PREFIX is a sudo prefix."
- (or (string-equal prefix "/sudo") (string-equal prefix "/sudo:")))
-
-(defun ssh-prefix-p (prefix)
- "Return t if PREFIX is a ssh prefix."
- (string-equal prefix "/ssh"))
-
-(defun sudo-file-name (filename)
- "Return FILENAME with a sudo prefix.
+(use-package tramp
+ :init
+ ;; use ssh as transfer method
+ (setq tramp-default-method "ssh")
+
+ ;; workaround for long ControlPath on darwin
+ ;; https://trac.macports.org/ticket/29794
+ (when (eq system-type 'darwin)
+ (setq tramp-ssh-controlmaster-options
+ "-o ControlPath=/tmp/%%r@%%h:%%p -o ControlMaster=auto -o ControlPersist=no"))
+
+ ;; disable vc integration for remote files
+ (setq vc-ignore-dir-regexp
+ (format "\\(%s\\)\\|\\(%s\\)"
+ vc-ignore-dir-regexp
+ tramp-file-name-regexp))
+
+ :bind
+ (("C-x +" . sudo-find-file)
+ ("C-x !" . sudo-current-file))
+
+ :config
+ ;; make sudo:remote-host work as expected
+ (add-to-list 'tramp-default-proxies-alist '(nil "\\`root\\'" "/ssh:%h:"))
+ (add-to-list 'tramp-default-proxies-alist
+ '((regexp-quote (system-name)) nil nil))
+
+ (defun sudo-prefix-p (prefix)
+ "Return t if PREFIX is a sudo prefix."
+ (or (string-equal prefix "/sudo") (string-equal prefix "/sudo:")))
+
+ (defun ssh-prefix-p (prefix)
+ "Return t if PREFIX is a ssh prefix."
+ (string-equal prefix "/ssh"))
+
+ (defun sudo-file-name (filename)
+ "Return FILENAME with a sudo prefix.
If FILENAME already has a sudo prefix, do nothing. If FILENAME is
accessed over SSH, prefix it with \"/sudo:\". Otherwise, assume
FILENAME is a local path and prefix it with \"/sudo::\"."
- (let* ((splitname (split-string filename ":"))
- (prefix (car splitname))
- (ssh-p (ssh-prefix-p prefix))
- (sudo-p (sudo-prefix-p prefix)))
- (if sudo-p
- filename
- (let ((sudo-prefix (if ssh-p "/sudo" "/sudo:"))
- (components (if ssh-p (cdr splitname) splitname)))
- (mapconcat 'identity (cons sudo-prefix components) ":")))))
-
-(defun sudo-find-file (&optional arg)
- "Find file and open it with sudo.
+ (let* ((splitname (split-string filename ":"))
+ (prefix (car splitname))
+ (ssh-p (ssh-prefix-p prefix))
+ (sudo-p (sudo-prefix-p prefix)))
+ (if sudo-p
+ filename
+ (let ((sudo-prefix (if ssh-p "/sudo" "/sudo:"))
+ (components (if ssh-p (cdr splitname) splitname)))
+ (mapconcat 'identity (cons sudo-prefix components) ":")))))
+
+ (defun sudo-find-file (&optional arg)
+ "Find file and open it with sudo.
With a prefix ARG prompt edit currently visited file using sudo."
- (interactive "P")
- (if arg
- (find-alternate-file (sudo-file-name buffer-file-name))
- (find-file (sudo-file-name (ido-read-file-name "Find file with sudo: ")))))
-
-(global-set-key (kbd "C-x +") 'sudo-find-file)
-(global-set-key (kbd "C-x !") (lambda () (interactive) (sudo-find-file t)))
-
+ (interactive "P")
+ (if arg
+ (find-alternate-file (sudo-file-name buffer-file-name))
+ (find-file (sudo-file-name (ido-read-file-name "Find file with sudo: ")))))
+
+ (defun sudo-current-file ()
+ (interactive)
+ (sudo-find-file t)))
(provide 'init-tramp)
diff --git a/lisp/init-yaml-mode.el b/lisp/init-yaml-mode.el
index 4215fe8..4168179 100644
--- a/lisp/init-yaml-mode.el
+++ b/lisp/init-yaml-mode.el
@@ -1,18 +1,14 @@
-;; install package
-(require-package 'yaml-mode)
-
-;; load yaml-mode
-(require 'yaml-mode)
-
-;; don't override C-j
-(eval-after-load "yaml-mode"
- '(define-key yaml-mode-map (kbd "C-j") nil))
-
-;; disable electric indent
-(add-hook 'yaml-mode-hook
- (lambda () (setq-local electric-indent-mode nil)))
-
-;; ansible group_vars and host_vars
-(add-to-list 'auto-mode-alist '("/\\(group\\|host\\)_vars/" . yaml-mode))
+(use-package yaml-mode
+ :mode
+ ;; ansible group_vars and host_vars
+ ("/\\(group\\|host\\)_vars/" . yaml-mode)
+
+ :config
+ ;; don't override C-j
+ (define-key yaml-mode-map (kbd "C-j") nil)
+
+ ;; disable electric indent
+ (add-hook 'yaml-mode-hook
+ (lambda () (setq-local electric-indent-mode nil))))
(provide 'init-yaml-mode)