;;; oni-eww.el --- Configuration for EWW -*- lexical-binding: t; -*- ;; Copyright (C) 2021 Tom Willemse ;; Author: Tom Willemse ;; Keywords: local ;; Version: 2021.0406.111733 ;; Package-Requires: (eww oni-data-dir) ;; 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: ;; Configuration for ‘eww’, the Emacs Web Wowser. ;;; Code: (require 'eww) (defvar oni-eww-desired-window-width 120 "The window width which ‘oni-eww-resize-margins’ will try to accommodate.") (defun oni-eww-resize-margins () "Set the margins of the current window so ‘window-width’ is as desired. The desired window width is specified in ‘oni-eww-desired-window-width’." (let ((margin-size (/ (- (frame-width) 120) 2))) (set-window-margins nil margin-size margin-size))) (defun oni-eww-setup-margins () "Set up a hook for ‘oni-eww-resize-margins’ in the current buffer." (add-hook 'window-configuration-change-hook #'oni-eww-resize-margins nil t) (oni-eww-resize-margins)) (defun oni-eww-display-buffer-in-only-window (buffer alist) "Show only BUFFER. Delete all other windows and then pass BUFFER and ALIST on to `display-buffer-same-window'." (delete-other-windows) (display-buffer-same-window buffer alist)) (setq eww-bookmarks-directory (oni-data-dir-locate "eww/")) (add-to-list 'display-buffer-alist `(,(rx string-start "*eww*" string-end) oni-eww-display-buffer-in-only-window)) (add-hook 'eww-mode-hook #'oni-eww-setup-margins) (provide 'oni-eww) ;;; oni-eww.el ends here