Geçtiğimiz günlerde Emacs'i bir Python IDE olarak kullanmaya başladım ve gayet sezgisel değil ... Şu anda mücadele ettiğim sorun, komut satırı argümanlarını alt seviyeye nasıl geçireceğimizdir Tampon Cc Cc ile değerlendirildiğinde python kabuğu. Yardım için teşekkürler.Emacs: arabellek değerlendirmesi sırasında alt Python kabuğuna argümanları iletme
cevap
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.
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
+1. –
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