m4xshen/smartcolumn.nvim

github github
bars-and-lines
stars 249
issues 3
subscribers 3
forks 12
CREATED

2023-02-17

UPDATED

2 months ago


demo

📃 Introduction

A Neovim plugin hiding your colorcolumn when unneeded.

⚙️ Features

The colorcolumn is hidden as default, but it appears after one of lines in the scope exceeds the colorcolumn value you set.

You can:

  • hide colorcolumn for specific filetype
  • set custom colorcolumn value for different filetype
  • specify the scope where the plugin should work

📦 Installation

  1. Install via your favorite package manager.
{
  "m4xshen/smartcolumn.nvim",
  opts = {}
},
use "m4xshen/smartcolumn.nvim"
Plug "m4xshen/smartcolumn.nvim"
  1. Setup the plugin in your init.lua. This step is not needed with lazy.nvim if opts is set as above.
require("smartcolumn").setup()

🔧 Configuration

You can pass your config table into the setup() function or opts if you use lazy.nvim.

The available options:

  • colorcolumn (strings or table) : screen columns that are highlighted
    • "80" (default)
    • { "80", "100" }
  • disabled_filetypes (table of strings) : the colorcolumn will be disabled under the filetypes in this table
    • { "help", "text", "markdown" } (default)
    • { "NvimTree", "lazy", "mason", "help", "checkhealth", "lspinfo", "noice", "Trouble", "fish", "zsh"}

      [!NOTE] You can use :set filetype? to check the filetype of current buffer.

  • scope (strings): the plugin only checks whether the lines within scope exceed colorcolumn
    • "file" (default): current file
    • "window": visible part of current window
    • "line": current line
  • custom_colorcolumn (table or function returning string): custom colorcolumn values for different filetypes
    • {} (default)
    • { ruby = "120", java = { "180", "200"} }
    • you can also pass a function to handle more complicated logic:
    custom_colorcolumn = function ()
       return "100"
    end
    

Default config

local config = {
   colorcolumn = "80",
   disabled_filetypes = { "help", "text", "markdown" },
   custom_colorcolumn = {},
   scope = "file",
}