/LunarChad

A configured version of LunarVim heavily inspired by the look and feel of NvChad.

Primary LanguageLuaGNU General Public License v3.0GPL-3.0

LunarChad

License Neovim Minimum Version

Made with Lua

The goal of this project is to combine both LunarVim and NvChad, getting the best parts from each.

  • LunarVim has a great default configuration, with LSP + project support, right out of the box.

  • NvChad looks stunning and comes with a variety of built in themes to choose from.

LunarChad is a LunarVim configuration stylized to look like NvChad.

Showcase

Installation

LunarChad is a configured version of LunarVim. For more information please read the LunarVim documentation at lunarvim.org. Make sure you have the release version of Neovim (0.6).

bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/master/utils/installer/install.sh)

If you already have a lvim config you might want to back it up first.

mv ~/.config/lvim/ ~/.config/lvim.old/

Clone LunarChad to your lvim configuration folder located at ~/.config/lvim/.

git clone https://github.com/ViktorBusk/LunarChad.git ~/.config/lvim/

Start LunarVim by entering lvim inside a terminal. Install the required plugins with the command :PackerSync.

Configuration

To configure LunarChad simply change the contents of ~/.config/lvim/config.lua. By default, this file is used to source necessary LunarChad modules. Configurations are for the most part just tweaks to LunarVims built in customization layer: lvim. LunarChad then provides additional settings through the nested table: lvim.custom. It mainly consists of data regarding appearance (colorscheme, bufferline, statusline etc.) and is defined in ~/.config/lvim/lua/custom/options.lua.

Example Config (default):

-- ~/.config/lvim/lua/custom/options.lua

lvim.custom = {
  tab = 2, -- tabline, swhiftwidth, tabstop
  theme = "onedarker",
  -- TODO: Add option to use default NvChad mappings
  -- Maybe add option to provide a "chadrc" and/or "init" from an existing NvChad config
  yank_highlight = false, -- Highlight after yanking text
  doxygen_highlight = {
    enable = false, -- Doxygen highlights is still used if treesitter is not active in the current buffer
    bold_highlight = false,
  },
  base16 = {
    -- Overrides the current theme (lvim.custom.theme)
    enable = true, -- If set to "false", "lvim.custom.theme" will be used instead.
    italic_comments = false,
    document_highlight = {
      enable = false,
      bold_highlight = false,
    },
    cursor_line = false,
    theme = "onedark" -- https://github.com/NvChad/nvim-base16.lua/tree/master/lua/hl_themes
  },
  statusline = {
    diagnostics = { enable = true },
    lsp_progress = { enable = true },
    hidden = { "help", "dashboard", "NvimTree", "terminal" },
    shortline = true, -- Show short statusline on small screens
    shown = {},
    style = "default" -- default, round , slant , block , arrow
  },
  bufferline = {
    close = {
      next = "cycle", -- How to retrieve the next buffer
      quit = true -- Exit when last buffer is deleted
    },
  }
}

-- General
lvim.log.level = "warn"

-- Termnial
lvim.builtin.terminal.active = true
lvim.builtin.terminal.direction = "horizontal"
lvim.builtin.terminal.size = 15
lvim.builtin.terminal.shade_terminals = true

-- Change the timeoutlen for whichkey to show
vim.opt.timeoutlen = 400

-- Show/hide eye candy
vim.opt.showmode = true
vim.opt.ruler = false
vim.opt.cmdheight = 1

If you want to create a custom palette for a colorscheme, create a lua file and place it in ~/.config/lvim/lua/colors/palettes/. Make sure the file and the colorscheme have the same name and all required colors are defined. You can use ~/.config/lvim/lua/colors/palettes/default.luaas reference.

Essential Files

  • General Options: ~/.config/lvim/lua/custom/options.lua
  • LSP: ~/.config/lvim/lua/custom/lsp.lua
  • Keybindings: ~/.config/lvim/lua/custom/keymappings.lua

Please feel free to edit or make any changes you deem necessary. For more information visit lunarvim.org or nvchad.github.io.

Author

Viktor Busk

Acknowledgments

License

This project is licensed under the GNU General Public License v3.0.

License