   :ensure t
   :commands scratch
   :init (progn
-          (defun meain/scratch (&optional alternate)
-            (interactive "P")
-            (if alternate
-                (call-interactively 'scratch)
-              (switch-to-buffer "*scratch*")))
-          (evil-leader/set-key "c" 'meain/scratch)))
+          (evil-leader/set-key "c"
+            (meain/with-alternate (switch-to-buffer "*scratch*")
+                                  (call-interactively 'scratch)))))
 
 ;; Highlight color codes
 (use-package rainbow-mode

    (evil-define-key 'normal
      elfeed-search-mode-map
      (kbd "o")
      (lambda (&optional alternate)
        (interactive)
        (elfeed-search-browse-url t)))
    (evil-define-key 'normal

    (setq dired-dwim-target t)
    (define-key dired-mode-map (kbd "-") 'dired-up-directory)
    (add-hook 'dired-mode-hook 'hl-line-mode)))

;; macro for alternate pattern
(defmacro meain/with-alternate (original alternate)
  "Macro for easily creating commands with alternate on `universal-argument'.
Pass ORIGINAL and ALTERNATE options."
  `(lambda (&optional use-alternate)
     (interactive "P")
     (if use-alternate ,alternate ,original)))

;;; [EVIL CONFIG] ================================================

