Use json as data format between elisp and python.

master
Andy Stewart 6 years ago
parent d629d9e8d8
commit 4e1b35b915
  1. 7
      app/terminal/buffer.py
  2. 9
      eaf.el
  3. 5
      eaf.py

@ -29,6 +29,7 @@ import subprocess
import signal
import threading
import getpass
import json
class AppBuffer(BrowserBuffer):
def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, call_emacs):
@ -38,9 +39,9 @@ class AppBuffer(BrowserBuffer):
self.port = get_free_port()
self.url = url
argument_list = arguments.split("")
self.command = argument_list[0]
self.start_directory = argument_list[1]
arguments_dict = json.loads(arguments)
self.command = arguments_dict["command"]
self.start_directory = arguments_dict["directory"]
self.index_file = os.path.join(os.path.dirname(__file__), "index.html")
self.server_js = os.path.join(os.path.dirname(__file__), "server.js")

@ -87,6 +87,7 @@
(require 'seq)
(require 'eaf-mindmap)
(require 'eaf-interleave)
(require 'json)
;;; Code:
@ -806,8 +807,7 @@ For now only EAF browser app is supported."
(frame-parameter frame 'window-id))
(defun eaf-serialization-var-list ()
(string-join (cl-loop for (key . value) in eaf-var-list
collect (format "%sᛝ%s" key value)) ""))
(json-encode eaf-var-list))
(defun eaf-start-process ()
"Start EAF process if it isn't started."
@ -1629,7 +1629,10 @@ To override and open a new terminal regardless, call interactively with prefix a
"Run COMMAND in terminal in directory DIR.
If ALWAYS-NEW is non-nil, always open a new terminal for the dedicated DIR."
(eaf-open dir "terminal" (format "%sᛡ%s" command (expand-file-name dir)) always-new))
(let ((arguments (make-hash-table :test 'equal)))
(puthash "command" command arguments)
(puthash "directory" (expand-file-name dir) arguments)
(eaf-open dir "terminal" (json-encode-hash-table arguments) always-new)))
(defun eaf--non-remote-default-directory ()
"Return `default-directory' itself if is not part of remote, otherwise return $HOME."

@ -98,9 +98,7 @@ class EAF(dbus.service.Object):
@dbus.service.method(EAF_DBUS_NAME, in_signature="s", out_signature="")
def update_emacs_var_dict(self, var_dict_string):
for var_pair in var_dict_string.split(""):
(var_name, var_value) = var_pair.split("")
self.emacs_var_dict[var_name] = var_value
self.emacs_var_dict = json.loads(var_dict_string)
for buffer in list(self.buffer_dict.values()):
buffer.emacs_var_dict = self.emacs_var_dict
@ -545,4 +543,3 @@ if __name__ == "__main__":
signal.signal(signal.SIGINT, signal.SIG_DFL)
sys.exit(app.exec_())

Loading…
Cancel
Save