Như đã nêu trong bài đăng khác, bạn có thể thêm công tắc tùy chỉnh của mình vào command-switch-alist
và emacs sẽ gọi hàm xử lý cho bất kỳ chuyển đổi phù hợp nào được chuyển vào dòng lệnh. Tuy nhiên, thao tác này được thực hiện sau khi tệp .emacs
của bạn được đánh giá. Điều này là tốt cho hầu hết các trường hợp nhưng bạn có thể muốn đối số dòng lệnh thay đổi đường dẫn thực hiện hoặc hành vi của việc đánh giá .emacs
của bạn; Tôi thường làm điều này để kích hoạt/vô hiệu hóa các khối cấu hình (chủ yếu để gỡ lỗi).
Để đạt được điều này, bạn có thể đọc command-line-args
và kiểm tra công tắc của mình theo cách thủ công và sau đó xóa nó khỏi danh sách, điều này sẽ ngừng emacs
phàn nàn về một đối số không xác định.
(setq my-switch-found (member "-myswitch" command-line-args))
(setq command-line-args (delete "-myswitch" command-line-args))
Mà có thể làm thay đổi đánh giá .emacs
bạn như vậy:
(unless my-switch-found
(message "Didn't find inhibit switch, loading some config.")
...)
Và bạn có thể xây dựng này thành một bước duy nhất:
;; 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...")
...)
kiểm tra mã đánh dấu "không được thử nghiệm". Nó hoạt động chính xác như mô tả. –