(global-set-key (kbd "C-x r") (lambda ()
(interactive)
(async-shell-command "./test.py")))
внутри test.py
import tempfile
import os
from subprocess import call
EDITOR = os.environ.get('EDITOR', 'vim') # that easy!
initial_message = "" # if you want to set up the file somehow
with tempfile.NamedTemporaryFile(suffix=".tmp") as tf:
tf.write(initial_message)
tf.flush()
call([EDITOR, tf.name])
# do the parsing with `tf` using regular File operations.
# for instance:
tf.seek(0)
edited_message = tf.read()
print edited_message
Проблема №1
При аналогичном запуске из-под vim при запуске скрипта открывается новый vim, вводим текст. Выходим из-под вим и видим результат выполнения скрипта. В эмаксе запуск скрипта приводит к
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$ 0x0 format=unix enc=utf-8 [1,0] All
Проблема №2 Есть скрипт деплоя, который при исполнении запрашивает у меня кое-какие данные с подтверждением. Так вот пример работы из-под vim:
[user@127.0.0.1:22] run: ./manage.py createsuperuser --username admin --email admin@exmaple.com
[user@127.0.0.1:22] out: Password:
[user@127.0.0.1:22] out: Password (again):
[user@127.0.0.1:22] out: Superuser created successfully.
[user@127.0.0.1:22] out:
[user@127.0.0.1:22] run: mkdir -p apps
Пример работы в эмакс:
441│ [user@127.0.0.1:22] run: ./manage.py createsuperuser --username admin --email admin@exmaple.com
442│ [user@127.0.0.1:22] out: Password: somepassword |
443│ |
444│ |
445│ [user@127.0.0.1:22] out: Password (again): |
446│ [user@127.0.0.1:22] out: Error: Your passwords didn't match. |
447│ [user@127.0.0.1:22] out: Password:
Попытка 2
441│ [user@127.0.0.1:22] run: ./manage.py createsuperuser --username admin --email admin@exmaple.com
442│ [user@127.0.0.1:22] out: Password: somepassword |
443│ somepassword |
444│ |
445│ [user@127.0.0.1:22] out: Password (again): somepassword |
446│ |
447│ [user@127.0.0.1:22] out: 1Superuser created successfully. |
448│ [user@127.0.0.1:22] out: |