/ZeoVim

Personal Neovim config with an emphasis on C# and typescript development.

Primary LanguageLua

ZeoVim

image

My neovim config. Oriented around dotnet and typescript development on a windows device.

โœจ Features

  • ๐Ÿš€ Lazy package manager for freaky fast start.
  • ๐Ÿ› ๏ธ LSP - including omnisharp for dotnet development.
  • ๐Ÿ”ฌ DAP - including netcoredbg for dotnet debugging.
  • ๐Ÿงช Neotest for running unit tests.
  • ๐Ÿงฑ Mason to allow auto install of dap, lsp, and formatters such as csharpier.
  • ๐Ÿ›ฉ๏ธ Copilot for an AI assistant.
  • ๐Ÿ‘จโ€๐Ÿ”ฌ Path helper utilites to wire up omnisharp and netcoredbg.
    • ๐Ÿช› Optional static configuration of dll, csproj and debug cwd for projects. Allowing a smooooth debugging experience.

๐Ÿ”ง Setup

๐Ÿ“ฆ Installation of Dependencies

See install script.

โšก๏ธ Installation of Config

Clone config into %USERPROFILE%\AppData\Local\nvim

  • git clone git@github.com:Wiebesiek/ZeoVim.git

๐Ÿงฑ Mason

Mason is a package manager that allows for the installation of LSP, DAP, and formatters. It is used in this config to install omnisharp and csharpier. Currently, the most recent version of omnisharp is broken for nvim. Install version 1.39.8 with the following command: MasonInstall omnisharp@v1.39.8

๐ŸŽจ Aesthetics

  • ๐Ÿ”ค Font - Comic shans nerd font in mono.
  • ๐ŸŸค Colorscheme - Gruvbox
  • ๐Ÿ’ป Terminal - Windows terminal with gruvbox friendly background.

๐Ÿช› Static LSP and DAP Configuration For Projects

In init.lua there is protected call to zeovim.secrets.path_finder. Create a file and make a call to utilities.path_finder.setup with the necessary config.

Ex: zeovim\secrets\path_finder.lua

require('zeovim.utilities.path_finder').setup({
  projects = {
    {
      base_path = "C:/Foo",
      dotnet_proj_file = "C:/Foo/Foo.csproj",
      dotnet_dll_path = "C:/Foo/bin/Debug/net6.0/foo.dll",
      dotnet_debug_cwd = "C:/Foo" -- Useful for large, multi-project debugging
    }
  }
})

In zeovim\config\dap.lua, the path_finder is called to use these values if the current filepath that is being debugged starts with C:\Foo.

dap.adapters.coreclr = {
  type = 'executable',
  command = dotnet_ph.GetNetCoreDbgPath(),
  args = { '--interpreter=vscode' },
  options = {
    detached = false,
    cwd = dotnet_ph.GetDebugCwd(),
  }
}

A Word On Versions

I use this config on a windows machine and use tools for dotnet development, namely Omnisharp and Csharpier. This tooling can be susceptible to bugs that may exist in the nightly versions of Neovim as there are fewer people with similar setups. Thankfully, gone are the days where seemingly every plugin requested that you be on a nightly build. For these reasons, the best dotnet experience will be on the latest stable release of Neovim.