2014-09-05 17:08:40 -04:00
|
|
|
(provide 'core-editor)
|
|
|
|
|
2014-07-15 02:21:56 -04:00
|
|
|
;;;; Editor behavior ;;;;;;;;;;;;;;;;
|
2014-09-05 17:08:40 -04:00
|
|
|
(setq sentence-end-double-space nil)
|
|
|
|
(setq require-final-newline t)
|
|
|
|
|
|
|
|
(setq-default tab-width 4)
|
|
|
|
(setq-default indent-tabs-mode nil)
|
|
|
|
(setq-default tab-always-indent nil)
|
|
|
|
|
|
|
|
;;;; Modes 'n hooks ;;;;;;;;;;;;;;;;;
|
|
|
|
(add-to-list 'auto-mode-alist '("\\.plist\\'" . nxml-mode))
|
|
|
|
(add-to-list 'auto-mode-alist '("zsh\\(env\\|rc\\)?\\'" . shell-script-mode))
|
|
|
|
(add-to-list 'auto-mode-alist '("z\\(profile\\|login\\|logout\\)?\\'" . shell-script-mode))
|
|
|
|
(add-to-list 'auto-mode-alist '("zsh/" . shell-script-mode))
|
2014-09-05 18:24:43 -04:00
|
|
|
(add-to-list 'auto-mode-alist '("\\.applescript$" . applescript-mode))
|
2014-09-05 17:08:40 -04:00
|
|
|
|
|
|
|
(add-hook 'text-mode-hook 'enable-hard-wrap)
|
|
|
|
(add-hook 'prog-mode-hook 'enable-comment-hard-wrap)
|
2014-07-15 02:21:56 -04:00
|
|
|
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
2014-08-09 19:25:06 -04:00
|
|
|
|
2014-09-05 17:08:40 -04:00
|
|
|
;;;; Evil-mode ;;;;;;;;;;;;;;;;;;;;;;;
|
2014-08-29 22:37:25 -04:00
|
|
|
(use-package evil
|
2014-08-13 00:24:22 -04:00
|
|
|
:diminish undo-tree-mode
|
|
|
|
:config
|
|
|
|
(progn
|
|
|
|
(evil-mode 1)
|
2014-07-16 03:28:06 -04:00
|
|
|
|
2014-08-29 22:37:25 -04:00
|
|
|
(use-package evil-matchit)
|
|
|
|
(use-package evil-surround)
|
|
|
|
(use-package evil-numbers)
|
|
|
|
(use-package evil-exchange)
|
|
|
|
(use-package evil-space)
|
|
|
|
(use-package evil-visualstar)
|
|
|
|
(use-package evil-nerd-commenter)
|
2014-08-13 00:24:22 -04:00
|
|
|
(use-package evil-ex-registers)
|
2014-07-16 03:28:06 -04:00
|
|
|
|
2014-08-13 00:24:22 -04:00
|
|
|
(global-evil-matchit-mode 1)
|
|
|
|
(global-evil-surround-mode 1)
|
2014-07-16 03:28:06 -04:00
|
|
|
|
2014-08-13 00:24:22 -04:00
|
|
|
(evil-exchange-install)
|
2014-07-24 00:09:47 -04:00
|
|
|
|
2014-08-13 00:24:22 -04:00
|
|
|
(evil-space-setup "t" ";" ",") ; Repeat t with space
|
|
|
|
(evil-space-setup "f" ";" ",") ; Repeat f with space
|
|
|
|
(evil-space-setup "T" "," ";") ; Repeat T with space
|
|
|
|
(evil-space-setup "F" "," ";") ; Repeat F with space
|
|
|
|
(evil-define-operator evil-destroy (beg end type register yank-handler)
|
|
|
|
(evil-delete beg end type ?_ yank-handler))
|
2014-07-15 02:21:56 -04:00
|
|
|
|
2014-09-05 17:08:40 -04:00
|
|
|
;; Enable half-cursor blink when using ace-jump
|
|
|
|
(defadvice evil-ace-jump-char-mode (around evil-ace-jump-char-mode-operator-mode activate)
|
|
|
|
(evil-half-cursor) ad-do-it)
|
|
|
|
(defadvice evil-ace-jump-word-mode (around evil-ace-jump-word-mode-operator-mode activate)
|
|
|
|
(evil-half-cursor) ad-do-it)
|
|
|
|
|
2014-08-13 00:24:22 -04:00
|
|
|
(evil-set-initial-state 'comint-mode 'insert)
|
2014-07-15 02:21:56 -04:00
|
|
|
|
2014-08-13 00:24:22 -04:00
|
|
|
;; Enable registers in ex-mode
|
2014-09-05 17:08:40 -04:00
|
|
|
(define-key evil-ex-completion-map (kbd "C-r") #'evil-ex-paste-from-register)
|
|
|
|
))
|
2014-07-16 03:28:06 -04:00
|
|
|
|
2014-09-05 17:08:40 -04:00
|
|
|
;;;; Editing plugins ;;;;;;;;;;;;;;;;;;;
|
|
|
|
(use-package expand-region)
|
2014-08-07 18:35:22 -04:00
|
|
|
|
2014-08-29 22:37:25 -04:00
|
|
|
(use-package autopair
|
2014-08-09 19:25:06 -04:00
|
|
|
:diminish autopair-mode
|
|
|
|
:init
|
|
|
|
(progn (autopair-global-mode)
|
|
|
|
(setq autopair-blink nil)
|
|
|
|
;; disable blink-matching-paren
|
|
|
|
(setq blink-matching-paren nil)))
|
2014-08-07 18:35:22 -04:00
|
|
|
|
2014-08-29 22:37:25 -04:00
|
|
|
(use-package anzu
|
2014-08-09 19:25:06 -04:00
|
|
|
:diminish anzu-mode
|
|
|
|
:init (global-anzu-mode))
|
2014-08-07 18:35:22 -04:00
|
|
|
|
2014-08-29 22:37:25 -04:00
|
|
|
(use-package multiple-cursors
|
2014-08-09 19:25:06 -04:00
|
|
|
:commands (mc/mark-next-like-this mc/mark-previous-like-this mc/mark-all-like-this)
|
|
|
|
:config
|
|
|
|
(progn
|
|
|
|
;; I do it this way because hooking mc/keyboard-quit to insert mode's exit
|
|
|
|
;; hook breaks multiple-cursors!
|
|
|
|
(defadvice keyboard-quit (around mc-and-keyboard-quit activate)
|
|
|
|
(mc/keyboard-quit) ad-do-it)))
|
|
|
|
|
2014-09-05 17:08:40 -04:00
|
|
|
;;;; Utility plugins ;;;;;;;;;;;;;;;;;;
|
|
|
|
(use-package key-chord
|
|
|
|
:init
|
|
|
|
(progn (key-chord-mode 1)
|
|
|
|
(setq key-chord-two-keys-delay 0.5)))
|
|
|
|
|
2014-08-29 22:37:25 -04:00
|
|
|
(use-package smex
|
2014-08-11 16:56:09 -04:00
|
|
|
:commands (smex smex-major-mode-commands)
|
2014-08-09 19:25:06 -04:00
|
|
|
:config
|
|
|
|
(progn (smex-initialize)
|
|
|
|
;; Hook up smex to auto-update, rather than update on every run
|
|
|
|
(defun smex-update-after-load (unused)
|
|
|
|
(when (boundp 'smex-cache) (smex-update)))
|
|
|
|
(add-hook 'after-load-functions 'smex-update-after-load)))
|
|
|
|
|
2014-09-05 17:08:40 -04:00
|
|
|
(use-package uniquify
|
|
|
|
:config
|
|
|
|
(setq uniquify-buffer-name-style 'forward))
|
|
|
|
|
2014-08-29 22:37:25 -04:00
|
|
|
(use-package recentf
|
2014-08-13 00:24:22 -04:00
|
|
|
:init
|
2014-08-09 19:25:06 -04:00
|
|
|
(progn (recentf-mode 1)
|
2014-09-05 17:08:40 -04:00
|
|
|
(setq recentf-max-menu-items 0
|
|
|
|
recentf-max-saved-items 75
|
|
|
|
recent5-auto-cleanup 'never
|
|
|
|
recentf-exclude '("/tmp/"
|
|
|
|
"/ssh:"
|
|
|
|
"\\.ido\\.last\\'"
|
|
|
|
"\\.revive\\'"))))
|