(Emacs)~xwidget added some new features

This commit is contained in:
2021-03-24 11:30:19 +00:00
parent 7125177781
commit 885135b31a

View File

@@ -1340,6 +1340,9 @@ results of work very quickly without switching windows or workspaces.
#+begin_src emacs-lisp
(use-package xwidget
:straight nil
:display
("\\*xwidget.*"
(display-buffer-pop-up-frame))
:general
(leader "au" #'xwidget-webkit-browse-url)
(general-def
@@ -1350,6 +1353,8 @@ results of work very quickly without switching windows or workspaces.
"j" #'xwidget-webkit-scroll-up
"k" #'xwidget-webkit-scroll-down
"l" #'xwidget-webkit-scroll-forward
"+" #'xwidget-webkit-zoom-in
"-" #'xwidget-webkit-zoom-out
(kbd "C-f") #'xwidget-webkit-scroll-up
(kbd "C-b") #'xwidget-webkit-scroll-down
"H" #'xwidget-webkit-back
@@ -1363,28 +1368,46 @@ results of work very quickly without switching windows or workspaces.
Define a function =+xwidget/render-file= that reads a file name and
presents it in an xwidget. If the current file is an HTML file, ask
if user wants to open current file. Bind it to =aU= in the leader.
Also define a function =+xwidget/search-query= that first asks the
user what search engine they want to use ([[https://duckduckgo.com][Duck Duck Go]] and [[https://devdocs.io][DevDocs]]
currently) then asks for a query, which it parses then presents in an
xwidget window. Bind to =as= in the leader.
#+begin_src emacs-lisp
(use-package xwidget
:straight nil
:commands +xwidget/render-file
:commands (+xwidget/render-file +xwidget/search)
:general
(leader
"aU" #'+xwidget/render-file)
"aU" #'+xwidget/render-file
"as" #'+xwidget/search)
:config
(defun +xwidget/render-file (&optional FORCE)
"Find file (or use current file) and render in xwidget."
(interactive)
(cond
((and (not FORCE) (or (string= (replace-regexp-in-string ".*.html"
"html" (buffer-name)) "html")
(eq major-mode 'web-mode)
(eq major-mode 'html-mode))) ; If in html file
"html" (buffer-name)) "html")
(eq major-mode 'web-mode)
(eq major-mode 'html-mode))) ; If in html file
(if (y-or-n-p "Open current file?: ") ; Maybe they want to open a separate file
(xwidget-webkit-browse-url (format "file://%s" (buffer-file-name)))
(+xwidget/render-file t))) ; recurse and open file via prompt
(t
(xwidget-webkit-browse-url
(format "file://%s" (read-file-name "Enter file to open: ")))))))
(format "file://%s" (read-file-name "Enter file to open: "))))))
(defun +xwidget/search ()
"Run a search query on some search engine and display in
xwidget."
(interactive)
(let* ((engine (completing-read "Engine: " '("duckduckgo.com" "devdocs.io") nil t))
(query-raw (read-string "Enter query: "))
(query
(cond
((string= engine "duckduckgo.com") query-raw)
((string= engine "devdocs.io") (concat "_ " query-raw)))))
(xwidget-webkit-browse-url (concat "https://" engine "/?q=" query)))))
#+end_src
** Eshell
:PROPERTIES: