python程序如何判断它是否在emacs中运行?
问题描述:
我通常在emacs中编写python。python程序如何判断它是否在emacs中运行?
我经常想要重新评估我的文件,我可以使用Ctrl-C Ctrl-C做到这一点,这会导致解释器重新载入整个文件,然后我可以继续播放。
,所以如果我正在写一个程序,它输入,我通常会用两行发现自己:
lines = open("/home/jla/inputfile").readlines()
#lines = fileinput.input()
,第一行是“同时发展做什么”(从已知例如阅读输入文件) 第二个是(从标准输入读取,或提供的文件名)
显然,这是不好的“在命令行运行时做什么”,所以我想:
if in_emacs():
lines = open("/home/jla/inputfile").readlines()
if run_from_shell():
lines = fileinput.input()
else:
oops()
我知道如何写oops()
,但我有点卡住in_emacs()
和run_from_shell()
,我不知道你聪明的人可以帮忙。
答
emacs打开的shell应该有环境变量EMACS=t
。至少这对我的emacs,YMMV有效。
如果这不适合你,下面是如何找出python可以看到的依赖emacs的环境变量。从shell和emacs下运行,并比较输出。
import os
for e in os.environ:
if 'EMACS' in e:
print e, os.environ[e]
答
一种方法是检查是否存在环境变量,如EMACSPATH
或EMACSLOADPATH
。另外,根据您在Emacs中如何启动Python,TERM
环境变量的值可能会给您一个有用的线索。
就这样,在很多语言里,我已经有些烦人的东西已经过时了。很简单。非常感谢你! – 2012-03-24 09:08:25
使用'Mx shell-command'时不起作用,只需要尝试'M-!',然后输入命令'python -c“import os; print [k for k in os.environ.keys ()如果k.startswith('EMACS')]“'。对我来说,结果是'['EMACSPATH','EMACSLOADPATH','EMACSDOC','EMACSDATA']'。变量'EMACSPATH'(在我的答案中提到)被设置在shell和一次性命令中,因此可能比'EMACS'更好。 – sanityinc 2012-03-25 19:01:22