(custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(package-selected-packages (quote (helm-flyspell flycheck which-key helm-swoop evil-leader helm spaceline evil use-package)))) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. ) ;; Bootstrap `use-package' (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/")) (package-initialize) (unless (package-installed-p 'use-package) (package-refresh-contents) (package-install 'use-package)) ;; packages --------------------------------------------------------------------------------------- ;; evil (use-package evil-leader :ensure t :config (evil-leader/set-leader "") (global-evil-leader-mode) ) (use-package evil :config (evil-mode 1) (modify-syntax-entry ?_ "w") ) ;; flycheck (use-package flycheck :ensure t :init (global-flycheck-mode)) ;; helm (use-package helm :ensure t :config (define-key helm-map (kbd "TAB") #'helm-execute-persistent-action) (define-key helm-map (kbd "") #'helm-execute-persistent-action) (define-key helm-map (kbd "C-z") #'helm-select-action) ) (use-package helm-flyspell :ensure t :init (flyspell-mode) ) (use-package helm-swoop :ensure t ) ;; ledger (use-package ledger-mode :ensure t :mode "\\.ledger$" ) ; TODO: consider using flycheck-ledger ;; org (use-package org :ensure t ) (setq org-todo-keywords '((sequence "TODO" "WAITING" "|" "DONE" "DELEGATED" "CANCELED"))) (setq org-tags-column -99) (use-package org-brain :ensure t :init (setq org-brain-path "~/brain") ;; For Evil users (with-eval-after-load 'evil (evil-set-initial-state 'org-brain-visualize-mode 'emacs)) :config (setq org-id-track-globally t) (setq org-id-locations-file "~/.emacs.d/.org-id-locations") (setq org-brain-visualize-default-choices 'all) (setq org-brain-title-max-length 12)) ;; spaceline (use-package spaceline :ensure t) (setq powerline-default-separator 'bar) (spaceline-emacs-theme) ;; which-key (use-package which-key :ensure t :config (setq which-key-popup-type 'minibuffer) (setq which-key-allow-evil-operators t) ) (which-key-mode) ;; theme ------------------------------------------------------------------------------------------ (menu-bar-mode -1) (tool-bar-mode -1) (toggle-scroll-bar -1) ;; TODO: color theme (setq-default left-margin-width 0 right-margin-width 0) (load-file "~/source/dotfiles/emacs/color-theme-tomorrow.el") (color-theme-tomorrow-night) (set-face-attribute 'helm-selection nil :background "#373b41" :foreground "#c5c8c6") ;;; functions ------------------------------------------------------------------------------------- (defun flyspell-goto-previous-error (arg) "Go to arg previous spelling error." (interactive "p") (while (not (= 0 arg)) (let ((pos (point)) (min (point-min))) (if (and (eq (current-buffer) flyspell-old-buffer-error) (eq pos flyspell-old-pos-error)) (progn (if (= flyspell-old-pos-error min) ;; goto beginning of buffer (progn (message "Restarting from end of buffer") (goto-char (point-max))) (backward-word 1)) (setq pos (point)))) ;; seek the next error (while (and (> pos min) (let ((ovs (overlays-at pos)) (r '())) (while (and (not r) (consp ovs)) (if (flyspell-overlay-p (car ovs)) (setq r t) (setq ovs (cdr ovs)))) (not r))) (backward-word 1) (setq pos (point))) ;; save the current location for next invocation (setq arg (1- arg)) (setq flyspell-old-pos-error pos) (setq flyspell-old-buffer-error (current-buffer)) (goto-char pos) (if (= pos min) (progn (message "No more miss-spelled word!") (setq arg 0)))))) (defun check-previous-spelling-error () "Jump to previous spelling error and correct it" (interactive) (push-mark-no-activate) (flyspell-goto-previous-error 1) (call-interactively 'helm-flyspell-correct)) (defun check-next-spelling-error () "Jump to next spelling error and correct it" (interactive) (push-mark-no-activate) (flyspell-buffer) (flyspell-goto-next-error) (call-interactively 'helm-flyspell-correct)) (defun push-mark-no-activate () "Pushes `point' to `mark-ring' and does not activate the region Equivalent to \\[set-mark-command] when \\[transient-mark-mode] is disabled" (interactive) (push-mark (point) t nil) (message "Pushed mark to ring")) ;;; hooks ----------------------------------------------------------------------------------------- (add-hook 'text-mode-hook 'flyspell-mode) ;; keybindings ------------------------------------------------------------------------------------ (evil-leader/set-key "b" 'org-brain-visualize) (evil-leader/set-key "f" 'helm-find-files) (evil-leader/set-key "j" 'dired-jump) (evil-leader/set-key "k" 'kill-buffer) (evil-leader/set-key "m" 'helm-mini) (evil-leader/set-key "q" 'save-buffers-kill-terminal) (evil-leader/set-key "s" 'check-next-spelling-error) (evil-leader/set-key "t" 'color-theme-tomorrow-night) (evil-leader/set-key "T" 'color-theme-tomorrow) (evil-leader/set-key "" 'helm-M-x) (evil-leader/set-key "," 'other-window)