Browse Source

use-packaging, but it has problems

Josh Bicking 7 years ago
parent
commit
58132d10c7
1 changed files with 264 additions and 290 deletions
  1. 264 290
      emacs

+ 264 - 290
emacs

@@ -3,7 +3,10 @@
 ;; Replace evil-leader with general
 ;; Replace evil-leader with general
 
 
 ;;;; Startup
 ;;;; Startup
-(setq initial-scratch-message "")
+(setq inhibit-splash-screen t
+      inhibit-startup-echo-area-message t
+      initial-scratch-message ""	; I like things empty.
+      initial-major-mode 'text-mode)	; I'm usually not writing elisp.
 
 
 ;;;; Base
 ;;;; Base
 
 
@@ -12,7 +15,21 @@
 
 
 ;; Disable blinking cursor
 ;; Disable blinking cursor
 (blink-cursor-mode 0)
 (blink-cursor-mode 0)
-  
+
+;; Disable scroll bar
+(when (boundp 'scroll-bar-mode)
+  (scroll-bar-mode -1))
+
+;; Smooth scrolling
+(setq auto-hscroll-mode 't)
+(setq hscroll-margin 0
+      hscroll-step 1)
+
+
+;; Line settings and indicators
+(setq visual-line-fringe-indicators '(left-curly-arrow right-curly-arrow))
+(setq-default left-fringe-width nil)
+(setq-default indicate-empty-lines t)
 
 
 ;; All yes or no prompts are y or n
 ;; All yes or no prompts are y or n
 (defalias 'yes-or-no-p 'y-or-n-p)
 (defalias 'yes-or-no-p 'y-or-n-p)
@@ -37,9 +54,6 @@
 ;; Auto-enable elisp when opening .emacs in dotfiles (without the .)
 ;; Auto-enable elisp when opening .emacs in dotfiles (without the .)
 (add-to-list 'auto-mode-alist '("emacs" . emacs-lisp-mode))
 (add-to-list 'auto-mode-alist '("emacs" . emacs-lisp-mode))
 
 
-;; Start in text-mode
-(setq initial-major-mode 'text-mode)
-
 ;; Always show matching parens
 ;; Always show matching parens
 (show-paren-mode t)
 (show-paren-mode t)
 
 
@@ -119,19 +133,79 @@ scroll-step 1)
 ;; remember cursor position
 ;; remember cursor position
 (toggle-save-place-globally)
 (toggle-save-place-globally)
 
 
+;;; Spelling
+
+;; map ]s and [s to next and previously wrong word
+
+;; move point to previous error
+;; based on code by hatschipuh at
+;; http://emacs.stackexchange.com/a/14912/2017
+(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))
+        ))))
+
 
 
 ;;;; Packages
 ;;;; Packages
 
 
