Büyük modu ilk kez yüklerken alt süreç otomatik olarak nasıl çalıştırılır?


9

Diyelim ki Python (veya Matlab) ile birlikte çalışıyoruz. Daha düşük bir süreç olmadan şirket

Completion needs an inferior Python process running

Bununla birlikte, daha düşük bir süreci otomatik olarak çalıştırmak için bariz çözüm

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

.py dosyasını her açışımda yeni bir python işlemi çalıştırır (Matlab ile daha pahalı hale gelir)

Sadece büyük bir mod ilk çalıştırıldığında çalıştırılan bir kanca var mı? Yoksa bir python / matlab alt işleminin zaten çalışıp çalışmadığını tespit etmenin bir yolu var mı? Yoksa daha düşük bir işlemi otomatik olarak büyük bir modda yürütme sorununu çözmenin başka bir yolu var mı?

Yanıtlar:


14

Bilginize, bazı modlar yalnızca bir alt işlem açar. Örneğin, run-pythondaha düşük bir işlem ancak zaten daha düşük bir işlem yürütülmüyorsa açılır. Önerdiğiniz run-pythonşey aslında istediğinizi yapar.

Diğer modlar için (Matlab?), Kendini açan bir işlevi kullanabilirsiniz, şöyle:

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

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

Emacs 24.5 (ve daha eski?) İçin run-pythonzorunlu bir CMDargüman aldığını unutmayın, böylece çözüm şöyle olacaktır:

(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)

Gibi görünüyor run-pythonişlevi gerekli argümansız: (run-python CMD &optional DEDICATED SHOW). Etkileşimli olarak iyi çalışıyor, ancak bu kanca yürütüldüğünde bir Wrong number of argumentshata alıyorum.
gsingh2011

1
Teşekkürler, bu argüman Emacs 25'te isteğe bağlıdır, ancak 24.5'te değildir. Cevabı Emacs 24.5 için sabit bir çözümle güncelledim
bmag
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.