Skip to content

Releases: VoxelPrismatic/rabbit.nvim

v5.0.0b3 - Lazuli

29 Apr 16:39

Choose a tag to compare

⚞NEW⚟

  • Fuzzy find files!
    • I can now uninstall Telescope with this release

Note

This is a beta build. Rabbit is largely stable (meaning no issues in my daily use), but the API is poorly documented and subject to change. Please use tagged releases to ensure stability.

Internals

  • New SET.lookup fn allowing for easy field lookup

Hotfixes

  • Fzr now finds the shortest fuzzy match
  • Fzr now automatically kills the find command after 250ms
  • Rg is now killed after 250ms

Fixed

  • Fields with content too long would break highlighting and selection
  • Field selection no longer looks like crap
  • Forage now honors the grep option
  • The parent action now works in Ripgrep and Fzr
  • The 1-9 keys work again

Known issues

  • The window stays open when no longer focused, and clicking back on it causes Rabbit to scream. I do not know how to reproduce this bug.

To do

See projects: https://github.com/users/VoxelPrismatic/projects/2/

99f291a...7adce5b

v5.0.0b2 - Forage

28 Apr 00:29

Choose a tag to compare

⚞NEW⚟

  • Officially licensed under MIT
  • Ripgrep works!
    • Search persists across many Rabbit spawns
    • Pass flags directly to ripgrep
    • Search immediately after selecting, as if you typed /pattern
  • Carrot
    • New instructions when migrating away from ThePrimeagen's Harpoon
    • Visual has been implemented
      • All pasted collections are deep-copied
    • Reduce chances of ID collisions
  • Faster & more accurate syllable wrapping
  • Mouse support!
    • Double-click on an entry to activate it

Note

This is a beta build. Rabbit is largely stable (meaning no issues in my daily use), but the API is poorly documented and subject to change. Please use tagged releases to ensure stability.

Internals

  • Search API
  • rabbit.types.reverse highlight group
  • New defer option
    • Default defer duration in ms when making many calls
    • If your PC is fast, keep it low
  • File entries may now have custom labels
  • Actions can now be renamed in the legend
    • Eg, the ripgrep search bar has a rename fn, but it makes no sense to call it "rename," so it's now called "edit"
  • Menus can now have custom border colors
  • Menus can now display additional messages
  • Menus now display an 'Ok' function by default (when there are no options available), allowing for prompts
    • Eg, warning the user that rg cannot be called, but don't do anything about it
  • New redraw message
  • New NVIM.ns and NVIM.ft API, caching calls to vim.api.nvim_create_namespace and vim.filetype.match({ filename = name }) respectively
  • New UI.redraw_entry shorthand
  • New UI callback shorthands
    • bind_callback(action, entry)
    • wrap_callback(response)
  • Rabbit:Trail now has a built-in function to bind to the very handy buffers table
  • You may now chain multiple responses together
  • New global unique name generator
  • Highlight wrapping now honors spaces

Fixed

  • Hovering over files now passes the jump highlights
  • Redrawing an entry now actually updates the entry in UI._entries
  • Previews no longer attempt to move the cursor out of bounds
  • Renaming entries now asks for the specific entry to rename, falling back to the current line if the entry was not provided
    • Speeds up moving between lines by 10x
  • Renaming no longer attempts to place an extmark if both the old name and the new name are empty strings
  • Carrot
    • No longer hangs on cyclical collection referencing
    • Actually scopes properly based on config
    • Renames the first collection when inserting an entry while hovering over 'up'
    • Could not paste/insert on empty page
    • Creating a collection no longer moves you to the top
    • Properly target real save data
  • Forage
    • Oxide no longer moves to the top when you delete an entry
    • Oxide now properly saves
    • Oxide no longer crashes when you delete a file during the session
    • Other erroneous sort issues
  • New stack API now deepcopies objects

Known issues

  • The window stays open when no longer focused, and clicking back on it causes Rabbit to scream. I do not know how to reproduce this bug.

To do

See projects: https://github.com/users/VoxelPrismatic/projects/2/

9d10dfa...6fd8794

v5.0.0b1 - New Dawn

17 Apr 02:10

Choose a tag to compare

⚞NEW⚟

  • Forage plugin
    • Oxide sorting algorithm
  • Carrot
    • You may now rename files
    • Renamed files have a filetype icon

Note

This is a beta build. Rabbit is largely stable (meaning no issues in my daily use), but the API is poorly documented and subject to change.
If you are coming from v4.x.x, please read the additional changes in the following releases. This is a complete rewrite, so your config will not work.

Warning

