                     lisp-body-indent 2)))                     ; indent elisp by 2
   :interpreter (("emacs" . emacs-lisp-mode)))
 
-(use-package diminish
-  :config
-  :init
-  ;; some of these need to be run after init file has loaded
-  ;; to actually be diminished
-  (me:add-hook-with-delay 'after-init-hook 5 (lambda ()
-                               (diminish 'visual-line-mode)
-                               (diminish 'abbrev-mode)
-                               (diminish 'auto-revert-mode))))
+;; built-in winner package
+;; N.B. winner-mode must be started early to record window configs
+(use-package winner
+  :ensure nil
+  :general
+    ("s-]"   #'winner-redo)
+    ("s-["   #'winner-undo)
+  :defer 1
+  :init
+  :config
+  (winner-mode t))
+
+;; built-in autorevert package
+(use-package autorevert
+  :ensure nil
+  :defer 2
+  :init
+  (setq auto-revert-check-vc-info nil                         ; don't update branch on auto-revert
+        auto-revert-verbose nil)                              ; don't tell me about auto reverts
+  :config
+  (global-auto-revert-mode t)                                 ; revert unchanged files automatically
+  :diminish auto-revert-mode)
+
+;; built-in "simple" package
+(use-package simple
+  :ensure nil
+  :general
+    ("s-j"        #'next-error)
+    ("s-k"        #'previous-error)
+  :init
+  (setq kill-ring-max 200                      ; More killed items
+        kill-do-not-save-duplicates t          ; No duplicates in kill ring
+        save-interprogram-paste-before-kill t  ; save clipboard before killing
+        visual-line-fringe-indicators
+           '(left-curly-arrow nil))            ; use left curly error for wrapped lines
+  :config
+  (column-number-mode t)                       ; display column/row of cursor in mode-line
+  (global-visual-line-mode t)                  ; wrap long lines
+  :diminish visual-line-mode
+  :defer 1)
+
+;; built-in "abbrev" package
+(use-package abbrev
+  :ensure nil
+  :init
+  :config
+  :diminish abbrev-mode
+  :defer 1)
+
+;; built-in "hl-line" package
+(use-package hl-line
+  :ensure nil
+  :general
+  ("<f5> h" #'global-hl-line-mode)              ; toggle hl-line
+  :init
+  :config
+  (global-hl-line-mode t)                       ; highlight current line (hl-line)
+  :defer 1)
+
+;; built-in "menu-bar" package
+(use-package menu-bar
+  :ensure nil
+  :general
+    ("<f5> m"      #'menu-bar-mode)
+    ("<f5> <f5>"   #'menu-bar-open)
+  :init
+  :config
+  (menu-bar-mode 0)                             ; no menu bar
+  :defer 1)
+
+;; built-in "face-remap" package
+(use-package face-remap
+  :ensure nil
+  :general
+  ("<f5> -" #'text-scale-adjust)
+  ("<f5> =" #'text-scale-adjust)
+  :init
+  (setq text-scale-mode-step 1.05)              ; text size increases by 5% (normally 20%)
+  :config
+  :demand)
 
 (use-package smooth-scrolling
   :config


(use-package linum-relative
  :config
  :diminish linum-relative-mode
  :init
  (setq linum-relative-current-symbol ""))   ; show current line #

  (add-hook 'c++-mode-hook #'me:flycheck-rtags-setup)
  (add-hook 'c-mode-hook #'me:flycheck-rtags-setup)
  (add-hook 'company-mode-hook  #'me:company-rtags-setup)
  :general
    ("s-;"        #'rtags-location-stack-forward)
    ("s-,"        #'rtags-location-stack-back)
    ("<f6> c"     #'rtags-rename-symbol)
    ("<f6> d"     #'me:tags-find-symbol)
    ("<f6> f"     #'me:tags-find-file)
    ("<f6> i"     #'rtags-find-functions-called-by-this-function)
    ("<f6> r"     #'me:tags-find-references-at-point)
    ("<f6> v"     #'rtags-find-virtuals-at-point)
    ("<f6> <RET>"  #'rtags-create-doxygen-comment)
    ("<f6> <f6>"  #'me:tags-find-symbol-at-point)
  :config
  (rtags-diagnostics)
  (rtags-set-periodic-reparse-timeout 2)
