Bagaimana saya bisa mengirim perintah ke Emacs 24 dari VBA di MS Office?

1

Saya ingin menjalankan perintah dari dalam aplikasi MS Office yang memiliki efek langsung pada aplikasi Emacs saya (terbuka), misalnya

  • lakukan pencarian untuk teks yang saat ini dipilih di Emacs

Saya bertanya-tanya bagaimana saya bisa melakukan itu. Apakah ada cara langsung untuk mengirim perintah ke Emacs? Saya menjalankan Emacs 24.3.1 di Windows 7 dengan opsi server

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

dan saya menggunakan protokol-org

Sebagian besar tidak berbahaya
sumber

Jawaban:

2

Anda dapat mengirim perintah ke Emacs (berjalan dalam mode server) menggunakan emacsclient.

Sebagai contoh :

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

Jika elisp menjadi terlalu rumit, Anda mungkin lebih baik membungkusnya dengan file yang bisa Anda muat. Sebagai contoh :

fun.el

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

garis komando

emacsclient --load fun.el --eval '(my/search "PATTERN")'
Francesco
sumber
terima kasih, itu berhasil sejauh ini. Namun, output dari commnand ditampilkan di terminal. Bagaimana saya bisa mendefinisikan perintah, sehingga perintah itu dijalankan di Emacs sendiri? Saya mencoba dengan emacsclient --eval (org-search-view "mysearchterm") Ini akan membuat daftar dengan hasil pencarian dan saya ingin membuatnya ditampilkan dalam buffer Emacs yang ada atau baru.
MostlyHarmless
Nilai yang dievaluasi formulir Anda ditampilkan di terminal Anda. Namun, bentuk elisp dieksekusi di Emacs sendiri. Sebagai contoh, org-search-viewevaluasi ke t, yang biasanya tidak ditampilkan di mana pun ketika Anda menjalankannya secara interaktif, tetapi ditampilkan di terminal Anda ketika Anda menjalankannya menggunakan emacsclient. Namun, hasil berguna dari pencarian Anda ditampilkan dalam buffer Agenda Org, baik Anda menyebutnya secara interaktif dari loop perintah, atau menggunakan emacsclient.
Francesco
1
Dalam kasus Anda, saya pikir masalahnya lebih berasal dari cara Anda menelepon org-search-viewnon-interaktif: polanya harus menjadi argumen ke-2. Lihat hasil edit saya dan dokumentasinya untuk org-search-view.
Francesco
Sekali lagi terima kasih atas bantuan Anda dan perubahan yang disarankan! Itu masih tidak berfungsi untuk saya - di baris perintah saya mendapatkan * GALAT *: Akhir file selama parsing dan tidak ada perubahan yang terlihat pada buffer emacs terbuka
MostlyHarmless
1
Mmm, sepertinya formulir emacs lisp Anda tidak lengkap. Entah itu masalah salin / tempel konyol, atau (lebih mungkin) masalah dengan kutipan di baris perintah. Sayangnya, saya bukan ahli di baris perintah Windows ...
Francesco