Emacs custom command line argument

elisp, emacs

Solution

Add something like this to your `~/.emacs`, `~/.emacs.el`, or `~/.emacs.d/init.el` file:

(defun my-argument-fn (switch)
  (message "i was passed -my_argument"))

(add-to-list 'command-switch-alist '("-my_argument" . my-argument-fn))

Then you can execute `emacs -my_argument` and it should print `i was passed -my_argument` to the minibuffer. You can find more information in the GNU elisp reference.

Problem

From the documentation I can see I can access command line arguments (command-line-args). I'd like to add my own arguments but Emacs complains at start up that it doesn't recognize them. E.g. ``` emacs -my_argument ``` I get: ``` command-line-1: Unknown option `-my_argument' ``` What's a proper way to define my custom arguments and provide information to my Emacs session? Is there a way to pop an argument from a command line?

Original source