   :bind ("S-SPC" . er/expand-region))
 
 (use-package multiple-cursors
-  :bind
-  (("C-'"  . mc/mark-pop) ;; also runs mc-hide-unmatched-lines-mode
-   ("C-\"" . mc/mark-all-dwim)
-   ("<C-right>" . mc/mark-next-like-this)
-   ("<C-up>"    . mc/mark-previous-like-this)
-   ("<C-down>"  . mc/unmark-previous-like-this)
-   ("<C-left>"  . mc/unmark-next-like-this)))
+  :bind (("C-c m c" . mc/mark-more-like-this-extended)
+         ("C-\"" . mc/mark-all-dwim)
+         ("C-'" . mc-hide-unmatched-lines-mode)))
 
 (use-package smartparens-config
   ;; defer loading til idle for one sec---although these editing aids

             try-expand-line
             try-expand-line-all-buffers
             try-expand-whole-kill) t))
    :bind (("<M-tab>" . hippie-expand)
           ("M-/" . crazy-hippie-expand)))

  (use-package undo-tree
    :diminish " ψ"
    :config (global-undo-tree-mode 1))

  (use-package region-bindings-mode
    :config (region-bindings-mode-enable)
    (bind-keys :map region-bindings-mode-map
               ("q" . keyboard-quit)                  ;; quit
               ("k" . kill-region)                    ;; kill
               ("z" . delete-region)                  ;; zehen
               ("c" . kill-ring-save)                 ;; copy
               ("r" . replace-string)                 ;; replace
               ("u" . upcase-initials-region)         ;; upcase
               ("w" . comment-box)                    ;; wrap
               ("g" . comment-or-uncomment-region)    ;; gloss
               ("n" . mc/mark-next-like-this)         ;; next
               ("j" . mc/unmark-next-like-this)       ;; jerk
               ("p" . mc/mark-previous-like-this)     ;; prev
               ("o" . mc/unmark-previous-like-this)   ;; off
               ("f" . mc/skip-to-next-like-this)      ;; forward
               ("b" . mc/skip-to-previous-like-this)  ;; backward
               ("a" . mc/edit-beginnings-of-lines)    ;; anfang
               ("e" . mc/edit-ends-of-lines)          ;; ende
               ("l" . mc/edit-lines)                  ;; line
               ("m" . mc/mark-all-like-this-dwim)     ;; mark
               ("x" . mc/mark-all-in-region)          ;; x
               ("t" . mc/mark-sgml-tag-pair)          ;; tag
               ("d" . mc/mark-all-like-this-in-defun) ;; defun
               ("h" . mc/mark-all-like-this)          ;; (w)hole
               ("i" . mc/insert-numbers)              ;; index
               ("s" . mc/sort-regions)                ;; sort
               ("v" . mc/reverse-regions)             ;; vert
               ))
  (bind-keys :map smartparens-mode-map
             ;; paredit stuff
             ("C-)" . sp-forward-slurp-sexp)
             ("C-}" . sp-dedent-adjust-sexp) ;; cp. sp-forward-barf-sexp
             ("C-(" . sp-backward-slurp-sexp)
             ("C-{" . sp-backward-barf-sexp)
             ("<C-backspace>" . sp-splice-sexp-killing-backward)
             ("C-M-d" . sp-splice-sexp-killing-forward) ;; overrides down-list
             ("M-s" . sp-splice-sexp)
             ;; <---??? maybe reconsider these key cords
             ("M-S" . sp-split-sexp)
             ("M-J" . sp-join-sexp)
             ("M-C" . sp-convolute-sexp) ;; formerly M-?
             ;; more magic added by smartparens
             ("M-A" . sp-absorb-sexp)
             ("M-E" . sp-emit-sexp)
             ("M-I" . sp-indent-defun)
             ("M-R" . sp-rewrap-sexp)
             ("M-W" . sp-swap-enclosing-sexp)
             ("M-(" . sp-extract-before-sexp)
             ("M-)" . sp-extract-after-sexp)
             ("C-<" . sp-indent-adjust-sexp) ;; cp. sp-add-to-previous-sexp
             ("C->" . sp-add-to-next-sexp)
             ;; they are kinda hard to remember ???--->
             ("M-[" . sp-select-previous-thing-exchange)
             ("M-]" . sp-select-next-thing)
             ("C-M-w" . sp-copy-sexp)
             ("C-M-S-w" . sp-backward-copy-sexp)
             ("C-M-u" . sp-unwrap-sexp) ;; overrides backward-up-list
             ("C-M-S-u" . sp-backward-unwrap-sexp)
             ;; navigation via parentheses
             ("M-n" . sp-down-sexp)
             ("M-P" . sp-backward-down-sexp)
             ("M-p" . sp-backward-up-sexp)
             ("M-N" . sp-up-sexp)
             ;; emacs stuff ;; overrides
             ("C-M-f" . sp-forward-sexp)      ;; forward-sexp
             ("C-M-b" . sp-backward-sexp)     ;; backward-sexp
             ("C-M-a" . sp-beginning-of-sexp) ;; beginning-of-defun
             ("C-M-e" . sp-end-of-sexp)       ;; end-of-defun
             ("C-M-n" . sp-next-sexp)         ;; forward-list
             ("C-M-p" . sp-previous-sexp)     ;; backward-list
             ("C-j" . sp-newline) ;; electric-newline-and-maybe-indent
             ("C-M-t"   . sp-transpose-sexp)        ;; transpose-sexp
             ("C-x C-t" . sp-transpose-hybrid-sexp) ;; transpose-lines
             ("C-M-k"           . sp-kill-sexp)     ;; kill-sexp
             ("<C-M-backspace>" . sp-backward-kill-sexp) ;; backward-kill-sexp
             ;; strict mode stuff
             ("C-d"   . sp-delete-char)          ;; delete-char
             ("DEL"   . sp-backward-delete-char) ;; backward-delete-char
             ("M-d"   . sp-kill-word)            ;; kill-word
             ("M-DEL" . sp-backward-kill-word)   ;; backward-kill-word
             ("C-k"   . sp-kill-hybrid-sexp)     ;; kill-line
             ))

(use-package yasnippet
  :bind (("<C-S-tab>" . yas-global-mode)
         :map yas-minor-mode-map
         ("<S-tab>" . yas-expand))
  :diminish (yas-minor-mode . " Y")
  :init (setq yas-snippet-dirs '(yas-installed-snippets-dir))
  :config

  (package-refresh-contents)
  (package-install 'use-package))
(eval-when-compile (require 'use-package))
(setq use-package-always-ensure t)
;; (setq use-package-verbose t)

(use-package benchmark-init
  ;; benchmarking require and load functions
