Add +eww and further customize eww
This commit is contained in:
parent
93545db7a8
commit
d7a6880805
11
init.el
11
init.el
|
@ -236,7 +236,16 @@
|
|||
(setenv "PAGER" "cat")))
|
||||
|
||||
(setup eww
|
||||
(:hook 'reading-mode))
|
||||
(:also-load +eww)
|
||||
(:option eww-search-prefix "https://duckduckgo.com/html?q="
|
||||
url-privacy-level '(email agent cookies lastloc))
|
||||
(add-hook 'eww-after-render-hook 'reading-mode)
|
||||
(:hook '+eww-bookmark-setup
|
||||
'+eww-track-readable-mode)
|
||||
(:bind "b" 'bookmark-set
|
||||
"B" 'bookmark-jump
|
||||
"M-n" nil
|
||||
"M-p" nil))
|
||||
|
||||
(setup ibuffer
|
||||
(:also-load ibuf-ext)
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
;;; +eww.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'bookmark)
|
||||
(require 'eww)
|
||||
|
||||
;; Track whether the current page is readable
|
||||
|
||||
(defvar-local +eww-readable-p nil
|
||||
"Whether `eww-readable' has been toggled on the current buffer.")
|
||||
|
||||
(defun +eww-mark-readable (&rest _)
|
||||
"ADVICE to mark current eww buffer \"readable.\""
|
||||
(setq-local +eww-readable-p t))
|
||||
|
||||
(defun +eww-mark-unreadable (&rest _)
|
||||
"ADVICE to mark current eww buffer \"unreadable.\""
|
||||
(setq-local +eww-readable-p nil))
|
||||
|
||||
(defvar +eww-readable-unreadable-after-functions '(eww-render
|
||||
eww-reload
|
||||
eww-back-url)
|
||||
"Functions after which the page is rendered \"unreadable\".")
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode +eww-track-readable-mode
|
||||
"Track whether the current webpage has been rendered readable."
|
||||
:lighter ""
|
||||
(if +eww-track-readable-mode
|
||||
(progn
|
||||
(advice-add 'eww-readable :after #'+eww-mark-readable)
|
||||
(dolist (func +eww-readable-unreadable-after-functions)
|
||||
(advice-add func :after #'+eww-mark-unreadable)))
|
||||
(dolist (func +eww-readable-unreadable-after-functions)
|
||||
(advice-remove func #'+eww-mark-unreadable))
|
||||
(advice-remove 'eww-readable #'+eww-mark-readable)))
|
||||
|
||||
;; Integrate bookmarks in eww
|
||||
|
||||
(defun +eww-bookmark--make ()
|
||||
"Make eww bookmark record."
|
||||
`((filename . ,(plist-get eww-data :url))
|
||||
(title . ,(plist-get eww-data :title))
|
||||
(time . ,(current-time-string))
|
||||
(handler . ,#'+eww-bookmark-handler)
|
||||
(defaults . (,(concat
|
||||
;; url without the https and path
|
||||
(replace-regexp-in-string
|
||||
"/.*" ""
|
||||
(replace-regexp-in-string
|
||||
"\\`https?://" ""
|
||||
(plist-get eww-data :url)))
|
||||
" - "
|
||||
;; page title
|
||||
(replace-regexp-in-string
|
||||
"\\` +\\| +\\'" ""
|
||||
(replace-regexp-in-string
|
||||
"[\n\t\r ]+" " "
|
||||
(plist-get eww-data :title))))))))
|
||||
|
||||
(defun +eww-bookmark-handler (bm)
|
||||
"Handler for eww bookmarks."
|
||||
(eww-browse-url (alist-get 'filename bm)))
|
||||
|
||||
(defun +eww-bookmark-setup ()
|
||||
"Setup eww bookmark integration."
|
||||
(setq-local bookmark-make-record-function #'eww-bookmark--make))
|
||||
|
||||
(provide '+eww)
|
||||
;;; +eww.el ends here
|
|
@ -115,21 +115,22 @@ The order of elements matters: whichever one matches first is applied."
|
|||
"Display an indication that the buffer is in `reading-mode'."
|
||||
(when reading-mode
|
||||
(concat " "
|
||||
(propertize "R"
|
||||
'help-echo (format "%s\n%s"
|
||||
"Buffer is in reading-mode."
|
||||
"mouse-2: disable reading-mode.")
|
||||
'local-map (purecopy
|
||||
(simple-modeline-make-mouse-map
|
||||
'mouse-2 (lambda (ev)
|
||||
(interactive "e")
|
||||
(with-selected-window
|
||||
(posn-window
|
||||
(event-start ev))
|
||||
(reading-mode -1)
|
||||
(force-mode-line-update)))))
|
||||
'face 'font-lock-doc-face
|
||||
'mouse-face 'mode-line-highlight))))
|
||||
(propertize
|
||||
(concat "R" (when (bound-and-true-p +eww-readable-p) "w"))
|
||||
'help-echo (format "%s\n%s"
|
||||
"Buffer is in reading-mode."
|
||||
"mouse-2: disable reading-mode.")
|
||||
'local-map (purecopy
|
||||
(simple-modeline-make-mouse-map
|
||||
'mouse-2 (lambda (ev)
|
||||
(interactive "e")
|
||||
(with-selected-window
|
||||
(posn-window
|
||||
(event-start ev))
|
||||
(reading-mode -1)
|
||||
(force-mode-line-update)))))
|
||||
'face 'font-lock-doc-face
|
||||
'mouse-face 'mode-line-highlight))))
|
||||
|
||||
(define-minor-mode file-percentage-mode
|
||||
"Toggle the percentage display in the mode line (File Percentage Mode)."
|
||||
|
|
Loading…
Reference in New Issue