Я написал простую оболочку в python и скомпилировал ее с nuitka. Моя оболочка как некоторые простые команды, такие как «say string», «braille string», «stop» и т. Д. Эта программа использует пакет python access_output для связи с программой чтения с экрана в окнах. Хорошо, это хорошо работает из обычной оболочки или выполняется из окон. Теперь я хотел бы запустить эту программу из emacs, например, обычной оболочки в emacs. Я пробовал некоторые функции: «start-process», «shell-command», но я не могу писать команды. Моя программа отображает подсказку, такую как интерпретатор python, где я могу поместить свои команды. Elisp способен запускать оболочки python, оболочки mysql, но я не могу запустить свою собственную оболочку. Помощь!Как я могу запустить свою собственную оболочку из elisp?
ответ
В Emacs есть несколько способов взаимодействия с внешней программой. Из вашего текста, я подозреваю, что вам нужно посмотреть comint в руководстве emacs и справочном руководстве elisp. Comint - это общая оболочка низкого уровня в функциональности буфера (это режим оболочки).
Чтение между строками вашего сообщения, я бы также предложил вам взглянуть на emacspeak. и speechd.el, оба из которых - оба пакета, которые добавляют речь к emacs. Speechd.el - голые кости и использует речевой диспетчер, в то время как emacspeak очень богат. В пакете emacspeak используется сценарий Tcl, который взаимодействует с аппаратными или программными речевыми серверами. Он также имеет версию mac, написанную на python, которая взаимодействует с подсистемой доступа к OSX (voiceOver). Рассмотрение того, как работают эти пакеты, скорее всего, даст вам хорошие примеры того, как заставить ваши делать то, что вы хотите.
Взгляните на то, как это делается в nodejs-Repl https://github.com/abicky/nodejs-repl.el/blob/develop/nodejs-repl.el (см строка 308)
В питона-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
для Детали.
Как насчет запуска вашего скрипта из буфера оболочки emacs?
M-x shell RET /path/to/my/script RET
- 1. Как написать свою собственную оболочку в C#?
- 2. Как я могу обещать свою собственную функцию?
- 3. Циркулярные ссылки, когда я создаю свою собственную оболочку Unity
- 4. Могу ли я реализовать свою собственную JPA?
- 5. Могу ли я реализовать свою собственную OverflowStrategy?
- 6. Как я могу поставить свою собственную оболочку на передний план после waitpid?
- 7. Как написать свою собственную асинхронную оболочку для TcpListener?
- 8. Как я могу реализовать свою собственную базовую оболочку unix в C?
- 9. Как я могу создать свою собственную версию Facebook FQL?
- 10. доморощенных не может запустить свою собственную формулу
- 11. Как я могу дать каждому тесту свою собственную папку TestResults?
- 12. Как я могу сделать свою собственную анимацию в Android?
- 13. Как я могу запустить свою программу?
- 14. Как я могу использовать свою собственную случайную капчу в ASP.NET?
- 15. Как я могу настроить свою собственную панель инструментов через IElementUpdater
- 16. Как я могу заставить приложение использовать свою собственную клавиатуру?
- 17. Попытка узнать $ resource. Как я могу использовать свою собственную апи?
- 18. Как я могу реализовать свою собственную функцию hook с LSM?
- 19. Как я могу сделать свою собственную функцию сферирования?
- 20. Как я могу связать свою собственную библиотеку pthread
- 21. Как я могу реализовать свою собственную общую коллекцию в java?
- 22. Как я могу назвать свою собственную форму ослабления?
- 23. Я не могу запустить свою функцию-тофат
- 24. Как я могу запустить и протестировать свою собственную письменную программу на моем оригинальном iPhone после джейлбрейка?
- 25. Как запустить оболочку из JSP?
- 26. Как создать свою собственную карту
- 27. Могу ли я сделать свою собственную версию YAGO2?
- 28. Я не могу запустить свою мини-игру
- 29. Могу ли я сделать свою собственную гвардию в Эрланге?
- 30. Я не могу прочитать свою собственную сериализацию .NET
Вы пробовали что-то простое, как '(начало-процесс "имя-мой-процесс" ноль "/ путь/к/скрипт")'? Я использовал «nil» для второго аргумента, потому что предполагаю, что вам не нужно видеть выходной буфер в Emacs. Вы можете просто оценить его, чтобы попробовать: 'M-x eval-expression RET (start-process) my-process-name" nil "/ path/to/script") RET' – lawlist