C# Code navigation for Neovim that decompiles through references using Roslyn and IlSpy Telescope.
Navigating from solction source code to decompiled code
Navigating directly through solution assemblies
Installation Steps
Starting the back end.
This is what I am currently using to configure the plugin
local function decompiler_status() return require('csdecompile').GetSolutionLoadingStatus() end local function decompiler_operation_status() return require('csdecompile').GetCurrentOperationMessage() end require('lualine').setup { options = { refresh = { statusline = 1000, }, theme = 'gruvbox_dark' }, sections = { lualine_a = {'mode'}, lualine_b = {'branch', 'diff', 'diagnostics'}, lualine_c = {'filename'}, lualine_x = { { decompiler_status, color = require('csdecompile').GetSolutionLoadingColor }, { decompiler_operation_status, color = require('csdecompile').GetOperationStatusColor }, 'encoding', 'fileformat', 'filetype'}, lualine_y = {'progress'}, lualine_z = {'location'} }, inactive_sections = { lualine_a = {}, lualine_b = {}, lualine_c = {'filename'}, lualine_x = {'location'}, lualine_y = {}, lualine_z = {} }, tabline = {}, winbar = {}, inactive_winbar = {}, extensions = {} } require('csdecompile').Setup({ logLevel = 'debug' }) require('csdecompile.stacktrace').setup()
These are the mappings that I am currently using in my cs.lua
vim.keymap.set("n", "<leader>gd", function() require('csdecompile').StartDecompileGotoDefinition() end, { buffer=true }) vim.keymap.set("n", "<leader>fu", function() require('csdecompile').StartFindUsages() end, { buffer=true }) vim.keymap.set("n", "<leader>fi", function() require('csdecompile').StartFindImplementations() end, { buffer=true }) vim.keymap.set("n", "<leader>tm", function() require('csdecompile').StartGetTypeMembers() end, { buffer=true }) vim.keymap.set("n", "<leader><leader>", function() require('csdecompile').StartGetSymbolName() end, { buffer=true }}Experimental Nuget Support
I find this useful when working in a c# microservices environment where the services are deployed via nuget packages. When navigating code and I hit a service boundary it is really helpful to add the package for that service to the workspace and start navigating through its decompiled source alongside the original service. Or it is ocasionally helpful to download a package from nuget.org and navigate through it to get a understanding of its internals.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4