 (use-package whole-line-or-region
   :ensure t
   :config
-  (whole-line-or-region-global-mode))
+  (whole-line-or-region-global-mode)
+  (defun adviced:whole-line-or-region-wrap-region-kill (orig-fn &rest args)
+    "Like `whole-line-or-region-wrap-region-kill' but paste line below."
+    (let ((f (nth 0 args))
+          (num-lines (nth 1 args)))
+      (if (whole-line-or-region-use-region-p)
+          (funcall f (region-beginning) (region-end) 'region)
+        (whole-line-or-region-filter-with-yank-handler
+         (whole-line-or-region-preserve-column
+          (funcall f
+                   (line-beginning-position 1)
+                   (line-end-position num-lines)
+                   nil))))))
+  (advice-add #'whole-line-or-region-wrap-region-kill
+              :around
+              #'adviced:whole-line-or-region-wrap-region-kill))
 
 ;; Display chars/lines or row/columns in the region.
 (use-package region-state

(use-package simple
  :bind (("M-u" . upcase-dwim)
         ("M-l" . downcase-dwim)
         ("M-C-y" . ar/yank-line-above))
  :validate-custom
  (kill-ring-max 1000)
  (set-mark-command-repeat-pop t "C-u is only needed once in C-u C-SPC to pop multiple locations.")

        (newline)
        (previous-line)
        (insert lines))))

  (use-package region-bindings-mode
    :ensure t
