didibus / anakondo

Minor mode for Clojure[Script] completion powered by clj-kondo.
MIT License
114 stars 1 forks source link

Fix #5 #6

Closed andreyorst closed 3 years ago

andreyorst commented 3 years ago

This should be enough to not depend on projectile and also clojure-mode, and use project to detect project root, falling back to projectile if it is available. Other semantics should be the same

didibus commented 3 years ago

Awesome, thanks for he PR, I'll have a look at this soon. Happy to see some contributions coming in!

andreyorst commented 3 years ago

Happy to see some contributions coming in!

Thanks! This package is great! I'm also slowly working on making it do analysis asyncronously, so expect this change in some near future too :)

Although now I'm not usre that I'm familiar enough with anakondo code base. My basic idea was to set-process-sentinel to gather results into hash map on complete, but I'm not sure how to hook rest of the package to use these results afterwards.

didibus commented 3 years ago

I've been procrastinating the async work haha, which in turn has meant I've not worked on any other features cause I really want to make it async.

Since I've actually taken a pause from my last release, I'm also getting rusty ony my own code. But I did try to make the map the main driver, so everything just looks up in the map and if it has the information it needs it'll use it otherwise it won't. Now if I did this correctly, it does mean that you can just make the updates to the map async and it should all flow. But when I started I wasn't really thinking async, so there might be some quirks here and there I didn't properly plan for.

didibus commented 3 years ago

Also, I should get around to reviewing your PR this weekend. My real work has been busy recently so it's taken me a little longer than I wanted to review your PR.

andreyorst commented 3 years ago

Also, I should get around to reviewing your PR this weekend. My real work has been busy recently so it's taken me a little longer than I wanted to review your PR.

I'm using this patch day to day and haven't any issues with it so far.

But I did try to make the map the main driver, so everything just looks up in the map and if it has the information it needs it'll use it otherwise it won't. Now if I did this correctly, it does mean that you can just make the updates to the map async and it should all flow. But when I started I wasn't really thinking async, so there might be some quirks here and there I didn't properly plan for.

Yes I saw the map thing, but I don't know if I should trigger update asynchronously and poll it synchronously, or trigger polling the same time I trigger the update, thus making it full async. First option looks easier to code, and there are no visible races that can potentially happen, but I'm not sure if global mutable table is good thing. Well, maybe not global, but it is not buffer local is it?