從文檔中我可以看到我可以訪問命令行參數(命令行參數)。 我想添加自己的參數,但Emacs在啓動時抱怨它無法識別它們。Emacs自定義命令行參數
E.g.
emacs -my_argument
我得到:
command-line-1: Unknown option `-my_argument'
什麼來定義我的自定義參數,並以我的Emacs會話提供信息的正確方法? 有沒有辦法從命令行彈出一個參數?
從文檔中我可以看到我可以訪問命令行參數(命令行參數)。 我想添加自己的參數,但Emacs在啓動時抱怨它無法識別它們。Emacs自定義命令行參數
E.g.
emacs -my_argument
我得到:
command-line-1: Unknown option `-my_argument'
什麼來定義我的自定義參數,並以我的Emacs會話提供信息的正確方法? 有沒有辦法從命令行彈出一個參數?
添加這樣的事情你~/.emacs
,~/.emacs.el
,或~/.emacs.d/init.el
文件:
(defun my-argument-fn (switch)
(message "i was passed -my_argument"))
(add-to-list 'command-switch-alist '("-my_argument" . my-argument-fn))
則可以執行emacs -my_argument
,它應該打印i was passed -my_argument
的小緩衝區。您可以在GNU elisp reference中找到更多信息。
正如另一篇文章中所述,您可以將您的自定義開關添加到command-switch-alist
,emacs將調用處理函數來處理在命令行中傳入的任何匹配開關。但是,此操作在您的.emacs
文件已被評估後完成。這在大多數情況下都可以,但是您可能希望通過命令行參數來更改您的評估的執行路徑或行爲;我經常這樣做來啓用/禁用配置塊(主要用於調試)。
要達到此目的,您可以閱讀command-line-args
並手動檢查您的開關,然後將其從列表中刪除,這將停止emacs
抱怨未知參數。
(setq my-switch-found (member "-myswitch" command-line-args))
(setq command-line-args (delete "-myswitch" command-line-args))
能改變你的.emacs
評價像這樣:
(unless my-switch-found
(message "Didn't find inhibit switch, loading some config.")
...)
而且可以構建成一個單一的步驟如下:
;; This was written in SO text-box, not been tested.
(defun found-custom-arg (switch)
(let ((found-switch (member switch command-line-args)))
(setq command-line-args (delete switch command-line-args))
found-switch))
(unless (found-custom-arg "-myswitch")
(message "Loading config...")
...)
測試的代碼標記爲 「未經過測試」。它的工作原理與上述相同。 –