Skip to content

nickkadutskyi/jb.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎨 JB for Neovim

Color scheme for Neovim, inspired by JetBrains IDEs.

Dark Light
dark-js light-js

Features

  • Supports both light and dark themes
  • Terminal colors
  • Lualine theme included
  • Lualine component for a Navigation Bar similar to JetBrains IDEs but only for dir path part
  • Generates ProjectColor highlight group based on the path
  • Generates highlights for icons JBIcon<Kind>
  • Provides a table with icons visually similar to JB's ones
Supported Languages
Language Syntax Treesitter Semantic
.ignore Files n/a ✅ (gitignore) n/a
ApacheConfig n/a n/a
BibTeX ⚠️ ✅ (bibtex) n/a
Blade n/a ✅ (EmranMR/tree-sitter-blade) n/a
C/C++ ⚠️ ✅ (c,cpp) n/a
CSS ⚠️ ✅ (css) n/a
EditorConfig n/a ✅ (editorconfig) n/a
Go ⚠️ ✅ (go) ✅ (gopls)
Go Template ⚠️ ✅ (gotmpl) n/a
GraphQL ⚠️ ✅ (graphql) n/a
HTML ⚠️ ✅ (html) n/a
Ini ⚠️ ✅ (ini) n/a
Java ⚠️ ✅ (java, javadoc) ✅ (jdtls)
JavaScript ⚠️ ✅ (javascript) ✅ (ts_ls)
JSON ✅ (json) n/a
LaTeX ⚠️ ✅ (latex) n/a
Lua ⚠️ ✅ (lua,luadoc) ✅ (lua_ls)
Markdown ⚠️ ✅ (markdown,markdown_inline) n/a
Nix ⚠️ ✅ (nix) ✅ (nil_lsp)
PHP ⚠️ ✅ (php,phpdoc) n/a
Python ⚠️ ✅ (python) n/a
RegExp ⚠️ ✅ (regex) n/a
Ruby ⚠️ ✅ (ruby) ✅ (ruby_lsp)
Rust ⚠️ ✅ (rust) n/a
Sass/SCSS ⚠️ ✅ (scss) n/a
Shell Script ⚠️ ✅ (bash) n/a
TOML ⚠️ ✅ (toml) n/a
Twig n/a ✅ (twig) n/a
TypeScript ⚠️ ✅ (typescript) ✅ (ts_ls)
TSX/JSX ⚠️ ✅ (tsx) ✅ (ts_ls)
XML ⚠️ ✅ (xml) n/a
YAML ⚠️ ✅ (yaml) n/a
Zig ⚠️ ✅ (zig) ✅ (zls)
Supported Plugins
Plugin Source
avante.nvim n/a
blink.cmp n/a
copilot.vim n/a
diffvie.nvim n/a
fzf-lua n/a
gitsigns.nvim n/a
indent-blankline.nvim n/a
neogit n/a
netrw.vim n/a
nvim-cmp n/a
nvim-notify n/a
nvim-scrollbar n/a
snacks.nvim n/a
supermaven-nvim n/a
telescope.nvim n/a
trouble.nvim n/a

Installation

Install the theme with your preferred package manager, such as folke/lazy.nvim:

return {
    "nickkadutskyi/jb.nvim",
    lazy = false,
    priority = 1000,
    opts = {},
    config = function()
        -- require("jb").setup({transparent = true})
        vim.cmd("colorscheme jb")
    end,
}

Plugin Notes

hrsh7th/nvim-cmp

If you use custom view for entries (opts>view>entries>name) cmp creates a custom window instead of native built-in popup. To improve the view you can link highlight groups like this:

window = {
    completion = cmp.config.window.bordered({
        winhighlight = "Normal:Pmenu,FloatBorder:DialogFloatBorder,CursorLine:PmenuSel,Search:None",
    }),
    documentation = cmp.config.window.bordered({
        winhighlight = "Normal:Pmenu,FloatBorder:DialogFloatBorder,CursorLine:PmenuSel,Search:None",
    }),
},

You can have any config just make sure Normal:Pmenu and CursorLine:PmenuSel is present in winhighlight.

Usage

vim.cmd("colorscheme jb")
colorscheme jb

Change light/dark theme:

vim.o.background = "light"
set background=light

Configuration

Important

Set the configuration BEFORE loading the color scheme colorscheme jb.

Default Options
---@class jb.Config
M.defaults = {
    -- Disable bold or italic for all highlights
    disable_hl_args = {
        bold = false,
        italic = false,
    },
    -- Control snacks.nvim related styles
    snacks = {
        explorer = {
            -- Enable folke/snacks.nvim styling for explorer
            enabled = true,
        },
    },
    telescope = {
        -- Enable telescope.nvim styling
        enabled = true,
    },
    -- Enable this to remove background from Normal and NormalNC
    transparent = false,
}

Overriding Colors & Highlight Groups

n/a

Extras

Extra color configs for Kitty, Alacritty, Ghostty can be found in extras. To use them, refer to their respective documentation.

Contributing

n/a