วิธีการเรียกใช้กระบวนการที่ด้อยกว่าโดยอัตโนมัติเมื่อโหลดโหมดหลักเป็นครั้งแรก?


9

สมมติว่าเรากำลังทำงานกับ Python (หรือ Matlab) กับ บริษัท โดยไม่ต้องมีกระบวนการ บริษัท ที่ด้อยกว่าข้อความว่า

Completion needs an inferior Python process running

อย่างไรก็ตามทางออกที่ชัดเจนในการเรียกใช้กระบวนการที่ต่ำกว่าโดยอัตโนมัติ

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

จะเรียกใช้กระบวนการ python ใหม่ทุกครั้งที่ฉันเปิดไฟล์. py (ซึ่งมีราคาแพงกว่าด้วย Matlab)

มีตะขอที่เรียกใช้เฉพาะครั้งแรกที่เรียกใช้โหมดหลักหรือไม่ หรือมีวิธีการตรวจสอบว่ากระบวนการที่ต่ำกว่าของ python / matlab ทำงานอยู่หรือไม่? หรือมีวิธีอื่นในการแก้ปัญหานี้ในการเรียกใช้กระบวนการที่ด้อยกว่าโดยอัตโนมัติด้วยโหมดหลัก แต่เพียงครั้งเดียว

คำตอบ:


14

FYI บางโหมดเปิดเพียงหนึ่งกระบวนการที่ด้อยกว่า ตัวอย่างเช่นrun-pythonจะเปิดกระบวนการที่ด้อยกว่าหากไม่มีกระบวนการที่ด้อยกว่าอยู่แล้ว สิ่งที่คุณแนะนำด้วยrun-pythonทำในสิ่งที่คุณต้องการจริง ๆ

สำหรับโหมดอื่น ๆ (Matlab?) คุณสามารถใช้ฟังก์ชั่นที่เปิดตัวเองได้เช่น:

(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 (และเก่ากว่า) run-pythonใช้CMDอาร์กิวเมนต์ที่จำเป็นดังนั้นการแก้ปัญหาจะเป็น:

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

ดูเหมือนว่าrun-pythonฟังก์ชั่นจะใช้ ARG ที่ต้องการ: (run-python CMD &optional DEDICATED SHOW). มันทำงานได้ดีแบบโต้ตอบ แต่เมื่อเบ็ดนี้รันฉันได้รับWrong number of argumentsข้อผิดพลาด
gsingh2011

1
ขอขอบคุณอาร์กิวเมนต์เป็นตัวเลือกใน Emacs 25 แต่ไม่ใช่ใน 24.5 ฉันอัปเดตคำตอบด้วยโซลูชันคงที่สำหรับ Emacs 24.5
bmag
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.