emacs-devel
[Top][All Lists]
Advanced

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

Re: feature/package-vc has been merged


From: Philip Kaludercic
Subject: Re: feature/package-vc has been merged
Date: Tue, 08 Nov 2022 21:53:03 +0000

Rudolf Adamkovič <salutis@me.com> writes:

> Philip Kaludercic <philipk@posteo.net> writes:
>
>> The thing is the user options aren't strictly variables.  The usually
>> are, but they are explicitly meant to operate on a higher abstraction
>> level, sort of even in a separate name space.
>
> Gotcha!

Worse still, any variable, user option or not can have a side effect,
when `add-variable-watcher' is used.

>> But of course, I understand that not everyone feels comfortable with
>> this.  So while I insist that package-vc-selected-packages ought to be
>> a user option, I have also made `package-vc-install-selected-packages'
>> autoloaded (I have yet to push all the commits) and invocable as a
>> regular function
>
> Perfect.  Win-win.  Thank you so much!
>
> (I hope you also marked the function as interactive.  When playing with
> VC package, I have half of the history in M-x and the other half in M-:.
> Switching between the two all the time confuses me to no end.)

Yes, I've done it, but haven't pushed the changes yet.

>>> I like the clear distinction between `foo' and `(foo)' in Lisp.  I even
>>> like the `*' in C that clearly says "a pointer".  Brilliant ideas lost
>>> to the history in most modern languages.  But I digress!
>>
>> Maybe I am missing your point, but why shouldn't `foo' and (foo) be
>> different?  The only context where I can think of `foo' and (foo)
>> being treated the same is in some APL-like language ...
>
> I apologize for the digression!  :)
>
> To quickly explain, consider Swift code:
>
>   class Things {
>     // stored property
>     var count = 0 // set during init
>   }
>
> and
>
>   class Things {
>     // computed property
>     var count: Int {
>        // arbitrary code
>     }
>   }
>
> One calls `things.count' in both cases, with no parentheses, so one has
> no idea whether `count' is a *stored* property (true variable) with O(1)
> access or a *computed* property that runs in say in O(n).  Accidentally
> quadratic code in no time!  Plus, one also know nothing about side
> effects.
>
> (Further, one can also define `willSet' and `didSet' on *stored*
> properties, makes things even worse.)
>
> In C, one sees `count' or `*count' or `count()' and everything is clear
> on the first sight.  Similarly, in Scheme, one sees `count' or
> `(count)'.

Interesting, I didn't know this.

>> I see, this is an interesting approach.  But just to make sure, can
>> you confirm that package-vc doesn't break any of the assumptions you
>> make that are necessary for your configuration to work as intended?
>
> Suddenly ... so many issues!  :)
>
> First, Emacs failed with "circular loads" errors (or something like
> that).  I had to comment out `(package-vc-ensure-packages)' here to work
> around the problem:

> (defcustom package-vc-selected-packages '()
>   [...]
>   :set (lambda (sym val)
>          (custom-set-default sym val)
>          (package-vc-ensure-packages))

That is unusual, `package-vc-ensure-packages' (or as it is now called
`package-vc-install-selected-packages') doesn't modify
`package-vc-selected-packages' so the setter shouldn't be invoked
either?

> I then tried to change all packages to VC at once and got:
>
>   user-error: Package has no VC data
>
> Which one, I wondered.

Good point, I can add that to the error message.

> Anyway, I reverted the config and decided to proceed in smaller steps.
>
> As a side note, while I investigated various issues, I found myself
> wishing for a hyperlink to
>
> `package-vc-archive-spec-alist'
>
> from the help page for
>
> `package-vc-selected-packages'.
>
> (The help page mentions does not use a hyperlink.)

These issues have already been solved.

> Finally, I got to MELPA packages and got stuck altoegether.
>
> When I
>
> (1) require `package-vc', and then
> (2) run `package-refresh-contents',
>
> I get
>
> Debugger entered--Lisp error: (file-error
>   "https://melpa.org/packages/elpa-packages.eld"; "Not found")
>   signal(file-error ("https://melpa.org/packages/elpa-packages.eld"; "Not
>   found")) package--with-response-buffer-1("https://melpa.org/packages/";
>   #f(compiled-function () #<bytecode 0x1fdb28378e1ccb5e>) :file
>   "elpa-packages.eld" :async nil :error-function #f(compiled-function ()
>   #<bytecode -0x3d0e809e66d1a0c>) :noerror nil)
>   package--download-one-archive(("melpa"
>   . "https://melpa.org/packages/";) "elpa-packages.eld" nil)
>   (condition-case nil (package--download-one-archive archive
>   "elpa-packages.eld" async) ((debug error) (message "Failed to download
>   `%s' archive." (car archive)))) (let ((archive (car tail)))
>   (condition-case nil (package--download-one-archive archive
>   "elpa-packages.eld" async) ((debug error) (message "Failed to download
>   `%s' archive." (car archive)))) (setq tail (cdr tail))) (while tail
>   (let ((archive (car tail))) (condition-case nil
>   (package--download-one-archive archive "elpa-packages.eld" async)
>   ((debug error) (message "Failed to download `%s' archive." (car
>   archive)))) (setq tail (cdr tail)))) (let ((tail package-archives))
>   (while tail (let ((archive (car tail))) (condition-case nil
>   (package--download-one-archive archive "elpa-packages.eld" async)
>   ((debug error) (message "Failed to download `%s' archive." (car
>   archive)))) (setq tail (cdr tail)))))
>   package-vc--download-and-read-archives(nil)
>   run-hook-with-args(package-vc--download-and-read-archives nil)
>   package-refresh-contents()
>   funcall-interactively(package-refresh-contents)
>   call-interactively(package-refresh-contents record nil)
>   command-execute(package-refresh-contents record)
>   execute-extended-command(nil "package-refresh-contents" nil)
>   funcall-interactively(execute-extended-command nil
>   "package-refresh-contents" nil)
>   call-interactively(execute-extended-command nil nil)
>   command-execute(execute-extended-command)

Do you have `debug-on-error' enabled?  I don't use MELPA, so this error
doesn't occur in my case.  I've modified `package-archives', but even so
the most I get in my case is

    Failed to download ‘melpa’ archive.

> Rudy
> --
> "'Contrariwise,' continued Tweedledee, 'if it was so, it might be; and
> if it were so, it would be; but as it isn't, it ain't.  That's logic.'"
> -- Lewis Carroll, Through the Looking Glass, 1871/1872
>
> Rudolf Adamkovič <salutis@me.com> [he/him]
> Studenohorská 25
> 84103 Bratislava
> Slovakia



reply via email to

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