Làm cách nào tôi có thể gửi lệnh tới Emacs 24 từ VBA trong MS Office?


1

Tôi muốn gọi các lệnh từ trong ứng dụng MS Office có ảnh hưởng trực tiếp đến ứng dụng Emacs (mở) của tôi, ví dụ

  • thực hiện tìm kiếm văn bản hiện được chọn trong Emacs

Tôi tự hỏi làm thế nào tôi có thể làm điều đó. Có cách nào trực tiếp để gửi lệnh đến Emacs không? Tôi đang chạy Emacs 24.3.1 trên Windows 7 với các tùy chọn máy chủ

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

và tôi đang sử dụng giao thức org

Câu trả lời:


2

Bạn có thể gửi lệnh đến Emacs (chạy ở chế độ máy chủ) bằng cách sử dụng emacsclient.

Ví dụ :

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

Nếu elisp trở nên quá phức tạp, bạn có thể tốt hơn là gói nó trong một tệp mà bạn có thể tải. Ví dụ :

vui vẻ

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

dòng lệnh

emacsclient --load fun.el --eval '(my/search "PATTERN")'

cảm ơn, điều đó làm việc cho đến nay. Tuy nhiên, đầu ra của lệnh được hiển thị trong thiết bị đầu cuối. Làm thế nào tôi có thể xác định lệnh, để lệnh được thực thi trong chính Emacs? Tôi đã thử với emacsclient --eval (org-search-view "mysearchterm") Điều này sẽ tạo một danh sách với kết quả tìm kiếm và tôi muốn nó được hiển thị trong bộ đệm Emacs hiện có hoặc mới.
MostlyHarmless

Giá trị mà biểu mẫu của bạn ước tính được hiển thị trong thiết bị đầu cuối của bạn. Tuy nhiên, các hình thức elisp được thực thi trong chính Emacs. Ví dụ như, org-search-view đánh giá t, thường không được hiển thị ở bất cứ đâu khi bạn chạy nó tương tác, nhưng được hiển thị trong thiết bị đầu cuối của bạn khi bạn chạy nó bằng cách sử dụng emacsclient. Tuy nhiên, kết quả hữu ích của tìm kiếm của bạn được hiển thị trong bộ đệm Org Agenda, cho dù bạn gọi nó là tương tác từ vòng lặp lệnh hay sử dụng emacsclient.
Francesco

1
Trong trường hợp của bạn, tôi nghĩ vấn đề thay vì đến từ cách bạn gọi org-search-view không tương tác: mẫu nên là đối số thứ 2. Xem chỉnh sửa của tôi và tài liệu cho org-search-view.
Francesco

Cảm ơn một lần nữa vì sự giúp đỡ của bạn và những thay đổi được đề xuất! Nó vẫn không hoạt động đối với tôi - trong dòng lệnh tôi nhận được * LRI *: Kết thúc tệp trong quá trình phân tích cú pháp và không có thay đổi có thể nhìn thấy trong bộ đệm emacs mở
MostlyHarmless

1
Mmm, có vẻ như hình thức lisp emacs của bạn là không đầy đủ. Đó là một vấn đề sao chép / dán ngớ ngẩn, hoặc (có lẽ nhiều hơn) một vấn đề với dấu ngoặc kép trong dòng lệnh. Thật không may, tôi không phải là chuyên gia về dòng lệnh Windows ...
Francesco
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.