     (untabify (point-min) (point-max))))
 
 (defun csm-show-message-log ()
+  "Show the message log bufffer. Print to log with (message ...)"
   (interactive)
   (switch-to-buffer " *Message-Log*"))
 
 ;; https://emacs.stackexchange.com/questions/48954/the-elisp-function-to-run-the-shell-command-in-specific-file-path/48968#48968?newreg=b86e9e5763734e37a1bee5a230d71551
 ;; Use "term /bin/zsh", *terminal* buffer and terminal process if you want to use zsh. It needs some work to be smooth though
-(defun csm-sh-send-command (command)
+(defun csm-sh-send-command (command &optional switch-buffer)
   "Send COMMAND to current shell process.
     Creates new shell process if none exists.
     See URL `https://stackoverflow.com/a/7053298/5065796'"

 "C-S-e" #'evil-window-down
 "C-S-o" #'evil-window-up
 "C-S-i" #'evil-window-right

 "C-M-n" #'pop-tag-mark
 "C-/" #'comment-line)

   :hook
    rainbow-delimiters-mode)

;;* Custom Function

(defmacro ->> (&rest body)
  (let ((result (pop body)))
    (dolist (form body result)
      (setq result (append form (list result))))))

(defmacro -> (&rest body)
  (let ((result (pop body)))
    (dolist (form body result)
      (setq result (append (list (car form) result)
                           (cdr form))))))

(defun csm-wsl-copy (start end)
  (interactive "r")
  (shell-command-on-region start end "clip")
