~ruther/guix-local

b30dc52b92e0fa82eabf3255baa1a7601436cb86 — Jake Forster 8 months ago 6ad8e56
gnu: emacs-minimal: Add output containing C source files.

* gnu/packages/emacs.scm (emacs-minimal)[outputs]: Add “doc”.
[arguments]<#:phases>: Add phase ‘install-c-source’.
{install-site-start}: Attempt to load guix-emacs-c-source.el in site-start.el.

Fixes: guix/guix#1540 (Cannot follow references to C functions).

Change-Id: I6d9478443b081b436b5b86b208135f69f35671bd
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
1 files changed, 21 insertions(+), 1 deletions(-)

M gnu/packages/emacs.scm
M gnu/packages/emacs.scm => gnu/packages/emacs.scm +21 -1
@@ 26,6 26,7 @@
;;; Copyright © 2023 Declan Tsien <declantsien@riseup.net>
;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
;;; Copyright © 2025 Jake Forster <jakecameron.forster@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 192,6 193,7 @@
                            "\"~/.guix-home/include\""
                            "\"/run/current-system/profile/include\"")
                      " ")))))))
    (outputs '("out" "doc"))
    (build-system gnu-build-system)
    (arguments
     (list


@@ 311,6 313,21 @@
                  (("/bin//sh") (search-input-file inputs "bin/sh")))
                (substitute* "test/lisp/eshell/em-script-tests.el"
                  (("/usr/bin/env") (search-input-file inputs "bin/env"))))))
          (add-before 'configure 'install-c-source
            (lambda _
              (let ((dest (string-append #$output:doc "/share/emacs/c-source"))
                    (lisp-dir (string-append #$output:doc
                                             "/share/emacs/site-lisp")))
                (mkdir-p dest)
                (copy-recursively "src" dest)
                (mkdir-p lisp-dir)
                (with-output-to-file (string-append lisp-dir
                                                    "/guix-emacs-c-source.el")
                  (lambda ()
                    (display
                     (string-append
                      "(setq find-function-C-source-directory \"" dest "\")\n\n"
                      "(provide 'guix-emacs-c-source)")))))))
          (add-after 'install 'install-site-start
            ;; Use 'guix-emacs' in "site-start.el", which is used autoload the
            ;; Elisp packages found in EMACSLOADPATH.


@@ 338,7 355,10 @@
                      "(when (require 'guix-emacs nil t)\n"
                      "  (guix-emacs-autoload-packages 'no-reload)\n"
                      "  (advice-add 'package-load-all-descriptors"
                      " :after #'guix-emacs-load-package-descriptors))"))))
                      " :after #'guix-emacs-load-package-descriptors))\n\n"
                      ";; The file guix-emacs-c-source.el is available from the"
                      " 'doc' output.\n"
                      "(require 'guix-emacs-c-source nil t)"))))
                ;; Remove the extraneous subdirs.el file, as it causes Emacs to
                ;; add recursively all the the sub-directories of a profile's
                ;; share/emacs/site-lisp union when added to EMACSLOADPATH,