emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Changes to make in elpa-packages file for nongnu elpa


From: Thierry Volpiatto
Subject: Re: Changes to make in elpa-packages file for nongnu elpa
Date: Wed, 16 Aug 2023 06:51:29 +0000

Philip Kaludercic <philipk@posteo.net> writes:

> Philip Kaludercic <philipk@posteo.net> writes:
>
>>>>> It is used specially for reproducing bugs in a clean environment, see it
>>>>> as emacs -Q for Emacs when reporting bugs. This script starts Emacs -Q
>>>>> with only Helm loaded, this ensure the bug if one comes from Helm and
>>>>> not another package. This is important especially nowaday people are
>>>>> using "Emacs distribution" with the world list of packages installed.
>>>>> Apart that the script is useful to quickly launch Emacs with helm, one
>>>>> can use it from the Helm directory or symlinked to e.g. ~/bin. 
>>>>
>>>> I see.  In that case is there any reason you implement this as a shell
>>>> script?
>>>
>>> Well when I wrote the script, packages where not existing and from
>>> outside emacs it is actually the only way to run a package isolated.
>>>
>>>> (It might be interesting to provide something like this for
>>>> package.el, to test packages in a generic way.)
>>>
>>> Yes, this would be interesting, it would be something like this:
>>>
>>> Emacs -Q
>>> M-x <A command that run a package alone, isolated from other
>>> packages nuisances>
>>
>> I was actually thinking of a command like
>>
>> M-x package-isolate RET foo,bar,baz RET
>>
>> and a new instance of Emacs using -Q is spun up, with all the packages
>> you have listed loaded, and nothing else... Sounds like a fun little
>> weekend project ;^)
>
> Here is my first attempt at providing this kind of a command.  Any
> comments?

Why not reusing package.el functions?
Why do you want to start in an isolated elpa directory?
Isn't something like this suffice? (just missing to fallback to CRM when
helm is not available)

    (defun package-isolate (packages)
      "Start an uncustomised Emacs and only load a set of PACKAGES."
      (interactive
       (list (let ((helm-comp-read-use-marked t))
               (completing-read "Packages: " (mapcar #'car (package--alist))))))
      (let* ((name (concat "package-isolate-" (mapconcat #'identity
                                                         packages ",")))
             (deps (cl-loop for p in packages
                            for sym = (intern p)
                            append (package--dependencies sym))))
        (apply #'start-process (concat "*" name "*") nil
               (list (file-truename (expand-file-name invocation-name 
invocation-directory))
                     "--quick" "--debug-init"
                     (format "--eval=%S"
                             `(progn
                               (require 'warnings)
                               (add-to-list 'warning-suppress-log-types 
'initialization)
                               (require 'package)
                               (setq package-load-list
                                ',(append (mapcar (lambda (p) (list (intern p) 
t)) packages)
                                          (mapcar (lambda (p) (list p t)) 
deps)))
                               (package-initialize)))))))

> [2. text/x-diff; 
> 0002-Add-command-to-start-Emacs-with-specific-packages.patch]...
>
> [3. text/x-diff; 0001-Add-a-function-to-query-the-Emacs-executable.patch]...


-- 
Thierry

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]