diff --git a/app/terminal/buffer.py b/app/terminal/buffer.py index 7a7eead..b0e68db 100644 --- a/app/terminal/buffer.py +++ b/app/terminal/buffer.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") diff --git a/eaf.el b/eaf.el index 555a67f..d99ad94 100644 --- a/eaf.el +++ b/eaf.el @@ -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." diff --git a/eaf.py b/eaf.py index ecb0736..a338c0a 100755 --- a/eaf.py +++ b/eaf.py @@ -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_()) -