+pdf-page-nums.el 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. ;;; +pdf-page-nums.el --- Description -*- lexical-binding: t; -*-
  2. ;;
  3. ;; Copyright (C) 2023 Colin Powell
  4. ;;
  5. ;; Author: Colin Powell <colin@unbl.ink>
  6. ;; Maintainer: Colin Powell <colin@unbl.ink>
  7. ;; Created: November 14, 2023
  8. ;; Modified: November 14, 2023
  9. ;; Version: 0.0.1
  10. ;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex tools unix vc wp
  11. ;; Homepage: https://github.com/powellc/+pdf-page-nums
  12. ;; Package-Requires: ((emacs "24.3"))
  13. ;;
  14. ;; This file is not part of GNU Emacs.
  15. ;;
  16. ;;; Commentary:
  17. ;;
  18. ;; Description
  19. ;;
  20. ;;; Code:
  21. (provide '+pdf-page-nums)
  22. (doom-modeline-def-segment buffer-name
  23. "Display the current buffer's name, without any other information."
  24. (concat
  25. doom-modeline-spc
  26. (doom-modeline--buffer-name)))
  27. (doom-modeline-def-segment pdf-icon
  28. "PDF icon from nerd-icons."
  29. (concat
  30. doom-modeline-spc
  31. (doom-modeline-icon 'mdicon "nf-md-file_pdf_box" nil nil
  32. :face (if (doom-modeline--active)
  33. 'nerd-icons-red
  34. 'mode-line-inactive))))
  35. (defun doom-modeline-update-pdf-pages ()
  36. "Update PDF pages."
  37. (setq doom-modeline--pdf-pages
  38. (let ((current-page-str (number-to-string (eval `(pdf-view-current-page))))
  39. (total-page-str (number-to-string (pdf-cache-number-of-pages))))
  40. (concat
  41. (propertize
  42. (concat (make-string (- (length total-page-str) (length current-page-str)) ? )
  43. " P" current-page-str)
  44. 'face 'mode-line)
  45. (propertize (concat "/" total-page-str) 'face 'doom-modeline-buffer-minor-mode)))))
  46. (doom-modeline-def-segment pdf-pages
  47. "Display PDF pages."
  48. (if (doom-modeline--active) doom-modeline--pdf-pages
  49. (propertize doom-modeline--pdf-pages 'face 'mode-line-inactive)))
  50. (doom-modeline-def-modeline 'pdf
  51. '(bar window-number pdf-pages pdf-icon buffer-name)
  52. '(misc-info matches major-mode process vcs))
  53. ;;; +pdf-page-nums.el ends here