как программа на python сообщает, запускается ли она в emacs? - PullRequest
4 голосов
/ 24 марта 2012

Я обычно пишу 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(), и мне интересно, если вы, мудрые, можете помочь.

Ответы [ 2 ]

10 голосов
/ 24 марта 2012

Оболочки, открытые emacs, должны иметь переменную окружения EMACS=t.По крайней мере, это работает на моем Emacs, YMMV.

Если это не сработает, вот как узнать, какие переменные окружения, зависящие от emacs, могут видеть python.Запустите из оболочки и под emacs и сравните выходные данные.

import os
for e in os.environ:
    if 'EMACS' in e:
        print e, os.environ[e]
2 голосов
/ 24 марта 2012

Один из вариантов - проверить наличие переменных среды, таких как EMACSPATH или EMACSLOADPATH.Кроме того, в зависимости от того, как вы запускаете Python внутри Emacs, значение переменной окружения TERM может дать вам полезную подсказку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...