           (goto-char (point-min))
           (while (re-search-forward "\\s-\\{2,\\}" nil :noerror)
             (replace-match " "))
-          (buffer-string))))
-
-     ;; `delete' is set to `'delete' in `kill-region' function.
-     ;; `delete' is set to `nil' in `copy-region-as-kill' and `deactivate-mark'
-     ;; functions.
-     (t
-      (filter-buffer-substring (region-beginning) (region-end) delete)))))
-
-(setq region-extract-function #'modi/region-extract-function)
+          (buffer-string)))
+    (funcall orig delete)))
+(add-function :around region-extract-function #'modi/region-extract-function--C-u-kill)
 
 ;;; Mouse Copy
 (use-package mouse-copy

;; Time-stamp: <2016-02-05 22:22:01 kmodi>

;; Functions related to editing text in the buffer
;; Contents:

    (smart-mark-mode 1)))

;;; Tweaking `region-extract-function'
(defun modi/region-extract-function--C-u-kill (orig delete)
  "When a region is selected,
and DELETE is not \\='bounds,
and DELETE is not \\='delete-only,
and if \\[universal-argument] is used when killing the region (for example,
when doing \\[kill-ring-save] or \\[kill-region]), kill the region with all
trailing whitespace removed and also replace 2 or more spaces with single spaces.
Else, execute ORIG function."
  (if (and (region-beginning)
           (not (eq delete 'bounds))
           (not (eq delete 'delete-only))
           (eq 4 (prefix-numeric-value current-prefix-arg)))
      (let ((sel (filter-buffer-substring (region-beginning) (region-end) delete)))
        (with-temp-buffer
