Size: a a a

Emacs — русскоговорящее сообщество

2021 November 20

АД

А Му Де in Emacs — русскоговорящее сообщество
источник

A

Alexandr in Emacs — русскоговорящее сообщество
Всем привет. Подскажите как реализовать шаги : при нажатии space 5 выполняется открытый python файл используя venv в текущем проекте, результат выполнения отражается в появившемся бефере внизу и закрывается при нажатии Esc. Или подскажите направления поиска пожалуйста.
источник

A

Alexandr in Emacs — русскоговорящее сообщество
Точнее вопрос такой - как выполнить шаги по нажатию space 5 : 1) source venv/bin/activate 2) M-! python <current-buffer.py>?
источник

y

yosk in Emacs — русскоговорящее сообщество
Для 2 наверное лучше юзать M-& (async-shell-command). А ответ – написать команду на елиспе и забиндить на хоткей (тут уже начнутся какие-то моменты из дума/спейсмакса).
источник

ND

Nikita Domnickij in Emacs — русскоговорящее сообщество
Компилейшн и мейкфайл?
источник

y

yosk in Emacs — русскоговорящее сообщество
За мейкфайлы наверное из питонистов выписывают
источник

y

yosk in Emacs — русскоговорящее сообщество
Но да, это наиболее простое решение
источник

y

yosk in Emacs — русскоговорящее сообщество
Или какой-то такой костыль:

(compile
(string-join
 (list "source venv/bin/activate &&"
       "python"
       (buffer-file-name))
 " "))
источник

A

Alexandr in Emacs — русскоговорящее сообщество
Так?

(defun my-run-python-script ()
 (interactive)
 (shell-command (format "python3 %s" buffer-file-name)))
источник

A

Alexandr in Emacs — русскоговорящее сообщество
Но не знаю как venv активировать
источник

y

yosk in Emacs — русскоговорящее сообщество
Можно добавить source venv/bin/activate && или другую подобную команду перед python3. Хотя как мне кажется мейкфайл был бы более гибким.
источник

A

Alexandr in Emacs — русскоговорящее сообщество
А как?
источник

A

Alexandr in Emacs — русскоговорящее сообщество
Он будет выполнять текущий буфер только?
источник

y

yosk in Emacs — русскоговорящее сообщество
«Он» – это мейкфайл или что-то другое?
источник

y

yosk in Emacs — русскоговорящее сообщество
Можно как-то так, заодно не будет имакс блокировать:

(defun my-run-python-script ()
 (interactive)
 (async-shell-command
  (format "source %s && python3 %s"
          (expand-file-name "venv/bin/activate")
          buffer-file-name)))
источник

A

Alexandr in Emacs — русскоговорящее сообщество
Да, мейкфайл. Я не писал их никогда но я так понимаю там аргументы захардкодены ?
источник

A

Alexandr in Emacs — русскоговорящее сообщество
Спасибо!! Вроде то что надо!
источник

y

yosk in Emacs — русскоговорящее сообщество
Да нет, необязательно. Вроде можно сделать так, чтобы make filename.py вызывало нужные команды для активации venv, а потом запускало python3 filename.py
источник

y

yosk in Emacs — русскоговорящее сообщество
Хотя может это оверкиллом будет
источник

A

Alexandr in Emacs — русскоговорящее сообщество
Понятно. Всем большое спасибо!
источник