]> git.ekhem.eu.org Git - guix.git/commitdiff
[emacs] Read documents within emacs.
authorJakub Czajka <jakub@ekhem.eu.org>
Fri, 23 Dec 2022 17:11:27 +0000 (18:11 +0100)
committerJakub Czajka <jczajka@google.com>
Sun, 24 Dec 2023 18:53:07 +0000 (19:53 +0100)
Emacs has built-in support for reading PDFs. However, pdf-tools is
better than the default PDF reader. This commit installs pdf-tools and
the necessary dependencies.

conf/home/emacs.scm
emacs/.config/emacs/conf/conf-document.el [new file with mode: 0644]

index 6a7cc2bfcda669d0864238c04d7c7c58814904a7..719c72cfceb7c2e874f1a69ee4c3cefef3446a74 100644 (file)
@@ -12,6 +12,7 @@
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages password-utils)
+  #:use-module (gnu packages pdf)
   #:use-module (gnu packages rust-apps)
   #:use-module (gnu services)
   #:use-module (guix gexp)
             (list "mime/.config/mimeapps.list"
                   "emacs/.config/emacs/conf/conf-dired.el")))))
 
+(define emacs-document-service
+  (service home-program-service-type
+          (home-program-configuration
+           ;; libpng cairo autoconf automake gcc pkg-config
+           (packages
+            (list emacs-pdf-tools
+                  poppler))
+           (dotfiles
+            (list "emacs/.config/emacs/conf/conf-document.el")))))
+
 (define emacs-package-service
   (service home-program-service-type
           (home-program-configuration
         emacs-consult-service
        emacs-daemon-service
         emacs-dired-service
+        emacs-document-service
         emacs-package-service
         emacs-pass-service
         emacs-service))
diff --git a/emacs/.config/emacs/conf/conf-document.el b/emacs/.config/emacs/conf/conf-document.el
new file mode 100644 (file)
index 0000000..2ade839
--- /dev/null
@@ -0,0 +1,24 @@
+;; Copyright (c) 2022 Jakub Czajka <jakub@ekhem.eu.org>
+;; License: GPL-3.0 or later.
+;;
+;; conf-document.el - configration for working with different document formats.
+
+(require 'conf-package)
+
+(use-package pdf-tools
+  :when
+  (and
+   ;; Build dependencies.
+   (conf:executables-p (list "gcc" "autoconf" "automake" "pkg-config"))
+   ;; `libpoppler.so' is used to render PDFs.
+   (conf:libraries-p (list "libpoppler.so")))
+  :ensure t
+  :init
+  ;; JIT replacement for `pdf-tools-install'.
+  ;; `pdf-loader-install' is an autoload.
+  (pdf-loader-install)
+  :custom
+  ;; Show the whole page by default.
+  (pdf-view-display-size 'fit-page))
+
+(provide 'conf-document)