feat: add quickfix list integration #9

Merged
menisadi merged 4 commits from feature/quickfix-integration into main 2026-01-20 13:22:33 -06:00
menisadi commented 2026-01-20 06:39:33 -06:00 (Migrated from github.com)

This PR adds an optional quickfix list integration.

Motivation:

  • The README mentions quickfix integration as a possible improvement.
  • haunt.sidekick already exposes annotation location. So I just built on that.

What’s included:

  • A helper that converts haunt annotations into quickfix items
  • A :HauntQuickfix command (with ! for current-buffer only)

Design notes:

  • Logic lives in sidekick and returns data, not UI decisions
  • No behavior changes unless the command is used
  • Keeps the feature fully optional
  • It doesn't conflict or break any existing stuff

As a non-snacks user this is a nice patch for me (I'd be happy with a Telescope integration either, but tbh, I never built such integration myself, but quickfix felt straightforward).

This PR adds an optional quickfix list integration. Motivation: - The README mentions quickfix integration as a possible improvement. - haunt.sidekick already exposes annotation location. So I just built on that. What’s included: - A helper that converts haunt annotations into quickfix items - A `:HauntQuickfix` command (with `!` for current-buffer only) Design notes: - Logic lives in sidekick and returns data, not UI decisions - No behavior changes unless the command is used - Keeps the feature fully optional - It doesn't conflict or break any existing stuff As a non-snacks user this is a nice patch for me (I'd be happy with a Telescope integration either, but tbh, I never built such integration myself, but quickfix felt straightforward).
noe.trevino left a comment

This is in the wrong place, but otherwise, a wonderful PR!

If you could also remove the todo in the readme, and update it with these changes so users know its available, i would appreciate it.

This is in the wrong place, but otherwise, a wonderful PR! If you could also remove the todo in the readme, and update it with these changes so users know its available, i would appreciate it.
Owner

this module is specifically meant for the integration with the sidekick plugin from folke. I actually think that this specific function should go into the store module. That module represent data persistence, and fetching (a database).

Lets move this function over there

this module is specifically meant for the integration with the sidekick plugin from folke. I actually think that this specific function should go into the `store` module. That module represent data persistence, and fetching (a database). Lets move this function over there
Owner

This one should go into the api module, since it is more public facing. The name and all can stay the same.

This one should go into the `api` module, since it is more public facing. The name and all can stay the same.
Owner

Nice!! That is freaking slick

Nice!! That is freaking slick
Owner

Lets add a vim.notify("haunt.nvim: no bookmarks found.", INFO)

We don't want users to be confused in any way when using the plugin.

Soon, I am going to make a custom logger/notification config prop that users can toggle. For now, adding a vim.notify is pretty important IMO

Lets add a `vim.notify("haunt.nvim: no bookmarks found.", INFO)` We don't want users to be confused in any way when using the plugin. Soon, I am going to make a custom logger/notification config prop that users can toggle. For now, adding a `vim.notify` is pretty important IMO
menisadi commented 2026-01-20 12:42:57 -06:00 (Migrated from github.com)

Cool!
Okay so I’ve pushed updates:

  • moved get_quickfix_items to store
  • moved to_quickfix to api
  • added vim.notify when no bookmarks are found
  • updated README and marked the TODO as done. If you want it can be removed but it is your choice :)
Cool! Okay so I’ve pushed updates: - moved get_quickfix_items to store - moved to_quickfix to api - added vim.notify when no bookmarks are found - updated README and marked the TODO as done. If you want it can be removed but it is your choice :)
Owner

@menisadi
Nice! I am going to approve this. I will be adding tests for this later today. I don't expect you to do that, but I will add you as a reviewer.
Thanks for the PR!

@menisadi Nice! I am going to approve this. I will be adding tests for this later today. I don't expect you to do that, but I will add you as a reviewer. Thanks for the PR!
menisadi commented 2026-01-20 13:17:46 -06:00 (Migrated from github.com)

Thanks for the great plugin. Been using it already today and I like it alot.

Thanks for the great plugin. Been using it already today and I like it alot.
Owner

I am glad you like it!

I am glad you like it!
Owner

@menisadi I just realized, you said there was a helper for the quickfix, a user command. I don't see it. Were you wanting to add that as well? Just wanted to see if that was a mistake.

@menisadi I just realized, you said there was a helper for the quickfix, a user command. I don't see it. Were you wanting to add that as well? Just wanted to see if that was a mistake.
menisadi commented 2026-01-21 16:49:17 -06:00 (Migrated from github.com)

Oh you are right. There was in the first version. In the moving process I dropped it for some reason. It is not crucial I think. If someone wants a command they can bind the function easily.

Oh you are right. There was in the first version. In the moving process I dropped it for some reason. It is not crucial I think. If someone wants a command they can bind the function easily.
Sign in to join this conversation.
No description provided.