Мне нравится команда python-send-buffer
, однако я очень часто использую Python, встроенный в приложения, или запускаю Python через систему управления пакетами (для запуска Python с определенными зависимостями). Другими словами, я не могу просто запустить "python" и получите полезный экземпляр Python (на который опирается python-send-buffer
)
То, чего я хотел бы достичь:
- в любом интерпретаторе Python (или в приложении, которое позволяет оценивать код Python), импортируйте модуль
magic_emacs_python_server.py
(добавляя к sys.path
при необходимости)
- В emacs запустите
magic-emacs-python-send-buffer
Это позволит оценить буфер в удаленном экземпляре Python.
Похоже, все должно быть довольно просто - модуль Python прослушивает сокет в потоке. Он оценивает в основном потоке и возвращает repr()
результата (или может захватывать stdout / stderr, или, может быть, оба). Модуль emacs просто отправляет текст в сокет, ожидает строку в ответ и отображает ее в буфере.
Звучит так просто, что-то подобное должно уже существовать ... У IPython есть ipy_vimserver
, но это неправильный путь. Существует также swank
, хотя он кажется очень специфичным для Lisp, но есть бэкэнд Javascript , который очень похож на то, что я хочу ... но поиск почти ничего не находит, кроме некоторого расплывчатого (возможно, истинного) утверждает, что SLIME плохо работает с не-Lisp языками
Короче говоря:
- Существует ли проект для отправки кода из буфера emacs в существующий процесс Python?
- Если нет, то как бы вы порекомендовали мне написать такую вещь (не очень хорошо знакомую с elisp) - SWANK? Код сервера IPython? Простой TCP-сервер с нуля?