Skip to content

Goals for v2 #1059

@saghen

Description

@saghen
  • Adopt vim.async: feat(lua): add vim.async neovim/neovim#34473
  • Convert to library: Decouple many of the components such that the project may be used as a library
    • Pluggable triggers
    • Pluggable views
    • Pluggable fuzzy matchers
    • Move snippets registry to blink.snippets Use cmp.snippets.registry
  • Keymap
    • Use vim.on_key Use vim.on_key for keymap #487
    • Avoid vim.schedule so that all commands run synchronously, easier scripting
    • After V2: Commit characters with vim.on_key Support commit characters #536
    • Change default: <C-p>/<C-n> = { 'select_next', 'show_and_select' }
    • Rename auto_insert to preview
    • Rename accept to apply
  • Triggers
    • Support macros Macro support #1311
    • Rewrite to be readable
    • Try to find a better solution for auto_insert
      • Extmarks to track start/end ranges?
    • Regex configuration
  • Sources: Replace with in-process LSPs
    • Compat layer for blink.cmp sources as LSPs
    • lsp.* for LSP specific options replaces sources system
      • Opt-in auto brackets
      • Opt-out proximity/frecency bonus (i.e. rust-analyzer sort is already excellent) or make frecency lower prio than sortText by default
    • Move hacks to LSP specific options
    • Move blink specific fields to .blink (Move clangd .score to .lsp_score #1778)
  • Fuzzy
    • Simplify and use build script for downloading binary
    • Explore small language model for item sorting
    • Stable sorting (Lua's table.sort is unstable)
    • Use LSP fuzzy range
    • Drop score of anything with __
    • Use 'state' directory instead of 'data' by default
  • Windows
    • Virtual text for scrollbar (If possible with borders, primarily for neovide)
    • Use new scrollbar impl after it's merged: feat(ui): supports render scrollbar on window neovim/neovim#35729
    • Simplify drawing
      • Drop treesitter label highlighting (colorful-menu.nvim is excellent, should contribute separate label_description component there for better overflow handling)
      • Redraw resolved item
    • Focusable windows
      • Open in split
      • Opt-in replace vim.lsp.buf.hover and vim.lsp.buf.signature_help
    • Multiple details/signatures
    • Icon presets (vscode, mini-icons, ascii)
  • Tooling
  • Raise minimum neovim version to 0.11+
  • Consider switching cmdline defaults back: Why does cmdline mapping not inherit the top-level mapping by default? #1668 (reply in thread)
  • Support vim.g and vim.b for configuration
  • Other?

If you have any ideas, please don't hesitate to share either here or in the discussions. Many of these may also be done with v1, PRs welcome!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions