Skip to content

ksyasuda/lsp_lines.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

Just a clone of this repo, created by Hugo Osvaldo Barrera, and is hosted on sourcehut.

This repo was originally created for compatability with vim-plug; however, I've since learned #1 that vim-plug is able to handle any valid git url, so there is no need for this repository to exist

I will keep the repo up for some time to provide backwards compatability with old configurations making use of this repo, as well as providing some small amount of visibility to this project

lsp_lines.nvim

lsp_lines is a simple neovim plugin that renders diagnostics using virtual lines on top of the real line of code.

A screenshot of the plugin in action

Font is Fira Code, a classic. Theme is tokyonight.nvim.

Background

LSPs provide lots of useful diagnostics for code (typically: errors, warnings, linting). By default they're displayed using virtual text at the end of the line which is in many cases good enough, but often there's more than one diagnostic per line. It's also quite common to have more than one diagnostic per line, but again, there's no handy way to read the whole thing.

lsp_lines solves this issue.

Installation

Using vim-plug

Plug 'ksyasuda/lsp_lines.nvim'

Using packer.nvim (should probably be registered after lspconfig):

With packer.nvim

Using packer.nvim (this should probably be registered after lspconfig):

use({
  "https://github.com/ksyasuda/lsp_lines.nvim",
  config = function()
    require("lsp_lines").setup()
  end,
})

With git

You can algo just clone the repo into neovim's plug-in directory:

mkdir -p $HOME/.local/share/nvim/site/pack/plugins/start/
cd $HOME/.local/share/nvim/site/pack/plugins/start/
git clone https://github.com/ksyasuda/lsp_lines.nvim

And then in init.lua:

require("lsp_lines").setup()

Setup

It's recommended to also remove the regular virtual text diagnostics to avoid pointless duplication:

-- Disable virtual_text since it's redundant due to lsp_lines.
vim.diagnostic.config({
  virtual_text = false,
})

Usage

This plugin's functionality can be disabled with:

vim.diagnostic.config({ virtual_lines = false })

And it can be re-enabled via:

vim.diagnostic.config({ virtual_lines = true })

To show virtual lines only for the current line's diagnostics:

vim.diagnostic.config({ virtual_lines = { only_current_line = true } })

A helper is also provided to toggle, which is convenient for mappings:

vim.keymap.set(
  "",
  "<Leader>l",
  require("lsp_lines").toggle,
  { desc = "Toggle lsp_lines" }
)

Contributing

Development

It would be nice to show connecting lines when there's relationship between diagnostics (as is the case with rust_analyzer). Oh perhaps surface them via hover().

Licence

This project is licensed under the ISC licence. See LICENCE for more details.