The default branch has been changed in this version.
If you prefer the old version, either add a tag v4.* or set branch = "master" in Lazy. Please keep in mind that the legacy version is deprecated and will no longer feature any updates.

Internals

  • Optimized the highlighter
  • New wrappers around vim.uv.fs_stat
    • MEM.stat - Resolve symlinks
    • MEM.is_type - Make sure a file is a specific type
    • MEM.exists shorthand for MEM.stat(...) ~= nil

Fixed

  • vim.uv.fs_stat calls now resolve symlinks
  • Renaming/recoloring an entry no longer increments the index
  • Carrot
    • Renaming a collection, then cancelling a second rename no longer shows the original name
  • Rabbit no longer crashes if an entry doesn't have a parent action
  • Removed erroneous print in term/stack/autocmd.lua
  • The SET api now has proper typing
    • Apparently table<T> isn't valid but { [integer]: T } is

To do

See projects: https://github.com/users/VoxelPrismatic/projects/2/

80f464a...9d10dfa

v5.0.0a6

14 Apr 17:26

Choose a tag to compare

v5.0.0a6 Pre-release
Pre-release

⚞NEW⚟

  • You may now set colors in Carrot
  • New Index listing
    • Displays all enabled plugins and their synopsis
    • New default
  • Previews
    • Binaries can now be previewed
    • Large files will not be previewed
    • Message is displayed if file is empty
    • Target line/column is now highlighted
    • Preview is now async
  • Rename
    • You may now hit <Esc> to cancel rename instead of always applying
  • Colors can now be functions

Internals

  • Reworked some class definitions
  • More assertions instead of if/error checks
  • Synopsis API in entry
  • Refactored workspace context API

Fixed

  • Actually adhere to plugin = false in config
  • Renaming an entry no longer increments index

Other news

  • More documentation
  • Updated README

Warning

This is an alpha build. Building plugins is highly discouraged at this time.

To do

See projects: https://github.com/users/VoxelPrismatic/projects/2/

d07e9e6...80f464a

v5.0.0a5

05 Apr 01:08

Choose a tag to compare

v5.0.0a5 Pre-release
Pre-release

⚞NEW⚟

  • Visual mode!
  • Trail
    • You may now cut, yank, & paste certain buffers to anywhere you like
    • Config documented!
    • Trail is now in beta!!!
    • You may now sort windows by display name
      • Kinda useless for now, but workspace plugin coming (eventually)
    • When navigating from the window selection screen, the window's most recent buffer will be selected by default, instead of the second-most recent buffer
    • When the BufAdd event is fired, the associated buffer is added to the global listing
      • No longer relies on BufEnter
      • You can see what buffers were opened & modified after Lsp Rename
  • Legend
    • You may now hide certain actions. Close and Select are hidden by default.
  • Renamed Harpoon to Carrot
    • More rabbit-themed
    • Reduces confusion with ThePrimeagen's Harpoon plugin
  • Carrot
    • New option to scope by window, buffer, or never.
      • Removes previous by_buffer option
    • Less spaghetti

Internals

  • Consolidating types into the files they're used in
  • More workspace API shorthands
    • get_lines() & set_lines(...)
    • set_extmark(...) & clear_extmarks(...)
    • get_cur() & move_cur(...)
    • listen(...) & unlisten(...)
    • bind(...), bound(...) & unbind(...)
    • TERM.feed(...)
    • focus()
  • You may now send an empty message to keep Rabbit open
  • Previews now cache binary preview buffers
  • Some happy-path stuff to reduce obscene indentation levels

Fixed

  • The current window no longer closes when closing the file currently being previewed
  • Carrot
    • Improper scoping (probably unrealized but it can no longer happen)

Warning

This is an alpha build. Building plugins is highly discouraged at this time.

To do

See projects: https://github.com/users/VoxelPrismatic/projects/2/

47f627e...d07e9e6

v5.0.0a4

29 Mar 08:23

Choose a tag to compare

v5.0.0a4 Pre-release
Pre-release

⚞NEW⚟

  • Harpoon can now delete things!
    • Also: Removed the unnecessary conflicts options
      • You don't really need duplicate collections
      • Automatically cancels the insert operation if you enter the collection you just moved
      • Trying to deep-copy with the new data format would be absolute hell
  • New border config
    • This requires more config from the user, but is substantially easier to maintain
  • New menu API
    • Create selections with ease!
  • You may now close buffers in Trail
    • Closing an open buffer will move you to the last opened buffer
    • Closing an unsaved buffer will prompt you to save
  • You may now preview closed buffers
    • Binaries cannot be previewed

