Open smeagol74 opened 1 year ago
I also encountered this (though running via LSP with Cask) when I've tried wiring up some of my own packages with Elsa. I'm wholly unfamiliar with the internals of Elsa, but it appears that it's choking on analyzing the defining-kbd-macro
variable reference within the undefiend
function in subr.el. I haven't yet figured out the issue with elsa/cask for my own packages, but I did notice that my local Elsa
repo had a populated .elsa
cache and succeeds in static analysis of itself. Once I copied Elsa's .elsa
cache (containing subr, etc.) into the project that was experiencing the failure above, it started working.
When trying to run eask lint elsa first received errors about missing dependencies
async
andlgr
.
It's weird. It seems like melpa doesn't recognize the new dependencies from elsa. See https://melpa.org/#/elsa. It's missing ansi
, lgr
, and async
. 🤔
https://github.com/emacs-elsa/Elsa/blob/2aa912dcc7d3732ba04eb96ab1cd186565a48f98/elsa.el#L9
cc @tarsius Do you know why?
This is most likely not Eask related and there is simply some code that Elsa chokes on. It still happens quite often as it's hard to get all the edge-cases accounted for.
What is your exact versions of Emacs? Since the source can be different between each commit, ideally maybe upload your subr.el somewhere exactly as it appears on your system so I can try to run it locally and see what happens.
cc @tarsius Do you know why?
elsa-pkg.el
is checked into git but contains outdated dependency information.
Package-Build uses NAME-pkg.el
if it exists.
@Fuco1 Emacs 28.1.91 undefined
:
(defun undefined ()
"Beep to tell the user this binding is undefined."
(declare (completion ignore))
(interactive)
(ding)
(if defining-kbd-macro
(error "%s is undefined" (key-description (this-single-command-keys)))
(message "%s is undefined" (key-description (this-single-command-keys))))
(force-mode-line-update)
;; If this is a down-mouse event, don't reset prefix-arg;
;; pass it to the command run by the up event.
(setq prefix-arg
(when (memq 'down (event-modifiers last-command-event))
current-prefix-arg)))
This is most likely not Eask related and there is simply some code that Elsa chokes on. It still happens quite often as it's hard to get all the edge-cases accounted for.
Yep, you are right, It's most probably because of some code that Elsa can not properly understand. But should Elsa just fail to continue in such cases? I think it would be better if Elsa mark some libraries as 'broken' and skip them in further processing instead. I propose Elsa to catch such exceptions and mark such 'bad' libraries somehow and continue to work with collected information ignoring 'broken' libraries.
What is your exact versions of Emacs? Since the source can be different between each commit, ideally maybe upload your subr.el somewhere exactly as it appears on your system so I can try to run it locally and see what happens.
My exact version of Emacs is brew installed emacs-plus@28/28.2 on MacOS.
My subr.el
can be found in this gist
Thank you.
Yep, you are right, It's most probably because of some code that Elsa can not properly understand. But should Elsa just fail to continue in such cases? I think it would be better if Elsa mark some libraries as 'broken' and skip them in further processing instead. I propose Elsa to catch such exceptions and mark such 'bad' libraries somehow and continue to work with collected information ignoring 'broken' libraries.
This is indeed the idea and there is some level of error handling. The two main issues are: reader issues where there is some weird syntax that Elsa cannot parse. This is usually what causes a crash.
Another issue is straight up bugs in Elsa itself, so that we actually have ie type errors in our code :blush: Each analysed form should be wrapped with try-catch.
The OP error in fact points to a problem with Elsa itself, since it says Debugger entered--Lisp error: (void-variable mixed)
, where mixed
is one of the Elsa types.
The weirder thing still is that I tried the subr code and it passed on my version, but it might be slightly different.
One other thing you can try is to delete the .elsa
folder if it exists, that's where we keep the cache with intermediate analysis results.
eask
version 0.8.1elsa
version 20230318.2024When trying to run
eask lint elsa
first received errors about missing dependenciesasync
andlgr
. Added as dev dependencies to myEask
file and performeask install-deps --dev
. After that elsa looks like started and here is the output:Any ideas how this could be fixed?