Как я могу отправить команду Emacs 24 из VBA в MS Office?

438
MostlyHarmless

Я хочу вызывать команды из приложения MS Office, которые напрямую влияют на мое (открытое) приложение Emacs, например

  • выполнить поиск выбранного текста в Emacs

Интересно, как я могу это сделать. Есть ли прямой способ отправки команд в Emacs? Я использую Emacs 24.3.1 в Windows 7 с опциями сервера

;;prevent error message of unsafe server (see http://stackoverflow.com/a/1313577/772434 ) (require 'server) (and (>= emacs-major-version 23) (defun server-ensure-safe-dir (dir) "Noop" t)) (server-start) ;;(add-to-list 'load-path "~/path/to/org/protocol/") (require 'org-protocol) 

и я использую орг-протокол

1

1 ответ на вопрос

2
Francesco

You can send command to Emacs (running in server mode) using emacsclient.

For example :

emacsclient --eval "(org-search-view nil """pattern""")" 

If the elisp becomes too complex, you might be better of wrapping it in a file that you can load. For example :

fun.el

(defun my/search (pattern) (with-current-buffer "BUFFER-NAME" (search-forward pattern))) 

command-line

emacsclient --load fun.el --eval '(my/search "PATTERN")' 
спасибо, это работает до сих пор. Тем не менее, вывод comnand отображается в терминале. Как я могу определить команду, чтобы команда выполнялась в самом Emacs? Я попытался с ** emacsclient --eval (org-search-view "mysearchterm") ** Это должно создать список с результатами поиска, и я хотел бы, чтобы он отображался в существующем или новом буфере Emacs. MostlyHarmless 9 лет назад 0
Значение, которое оценивает ваша форма, отображается в вашем терминале. Однако формы elisp выполняются в самом Emacs. Например, `org-search-view` оценивается как` t`, который обычно нигде не отображается, когда вы запускаете его в интерактивном режиме, но отображается в вашем терминале, когда вы запускаете его с помощью `emacsclient`. Однако полезные результаты вашего поиска отображаются в буфере Org Agenda, независимо от того, вызываете ли вы его в интерактивном режиме из командного цикла или используете `emacsclient`. Francesco 9 лет назад 0
В вашем случае, я думаю, проблема скорее в том, что вы вызываете `org-search-view` неинтерактивно: шаблон должен быть вторым аргументом. Смотрите мое редактирование и документацию для `org-search-view`. Francesco 9 лет назад 1
Еще раз спасибо за вашу помощь и предложенные изменения! Это все еще не работает для меня - в командной строке я получаю _ * ОШИБКА *: конец файла во время синтаксического анализа_, и нет никаких видимых изменений в открытых буферах Emacs MostlyHarmless 9 лет назад 0
Ммм, похоже, что ваша форма Emacs Lisp неполная. Либо это глупая проблема копирования / вставки, либо (что более вероятно) проблема с кавычками в командной строке. К сожалению, я не эксперт по командной строке Windows ... Francesco 9 лет назад 1
цитирование было не совсем правильным - см. мое редактирование. Теперь все работает отлично, еще раз спасибо! :-) MostlyHarmless 9 лет назад 0

Похожие вопросы