Skip to content

Neovim plugin for interacting with Rust-Analyzer's LSP extensions

License

Notifications You must be signed in to change notification settings

vxpm/ferris.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 

Repository files navigation

ferris.nvim 🦀

a neovim plugin for interacting with Rust Analyzer's LSP extensions

installation & usage

note: this plugin has only been tested with neovim 0.9+

with lazy.nvim:

{
    'vxpm/ferris.nvim',
    opts = {
        -- your options here
    }
}

the available options (and their default values) are:

{
    -- If true, will automatically create commands for each LSP method
    create_commands = true, -- bool
    -- Handler for URL's (used for opening documentation)
    url_handler = "xdg-open", -- string | function(string)
}

you can also manually call the methods by requiring them:

local view_mem_layout = require("ferris.methods.view_memory_layout")

-- call the returned function to execute the request
view_mem_layout()

don't forget to call setup on require("ferris") beforehand, though! (not needed if you're using the opts field in lazy.nvim)

available methods

please do not mind the terrible screenshots... i was too lazy

Expand Macro

require("ferris.methods.expand_macro")

image.png

Join Lines

require("ferris.methods.join_lines")

View HIR

require("ferris.methods.view_hir")

image.png

View MIR

require("ferris.methods.view_mir")

image.png

View Memory Layout

require("ferris.methods.view_memory_layout")

image.png

View Item Tree

require("ferris.methods.view_item_tree")

View Syntax Tree

require("ferris.methods.view_syntax_tree")

Open Cargo.toml

require("ferris.methods.open_cargo_toml")

Open Parent Module

require("ferris.methods.open_parent_module")

Open Documentation

require("ferris.methods.open_documentation")

Reload Workspace

require("ferris.methods.reload_workspace")

Rebuild Macros

require("ferris.methods.rebuild_macros")

special thanks

rust-tools for being the reason why this plugins exists. initially, i didn't want any of the features it offered except for recursive expansion of macros, so i made rust-expand-macro.nvim.

however, i found myself wanting to use other methods as well, which led me to making ferris!

in comparison to rust-tools, this plugin is "simpler": it does not configure Rust Analyzer for you nor does it provide debugging utilities. i myself consider this a benefit, but it's up to your judgement.