From b76d61d2f419a7b3c807865c6f453b2d0fa2e364 Mon Sep 17 00:00:00 2001 From: Matthew Mingde Zeng Date: Sat, 28 Dec 2019 19:40:02 -0500 Subject: [PATCH] Support open link with new tab with M-S --- core/browser_buffer.py | 16 +++++++++++----- core/js/goto_marker.js | 7 ++++++- eaf.el | 5 +++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/core/browser_buffer.py b/core/browser_buffer.py index 272348e..5e6f667 100755 --- a/core/browser_buffer.py +++ b/core/browser_buffer.py @@ -75,9 +75,11 @@ class BrowserBuffer(Buffer): self._search_text(str(result_content), True) elif result_type == "jump_link": self.jump_to_link(str(result_content)) + elif result_type == "jump_link_new_tab": + self.jump_to_link(str(result_content), "true") def cancel_input_message(self, result_type): - if result_type == "jump_link": + if result_type == "jump_link" or result_type == "jump_link_new_tab": self.cleanup_links() def search_text_forward(self): @@ -157,13 +159,17 @@ class BrowserBuffer(Buffer): def get_url(self): return self.buffer_widget.web_page.executeJavaScript("window.location.href;") - def fetch_links(self): - # self.buffer_widget.web_page.executeJavaScript(self.get_markers_js) + def open_link(self): self.eval_js(self.get_markers_js); self.send_input_message("Open Link: ", "jump_link"); - def jump_to_link(self, marker): - self.goto_marker_js = self.goto_marker_raw.replace("%1", str(marker)); + def open_link_new_tab(self): + self.eval_js(self.get_markers_js); + self.send_input_message("Open Link in New Tab: ", "jump_link_new_tab"); + + def jump_to_link(self, marker, new_tab = "false"): + self.goto_marker_js = self.goto_marker_raw.replace("%1", str(marker)).replace("%2", new_tab); + print(self.goto_marker_js) self.buffer_widget.web_page.executeJavaScript(self.goto_marker_js); self.cleanup_links() diff --git a/core/js/goto_marker.js b/core/js/goto_marker.js index 96528ca..c9634ff 100644 --- a/core/js/goto_marker.js +++ b/core/js/goto_marker.js @@ -1,5 +1,6 @@ (function() { let key = "%1"; + let newTab = %2; let markers = document.querySelectorAll('.marker'); let match; for(let i = 0; i < markers.length; i++) { @@ -12,7 +13,11 @@ let selector = match.getAttribute('pointed-link'); let link = document.querySelector(selector); if(link.href != undefined){ - window.open(link.href, '_self'); + if(newTab){ + window.open(link.href); + } else { + window.open(link.href, '_self'); + } }else if(link.nodeName.toLowerCase() === 'input'){ if(link.getAttribute('type') === 'text'){ link.focus(); diff --git a/eaf.el b/eaf.el index 796a043..4bc85c7 100644 --- a/eaf.el +++ b/eaf.el @@ -7,7 +7,7 @@ ;; Copyright (C) 2018, Andy Stewart, all rights reserved. ;; Created: 2018-06-15 14:10:12 ;; Version: 0.5 -;; Last-Updated: Sat Dec 28 17:14:09 2019 (-0500) +;; Last-Updated: Sat Dec 28 19:30:54 2019 (-0500) ;; By: Mingde (Matthew) Zeng ;; URL: http://www.emacswiki.org/emacs/download/eaf.el ;; Keywords: @@ -207,7 +207,8 @@ Try not to modify this alist directly. Use `eaf-setq' to modify instead." ("C-v" . "scroll_up_page") ("C-y" . "yank_text") ("C-w" . "kill_text") - ("M-s" . "fetch_links") + ("M-s" . "open_link") + ("M-S" . "open_link_new_tab") ("C-/" . "undo_action") ("M-_" . "redo_action") ("M-w" . "copy_text")