From 174ab0303f8d8191109ffa5228b6793fc0ff8ca4 Mon Sep 17 00:00:00 2001 From: Seong Yong-ju Date: Thu, 7 May 2020 01:05:57 +0900 Subject: [PATCH 1/5] Add Dash docsets + Xwidget integration --- modules/tools/lookup/README.org | 1 + modules/tools/lookup/config.el | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/modules/tools/lookup/README.org b/modules/tools/lookup/README.org index 5c51aeb78..b4ecf508e 100644 --- a/modules/tools/lookup/README.org +++ b/modules/tools/lookup/README.org @@ -40,6 +40,7 @@ or synonyms. + ~+dictionary~ Enable word definition and thesaurus lookup functionality. + ~+offline~ Install and prefer offline dictionary/thesaurus. + ~+docsets~ Enable integration with Dash.app docsets. + + ~+xwidget~ Enable integration with [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Embedded-WebKit-Widgets.html][Embedded Webkit Widgets]]. ** Plugins + [[https://github.com/jacktasia/dumb-jump][dumb-jump]] diff --git a/modules/tools/lookup/config.el b/modules/tools/lookup/config.el index 6381956a2..25f310e3b 100644 --- a/modules/tools/lookup/config.el +++ b/modules/tools/lookup/config.el @@ -178,6 +178,26 @@ See https://github.com/magit/ghub/issues/81" (let ((gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")) (funcall orig-fn url))) + ;; Dash docset + Xwidget integration + (when (and (featurep! :tools lookup +xwidget) (display-graphic-p)) + (setq dash-docs-browser-func #'xwidget-webkit-browse-url) + + (set-popup-rule! "^\\*xwidget" :vslot -11 :size 0.35 :select nil) + + (defun +xwidget--webkit-goto-url-a (&rest _) + (pop-to-buffer xwidget-webkit-last-session-buffer)) + (advice-add #'xwidget-webkit-goto-url :after #'+xwidget--webkit-goto-url-a) + + (defun +xwidget--webkit-new-session-a (orig-fun &rest args) + (save-window-excursion + (apply orig-fun args)) + (pop-to-buffer xwidget-webkit-last-session-buffer)) + (advice-add #'xwidget-webkit-new-session :around #'+xwidget--webkit-new-session-a) + + (when (featurep! :editor evil +everywhere) + (add-transient-hook! 'xwidget-webkit-mode-hook + (+evil-collection-init 'xwidget)))) + (cond ((featurep! :completion helm) (require 'helm-dash nil t)) ((featurep! :completion ivy) From 1d0c79d63c71514f2f16b6ffe26c1a719625e90f Mon Sep 17 00:00:00 2001 From: Seong Yong-ju Date: Thu, 7 May 2020 09:06:36 +0900 Subject: [PATCH 2/5] Fix Dash docsets + Xwidget integration Make Xwidget popup rules and advices less general. fix --- modules/tools/lookup/config.el | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/modules/tools/lookup/config.el b/modules/tools/lookup/config.el index 25f310e3b..3d1a48cde 100644 --- a/modules/tools/lookup/config.el +++ b/modules/tools/lookup/config.el @@ -96,6 +96,8 @@ Used by `+lookup/dictionary-definition' and `+lookup/synonyms'. For `+lookup/dictionary-definition', this is ignored on Mac, where Emacs users Dictionary.app behind the scenes to get definitions.") +(defvar +lookup--dash-docs-xwidget-webkit-last-session-buffer nil) + ;; ;;; dumb-jump @@ -179,24 +181,21 @@ See https://github.com/magit/ghub/issues/81" (funcall orig-fn url))) ;; Dash docset + Xwidget integration - (when (and (featurep! :tools lookup +xwidget) (display-graphic-p)) - (setq dash-docs-browser-func #'xwidget-webkit-browse-url) - - (set-popup-rule! "^\\*xwidget" :vslot -11 :size 0.35 :select nil) - - (defun +xwidget--webkit-goto-url-a (&rest _) - (pop-to-buffer xwidget-webkit-last-session-buffer)) - (advice-add #'xwidget-webkit-goto-url :after #'+xwidget--webkit-goto-url-a) - - (defun +xwidget--webkit-new-session-a (orig-fun &rest args) + (when (and (featurep! +xwidget) (display-graphic-p)) + (defun +lookup/dash-docs-xwidget-webkit-browse-url (url &optional new-session) + (setq xwidget-webkit-last-session-buffer +lookup--dash-docs-xwidget-webkit-last-session-buffer) (save-window-excursion - (apply orig-fun args)) - (pop-to-buffer xwidget-webkit-last-session-buffer)) - (advice-add #'xwidget-webkit-new-session :around #'+xwidget--webkit-new-session-a) + (xwidget-webkit-browse-url url new-session)) + (with-popup-rules! + '((set-popup-rule! "^\\*xwidget" :vslot -11 :size 0.35 :select nil)) + (pop-to-buffer xwidget-webkit-last-session-buffer)) + (setq +lookup--dash-docs-xwidget-webkit-last-session-buffer xwidget-webkit-last-session-buffer + xwidget-webkit-last-session-buffer nil)) + (setq dash-docs-browser-func #'+lookup/dash-docs-xwidget-webkit-browse-url)) - (when (featurep! :editor evil +everywhere) - (add-transient-hook! 'xwidget-webkit-mode-hook - (+evil-collection-init 'xwidget)))) + (when (featurep! :editor evil +everywhere) + (add-transient-hook! 'xwidget-webkit-mode-hook + (+evil-collection-init 'xwidget))) (cond ((featurep! :completion helm) (require 'helm-dash nil t)) From 051ea0a6027015b474e0078a2f5e3f5a97547ab2 Mon Sep 17 00:00:00 2001 From: Seong Yong-ju Date: Thu, 7 May 2020 09:08:42 +0900 Subject: [PATCH 3/5] Remove redundant +evil-collection-init for Xwidget --- modules/tools/lookup/config.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/tools/lookup/config.el b/modules/tools/lookup/config.el index 3d1a48cde..c050b8309 100644 --- a/modules/tools/lookup/config.el +++ b/modules/tools/lookup/config.el @@ -193,10 +193,6 @@ See https://github.com/magit/ghub/issues/81" xwidget-webkit-last-session-buffer nil)) (setq dash-docs-browser-func #'+lookup/dash-docs-xwidget-webkit-browse-url)) - (when (featurep! :editor evil +everywhere) - (add-transient-hook! 'xwidget-webkit-mode-hook - (+evil-collection-init 'xwidget))) - (cond ((featurep! :completion helm) (require 'helm-dash nil t)) ((featurep! :completion ivy) From 6f8c501ce4ec32132426a5f09fdd95726c111f91 Mon Sep 17 00:00:00 2001 From: Seong Yong-ju Date: Thu, 7 May 2020 09:19:41 +0900 Subject: [PATCH 4/5] Improve Emacs graphical mode checking --- modules/tools/lookup/config.el | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/tools/lookup/config.el b/modules/tools/lookup/config.el index c050b8309..110355317 100644 --- a/modules/tools/lookup/config.el +++ b/modules/tools/lookup/config.el @@ -181,16 +181,18 @@ See https://github.com/magit/ghub/issues/81" (funcall orig-fn url))) ;; Dash docset + Xwidget integration - (when (and (featurep! +xwidget) (display-graphic-p)) + (when (featurep! +xwidget) (defun +lookup/dash-docs-xwidget-webkit-browse-url (url &optional new-session) - (setq xwidget-webkit-last-session-buffer +lookup--dash-docs-xwidget-webkit-last-session-buffer) - (save-window-excursion - (xwidget-webkit-browse-url url new-session)) - (with-popup-rules! - '((set-popup-rule! "^\\*xwidget" :vslot -11 :size 0.35 :select nil)) - (pop-to-buffer xwidget-webkit-last-session-buffer)) - (setq +lookup--dash-docs-xwidget-webkit-last-session-buffer xwidget-webkit-last-session-buffer - xwidget-webkit-last-session-buffer nil)) + (if (not (display-graphic-p)) + (eww url new-session) + (setq xwidget-webkit-last-session-buffer +lookup--dash-docs-xwidget-webkit-last-session-buffer) + (save-window-excursion + (xwidget-webkit-browse-url url new-session)) + (with-popup-rules! + '((set-popup-rule! "^\\*xwidget" :vslot -11 :size 0.35 :select nil)) + (pop-to-buffer xwidget-webkit-last-session-buffer)) + (setq +lookup--dash-docs-xwidget-webkit-last-session-buffer xwidget-webkit-last-session-buffer + xwidget-webkit-last-session-buffer nil))) (setq dash-docs-browser-func #'+lookup/dash-docs-xwidget-webkit-browse-url)) (cond ((featurep! :completion helm) From 622e1ea06b0bb695893998387b31e3d059785a29 Mon Sep 17 00:00:00 2001 From: Seong Yong-ju Date: Fri, 8 May 2020 09:59:15 +0900 Subject: [PATCH 5/5] Minor refactoring --- modules/tools/lookup/config.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/tools/lookup/config.el b/modules/tools/lookup/config.el index 110355317..8f392cd76 100644 --- a/modules/tools/lookup/config.el +++ b/modules/tools/lookup/config.el @@ -182,7 +182,7 @@ See https://github.com/magit/ghub/issues/81" ;; Dash docset + Xwidget integration (when (featurep! +xwidget) - (defun +lookup/dash-docs-xwidget-webkit-browse-url (url &optional new-session) + (defun +lookup-dash-docs-xwidget-webkit-browse-url-fn (url &optional new-session) (if (not (display-graphic-p)) (eww url new-session) (setq xwidget-webkit-last-session-buffer +lookup--dash-docs-xwidget-webkit-last-session-buffer) @@ -193,7 +193,7 @@ See https://github.com/magit/ghub/issues/81" (pop-to-buffer xwidget-webkit-last-session-buffer)) (setq +lookup--dash-docs-xwidget-webkit-last-session-buffer xwidget-webkit-last-session-buffer xwidget-webkit-last-session-buffer nil))) - (setq dash-docs-browser-func #'+lookup/dash-docs-xwidget-webkit-browse-url)) + (setq dash-docs-browser-func #'+lookup-dash-docs-xwidget-webkit-browse-url-fn)) (cond ((featurep! :completion helm) (require 'helm-dash nil t))