2010-05-25 12 views

cevap

7

Bu, kolayca mümkün görünmüyor; python.el modülü tarafından yönetilen inferior süreç, python-send-buffer (ve arkadaşların) birçok çağrışımını sürdürmek için tasarlanmıştır. eğer

(defun python-send-buffer-with-my-args (args) 
    (interactive "sPython arguments: ") 
    (let ((source-buffer (current-buffer))) 
    (with-temp-buffer 
     (insert "import sys; sys.argv = '''" args "'''.split()\n") 
     (insert-buffer-substring source-buffer) 
     (python-send-buffer)))) 

, o zaman, *scratch* tamponu içinde bu işlevi Yürütme ve/veya .emacs dosyaya kaydetmek: buldum bir çözüm alt sürecin içinden programlı sys.argv setleri kendi işlevini yazmaktır İsterseniz, uygun bir tuş dizisine bağlayın. C-c C-a yüzden belki, python-mode tarafından kullanılacak görünmüyor:

(global-set-key "\C-c\C-a" 'python-send-buffer-with-my-args) 

komut argümanlar kullanmak için, daha sonra sys.argv ayarlayan bir kod parçacığı ile prepending, geçici tampon içine kaynak tampon kopyalamak isteyecektir Sağladığınız argümanların listesine ve son olarak python-send-buffer'u arayacaktır. Eğer onları boşluk var argümanları tedarik gerekiyorsa, daha sofistike bir algoritma gerekir böylece

Yukarıdaki kod sadece safça sen, boşluk yazdığınız dize bölecek.

+0

Teşekkür ederim Sean, fikrim var. Bu hile yapar. Bu durumda, temel işlevi çağırmadan önce argümanları doğrudan sys.argv değişkenini ayarlayarak da aktarabilirim. Harika bir fikir için – Sammy

+0

+1. –

+0

bu hata 'progn alırsanız: Symbol fonksiyon tanımı geçersizdir: python-send-buffer'' piton-kabuk-send-buffer' değişen 'piton-send-buffer' deneyin. – boclodoa

İlgili konular