+;;; use-package example:
+; (use-package foo
+; :init ; Runs before loading the package. WIll always run, even if foo isn't on this system.
+; :config ; Runs after.
+; :bind (("M-s O" . action)
+;       ("" . some-other-action))
+; :commands foo-mode ; Creates autoloads for commands: defers loading until called.
+; )
+
 ;; Package installation
 ;; Package installation
 (require 'package)
 (require 'package)
 
 
 (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
 (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
 (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
 (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
-(add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/"))
 
 
 (setq package-enable-at-startup nil)
 (setq package-enable-at-startup nil)
 (package-initialize)
 (package-initialize)
 
 
+(unless (package-installed-p 'use-package)
+  (package-refresh-contents)
+  (package-install 'use-package))
+
+(eval-when-compile
+  (require 'use-package))
+
 ;; Keep track of whether or not we need to refresh package contents
 ;; Keep track of whether or not we need to refresh package contents
 (setq packages-installed-this-session 0)
 (setq packages-installed-this-session 0)
 
 
@@ -166,14 +240,12 @@ scroll-step 1)
 	powerline-evil
 	powerline-evil
 	monokai-theme
 	monokai-theme
 	challenger-deep-theme
 	challenger-deep-theme
-	;auto-complete
 	linum-relative
 	linum-relative
 	multi-term
 	multi-term
 	neotree
 	neotree
 	evil-numbers
 	evil-numbers
 	editorconfig
 	editorconfig
 	company
 	company
-	;helm
 	ivy
 	ivy
 	flx
 	flx
 	flycheck
 	flycheck
@@ -181,8 +253,7 @@ scroll-step 1)
 	evil-surround
 	evil-surround
 	diminish
 	diminish
 	dtrt-indent
 	dtrt-indent
-	undohist
-	))
+	undohist))
 
 
 ;; List of optional packages
 ;; List of optional packages
 (setq optional-packages
 (setq optional-packages
@@ -192,7 +263,6 @@ scroll-step 1)
 	latex-preview-pane
 	latex-preview-pane
 	tide
 	tide
 	web-mode
 	web-mode
-	;ac-html
 	racket-mode
 	racket-mode
 	fuzzy
 	fuzzy
 	general))
 	general))
@@ -205,266 +275,186 @@ scroll-step 1)
 (defun optional-packages-install ()
 (defun optional-packages-install ()
     (interactive)
     (interactive)
   (apply 'ensure-package-installed optional-packages))
   (apply 'ensure-package-installed optional-packages))
- 
+
 
 
 ;; Activate installed packages
 ;; Activate installed packages
 (package-initialize)
 (package-initialize)
 
 
 
 
-;;; Evil
-
-;; No C-i jump
-(setq evil-want-C-i-jump nil)
-
-;; Evil tabs
-(global-evil-tabs-mode t)
-
-;; Default to evil mode
-(evil-mode t)
-
-;; Move all elements of evil-emacs-state-modes to evil-motion-state-modes
-(setq evil-motion-state-modes (append evil-emacs-state-modes evil-motion-state-modes))
-(setq evil-emacs-state-modes (list 'magit-popup-mode))
-(delete 'magit-popup-mode evil-motion-state-modes)
-
-;; Delete info bindings for evil to take over
-(define-key Info-mode-map "g" nil)
-(define-key Info-mode-map "n" nil)
-(define-key Info-mode-map "p" nil)
-
-;; Vim removing of windows
-(define-key evil-window-map (kbd "q") 'delete-window)
-(define-key evil-window-map (kbd "C-q") 'delete-window)
+(use-package recentf
+  :config 
+  (recentf-mode 1)
+  (setq recentf-max-saved-items 200
+    recentf-max-menu-items 15))
 
 
-; Don't echo evil's states
-(setq evil-insert-state-message nil)
-(setq evil-visual-state-message nil)
 
 
-;; Increment and decrement (evil-numbers)
-(define-key evil-insert-state-map (kbd "C-a") 'evil-numbers/inc-at-pt)
-(define-key evil-insert-state-map (kbd "C-d") 'evil-numbers/dec-at-pt)
+(use-package evil
+  :ensure t
+  :config
+  (evil-mode t)
+  (setq evil-want-C-i-jump nil)
+  (setq evil-default-state 'normal)
 
 
-;; scroll left and right with zs and ze
-(defun hscroll-cursor-left ()
-  (interactive "@")
-  (set-window-hscroll (selected-window) (current-column)))
+  ;; Move all elements of evil-emacs-state-modes to evil-motion-state-modes
+  (setq evil-motion-state-modes (append evil-emacs-state-modes evil-motion-state-modes))
+  (setq evil-emacs-state-modes (list 'magit-popup-mode))
+  (delete 'magit-popup-mode evil-motion-state-modes)
 
 
-(defun hscroll-cursor-right ()
-  (interactive "@")
-  (set-window-hscroll (selected-window) (- (current-column) (window-width) -1)))
+  ;; Delete info bindings for evil to take over
+  (define-key Info-mode-map "g" nil)
+  (define-key Info-mode-map "n" nil)
+  (define-key Info-mode-map "p" nil)
 
 
-(define-key evil-normal-state-map "zs" 'hscroll-cursor-left)
-(define-key evil-normal-state-map "ze" 'hscroll-cursor-right)
+  ;; Vim removing of windows
+  (define-key evil-window-map (kbd "q") 'delete-window)
+  (define-key evil-window-map (kbd "C-q") 'delete-window)
 
 
-;; eval the last sexp while in normal mode (include the character the cursor is currently on)
-(defun evil-eval-last-sexp ()
-  (interactive)
-  (evil-append 1)
-  (eval-last-sexp nil)
-  (evil-normal-state))
+                                          ; Don't echo evil's states
+  (setq evil-insert-state-message nil)
+  (setq evil-visual-state-message nil)
 
 
-(define-key evil-normal-state-map "\C-x \C-e" 'evil-eval-last-sexp)
-
-(setq auto-hscroll-mode 't)
-(setq hscroll-margin 0
-      hscroll-step 1)
+  ;; eval the last sexp while in normal mode (include the character the cursor is currently on)
+  (defun evil-eval-last-sexp ()
+    (interactive)
+    (evil-append 1)
+    (eval-last-sexp nil)
+    (evil-normal-state))
 
 
-;;; undo-tree
+  ;; "pull" left and right with zs and ze
+  (defun hscroll-cursor-left ()
+    (interactive "@")
+    (set-window-hscroll (selected-window) (current-column)))
 
 
-;; ;; Save undo history under .emacs.d/undo
-;; (setq undo-tree-auto-save-history t
-;;          undo-tree-history-directory-alist
-;;          `(("." . ,(concat user-emacs-directory "undo"))))
-;;    (unless (file-exists-p (concat user-emacs-directory "undo"))
-;; (make-directory (concat user-emacs-directory "undo")))
+  (defun hscroll-cursor-right ()
+    (interactive "@")
+    (set-window-hscroll (selected-window) (- (current-column) (window-width) -1)))
 
 
+  :bind (:map evil-normal-state-map
+              ("zs" . hscroll-cursor-left)
+              ("ze" . hscroll-cursor-right)
+              ("[s" . flyspell-goto-previous-error)
+              ("]s" . flyspell-goto-next-error)
+              ("\C-x \C-e" . evil-eval-last-sexp)))
 
 
-;; undohist
 
 
-(require 'undohist)
-;; ;; Save undo history under .emacs.d/undohist
 
 
-(setq undohist-directory "~/.emacs.d/undohist")
-(unless (file-exists-p  "~/.emacs.d/undohist")
-  (make-directory "~/.emacs.d/undohist"))
+(use-package evil-tabs
+  :config 
+  (global-evil-tabs-mode t))
 
 
-(undohist-initialize)
 
 
 
 
-;;; Powerline
+(use-package evil-numbers
+  ;; Increment and decrement (evil-numbers)
+  :bind (("C-c C-a" . evil-numbers/inc-at-pt)
+	 ("C-c C-d" . evil-numbers/dec-at-pt)))
 
 
-(require 'powerline)
-(powerline-evil-vim-color-theme)
 
 
+(use-package undohist
+  :config
+  ;; ;; Save undo history under .emacs.d/undohist
+  (setq undohist-directory "~/.emacs.d/undohist")
+  (unless (file-exists-p  "~/.emacs.d/undohist")
+    (make-directory "~/.emacs.d/undohist"))
 
 
-;;; Recent Files
+  (undohist-initialize))
 
 
-(require 'recentf)
-(recentf-mode 1)
-(setq recentf-max-saved-items 200
-      recentf-max-menu-items 15)
 
 
+(use-package powerline
+  :config
+  (powerline-evil-vim-color-theme))
 
 
-;;; Web mode
 
 
-;; 2 spaces for an indent
-(defun my-web-mode-hook ()
-  "Hooks for Web mode."
-  (setq web-mode-markup-indent-offset 2)
-)
-(add-hook 'web-mode-hook  'my-web-mode-hook)
+(use-package web-mode
+  :config
+  ;; 2 spaces for an indent
+  (defun my-web-mode-hook ()
+    "Hooks for Web mode."
+    (setq web-mode-markup-indent-offset 2))
+  (add-hook 'web-mode-hook  'my-web-mode-hook)
 
 
-;; Auto-enable web-mode when opening relevent files
-(add-to-list 'auto-mode-alist '("\\.html\\'" . web-mode))
-(add-to-list 'auto-mode-alist '("\\.hbs\\'" . web-mode))
-(add-to-list 'auto-mode-alist '("\\.handlebars\\'" . web-mode))
+  ;; Auto-enable web-mode when opening relevent files
+  (add-to-list 'auto-mode-alist '("\\.html\\'" . web-mode))
+  (add-to-list 'auto-mode-alist '("\\.hbs\\'" . web-mode))
+  (add-to-list 'auto-mode-alist '("\\.handlebars\\'" . web-mode)))
 
 
 
 
-;;; Autocomplete
+(use-package linum-relative
+  :config
+  (setq linum-relative-current-symbol "")
+  (linum-mode)
+  (linum-relative-global-mode))
 
 
-;(require 'auto-complete)
-;
-;;; start auto-complete
-;(eval-and-compile
-;  (require 'auto-complete nil 'noerror))
-;(ac-config-default)
-;(setq ac-auto-start t)
-;;
-;(global-set-key (kbd "<backtab>") 'ac-previous)
-;
-;;; ac-html
-;(setq web-mode-ac-sources-alist
-;  '(("css" . (ac-source-css-property))
-;    ("html" . (ac-source-words-in-buffer ac-source-abbrev))))
-;(ac-linum-workaround)
-;
-;(setq ac-auto-show-menu nil)
 
 
-;;; Spelling
+(use-package flymd
+  :config
+  (setq flymd-close-buffer-delete-temp-files t))
 
 
-;; map ]s and [s to next and previously wrong word
-
-;; move point to previous error
-;; based on code by hatschipuh at
-;; http://emacs.stackexchange.com/a/14912/2017
-(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))
-        ))))
-
-(define-key evil-normal-state-map (kbd "[s") 'flyspell-goto-previous-error)
-(define-key evil-normal-state-map (kbd "]s") 'flyspell-goto-next-error)
-
-
-;;; Relative line numbers
-
-(require 'linum-relative)
-(setq linum-relative-current-symbol "")
-(linum-mode)
-(linum-relative-global-mode)
-
-
-;;; flymd
-
-; flymd.md and flymd.html are deleted upon markdown buffer killed
-(setq flymd-close-buffer-delete-temp-files t)
-
-
-;;; evil-leader
 
 
 ;; Evil leader is Space
 ;; Evil leader is Space
-(global-evil-leader-mode)
-(evil-leader/set-leader "<SPC>")
-
-;; Leader keybinds
-(evil-leader/set-key
- "d" 'diff-buffer-with-file
- "b" 'buffer-menu
- ;"f" '(lambda ()  (interactive) (dired '"./"))
- "f" 'neotree-toggle
- "u" 'undo-tree-visualize
- "m" 'recentf-open-files
- "l" 'auto-fill-mode
- "s" '(lambda ()
-	(interactive)
-	;; use flyspell-mode when in text buffers, otherwise use flyspell-prog-mode
-	(let* ((current-mode
-	       (buffer-local-value 'major-mode (current-buffer)))
-	      (flyspell-mode-to-call
-	       (if (or (string= current-mode "text-mode") (string= current-mode "markdown-mode"))
-		   'flyspell-mode
-		 'flyspell-prog-mode)))
-	  ;; toggle the current flyspell mode, and eval the buffer if we turned it on
-	  (if flyspell-mode
-	      (funcall 'flyspell-mode '0)
-	    (funcall flyspell-mode-to-call)
-	    (flyspell-buffer))))
- ;"a" 'auto-complete-mode
- "a" 'company-mode
- "g" 'magit-status
- "M-g" 'magit-dispatch-popup
- "c" 'flycheck-mode
- )
-
-
-;; Magit
-(require 'magit)
-(require 'evil-magit)
-(setq evil-magit-state 'normal)
-(evil-magit-init)
-(global-magit-file-mode)
-(require 'magithub)
-(magithub-feature-autoinject t)
-
-
-;; Neotree
-
-; Set vi-like bindings in neotree-mode that don't conflict with evil
-(evil-define-key 'normal neotree-mode-map (kbd "TAB") 'neotree-enter)
-(evil-define-key 'normal neotree-mode-map (kbd "SPC") 'neotree-enter)
-(evil-define-key 'normal neotree-mode-map (kbd "q") 'neotree-hide)
-(evil-define-key 'normal neotree-mode-map (kbd "RET") 'neotree-enter)
-(evil-define-key 'normal neotree-mode-map (kbd "h") 'neotree-hidden-file-toggle)
-(evil-define-key 'normal neotree-mode-map (kbd "r") 'neotree-refresh)
-
-;Every time when the neotree window is opened, let it find current file and jump to node.
-(setq neo-smart-open t)
-
-; List of files to hide
-(setq neo-hidden-regexp-list '("^\\." "\\.pyc$" "~$" "^#.*#$" "\\.elc$" "\\.class"))
+(use-package evil-leader
+  :config
+  (global-evil-leader-mode)
+  (evil-leader/set-leader "<SPC>")
+
+  (evil-leader/set-key
+   "d" 'diff-buffer-with-file
+   "b" 'buffer-menu
+   ;"f" '(lambda ()  (interactive) (dired '"./"))
+   "f" 'neotree-toggle
+   "u" 'undo-tree-visualize
+   "m" 'recentf-open-files
+   "l" 'auto-fill-mode
+   "s" '(lambda ()
+  	(interactive)
+  	;; use flyspell-mode when in text buffers, otherwise use flyspell-prog-mode
+  	(let* ((current-mode
+  	       (buffer-local-value 'major-mode (current-buffer)))
+  	      (flyspell-mode-to-call
+  	       (if (or (string= current-mode "text-mode") (string= current-mode "markdown-mode"))
+  		   'flyspell-mode
+  		 'flyspell-prog-mode)))
+  	  ;; toggle the current flyspell mode, and eval the buffer if we turned it on
+  	  (if flyspell-mode
+  	      (funcall 'flyspell-mode '0)
+  	    (funcall flyspell-mode-to-call)
+  	    (flyspell-buffer))))
+   ;"a" 'auto-complete-mode
+   "a" 'company-mode
+   "g" 'magit-status
+   "M-g" 'magit-dispatch-popup
+   "c" 'flycheck-mode
+   ))
+
+
+(use-package magit
+  :config
+  (setq evil-magit-state 'normal))
+
+(use-package evil-magit
+  :config
+  (evil-magit-init))
+
+(use-package magithub
+  :config
+  (magithub-feature-autoinject t))
+
+
+(use-package neotree
+  :config
+  ; Set vi-like bindings in neotree-mode that don't conflict with evil
+  (evil-define-key 'normal neotree-mode-map (kbd "TAB") 'neotree-enter)
+  (evil-define-key 'normal neotree-mode-map (kbd "SPC") 'neotree-enter)
+  (evil-define-key 'normal neotree-mode-map (kbd "q") 'neotree-hide)
+  (evil-define-key 'normal neotree-mode-map (kbd "RET") 'neotree-enter)
+  (evil-define-key 'normal neotree-mode-map (kbd "h") 'neotree-hidden-file-toggle)
+  (evil-define-key 'normal neotree-mode-map (kbd "r") 'neotree-refresh)
+
+  ;Every time when the neotree window is opened, let it find current file and jump to node.
+  (setq neo-smart-open t)
+
+  ; List of files to hide
+  (setq neo-hidden-regexp-list '("^\\." "\\.pyc$" "~$" "^#.*#$" "\\.elc$" "\\.class")))
 
 
 
 
 ;; tide/typescript
 ;; tide/typescript
@@ -475,74 +465,66 @@ scroll-step 1)
 (setq js-indent-level 2)
 (setq js-indent-level 2)
 
 
 
 
-;; racket-mode
-(add-to-list 'auto-mode-alist '("\\.scm\\'" . racket-mode))
+(use-package racket-mode
+  :config
+  (add-to-list 'auto-mode-alist '("\\.scm\\'" . racket-mode))
+
+  ; C-w prefix in racket-REPL
+  (add-hook 'racket-repl-mode-hook 'racket-repl-evil-hook)
 
 
-; C-w prefix in racket-REPL
-(add-hook 'racket-repl-mode-hook 'racket-repl-evil-hook)
+  (defun racket-repl-evil-hook ()
+    (define-key racket-repl-mode-map "\C-w" 'evil-window-map)
+    (global-set-key (kbd "C-w") 'racket-repl-mode-map)))
 
 
-(defun racket-repl-evil-hook ()
-  (define-key racket-repl-mode-map "\C-w" 'evil-window-map)
-  (global-set-key (kbd "C-w") 'racket-repl-mode-map))
 
 
+(use-package editorconfig
+  :config
+  (editorconfig-mode 1))
 
 
-;; editorconfig
-(editorconfig-mode 1)
 
 
-;;helm
+(use-package ivy
+  :config
+  (ivy-mode))
 
 
-;; (require 'helm-config)
-;; 
-;; (global-set-key (kbd "M-x") #'helm-M-x)
-;; (global-set-key (kbd "C-x r b") #'helm-filtered-bookmarks)
-;; (global-set-key (kbd "C-x C-f") #'helm-find-files)
-;; 
-;; (helm-mode 1)
-;; (define-key helm-find-files-map "\t" 'helm-execute-persistent-action) ; make TAB run C-j's command.
 
 
-;; ac-helm
-;(require 'ac-helm)  ;; Not necessary if using ELPA package
-;;(global-set-key (kbd "C-:") 'ac-complete-with-helm)
-;(define-key ac-complete-mode-map (kbd "<tab>") 'ac-complete-with-helm)
+(use-package fuzzy
+  :config
+  (setq ivy-re-builders-alist '((t . ivy--regex-fuzzy))))
 
 
-;; ivy
-(require 'ivy)
-(ivy-mode)
 
 
-; fuzzy
-(setq ivy-re-builders-alist '((t . ivy--regex-fuzzy)))
+(use-package company)
 
 
-;; company
-(require 'company)
 
 
-;; flycheck
-(require 'flycheck)
-(add-hook 'after-init-hook #'global-flycheck-mode)
+(use-package flycheck
+  :config
+  (add-hook 'after-init-hook #'global-flycheck-mode)
 
 
-(setq flycheck-check-syntax-automatically '(save mode-enabled))
-(setq flycheck-checkers (delq 'emacs-lisp-checkdoc flycheck-checkers))
-(setq flycheck-checkers (delq 'html-tidy flycheck-checkers))
-(setq flycheck-standard-error-navigation nil)
+  (setq flycheck-check-syntax-automatically '(save mode-enabled))
+  (setq flycheck-checkers (delq 'emacs-lisp-checkdoc flycheck-checkers))
+  (setq flycheck-checkers (delq 'html-tidy flycheck-checkers))
+  (setq flycheck-standard-error-navigation nil)
 
 
-(global-flycheck-mode t)
+  (global-flycheck-mode t))
 
 
-;; flycheck-pos-tip: flycheck errors on a tooltip 
-(require 'flycheck-pos-tip)
-(with-eval-after-load 'flycheck
+
+(use-package flycheck-pos-tip
+  :after flycheck
+  :config
   (flycheck-pos-tip-mode))
   (flycheck-pos-tip-mode))
 
 
 
 
-;; evil-surround
-(require 'evil-surround)
-(global-evil-surround-mode 1)
+(use-package evil-surround
+  :config
+  (global-evil-surround-mode 1))
+
 
 
+(use-package dtrt-indent
+  :config 
+  (dtrt-indent-mode 1))
 
 
-;; auto-adjust to indentation
-(require 'dtrt-indent)
-(dtrt-indent-mode 1)
 
 
+(use-package org)
 
 
-;; remove mode clutter from powerline
 
 
 ;; "after" macro definition
 ;; "after" macro definition
 (if (fboundp 'with-eval-after-load)
 (if (fboundp 'with-eval-after-load)
@@ -561,14 +543,6 @@ scroll-step 1)
 ;; Enable transient mark mode
 ;; Enable transient mark mode
 (transient-mark-mode 1)
 (transient-mark-mode 1)
 
 
-;; Enable org-mode
-(require 'org)
-
-;; auto-adjust to indentation
-(require 'dtrt-indent)
-(dtrt-indent-mode 1)
-
-
 (require 'diminish)
 (require 'diminish)
 (diminish 'visual-line-mode)
 (diminish 'visual-line-mode)
 (after 'undo-tree (diminish 'undo-tree-mode))
 (after 'undo-tree (diminish 'undo-tree-mode))