Good observation, though I wonder if that security aspect is part of the design?
I see on the diagnostics GH issue linked above that Dexter does run the formatter, which I’d imagine involves the compiler/arbitrary code execution.
Good observation, though I wonder if that security aspect is part of the design?
I see on the diagnostics GH issue linked above that Dexter does run the formatter, which I’d imagine involves the compiler/arbitrary code execution.
What are the implications on usage with Ash since Dexter doesn’t go off the AST? Macros in general?
Could not Dexter benefit from ex_panda for covering heavily macroed code, like Ash? Just wondering.
Its written in Go and uses a custom source parser, it doesnt convert source code to AST
This comes at a perfect time!
I recently started learning Elixir and Phoenix LiveView by building a Paperless clone with minimal feature set for my personal use. There were a few occasions when expert would just take too long to compile the project and have LSP be ready. Excited to give this a try.
It still can call ex_panda on the source before running their custom source parser.
This is great! The quickness is a big upgrade. I love that it still works if there is a compile error in the project. I haven’t had to restart the server once!
Question: I’m using Zed, and sometimes goto definition opens up the “find references” UI instead of navigating. I think maybe it only happens where there are multiple function heads. In this case I would like it to choose the first place the function is defined. Does anyone know if this configurable or if I can hack it somehow?
This is really cool. I’ve been wanting to try something like this for a while (go is a much better choice for theses kinds of tasks imo).
Just gave it a shot, thought it hadn’t worked because I didn’t even saw a spin wheel but turns out it’s just that fast! Just such a shame it doesn’t work with macros
, currently working on an ash-heavy project and its basically null around that, but still a really cool project and damn it is fast!
Hey, @knoebber !
I think I saw that too and will try to take a look when I have a moment.
Since it only happens “sometimes,” it might be tricky to debug.
I’ve opened an issue, so feel free to drop in any examples, any help is welcome!
Please open issues for the problems you’ve seen of you haven’t already.
Would it be possible to resolve erlang code as well?
If I click on Map.fetch the map.ex file opens on the fetch function definition. In there, if I click on :maps.find it does not open maps.erl. This would be really helpful ![]()
Hey @knoebber, glad you’re enjoying it! I would argue that this isn’t necessarily a bug, but rather something we should leave to the editor to configure. When you do go-to-definition on a function with multiple function heads, the LSP will return all definitions for a function of that same arity. It would be incorrect to simply take you to the first function head found, since that might not be the applicable one.
That being said, I know not all editors make this easily configurable, so maybe we should make this an option after all. I see @nick-c opened a PR, so we can discuss there! Curious what others think about this.
It is planned! Erlang stdlib docs? · Issue #30 · remoteoss/dexter · GitHub
Perfect ![]()
I installed it on Neovim, the difference is absurd, previously I had to wait few seconds for the project to compile and the LSP being available, now I just open the editor and it is up and running. As a noob in Elixir coming from Python and Go this is perfect for me, it doesn’t slows me down anymore.
Thank you for this tool, it is really useful.