>From fe39bda4f2b6f8be433f8c89d80a6900e5732182 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Sun, 27 Oct 2019 23:26:51 -0400 Subject: [PATCH 2/3] gnu: emacs: Remove custom guix-emacs code. This used to be necessary to find the Elisp library modules, but is no longer the case. The environment variable EMACSLOADPATH/search path specification is now used for that purpose. * gnu/packages/aux-files/emacs/guix-emacs.el: Remove file. * Makefile.am (AUX_FILES): Unregister it. * gnu/packages/emacs.scm (emacs)[phases]: Remove the 'install-site-start phase. [native-inputs]: Remove the "guix-emacs.el" input. --- Makefile.am | 1 - gnu/packages/aux-files/emacs/guix-emacs.el | 115 --------------------- gnu/packages/emacs.scm | 21 +--- 3 files changed, 2 insertions(+), 135 deletions(-) delete mode 100644 gnu/packages/aux-files/emacs/guix-emacs.el diff --git a/Makefile.am b/Makefile.am index 36767c2f47..2a4431b2c2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -315,7 +315,6 @@ dist_noinst_DATA = \ # Auxiliary files for packages. AUX_FILES = \ gnu/packages/aux-files/chromium/master-preferences.json \ - gnu/packages/aux-files/emacs/guix-emacs.el \ gnu/packages/aux-files/linux-libre/5.3-arm.conf \ gnu/packages/aux-files/linux-libre/5.3-arm-veyron.conf \ gnu/packages/aux-files/linux-libre/5.3-arm64.conf \ diff --git a/gnu/packages/aux-files/emacs/guix-emacs.el b/gnu/packages/aux-files/emacs/guix-emacs.el deleted file mode 100644 index 9a49e8861c..0000000000 --- a/gnu/packages/aux-files/emacs/guix-emacs.el +++ /dev/null @@ -1,115 +0,0 @@ -;;; guix-emacs.el --- Emacs packages installed with Guix - -;; Copyright © 2014, 2015, 2016, 2017 Alex Kost -;; Copyright © 2017 Kyle Meyer - -;; This file is part of GNU Guix. - -;; GNU Guix 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. - -;; GNU Guix 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: - -;; This file provides auxiliary code to autoload Emacs packages -;; installed with Guix. - -;;; Code: - -(require 'cl-lib) - -(defvar guix-user-profile (expand-file-name "~/.guix-profile")) - -(defvar guix-emacs-autoloads nil - "List of the last loaded Emacs autoloads.") - -(defvar guix-emacs-autoloads-regexp - (rx (group (* any) "-autoloads") - ".el" (zero-or-one "c") string-end) - "Regexp to match Emacs 'autoloads' file.") - -(defun guix-emacs-directory (&optional profile) - "Return directory with Emacs packages installed in PROFILE. -If PROFILE is nil, use `guix-user-profile'." - (expand-file-name "share/emacs/site-lisp" - (or profile guix-user-profile))) - -(defun guix-emacs-find-autoloads (directory) - "Return a list of Emacs 'autoloads' files in DIRECTORY. -The files in the list do not have extensions (.el, .elc)." - (cl-remove-duplicates - (delq nil - (mapcar (lambda (file) - (when (string-match guix-emacs-autoloads-regexp file) - (match-string 1 file))) - (directory-files directory 'full-name nil 'no-sort))) - :test #'string=)) - -(defun guix-emacs-subdirs (directory) - "Return list of DIRECTORY subdirectories." - (cl-remove-if (lambda (file) - (or (string-match-p (rx "/." string-end) file) - (string-match-p (rx "/.." string-end) file) - (not (file-directory-p file)))) - (directory-files directory 'full-name nil 'no-sort))) - -(defun guix-emacs-directories (&optional profile) - "Return the list of directories under PROFILE that contain Emacs packages. -This includes both `share/emacs/site-lisp/guix.d/PACKAGE' -sub-directories and `share/emacs/site-lisp' itself. - -If PROFILE is nil, use `guix-user-profile'. -Return nil, if Emacs packages are not installed in PROFILE." - (let ((root-dir (guix-emacs-directory (or profile guix-user-profile)))) - (when (file-directory-p root-dir) - (let* ((pkgs-dir (expand-file-name "guix.d" root-dir)) - (pkgs-dirs (when (file-directory-p pkgs-dir) - (guix-emacs-subdirs pkgs-dir)))) - (cons root-dir pkgs-dirs))))) - -;;;###autoload -(defun guix-emacs-autoload-packages (&rest profiles) - "Autoload Emacs packages installed in PROFILES. -If PROFILES are not specified, use a default user and system -profiles. - -'Autoload' means add directories with Emacs packages to -`load-path' and load 'autoloads' files matching -`guix-emacs-autoloads-regexp'." - (interactive (list (if (fboundp 'guix-read-package-profile) - (funcall 'guix-read-package-profile) - guix-user-profile))) - (let* ((env (getenv "GUIX_ENVIRONMENT")) - (profiles (or profiles - (append (list "/run/current-system/profile" - guix-user-profile) - (and env (list env)))))) - (dolist (profile profiles) - (let ((dirs (guix-emacs-directories profile))) - (when dirs - (let* ((autoloads (cl-mapcan #'guix-emacs-find-autoloads - dirs)) - (new-autoloads (cl-nset-difference autoloads - guix-emacs-autoloads - :test #'string=))) - (dolist (dir dirs) - (cl-pushnew (directory-file-name dir) - load-path - :test #'string=)) - (dolist (file new-autoloads) - (load file 'noerror)) - (setq guix-emacs-autoloads - (append new-autoloads guix-emacs-autoloads)))))))) - -(provide 'guix-emacs) - -;;; guix-emacs.el ends here diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index a4ded4dbb9..23361d7341 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -127,23 +127,7 @@ (substitute* (find-files "." "^Makefile\\.in$") (("/bin/pwd") "pwd")) - #t)) - (add-after 'install 'install-site-start - ;; Use 'guix-emacs' in "site-start.el". This way, Emacs packages - ;; provided by Guix and installed in - ;; ~/.guix-profile/share/emacs/site-lisp/guix.d/PACKAGE-VERSION are - ;; automatically found. - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lisp-dir (string-append out "/share/emacs/site-lisp"))) - (copy-file (assoc-ref inputs "guix-emacs.el") - (string-append lisp-dir "/guix-emacs.el")) - (with-output-to-file (string-append lisp-dir "/site-start.el") - (lambda () - (display - (string-append "(when (require 'guix-emacs nil t)\n" - " (guix-emacs-autoload-packages))\n")))) - #t)))))) + #t))))) (inputs `(("gnutls" ,gnutls) ("ncurses" ,ncurses) @@ -179,8 +163,7 @@ ("libotf" ,libotf) ("m17n-lib" ,m17n-lib))) (native-inputs - `(("guix-emacs.el" ,(search-auxiliary-file "emacs/guix-emacs.el")) - ("pkg-config" ,pkg-config) + `(("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) (native-search-paths -- 2.23.0