bergercookie / asm-lsp

Language server for NASM/GAS/GO Assembly
https://crates.io/crates/asm-lsp
BSD 2-Clause "Simplified" License
267 stars 18 forks source link

feat: Config builder #163

Closed WillLillis closed 2 weeks ago

WillLillis commented 3 weeks ago

I am greatly excited by the config improvements coming from #158. These changes do make the config a bit more complex though, which may be confusing/hard to track in large projects/ for new users. This PR adds a small CLI program that prompts a user through creating a .asm-lsp.toml config file, which should help manage that complexity. I'll add some more details to this PR description (and some example gifs) once it's closer to being merged, but I wanted to open this up early for the sake of visibility.

Currently, the config builder program lives as a separate binary crate within the project. I think I'd like to change this to run as a subcommand of the main program (assuming it doesn't bloat the binary size by too much). Some documentation for this also needs to be added to the project's README.

Here's an example gif. I don't currently have a large assembly project to demonstrate this on, so I'm just going to run the tool within the asm-lsp repo selecting some nonsense options:

ConfigBuilder

(The flickering only shows up in the recording, I'm not entirely sure what's causing that)

The builder provides validation for selected options in the following ways:

Closes #161

WillLillis commented 3 weeks ago

@lu-zero I'm curious how well this fits in with your use case for dav1d (very cool project by the way!). If you have the time to test this out, I'd really like to address any issues/pain points you run into. :)

EDIT: Not sure why CI isn't running now, but at this point I think that's a tomorrow (later today) problem.

WillLillis commented 2 weeks ago

Rebased and added some checks to ensure multiple projects couldn't have the same path. I'm planning on merging this in tomorrow night unless I spot some other issues.

Ultra-Code commented 2 weeks ago

Looks good, Impressive work 🔥 🚀 .