Internals

  • Enhanced Rabbit.UI.Workspace
    • Added a set_lines method - Set lines & highlights in the buffer quickly
    • Added a move_cur method - Move the cursor quickly
    • Added bind, unbind and legend methods - Bind a list of keys to a callback quickly
    • Added focus - Shorcut for vim.api.nvim_set_current_win
  • Refactored the Preview handler
    • We now cache the generated border given the window size and window ID
    • Overall 1000x efficiency
  • Refactored the relative path generator
    • More efficient
    • Caches results
    • Overall 100x efficiency

Fixed

  • Some more crashing with preview
  • In Harpoon, when adding to a nested collection, it would actually add below the cursor position
    • This also cleared names when inserting collections
  • Crashing with LSP signs

Warning

This is an alpha build. Building plugins is highly discouraged at this time.

To do

See #31

5670b54...47f627e

v5.0.0a3

25 Mar 05:29

Choose a tag to compare

v5.0.0a3 Pre-release
Pre-release

⚞NEW⚟

  • Harpoon plugin is under way!
    • New Insert action
      • Insert the last opened buffer or last deleted entry
    • New Collect action
      • Create a collection to organize your workspace
  • Opened buffers now display LSP info
    • Customize the icons and colors in config
    • Documentation will be available upon beta release
  • Opened buffers now also show modified/read only status
    • Customize the icons and colors in config
    • Documentation will be available upon beta release
  • Option to set plugin as default
    • Apparently, key ordering is not guaranteed
  • Legend now marquees if it's too long
  • Rabbit now actually displays empty listing messages
  • Term.Wrap now breaks by syllable instead of by word

Internals

  • Moved empty_msg to empty.msg and created default actions for empty message

Fixed

  • Not opening closed buffers properly
    • Apparently vim :e ignores spaces by default
  • Global config variable
  • Previews no longer crash if the window doesn't exist
  • Previews no longer crash if the buffer doesn't exist

Warning

This is an alpha build. Building plugins is highly discouraged at this time.

Missing

  • No Oxide plugin
  • You may not delete closed buffers or windows at this time

34a680f...5670b54

v5.0.0a2

19 Mar 23:43

Choose a tag to compare

v5.0.0a2 Pre-release
Pre-release

⚞NEW⚟

  • New rename action
    • This imitates the insert mode in Oil, allowing you to easily rename multiple things at the same time
    • When in insert mode, if you move up or down into an entry that doesn't support renaming, you will be kicked out automatically
  • Actually apply plugin environment
    • Less need for the plugin to probe the CTX module
  • New Parent action
    • Quickly jump to the parent folder or window
  • Rabbit closes gracefully when the buffer is no longer focused
  • Rabbit more gracefully resizes (see fixed)

Internals

  • CTX module now organizes workspaces by children instead of by parent
    • You can add multiple children with ease, now
  • CTX module has a new spawn() function, limiting how often you need to call nvim_open_win and nvim_create_buf
  • CTX.spawn(...) now pauses closing Rabbit automatically, instead of manually tracking the new buffer ID

Fixed

  • Trail now ignores all events when Rabbit is open
    • Previewing buffers no longer breaks the buffer order
  • Weird jumping behavior when moving cursor
  • Less crashing overall

Warning

This is an alpha build. Building plugins is highly discouraged at this time.

Missing

  • No Harpoon plugin
  • No Oxide plugin
  • You may not delete closed buffers or windows at this time

970b776...34a680f

v5.0.0a1

16 Mar 03:07

Choose a tag to compare

v5.0.0a1 Pre-release
Pre-release

⚞NEW⚟

  • The History and Reopen plugins have been merged into Trail
    • Trail also allows you to select which window to open
    • New preview API which shows which buffer you're about to open and where you're about to open it
  • New custom borders API
  • New custom highlights API

Breaking

Everything, actually. It's rewritten from scratch. I highly suggest you stick to the default config for now.

Warning

This is an alpha build. Building plugins is highly discouraged at this time.

Missing

  • No Harpoon plugin
  • No Oxide plugin
  • You may not delete closed buffers or windows at this time

b7da891...970b776

v4.3.1 - Pistachio

03 Mar 06:20

Choose a tag to compare

⚞NEW⚟

  • You can now delete entries from Rabbit:Reopen
    • Generally useless, but it matches the other plugins

Bug Fixes

  • Rabbit:Reopen no longer lists directories
  • Rabbit:Oxide no longer lists directories
  • Rabbit no longer hangs when opening Reopen immediately after launching Neovim
    • Apparently you shouldn't use the table_values API
    • Doesn't much matter now because I append files after I make sure they're not directories
  • Rabbit no longer hangs when opening Oxide immediately after launching Neovim
    • This is unexplained, but I suspect it has something to do with listing directories

all changes: b502cbc...3a4ce04