From f725279cdd66e7739fd756807ef2a1c7b1611d51 Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Wed, 13 Oct 2021 21:32:07 +0200 Subject: gnu: emacs: Find real GVFS processes. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs.scm (emacs)[#:phases]: Expand calls to “tramp-compat-process-running-p” so that Guix wrappers are also matched. --- gnu/packages/emacs.scm | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gnu/packages/emacs.scm') diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 22d8db3839..0430a79716 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -136,6 +136,12 @@ (define-public emacs "lisp/progmodes/sh-script.el") (("\"/bin/sh\"") (format #f "~s" (which "sh")))) + ;; match ".gvfs-fuse-daemon-real" and ".gvfsd-fuse-real" + ;; respectively when looking for GVFS processes. + (substitute* "lisp/net/tramp-gvfs.el" + (("\\(tramp-compat-process-running-p \"(.*)\"\\)" all process) + (format #f "(or ~a (tramp-compat-process-running-p ~s))" + all (string-append "." process "-real")))) #t)) (add-before 'configure 'fix-/bin/pwd (lambda _ -- cgit v1.2.3 From 4baeb72717481768fbc3245247018fb7629bfa37 Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Sat, 13 Nov 2021 07:44:57 +0100 Subject: gnu: emacs: Make DocView PDF work out of the box. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs.scm (emacs)[patch-program-file-names]: Add patches for the programs “gs”, “dvipdf”, “ps2pdf” and “pdftotext”. [inputs]: Add ghostscript and poppler. --- gnu/packages/emacs.scm | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'gnu/packages/emacs.scm') diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 0430a79716..f534b1ccdc 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -18,7 +18,7 @@ ;;; Copyright © 2018, 2019, 2021 Tobias Geerinckx-Rice ;;; Copyright © 2019 Jesse John Gildersleve ;;; Copyright © 2019 Valentin Ignatev -;;; Copyright © 2019 Liliana Marie Prikler +;;; Copyright © 2019, 2021 Liliana Marie Prikler ;;; Copyright © 2019 Amin Bandali ;;; Copyright © 2020 Jack Hill ;;; Copyright © 2020 Morgan Smith @@ -54,6 +54,7 @@ (define-module (gnu packages emacs) #:use-module (gnu packages fribidi) #:use-module (gnu packages gd) #:use-module (gnu packages gettext) + #:use-module (gnu packages ghostscript) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) ; for librsvg #:use-module (gnu packages gtk) @@ -63,6 +64,7 @@ (define-module (gnu packages emacs) #:use-module (gnu packages mail) ; for mailutils #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) + #:use-module (gnu packages pdf) #:use-module (gnu packages pkg-config) #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) @@ -128,7 +130,7 @@ (define-public emacs #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-program-file-names - (lambda _ + (lambda* (#:key inputs #:allow-other-keys) (substitute* '("src/callproc.c" "lisp/term.el" "lisp/htmlfontify.el" @@ -136,6 +138,17 @@ (define-public emacs "lisp/progmodes/sh-script.el") (("\"/bin/sh\"") (format #f "~s" (which "sh")))) + (substitute* "lisp/doc-view.el" + (("\"(gs|dvipdf|ps2pdf)\"" all what) + (let ((ghostscript (assoc-ref inputs "ghostscript"))) + (if ghostscript + (string-append "\"" ghostscript "/bin/" what "\"") + all))) + (("\"(pdftotext)\"" all what) + (let ((poppler (assoc-ref inputs "poppler"))) + (if poppler + (string-append "\"" poppler "/bin/" what "\"") + all)))) ;; match ".gvfs-fuse-daemon-real" and ".gvfsd-fuse-real" ;; respectively when looking for GVFS processes. (substitute* "lisp/net/tramp-gvfs.el" @@ -264,6 +277,8 @@ (define* (emacs-byte-compile-directory dir) ("acl" ,acl) ("jansson" ,jansson) ("gmp" ,gmp) + ("ghostscript" ,ghostscript) + ("poppler" ,poppler) ;; When looking for libpng `configure' links with `-lpng -lz', so we ;; must also provide zlib as an input. -- cgit v1.2.3 From 15404ff19b304bc9efcdb9a326318fb9fa9716da Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Sat, 22 May 2021 14:54:28 +0200 Subject: gnu: emacs: Load package descriptors from packages referenced by subdirs.el MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/aux-files/emacs/guix-emacs.el (guix-emacs--non-core-load-path): New procedure. (guix-emacs-autoload-packages): Use it here. (guix-emacs-load-package-descriptors): New procedure. * gnu/packages/emacs.scm (emacs)[install-site-start]: Install advice to run ‘guix-emacs-load-package-descriptors’. --- gnu/packages/aux-files/emacs/guix-emacs.el | 34 +++++++++++++++++++++++------- gnu/packages/emacs.scm | 7 ++++-- 2 files changed, 31 insertions(+), 10 deletions(-) (limited to 'gnu/packages/emacs.scm') diff --git a/gnu/packages/aux-files/emacs/guix-emacs.el b/gnu/packages/aux-files/emacs/guix-emacs.el index ca9146c535..eff44bfe90 100644 --- a/gnu/packages/aux-files/emacs/guix-emacs.el +++ b/gnu/packages/aux-files/emacs/guix-emacs.el @@ -26,6 +26,7 @@ ;;; Code: (require 'seq) +(declare-function package-load-descriptor "package" (pkg-dir)) (defvar guix-emacs-autoloads-regexp (rx (* any) "-autoloads.el" (zero-or-one "c") string-end) @@ -39,6 +40,12 @@ The files in the list do not have extensions (.el, .elc)." (directory-files directory 'full-name guix-emacs-autoloads-regexp)))) +(defun guix-emacs--non-core-load-path () + ;; Filter out core Elisp directories, which are already handled by Emacs. + (seq-filter (lambda (dir) + (string-match-p "/share/emacs/site-lisp" dir)) + load-path)) + ;;;###autoload (defun guix-emacs-autoload-packages () "Autoload Emacs packages found in EMACSLOADPATH. @@ -46,18 +53,29 @@ The files in the list do not have extensions (.el, .elc)." 'Autoload' means to load the 'autoloads' files matching `guix-emacs-autoloads-regexp'." (interactive) - (let* ((emacs-non-core-load-path-directories - ;; Filter out core Elisp directories, which are already autoloaded - ;; by Emacs. - (seq-filter (lambda (dir) - (string-match-p "/share/emacs/site-lisp" dir)) - load-path)) - (autoloads (mapcan #'guix-emacs-find-autoloads - emacs-non-core-load-path-directories))) + (let ((autoloads (mapcan #'guix-emacs-find-autoloads + (guix-emacs--non-core-load-path)))) (mapc (lambda (f) (load f 'noerror)) autoloads))) +;;;###autoload +(defun guix-emacs-load-package-descriptors () + "Load descriptors for packages found in EMACSLOADPATH via subdirs.el." + (dolist (dir (guix-emacs--non-core-load-path)) + (let ((subdirs-file (expand-file-name "subdirs.el" dir))) + (when (file-exists-p subdirs-file) + (with-temp-buffer + (insert-file-contents subdirs-file) + (goto-char (point-min)) + (let ((subdirs (read (current-buffer)))) + (and (equal (car-safe subdirs) 'normal-top-level-add-to-load-path) + (equal (car-safe (cadr subdirs)) 'list) + (dolist (subdir (cdadr subdirs)) + (let ((pkg-dir (expand-file-name subdir dir))) + (when (file-directory-p pkg-dir) + (package-load-descriptor pkg-dir))))))))))) + (provide 'guix-emacs) ;;; guix-emacs.el ends here diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index f534b1ccdc..03f8c25d67 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -185,8 +185,11 @@ (define* (emacs-byte-compile-directory dir) (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")))) + (string-append + "(when (require 'guix-emacs nil t)\n" + " (guix-emacs-autoload-packages)\n" + " (advice-add 'package-load-all-descriptors" + " :after #'guix-emacs-load-package-descriptors))")))) ;; 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, -- cgit v1.2.3