This package extends shr
/ eww
with org features and analysis capability. It can be used in
dash-docs, eww, nov.el, mu/mu4e, anki.el, elfeed, wallabag.el, etc. It is also able to export HTML buffer to Org
buffer/file, or download/archive web pages.
- Configurable org-like heading faces, headline bullets, item bullets,paragraph indentation, fill-column, item bullet, versatile hyper links(http/https/file/mailto/etc) face and so on.
- Browse the internet or local html file with eww just like org mode.
- Read dash docsets with dash-docs and the beauty of org faces.
- Read epub files with nov.el , just like org mode.
- Read html email with mu/mu4e , the same reading experience just like org mode without formatting html to org file.
- Read RSS with elfeed, the same reading experience just like org mode.
- Read Read It Later Articles with wallabag.el, the same reading experience just like org mode.
- Switch/jump the headlines just like org-mode in eww and nov.el with
imenu
- Toggle/cycle the headlines just like org-mode in eww and nov.el with outline minor mode
,
org-cycle/org-shifttab
, orshrface-outline-cycle
/shrface-outline-cycle-buffer
. org-indent-mode
support- Analysis capability:
- Export HTML buffer to org buffer/file using shr engine (no Pandoc is needed).
The project target is to apply org features and analysis capability to
shr
, and all libraries that render HTML withshr
(Simple HTML Renderer).As EmacsWiki says:
shr.el
is an HTML renderer in Emacs as of version 24.4 (based on libxml2, it was originally a part of Gnus). It’s the basis of the web browsereww
.
It’s available on Melpa :
M-x package-install shrface
Check config.el
This file is my personal configuration for shrface
configured it along with
other packages, and I updates it frequently. It can greatly improve your reading
experience while also having great performance when using those packages.
You can use it as a reference to configure your own shrface
.
(with-eval-after-load 'nov
(define-key nov-mode-map (kbd "<tab>") 'shrface-outline-cycle)
(define-key nov-mode-map (kbd "S-<tab>") 'shrface-outline-cycle-buffer)
(define-key nov-mode-map (kbd "C-t") 'shrface-toggle-bullets)
(define-key nov-mode-map (kbd "C-j") 'shrface-next-headline)
(define-key nov-mode-map (kbd "C-k") 'shrface-previous-headline)
(define-key nov-mode-map (kbd "M-l") 'shrface-links-counsel) ; or 'shrface-links-helm or 'shrface-links-consult
(define-key nov-mode-map (kbd "M-h") 'shrface-headline-counsel)) ; or 'shrface-headline-helm or 'shrface-headline-consult
(with-eval-after-load 'eww
(define-key eww-mode-map (kbd "<tab>") 'shrface-outline-cycle)
(define-key eww-mode-map (kbd "S-<tab>") 'shrface-outline-cycle-buffer)
(define-key eww-mode-map (kbd "C-t") 'shrface-toggle-bullets)
(define-key eww-mode-map (kbd "C-j") 'shrface-next-headline)
(define-key eww-mode-map (kbd "C-k") 'shrface-previous-headline)
(define-key eww-mode-map (kbd "M-l") 'shrface-links-counsel) ; or 'shrface-links-helm or 'shrface-links-consult
(define-key eww-mode-map (kbd "M-h") 'shrface-headline-counsel)) ; or 'shrface-headline-helm or 'shrface-headline-consult
(with-eval-after-load 'mu4e
(define-key mu4e-view-mode-map (kbd "<tab>") 'shrface-outline-cycle)
(define-key mu4e-view-mode-map (kbd "S-<tab>") 'shrface-outline-cycle-buffer)
(define-key mu4e-view-mode-map (kbd "C-t") 'shrface-toggle-bullets)
(define-key mu4e-view-mode-map (kbd "C-j") 'shrface-next-headline)
(define-key mu4e-view-mode-map (kbd "C-k") 'shrface-previous-headline)
(define-key mu4e-view-mode-map (kbd "M-l") 'shrface-links-counsel) ; or 'shrface-links-helm or 'shrface-links-consult
(define-key mu4e-view-mode-map (kbd "M-h") 'shrface-headline-counsel)) ; or 'shrface-headline-helm or 'shrface-headline-consult
;; my personaly keybindings (Doom Eamcs)
(map! :map (shrface-mode-map wallabag-entry-mode-map nov-mode-map eww-mode-map mu4e-view-mode-map elfeed-show-mode-map)
:n "TAB" 'shrface-outline-cycle
:n "<tab>" 'shrface-outline-cycle
:n "<backtab>" 'shrface-outline-cycle-buffer
:localleader
"k" 'shrface-previous-headline
"j" 'shrface-next-headline
"l" 'shrface-links-consult
"i" 'imenu-list
"h" 'shrface-headline-consult
"o" 'shrface-occur
"b" 'shrface-toggle-bullets
;; if you use paw.el, you can add some paw functions as well
;"a" 'paw-show-all-annotations
;"r" 'paw-clear-annotation-overlay
;"c" 'paw-add-annotation
;"," 'paw-list-annotations
)