Сведения о вопросе

Martincow

02:15, 13th August, 2020

Теги

emacs   lisp   ocaml    

Написание расширений Emacs на языках, отличных от Lisp

Просмотров: 389   Ответов: 6

Я хотел бы взять существующее приложение (написанное в OCaml) и создать для него Emacs "interface" (например, режим Emacs GDB). Я бы предпочел сделать это без написания тонны кода Lisp. В терминах MVC я хотел бы, чтобы представление было Emacs, но для модели и контроллера оставалось (в первую очередь) OCaml.

Кто-нибудь знает способ написать расширения Emacs на языке, отличном от Lisp? Это может иметь форму привязки к расширению Emacs API на каком-либо другом языке (например, делая OCaml первоклассным языком расширения Emacs) или режим взаимодействия Emacs, где, например, расширение имеет канал, в который оно может записывать выражения Emacs Lisp и считывать результирующие значения.



  Сведения об ответе

park

15:24, 4th August, 2020

http://www.emacswiki.org/cgi-bin/emacs-en?CategoryExtensionLanguage - это список всех языков расширения, отличных от Elisp, которые вы можете использовать.

Это действительно похоже на динамический язык, ориентированный на человека.

http://common-lisp.net/project/slime/ отсутствует в этом списке, поскольку это не совсем язык расширения,но мост Elisp-Common Lisp. Его исходный код показал бы, как общаться туда и обратно через сокеты.

Аналогичный IDE для Erlang-это Distel, в http://fresh.homeunix.net / ~luke / distel/ (в настоящее время вниз) и https://github.com/massemanet/distel .

Удачи вам!


  Сведения об ответе

crush

06:42, 5th August, 2020

Я не знаю, будет ли это работать для вашей конкретной проблемы, но я делал нечто подобное, используя функцию shell-command-to-string:

(shell-command-to-string
    "bash -c \"script-to-exec args\"")

Так, например, у нас есть существующие скрипты, написанные в python, которые будут искажать файл, поэтому вышеизложенное позволяет мне вызвать скрипт через emacs lisp.

Быстрый поиск в google нашел эту страницу , описывающую систему для записи расширений в Python, поэтому кажется возможным делать то, что вы хотите... вам просто нужно будет посмотреть, написал ли кто-нибудь подобный фреймворк для OCaml.


  Сведения об ответе

screen

14:52, 7th August, 2020

Попробуйте PyMacs, что позволяет расширить Emacs в Python.

правка : обновил ссылку.


  Сведения об ответе

DO__IT

12:37, 6th August, 2020

Некоторое расширение Api теперь возможно с входящими emacs 25.1 и динамическими модулями

Библиотека, emacs-ffi предлагает внешний функциональный интерфейс, основанный на libffi .

Ознакомьтесь с полной документацией по README .


  Сведения об ответе

SEEYOU

00:11, 4th August, 2020

Со стороны статически типизированных языков есть что-то, что выглядит довольно производительным и хорошо показанным для Haskell:

https://github.com/knupfer/haskell-emacs

существует также, вероятно, что-то полезное для Scala, которое будет повторно использовано из проекта Ensime (имеет мост как для Emacs, так и для Vim):

https://github.com/ensime/ensime-server

Кроме того, быстрый поиск google выявил еще одного потенциального кандидата на расширение Emacs с классическим языком FP, OCaml; проект имеет много исходных файлов .ml , поэтому где-то должен быть мост Emacs-OCaml:

https://github.com/the-lambda-church/merlin


  Сведения об ответе

PHPH

16:31, 4th August, 2020

Нет никакого "Extension API". Emacs Lisp находится там, далеко, и он не двигается.

Вы можете запустить Emacs команду из другого процесса. Взгляните на Gnuserv.

Существует множество приложений, где Emacs является представлением для модели / контроллера в отдельном процессе. Хорошим примером является интерфейс Emacs GDB. Я не уверен в более простом примере, может быть, sql-postgresql?


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться