;;; oni-shr.el --- Shr configuration -*- lexical-binding: t; -*- ;; Copyright (C) 2019 Tom Willemse ;; Author: Tom Willemse ;; Keywords: local ;; Version: 2021.1123.003019 ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Shr configuration. ;;; Code: (require 'shr) (defun oni-shr--colorize-remove-last-arg (args) "If ARGS has more than 3 items, remove the last one." (if (> (length args) 3) (butlast args) args)) (defun shr-tag-code (dom) "Render a tag from DOM." (let ((shr-current-font 'default) (start (point))) (shr-generic dom) (add-face-text-property start (point) '(:background "#222222" :box (:line-width 3 :color "#222222"))))) (defun shr-tag-h1 (dom) "Render a

tag from DOM." (shr-heading dom '(variable-pitch (:height 1.2 :weight bold :foreground "#65a854" :underline t)))) (defun shr-tag-h2 (dom) "Render a

tag from DOM." (shr-heading dom '(variable-pitch (:height 1.1 :weight bold :foreground "#54a8a8")))) (defun oni-shr--recolorize (orig-fun &rest args) "Do some custom colorization. This should be used with ‘add-function’ with the ‘:around’ combinator. ORIG-FUN is the original function being wrapped, ARGS are the arguments passed in to it." (let ((start (point))) (apply orig-fun args) (save-excursion (forward-line -1) (string-rectangle start (point) " ")) (add-face-text-property start (point) '(:background "#222222")))) (advice-add #'shr-colorize-region :filter-args #'oni-shr--colorize-remove-last-arg) (add-function :around (symbol-function 'shr-tag-pre) #'oni-shr--recolorize) (provide 'oni-shr) ;;; oni-shr.el ends here