From 2b7fed57329c4c356c084457d7e25049b34006cd Mon Sep 17 00:00:00 2001 From: Andy Stewart Date: Fri, 6 Dec 2019 09:15:51 +0800 Subject: [PATCH] Fix #101 , add set_emacs_var interface use for pass data from Python to Elisp --- core/buffer.py | 2 ++ eaf.el | 8 ++++++++ eaf.py | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/core/buffer.py b/core/buffer.py index 1fd0e3f..93db360 100644 --- a/core/buffer.py +++ b/core/buffer.py @@ -134,6 +134,7 @@ class Buffer(QGraphicsScene): input_message = QtCore.pyqtSignal(str, str, str) close_buffer = QtCore.pyqtSignal(str) message_to_emacs = QtCore.pyqtSignal(str) + set_emacs_var = QtCore.pyqtSignal(str, str) def __init__(self, buffer_id, url, arguments, fit_to_view, background_color): super(QGraphicsScene, self).__init__() @@ -186,6 +187,7 @@ class Buffer(QGraphicsScene): self.buffer_widget.installEventFilter(self) self.buffer_widget.message_to_emacs = self.message_to_emacs + self.buffer_widget.set_emacs_var = self.set_emacs_var def handle_destroy(self): self.before_destroy_hook.emit() diff --git a/eaf.el b/eaf.el index c901f87..9127fd1 100644 --- a/eaf.el +++ b/eaf.el @@ -641,6 +641,14 @@ Use it as (eaf-bind-key var key eaf-app-keybinding)" "com.lazycat.eaf" "create_new_browser_buffer" 'eaf-create-new-browser-buffer) +(dbus-register-signal + :session "com.lazycat.eaf" "/com/lazycat/eaf" + "com.lazycat.eaf" "set_emacs_var" + 'eaf-set-emacs-var) + +(defun eaf-set-emacs-var (var-name var-value) + (set (intern var-name) var-value)) + (defun eaf-create-new-browser-buffer (new-window-buffer-id) (let ((eaf-buffer (generate-new-buffer (concat "Browser Popup Window " new-window-buffer-id)))) (with-current-buffer eaf-buffer diff --git a/eaf.py b/eaf.py index d3c60e4..17089a6 100755 --- a/eaf.py +++ b/eaf.py @@ -151,6 +151,9 @@ class EAF(dbus.service.Object): # Handle message to emacs. app_buffer.message_to_emacs.connect(self.message_to_emacs) + # Handle set emacs var signal. + app_buffer.set_emacs_var.connect(self.set_emacs_var) + # Add create new window callback if module is browser if module_path == "app.browser.buffer": app_buffer.buffer_widget.create_new_browser_window_callback = self.create_new_browser_window @@ -296,6 +299,10 @@ class EAF(dbus.service.Object): def message_to_emacs(self, message): pass + @dbus.service.signal(EAF_DBUS_NAME) + def set_emacs_var(self, var_name, var_value): + pass + @dbus.service.signal(EAF_DBUS_NAME) def get_emacs_var(self): pass