Como se indica en otra publicación, puede agregar sus conmutadores personalizados al command-switch-alist
y emacs llamará a la función de controlador para cualquier conmutador coincidente pasado en la línea de comandos. Sin embargo, esta operación se realiza después de que se haya evaluado su archivo .emacs
. Esto está bien para la mayoría de los casos, pero es posible que desee un argumento de línea de comando para alterar la ruta de ejecución o el comportamiento de su evaluación .emacs
; A menudo hago esto para habilitar/deshabilitar fragmentos de configuración (principalmente para la depuración).
Para lograr esto, puede leer command-line-args
y comprobar su cambio manualmente y luego eliminarlo de la lista, esto detendrá emacs
quejándose de un argumento desconocido.
(setq my-switch-found (member "-myswitch" command-line-args))
(setq command-line-args (delete "-myswitch" command-line-args))
que pueden alterar su evaluación .emacs
así:
(unless my-switch-found
(message "Didn't find inhibit switch, loading some config.")
...)
Y se podría construir esto en un solo paso:
;; 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...")
...)
probado el código marcado "no se han probado". Funciona exactamente como se describe. –