;;; config-ebooks.el --- Generated package (no.55) from my config -*- lexical-binding: t; -*- ;; ;; Copyright (C) 2024 TEC ;; ;; Author: TEC <https://code.tecosaur.net/tec> ;; Maintainer: TEC <contact@tecosaur.net> ;; Created: June 26, 2024 ;; Modified: June 26, 2024 ;; Version: 2024.06.26 ;; Homepage: https://code.tecosaur.net/tec/emacs-config ;; Package-Requires: ((emacs "29.1")) ;; ;; This file is not part of GNU Emacs. ;; ;;; Commentary: ;; ;; Generated package (no.55) from my config. ;; ;; During generation, dependency on other aspects of my configuration and ;; packages is inferred via (regexp-based) static analysis. While this seems ;; to do a good job, this method is imperfect. This code likely depends on ;; utilities provided by Doom, and if you try to run it in isolation you may ;; discover the code makes more assumptions. ;; ;; That said, I've found pretty good results so far. ;; ;; Package statement: ;; (package! calibredb :pin "124c916f203511c64d03fac28d303dfb102a6ead") ;; ;; Package statement: ;; (package! nov :pin "cc31ce0356226c3a2128119b08de6107e38fdd17") ;; ;;; Code: (use-package! calibredb :commands calibredb :config (setq calibredb-root-dir "~/.local/share/calibre-library" calibredb-db-dir (expand-file-name "metadata.db" calibredb-root-dir)) (map! :map calibredb-show-mode-map :ne "?" #'calibredb-entry-dispatch :ne "o" #'calibredb-find-file :ne "O" #'calibredb-find-file-other-frame :ne "V" #'calibredb-open-file-with-default-tool :ne "s" #'calibredb-set-metadata-dispatch :ne "e" #'calibredb-export-dispatch :ne "q" #'calibredb-entry-quit :ne "." #'calibredb-open-dired :ne [tab] #'calibredb-toggle-view-at-point :ne "M-t" #'calibredb-set-metadata--tags :ne "M-a" #'calibredb-set-metadata--author_sort :ne "M-A" #'calibredb-set-metadata--authors :ne "M-T" #'calibredb-set-metadata--title :ne "M-c" #'calibredb-set-metadata--comments) (map! :map calibredb-search-mode-map :ne [mouse-3] #'calibredb-search-mouse :ne "RET" #'calibredb-find-file :ne "?" #'calibredb-dispatch :ne "a" #'calibredb-add :ne "A" #'calibredb-add-dir :ne "c" #'calibredb-clone :ne "d" #'calibredb-remove :ne "D" #'calibredb-remove-marked-items :ne "j" #'calibredb-next-entry :ne "k" #'calibredb-previous-entry :ne "l" #'calibredb-virtual-library-list :ne "L" #'calibredb-library-list :ne "n" #'calibredb-virtual-library-next :ne "N" #'calibredb-library-next :ne "p" #'calibredb-virtual-library-previous :ne "P" #'calibredb-library-previous :ne "s" #'calibredb-set-metadata-dispatch :ne "S" #'calibredb-switch-library :ne "o" #'calibredb-find-file :ne "O" #'calibredb-find-file-other-frame :ne "v" #'calibredb-view :ne "V" #'calibredb-open-file-with-default-tool :ne "." #'calibredb-open-dired :ne "b" #'calibredb-catalog-bib-dispatch :ne "e" #'calibredb-export-dispatch :ne "r" #'calibredb-search-refresh-and-clear-filter :ne "R" #'calibredb-search-clear-filter :ne "q" #'calibredb-search-quit :ne "m" #'calibredb-mark-and-forward :ne "f" #'calibredb-toggle-favorite-at-point :ne "x" #'calibredb-toggle-archive-at-point :ne "h" #'calibredb-toggle-highlight-at-point :ne "u" #'calibredb-unmark-and-forward :ne "i" #'calibredb-edit-annotation :ne "DEL" #'calibredb-unmark-and-backward :ne [backtab] #'calibredb-toggle-view :ne [tab] #'calibredb-toggle-view-at-point :ne "M-n" #'calibredb-show-next-entry :ne "M-p" #'calibredb-show-previous-entry :ne "/" #'calibredb-search-live-filter :ne "M-t" #'calibredb-set-metadata--tags :ne "M-a" #'calibredb-set-metadata--author_sort :ne "M-A" #'calibredb-set-metadata--authors :ne "M-T" #'calibredb-set-metadata--title :ne "M-c" #'calibredb-set-metadata--comments)) (use-package! nov :mode ("\\.epub\\'" . nov-mode) :config (map! :map nov-mode-map :n "RET" #'nov-scroll-up) (advice-add 'nov-render-title :override #'ignore) (defun +nov-mode-setup () "Tweak nov-mode to our liking." (face-remap-add-relative 'variable-pitch :family "Merriweather" :height 1.4 :width 'semi-expanded) (face-remap-add-relative 'default :height 1.3) (variable-pitch-mode 1) (setq-local line-spacing 0.2 next-screen-context-lines 4 shr-use-colors nil) (when (require 'visual-fill-column nil t) (setq-local visual-fill-column-center-text t visual-fill-column-width 64 nov-text-width 106) (visual-fill-column-mode 1)) (when (featurep 'hl-line-mode) (hl-line-mode -1)) ;; Re-render with new display settings (nov-render-document) ;; Look up words with the dictionary. (add-to-list '+lookup-definition-functions #'+lookup/dictionary-definition)) (add-hook 'nov-mode-hook #'+nov-mode-setup)) (after! doom-modeline (defvar doom-modeline-nov-title-max-length 40) (doom-modeline-def-segment nov-author (propertize (cdr (assoc 'creator nov-metadata)) 'face (doom-modeline-face 'doom-modeline-project-parent-dir))) (doom-modeline-def-segment nov-title (let ((title (or (cdr (assoc 'title nov-metadata)) ""))) (if (<= (length title) doom-modeline-nov-title-max-length) (concat " " title) (propertize (concat " " (truncate-string-to-width title doom-modeline-nov-title-max-length nil nil t)) 'help-echo title)))) (doom-modeline-def-segment nov-current-page (let ((words (count-words (point-min) (point-max)))) (propertize (format " %d/%d" (1+ nov-documents-index) (length nov-documents)) 'face (doom-modeline-face 'doom-modeline-info) 'help-echo (if (= words 1) "1 word in this chapter" (format "%s words in this chapter" words))))) (doom-modeline-def-segment scroll-percentage-subtle (concat (doom-modeline-spc) (propertize (format-mode-line '("" doom-modeline-percent-position "%%")) 'face (doom-modeline-face 'shadow) 'help-echo "Buffer percentage"))) (doom-modeline-def-modeline 'nov '(workspace-name window-number nov-author nov-title nov-current-page scroll-percentage-subtle) '(media-player misc-info major-mode time)) (add-to-list 'doom-modeline-mode-alist '(nov-mode . nov))) (provide 'config-ebooks) ;;; config-ebooks.el ends here