2016-03-24 4 views
0

Я написал простую оболочку в python и скомпилировал ее с nuitka. Моя оболочка как некоторые простые команды, такие как «say string», «braille string», «stop» и т. Д. Эта программа использует пакет python access_output для связи с программой чтения с экрана в окнах. Хорошо, это хорошо работает из обычной оболочки или выполняется из окон. Теперь я хотел бы запустить эту программу из emacs, например, обычной оболочки в emacs. Я пробовал некоторые функции: «start-process», «shell-command», но я не могу писать команды. Моя программа отображает подсказку, такую ​​как интерпретатор python, где я могу поместить свои команды. Elisp способен запускать оболочки python, оболочки mysql, но я не могу запустить свою собственную оболочку. Помощь!Как я могу запустить свою собственную оболочку из elisp?

+0

Вы пробовали что-то простое, как '(начало-процесс "имя-мой-процесс" ноль "/ путь/к/скрипт")'? Я использовал «nil» для второго аргумента, потому что предполагаю, что вам не нужно видеть выходной буфер в Emacs. Вы можете просто оценить его, чтобы попробовать: 'M-x eval-expression RET (start-process) my-process-name" nil "/ path/to/script") RET' – lawlist

ответ

0

В Emacs есть несколько способов взаимодействия с внешней программой. Из вашего текста, я подозреваю, что вам нужно посмотреть comint в руководстве emacs и справочном руководстве elisp. Comint - это общая оболочка низкого уровня в функциональности буфера (это режим оболочки).

Чтение между строками вашего сообщения, я бы также предложил вам взглянуть на emacspeak. и speechd.el, оба из которых - оба пакета, которые добавляют речь к emacs. Speechd.el - голые кости и использует речевой диспетчер, в то время как emacspeak очень богат. В пакете emacspeak используется сценарий Tcl, который взаимодействует с аппаратными или программными речевыми серверами. Он также имеет версию mac, написанную на python, которая взаимодействует с подсистемой доступа к OSX (voiceOver). Рассмотрение того, как работают эти пакеты, скорее всего, даст вам хорошие примеры того, как заставить ваши делать то, что вы хотите.

0

В питона-mode.el, часть в вопросе читает

(with-current-buffer 
(apply #'make-comint-in-buffer executable py-buffer-name executable nil (split-string-and-unquote args)) 

См строку документации по make-comint-in-buffer для Детали.

0

Как насчет запуска вашего скрипта из буфера оболочки emacs?

M-x shell RET /path/to/my/script RET

Смежные вопросы