 (quelpa-use-package-activate-advice)
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Packages: Emacs Lisp
+
+;; Future-proof your Emacs Lisp customizations.
+(use-package el-patch
+  :demand t
+  :quelpa (el-patch :fetcher github :repo "raxod502/el-patch")
+  :config
+
+  ;; Don't perform validation during Emacs startup. See [1].
+  ;;
+  ;; [1]: https://github.com/raxod502/el-patch
+  (el-patch-disable-validation-during-init))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;; Startup
 
 ;; Disable the "For information about GNU Emacs..." message at startup,
 ;; for *all* users.
-(defun display-startup-echo-area-message ())
+(advice-add #'display-startup-echo-area-message :override #'ignore)
 
 ;; Disable the *About GNU Emacs* buffer at startup, and go straight for
 ;; the scratch buffer. This is especially useful because Projectile won't

      "Switch project."
      (counsel-projectile-switch-project)))

  (defun radian--counsel-projectile-on ()
    (when (eq projectile-switch-project-action #'projectile-find-file)
      (setq projectile-switch-project-action #'counsel-projectile))
    (define-key projectile-mode-map [remap projectile-find-file]
      #'counsel-projectile-find-file)
    (define-key projectile-mode-map [remap projectile-find-dir]
      #'counsel-projectile-find-dir)
    (define-key projectile-mode-map [remap projectile-switch-project]
      #'counsel-projectile-switch-project)
    (define-key projectile-mode-map [remap projectile-ag]
      #'counsel-projectile-ag)
    (define-key projectile-mode-map [remap projectile-switch-to-buffer]
      #'counsel-projectile-switch-to-buffer)
    (radian--counsel-projectile-commander-bindings))

  (eval-after-load 'projectile '(radian--counsel-projectile-on)))

;; Provides an enhanced version of Isearch that uses Ivy to display
;; a preview of the results.

  ;; user can toggle it if they need to use `aggressive-indent-mode'
  ;; and multiline strings that are not docstrings at the same time.

  (define-minor-mode radian-clojure-strings-as-docstrings-mode
    "Toggles whether or not all strings are treated as docstrings
in Clojure. You want to turn this off if you have multiline
strings that are not docstrings."
    nil nil nil
    (if radian-clojure-strings-as-docstrings-mode
        (progn
          (el-patch-defsubst clojure-in-docstring-p ()
            "Check whether point is in a docstring."
            (el-patch-feature clojure-mode)
            (el-patch-wrap 1 1
              (or
               (eq (get-text-property (point) 'face) 'font-lock-doc-face)
               (eq (get-text-property (point) 'face) 'font-lock-string-face))))
          (el-patch-defun clojure-indent-line ()
            "Indent current line as Clojure code."
            (el-patch-feature clojure-mode)
            (if (clojure-in-docstring-p)
                (save-excursion
                  (beginning-of-line)
                  (when (and (looking-at "^\\s-*")
                             (<= (string-width (match-string-no-properties 0))
                                 (string-width (clojure-docstring-fill-prefix))))
                    (replace-match (clojure-docstring-fill-prefix))))
              (lisp-indent-line))))
      (el-patch-unpatch 'clojure-in-docstring-p)
      (el-patch-unpatch 'clojure-indent-function)))

  (add-hook 'clojure-mode-hook #'radian-clojure-strings-as-docstrings-mode)

