Làm thế nào để tự động chạy quá trình kém hơn khi tải chế độ chính lần đầu tiên?


9

Giả sử chúng tôi đang làm việc với Python (hoặc Matlab) với công ty. Nếu không có một thông điệp công ty xử lý kém

Completion needs an inferior Python process running

Tuy nhiên, giải pháp rõ ràng để tự động chạy một quy trình kém hơn

 (add-hook 'python-mode 'run-python)

sẽ chạy một quy trình python mới mỗi khi tôi mở tệp .py (điều này trở nên đắt hơn với Matlab)

Có một cái móc chỉ được chạy lần đầu tiên khi một chế độ chính được chạy không? Hoặc có cách nào để phát hiện nếu một quá trình kém hơn python / matlab đang chạy không? Hoặc có một cách khác để giải quyết vấn đề này tự động chạy một quy trình kém hơn với chế độ chính nhưng chỉ một lần?

Câu trả lời:


14

FYI, một số chế độ chỉ mở một quy trình kém hơn. Ví dụ: run-pythonsẽ chỉ mở một quy trình kém hơn nếu chưa có quy trình kém hơn đang chạy. Những gì bạn đề xuất với run-pythonthực sự làm những gì bạn muốn.

Đối với các chế độ khác (Matlab?), Bạn có thể sử dụng một chức năng tự mở khóa, như vậy:

(defun run-python-once ()
  (remove-hook 'python-mode-hook 'run-python-once)
  (run-python))

(add-hook 'python-mode-hook 'run-python-once)

Lưu ý rằng trên Emacs 24.5 (và cũ hơn?), Có run-pythonmột CMDđối số bắt buộc , vì vậy giải pháp sẽ là:

(defun run-python-once ()
  (remove-hook 'python-mode-hook 'run-python-once)
  (run-python (python-shell-parse-command)))

(add-hook 'python-mode-hook 'run-python-once)

Có vẻ như run-pythonhàm cần một đối số bắt buộc : (run-python CMD &optional DEDICATED SHOW). Nó hoạt động tốt tương tác, nhưng khi hook này thực thi tôi gặp Wrong number of argumentslỗi.
gsingh2011

1
Cảm ơn, đối số là tùy chọn trong Emacs 25, nhưng không phải trong 24.5. Tôi đã cập nhật câu trả lời bằng một giải pháp cố định cho Emacs 24.5
bmag 18/07/2016
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.