From 0e3e14b026ed30e2aeff53472d8af5cf712cce14 Mon Sep 17 00:00:00 2001 From: Andy Stewart Date: Mon, 13 Jan 2020 01:42:23 +0800 Subject: [PATCH] Add new_blank_tab command. --- app/browser/buffer.py | 3 +++ core/browser.py | 3 ++- eaf.el | 16 ++++++++++++---- eaf.py | 4 ++-- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/app/browser/buffer.py b/app/browser/buffer.py index 572cecc..0667b99 100644 --- a/app/browser/buffer.py +++ b/app/browser/buffer.py @@ -89,3 +89,6 @@ class AppBuffer(BrowserBuffer): if line not in lines_seen: # not a duplicate f.write(line) lines_seen.add(line) + + def new_blank_tab(self): + self.buffer_widget.eval_in_emacs.emit('''(eaf-open \"{0}\" \"browser\" \"\" t)'''''.format(self.emacs_var_dict["eaf-browser-blank-page-url"])) diff --git a/core/browser.py b/core/browser.py index 27ec2d9..e809c94 100644 --- a/core/browser.py +++ b/core/browser.py @@ -500,4 +500,5 @@ class BrowserBuffer(Buffer): self.send_input_message("Open Link in New Buffer: ", "jump_link_new_buffer"); def reset_default_zoom(self): - self.buffer_widget.setZoomFactor(float(self.emacs_var_dict["eaf-browser-default-zoom"])) + if hasattr(self, "buffer_widget"): + self.buffer_widget.setZoomFactor(float(self.emacs_var_dict["eaf-browser-default-zoom"])) diff --git a/eaf.el b/eaf.el index df1f061..6679d19 100644 --- a/eaf.el +++ b/eaf.el @@ -186,6 +186,7 @@ Otherwise they will be opened normally with `dired-find-file'.") (eaf-browser-enable-javascript . "true") (eaf-browser-remember-history . "true") (eaf-browser-default-zoom . "1.0") + (eaf-browser-blank-page-url . "https://www.google.com") ) "The alist storing user-defined variables that's shared with EAF Python side. @@ -217,6 +218,7 @@ Try not to modify this alist directly. Use `eaf-setq' to modify instead." ("M-v" . "scroll_down_page") ("M-<" . "scroll_to_begin") ("M->" . "scroll_to_bottom") + ("M-t" . "new_blank_tab") ("" . "refresh_page")) "The keybinding of EAF Browser." :type 'cons) @@ -484,7 +486,7 @@ For now only EAF browser app is supported." eaf-python-command (append (list eaf-python-file) (eaf-get-render-size) (list eaf-proxy-host eaf-proxy-port eaf-proxy-type (concat user-emacs-directory "eaf")) (list (string-join (cl-loop for (key . value) in eaf-var-list - collect (format "%s:%s" key value)) ","))))) + collect (format "%sᛝ%s" key value)) "ᛡ"))))) (set-process-query-on-exit-flag eaf-process nil) (set-process-sentinel eaf-process @@ -1092,9 +1094,12 @@ Other files will open normally with `dired-find-file' or `dired-find-alternate-f (define-obsolete-function-alias 'eaf-file-open-in-dired #'eaf-open-this-from-dired) ;;;###autoload -(defun eaf-open (url &optional app-name arguments) +(defun eaf-open (url &optional app-name arguments open-always) "Open an EAF application with URL, optional APP-NAME and ARGUMENTS. +Default, `eaf-open' will switch to buffer if url is exists. +`eaf-open' always open new buffer if option OPEN-ALWAYS is non-nil. + When called interactively, URL accepts a file that can be opened by EAF." (interactive "F[EAF] Open with EAF App: ") ;; Try to set app-name along with url if app-name is unset. @@ -1132,8 +1137,11 @@ When called interactively, URL accepts a file that can be opened by EAF." (throw 'found-match-buffer t))))) ;; Switch to exists buffer, ;; if no match buffer found, call `eaf--open-internal'. - (if exists-eaf-buffer - (eaf--display-app-buffer app-name exists-eaf-buffer) + (if (and exists-eaf-buffer + (not open-always)) + (progn + (eaf--display-app-buffer app-name exists-eaf-buffer) + (message (concat "[EAF/" app-name "] " "Switch to %s") url)) (eaf--open-internal url app-name arguments) (message (concat "[EAF/" app-name "] " "Opening %s") url))) ;; Record user input, and call `eaf--open-internal' after receive `start_finish' signal from server process. diff --git a/eaf.py b/eaf.py index eba1793..ea1f027 100755 --- a/eaf.py +++ b/eaf.py @@ -52,8 +52,8 @@ class EAF(dbus.service.Object): eaf_config_dir = os.path.expanduser(config_dir) self.emacs_var_dict = {} - for var_pair in var_dict_string.split(","): - (var_name, var_value) = var_pair.split(":") + for var_pair in var_dict_string.split("ᛡ"): + (var_name, var_value) = var_pair.split("ᛝ") self.emacs_var_dict[var_name] = var_value self.buffer_dict = {}