Emacs:在缓冲区求值期间将参数传递给次Python shell

Emacs:在缓冲区求值期间将参数传递给次Python shell,python,emacs,ide,Python,Emacs,Ide,最近,我开始使用Emacs作为Python IDE,但它不是很直观。。。我现在正在努力解决的问题是,当使用C-C-C计算缓冲区时,如何将命令行参数传递给低级python shell。谢谢你的帮助。这似乎不容易做到;由python.el模块管理的低级进程被设计为在python发送缓冲区(和朋友)的多次调用中持久化。我发现的一个解决方案是编写自己的函数,从低级进程中以编程方式设置sys.argv: (defun python-send-buffer-with-my-args (args) (in

最近,我开始使用Emacs作为Python IDE,但它不是很直观。。。我现在正在努力解决的问题是,当使用C-C-C计算缓冲区时,如何将命令行参数传递给低级python shell。谢谢你的帮助。

这似乎不容易做到;由
python.el
模块管理的低级进程被设计为在
python发送缓冲区
(和朋友)的多次调用中持久化。我发现的一个解决方案是编写自己的函数,从低级进程中以编程方式设置
sys.argv

(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))))
*scratch*
缓冲区中执行此函数,并/或将其保存在
.emacs
文件中,然后,如果需要,将其绑定到方便的键序列
C-C-a
似乎不被
python模式使用,因此可能:

(global-set-key "\C-c\C-a" 'python-send-buffer-with-my-args)
该命令将提示您输入要使用的参数,然后将源缓冲区复制到临时缓冲区中,并在其前面添加一个代码段,将
sys.argv
设置到您提供的参数列表中,最后将调用
python send buffer


上面的代码将简单地分割您在空格上键入的字符串,因此如果您需要提供包含空格的参数,则需要更复杂的算法。

谢谢Sean,我想到了这个主意。它成功了。在这种情况下,我还可以通过在调用主函数之前直接设置sys.argv变量来传递参数。如果出现此错误
progn:Symbol的函数定义为void:python send buffer
请尝试将
python send buffer
更改为
python shell send buffer