Wie kann ich einen Befehl von VBA in MS Office an Emacs 24 senden?

516
MostlyHarmless

Ich möchte Befehle aus der MS Office-Anwendung heraus aufrufen, die sich beispielsweise direkt auf meine (offene) Emacs-Anwendung auswirken

  • Suchen Sie nach dem aktuell ausgewählten Text in Emacs

Ich frage mich, wie ich das schaffen kann. Gibt es eine direkte Möglichkeit, Befehle an Emacs zu senden? Ich verwende Emacs 24.3.1 unter Windows 7 mit den Serveroptionen

;;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) 

und ich verwende das org-Protokoll

1

1 Antwort auf die Frage

2
Francesco

Sie können den Befehl mit an Emacs senden (im Servermodus ausgeführt) emacsclient.

Zum Beispiel :

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

Wenn der Elisp zu komplex wird, sollten Sie ihn besser in eine Datei packen, die Sie laden können. Zum Beispiel :

fun.el

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

Befehlszeile

emacsclient --load fun.el --eval '(my/search "PATTERN")' 
danke, das klappt soweit. Die Ausgabe des Befehls wird jedoch im Terminal angezeigt. Wie kann ich den Befehl definieren, damit der Befehl in Emacs selbst ausgeführt wird? Ich habe es mit ** emacsclient --eval (org-search-view "mysearchterm") versucht. ** Dies sollte eine Liste mit Suchergebnissen erstellen, und ich möchte, dass sie in einem vorhandenen oder neuen Emacs-Puffer angezeigt wird. MostlyHarmless vor 9 Jahren 0
Der Wert, den Ihr Formular auswertet, wird in Ihrem Terminal angezeigt. Die Elisp-Formulare werden jedoch in Emacs selbst ausgeführt. Zum Beispiel wird "org-search-view" zu "t" ausgewertet, was normalerweise nicht angezeigt wird, wenn Sie es interaktiv ausführen. Wird jedoch in Ihrem Terminal angezeigt, wenn Sie es mit "emacsclient" ausführen. Die nützlichen Ergebnisse Ihrer Suche werden jedoch in einem Org Agenda-Puffer angezeigt, unabhängig davon, ob Sie ihn interaktiv über die Befehlsschleife aufrufen oder "emacsclient" verwenden. Francesco vor 9 Jahren 0
In Ihrem Fall, denke ich, liegt das Problem eher an der Art, wie Sie "org-search-view" nicht interaktiv nennen: Das Muster sollte das 2. Argument sein. Siehe meine Bearbeitung und die Dokumentation für `org-search-view`. Francesco vor 9 Jahren 1
Nochmals vielen Dank für Ihre Hilfe und die vorgeschlagenen Änderungen! Es funktioniert immer noch nicht für mich - in der Befehlszeile bekomme ich _ * ERROR *: Dateiende während der Analyse_ und es gibt keine sichtbare Änderung in den offenen Emacs-Puffern MostlyHarmless vor 9 Jahren 0
Es sieht so aus, als ob Ihre Emacs-Lisp-Form unvollständig ist. Entweder handelt es sich um ein dummes Problem beim Kopieren / Einfügen oder (wahrscheinlicher) um ein Problem mit Anführungszeichen in der Befehlszeile. Leider bin ich kein Experte für die Windows-Kommandozeile ... Francesco vor 9 Jahren 1
Zitat war nicht ganz korrekt - siehe meine Bearbeitung. Jetzt funktioniert es gut, danke nochmal! :-) MostlyHarmless vor 9 Jahren 0