├── lua ├── themes │ ├── nord.lua │ ├── monokai.lua │ ├── bluewery.lua │ ├── gruvbox.lua │ ├── night-owl.lua │ ├── onedark.lua │ ├── everforest.lua │ ├── gruvbox-material.lua │ └── lualine │ │ ├── minimaldark.lua │ │ ├── custom.lua │ │ ├── gruvbox-material.lua │ │ ├── nord.lua │ │ ├── bluewery.lua │ │ ├── gruvbox.lua │ │ ├── monokai.lua │ │ ├── onedark.lua │ │ ├── everforest.lua │ │ └── night-owl.lua ├── config │ ├── plug │ │ ├── nvimcolorizer.lua │ │ ├── hop.lua │ │ ├── autopairs.lua │ │ ├── ultisnips.lua │ │ ├── cmp.lua │ │ ├── nvimcomment.lua │ │ ├── init.lua │ │ ├── bufferline.lua │ │ ├── treesitter.lua │ │ ├── lualine.lua │ │ ├── tabline.lua │ │ ├── telescope.lua │ │ ├── dashboard.lua │ │ ├── lspkind.lua │ │ ├── gitsigns.lua │ │ └── nvimtree.lua │ ├── modules │ │ └── init.lua │ └── lsp │ │ ├── init.lua │ │ ├── lua_lsp.lua │ │ └── setup.lua ├── autocmds.lua ├── options.lua ├── plug.lua ├── lib │ └── scheme.lua └── keymap.lua ├── .gitignore ├── .gitmodules ├── .stylua.toml ├── .github ├── auto-comment.yml └── ISSUE_TEMPLATE │ └── issue-template.md ├── init.lua ├── doc ├── keybinds.md └── helpdoc.md ├── README.md ├── CONTRIBUTING.md └── LICENSE /lua/themes/nord.lua: -------------------------------------------------------------------------------- 1 | vim.opt.termguicolors = true 2 | require('nord').set() 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | plugin/* 2 | spell/* 3 | undo/* 4 | snips/* 5 | lua/config/modules/* 6 | -------------------------------------------------------------------------------- /lua/config/plug/nvimcolorizer.lua: -------------------------------------------------------------------------------- 1 | require('colorizer').setup(nil, { names = false }) 2 | -------------------------------------------------------------------------------- /lua/themes/monokai.lua: -------------------------------------------------------------------------------- 1 | vim.g.termguicolors = true 2 | vim.cmd('colorscheme monokai') 3 | -------------------------------------------------------------------------------- /lua/config/modules/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | -- some testing for user-contrib modules 3 | } 4 | -------------------------------------------------------------------------------- /lua/themes/bluewery.lua: -------------------------------------------------------------------------------- 1 | vim.opt.termguicolors = true 2 | vim.cmd('colorscheme bluewery') 3 | -------------------------------------------------------------------------------- /lua/themes/gruvbox.lua: -------------------------------------------------------------------------------- 1 | vim.opt.termguicolors = true 2 | vim.cmd('colorscheme gruvbox') 3 | -------------------------------------------------------------------------------- /lua/themes/night-owl.lua: -------------------------------------------------------------------------------- 1 | vim.g.termguicolors = true 2 | vim.cmd('colorscheme night-owl') 3 | -------------------------------------------------------------------------------- /lua/themes/onedark.lua: -------------------------------------------------------------------------------- 1 | vim.opt.termguicolors = true 2 | vim.cmd('colorscheme onedark') 3 | -------------------------------------------------------------------------------- /lua/config/plug/hop.lua: -------------------------------------------------------------------------------- 1 | require('hop').setup({ keys = 'etovxqpdygfblzhckisuran', term_seq_bias = 0.5 }) 2 | -------------------------------------------------------------------------------- /lua/config/lsp/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | require('config.lsp.setup'), 3 | require('config.lsp.lua_lsp'), 4 | } 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "doc/wiki"] 2 | path = doc/wiki 3 | url = https://github.com/Theory-of-Everything/nii-nvim.wiki.git 4 | -------------------------------------------------------------------------------- /lua/config/plug/autopairs.lua: -------------------------------------------------------------------------------- 1 | require('nvim-autopairs').setup({ 2 | disable_filetype = { 'telescopeprompt', 'vim' }, 3 | }) 4 | -------------------------------------------------------------------------------- /lua/themes/everforest.lua: -------------------------------------------------------------------------------- 1 | vim.g.everforest_background = 'hard' 2 | vim.o.background = 'dark' 3 | vim.cmd('colorscheme everforest') 4 | -------------------------------------------------------------------------------- /lua/themes/gruvbox-material.lua: -------------------------------------------------------------------------------- 1 | vim.g.gruvbox_material_background = 'medium' 2 | vim.o.background = 'dark' 3 | vim.cmd('colorscheme gruvbox-material') 4 | -------------------------------------------------------------------------------- /.stylua.toml: -------------------------------------------------------------------------------- 1 | column_width = 120 2 | line_endings = "Unix" 3 | indent_type = "Tabs" 4 | indent_width = 4 5 | quote_style = "AutoPreferSingle" 6 | no_call_parentheses = false 7 | -------------------------------------------------------------------------------- /lua/config/plug/ultisnips.lua: -------------------------------------------------------------------------------- 1 | local g = vim.g 2 | 3 | -- snippet tab into regions 4 | g.UltiSnipsJumpForwardTrigger = '' 5 | g.UltiSnipsJumpBackwardTrigger = '' 6 | 7 | -- edit snippets file in vertical window 8 | g.UltiSnipsEditSplit = 'vertical' 9 | 10 | g.UltiSnipsSnippetDirectories = { 11 | "snips" 12 | } 13 | -------------------------------------------------------------------------------- /lua/autocmds.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | 3 | autocmds.lua 4 | This file defines various autocmds that nii-nvim uses 5 | 6 | --]] 7 | 8 | local cmd = vim.cmd 9 | 10 | -- Don't show line numbers on terminal window 11 | cmd([[ au TermOpen term://* setlocal nonumber norelativenumber | setfiletype terminal ]]) 12 | 13 | -- # vim: foldmethod=marker 14 | -------------------------------------------------------------------------------- /lua/config/plug/cmp.lua: -------------------------------------------------------------------------------- 1 | -- Setup nvim-cmp. 2 | local cmp = require('cmp') 3 | local keymap = require('keymap') 4 | 5 | cmp.setup({ 6 | snippet = { 7 | expand = function(args) 8 | vim.fn['UltiSnips#Anon'](args.body) 9 | end, 10 | }, 11 | mapping = keymap.cmp_mappings, 12 | sources = cmp.config.sources({ 13 | { name = 'nvim_lsp', priority = 1 }, 14 | { name = 'ultisnips' }, 15 | }, { 16 | { name = 'buffer' }, 17 | { name = 'path' }, 18 | }), 19 | }) 20 | -------------------------------------------------------------------------------- /lua/config/plug/nvimcomment.lua: -------------------------------------------------------------------------------- 1 | require('nvim_comment').setup({ 2 | -- Linters prefer comment and line to have a space in between markers 3 | marker_padding = true, 4 | -- should comment out empty or whitespace only lines 5 | comment_empty = true, 6 | -- Should key mappings be created 7 | create_mappings = false, 8 | -- Normal mode mapping left hand side 9 | line_mapping = 'gcc', 10 | -- Visual/Operator mapping left hand side 11 | operator_mapping = 'gc', 12 | -- Hook function to call before commenting takes place 13 | hook = nil, 14 | }) 15 | -------------------------------------------------------------------------------- /.github/auto-comment.yml: -------------------------------------------------------------------------------- 1 | issuesOpened: > 2 | # Please do NOT use github for submitting issues!!! 3 | 4 | Instead **Please** submit bugs to the tracker on sr.ht 5 | [bug tracker](https://todo.sr.ht/~theorytoe/nii-nvim-bugs/) 6 | 7 | issues on github will be automatically replied to with this information 8 | I will probably not check issues submitted on github. 9 | 10 | You can also send an email to the mailing list: 11 | [lists.sr.ht/~theorytoe/nii-nvim-discuss](https://lists.sr.ht/~theorytoe/nii-nvim-discuss) if you have any questions. 12 | -------------------------------------------------------------------------------- /lua/config/plug/init.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | This init file loads all of the plugin configuration files 3 | --]] 4 | 5 | return { 6 | require('config.plug.hop'), 7 | require('config.plug.cmp'), 8 | require('config.plug.lualine'), 9 | require('config.plug.lspkind'), 10 | require('config.plug.tabline'), 11 | require('config.plug.nvimtree'), 12 | require('config.plug.gitsigns'), 13 | require('config.plug.ultisnips'), 14 | require('config.plug.dashboard'), 15 | require('config.plug.autopairs'), 16 | require('config.plug.telescope'), 17 | require('config.plug.nvimcomment'), 18 | require('config.plug.nvimcolorizer'), 19 | require('config.plug.treesitter'), 20 | } 21 | 22 | -- # vim foldmethod=marker 23 | -------------------------------------------------------------------------------- /lua/config/plug/bufferline.lua: -------------------------------------------------------------------------------- 1 | require('bufferline').setup({ 2 | options = { 3 | indicator_icon = '▎', 4 | buffer_close_icon = '', 5 | modified_icon = '●', 6 | close_icon = '', 7 | left_trunc_marker = '', 8 | right_trunc_marker = '', 9 | numbers = 'none', 10 | -- mappings = true, 11 | close_command = 'bdelete! %d', 12 | right_mouse_command = 'bdelete! %d', 13 | left_mouse_command = 'buffer %d', 14 | middle_mouse_command = nil, 15 | show_close_icon = 'false', 16 | seperator_style = 'padded_slant', 17 | diagnostics = 'nvim_lsp', 18 | diagnostics_indicator = function(count, level, diagnostics_dict, context) 19 | return '(' .. count .. ')' 20 | end, 21 | }, 22 | }) 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/issue-template.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Issue Template 3 | about: A simple issue template 4 | title: "[ISSUE]: " 5 | labels: 'bug' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | # Please do NOT use github for submitting issues!!! 12 | 13 | Instead **Please** submit bugs to the tracker on sr.ht 14 | [bug tracker](https://todo.sr.ht/~theorytoe/nii-nvim-bugs/) 15 | 16 | issues on github will be automatically replied to with this information 17 | I will probably not check issues submitted on github. 18 | 19 | You can also send an email to the mailing list: [lists.sr.ht/~theorytoe/nii-nvim-discuss](https://lists.sr.ht/~theorytoe/nii-nvim-discuss) 20 | if you have any questions. 21 | -------------------------------------------------------------------------------- /lua/config/plug/treesitter.lua: -------------------------------------------------------------------------------- 1 | require('nvim-treesitter.configs').setup({ 2 | -- One of "all", "maintained" (parsers with maintainers), or a list of languages 3 | ensure_installed = 'maintained', 4 | 5 | -- Install languages synchronously (only applied to `ensure_installed`) 6 | sync_install = false, 7 | 8 | -- List of parsers to ignore installing 9 | ignore_install = {}, 10 | 11 | highlight = { 12 | -- `false` will disable the whole extension 13 | enable = true, 14 | 15 | -- list of language that will be disabled 16 | disable = {}, 17 | 18 | -- Setting this to true will run `:h syntax` and tree-sitter at the same time. 19 | -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). 20 | -- Using this option may slow down your editor, and you may see some duplicate highlights. 21 | -- Instead of true it can also be a list of languages 22 | additional_vim_regex_highlighting = false, 23 | }, 24 | }) 25 | -------------------------------------------------------------------------------- /lua/config/plug/lualine.lua: -------------------------------------------------------------------------------- 1 | -- load scheme wrapper library 2 | local scheme = require('lib.scheme') 3 | 4 | -- initialize vars for schemes 5 | local lualine_theme = nil 6 | 7 | -- if a scheme is not bundled with lualine, look for a theme file 8 | if scheme.is_lualine_default == false then 9 | lualine_theme = require('themes.lualine.' .. scheme.scheme) 10 | else 11 | lualine_theme = scheme.scheme 12 | end 13 | 14 | -- lualine setup config 15 | require('lualine').setup({ 16 | options = { 17 | 18 | section_separators = { left = scheme.lualine_style_left, right = scheme.lualine_style_right }, 19 | component_separators = { left = scheme.lualine_seperator_left, right = scheme.lualine_seperator_right }, 20 | theme = lualine_theme, 21 | }, 22 | sections = { 23 | lualine_a = { 'mode' }, 24 | lualine_b = { 'branch' }, 25 | lualine_c = { 'filename' }, 26 | lualine_x = { 'encoding', 'fileformat', 'filetype' }, 27 | lualine_y = { 'progress' }, 28 | lualine_z = { 'location' }, 29 | }, 30 | }) 31 | -------------------------------------------------------------------------------- /lua/config/plug/tabline.lua: -------------------------------------------------------------------------------- 1 | local scheme = require('lib.scheme') 2 | 3 | require('tabline').setup({ 4 | -- Defaults configuration options 5 | enable = true, 6 | options = { 7 | -- If lualine is installed tabline will use separators configured in lualine by default. 8 | -- These options can be used to override those settings. 9 | section_separators = { scheme.tabline_style_left, scheme.tabline_style_right }, 10 | component_separators = { scheme.tabline_seperator_left, scheme.tabline_seperator_right }, 11 | max_bufferline_percent = 66, -- set to nil by default, and it uses vim.o.columns * 2/3 12 | show_tabs_always = false, -- this shows tabs only when there are more than one tab or if the first tab is named 13 | show_devicons = true, -- this shows devicons in buffer section 14 | show_bufnr = false, -- this appends [bufnr] to buffer section, 15 | show_filename_only = true, -- shows base filename only instead of relative path in filename 16 | }, 17 | }) 18 | 19 | -- # vim foldmethod=marker 20 | -------------------------------------------------------------------------------- /init.lua: -------------------------------------------------------------------------------- 1 | -- Load All packer plugins 2 | require('plug') 3 | 4 | -- load keybindings and editor options 5 | require('keymap') 6 | require('options') 7 | require('autocmds') 8 | 9 | -- load theme loading library 10 | local scheme = require('lib.scheme') 11 | 12 | -- Load Themes (loads everforest theme by default) 13 | -- load editor color theme 14 | -- scheme.load_scheme('everforest') 15 | 16 | -- load statusline theme 17 | -- scheme.load_lualine_scheme('everforest') 18 | 19 | -- if you don't want to specify the theme for each component, 20 | -- you can use the following function 21 | scheme.load_shared_scheme('everforest') 22 | 23 | -- set the statusline and tabline style 24 | -- you can change the characters used 25 | -- for seperators in the statusline and tabline 26 | -- for instance, we can use bubble characters 27 | -- scheme.load_global_style({'', ''}, {'', ''}) 28 | 29 | -- load configurations 30 | -- config.plug loads plugin configurations 31 | -- config.lsp handles al lsp server configuration 32 | -- config.module loads user contrib files (work in progress) 33 | require('config.lsp') 34 | require('config.plug') 35 | require('config.modules') 36 | 37 | -- # vim foldmethod=marker 38 | -------------------------------------------------------------------------------- /lua/config/plug/telescope.lua: -------------------------------------------------------------------------------- 1 | require('telescope').setup({ 2 | defaults = { 3 | prompt_prefix = '=> ', 4 | selection_caret = ' > ', 5 | entry_prefix = ' ', 6 | -- borderchars = { '═', '│', '═', '│', '╒', '╕', '╛', '╘' }, 7 | sorting_strategy = "ascending", 8 | 9 | layout_strategy = 'bottom_pane', 10 | layout_config = { 11 | height = 25, 12 | }, 13 | borderchars = { 14 | prompt = { '═', ' ', ' ', ' ', '═', '═', ' ', ' ' }, 15 | results = { ' ' }, 16 | preview = { ' ', ' ', ' ', '│', '│', ' ', ' ', '│' }, 17 | }, 18 | }, 19 | extensions = { 20 | fzf = { 21 | fuzzy = true, 22 | override_genearic_sorter = false, 23 | override_file_sorter = true, 24 | case_mode = 'smart_case', 25 | }, 26 | }, 27 | }) 28 | 29 | -- ignore files that are larger than a certain size 30 | local previewers = require('telescope.previewers') 31 | local new_maker = function(filepath, bufnr, opts) 32 | opts = opts or {} 33 | 34 | filepath = vim.fn.expand(filepath) 35 | vim.loop.fs_stat(filepath, function(_, stat) 36 | if not stat then 37 | return 38 | end 39 | if stat.size > 100000 then 40 | return 41 | else 42 | previewers.buffer_previewer_maker(filepath, bufnr, opts) 43 | end 44 | end) 45 | end 46 | 47 | require('telescope').setup({ 48 | defaults = { 49 | buffer_previewer_maker = new_maker, 50 | }, 51 | }) 52 | 53 | require('telescope').load_extension('fzf') 54 | -------------------------------------------------------------------------------- /lua/options.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | File for setting vim options 3 | 4 | vim.cmd is like executing a whole command 5 | vim.opt is like setting an opt 6 | --]] 7 | local cmd = vim.cmd 8 | local opt = vim.opt 9 | local g = vim.g 10 | local o = vim.o 11 | 12 | cmd('syntax enable') -- syntax highlighting 13 | o.rnu = true -- relative line numbers 14 | o.nu = true -- line numbers 15 | o.mouse = 'a' -- mouse controls 16 | o.cursorline = true -- highlight line cursor is in 17 | o.modeline = true -- enable modlines for files 18 | o.modelines = 5 -- number of modelines 19 | 20 | o.errorbells = false -- auditory stimulation annoying 21 | 22 | opt.ruler = false -- how line number/column 23 | opt.hidden = true -- keeps buffers loaded in the background 24 | opt.ignorecase = true 25 | opt.scrolloff = 8 -- buffer starts scrolling 8 lines from the end of view 26 | opt.incsearch = true 27 | 28 | 29 | -- Tab settings 30 | o.tabstop = 4 -- 4 tabstop 31 | o.shiftwidth = 4 32 | o.expandtab = false -- tabs -> spaces 33 | o.smartindent = true -- nice indenting 34 | 35 | o.foldmethod = 'marker' -- set fold method to marker 36 | 37 | -- backup/swap files 38 | opt.swapfile = false -- have files saved to swap 39 | opt.undofile = true -- file undo history preserved outside current session 40 | 41 | -- new win split options 42 | opt.splitbelow = true 43 | opt.splitright = true 44 | o.completeopt = 'menuone,noselect' 45 | 46 | vim.opt.termguicolors = true 47 | 48 | -- # vim foldmethod=marker 49 | -------------------------------------------------------------------------------- /lua/themes/lualine/minimaldark.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (c) 2021 Jnhtr 2 | -- MIT license, see LICENSE for more details. 3 | -- LuaFormatter off 4 | local colors = { 5 | font = '#ffffff', 6 | primary = '#3a3a3a', 7 | secondary = '#4e4e4e', 8 | background = '#262626', 9 | } 10 | --LuaFormatter on 11 | return { 12 | normal = { 13 | a = { bg = colors.primary, fg = colors.white, gui = 'bold' }, 14 | b = { bg = colors.secondary, fg = colors.white }, 15 | c = { bg = colors.background, fg = colors.white }, 16 | }, 17 | insert = { 18 | a = { bg = colors.primary, fg = colors.white, gui = 'bold' }, 19 | b = { bg = colors.secondary, fg = colors.white }, 20 | c = { bg = colors.background, fg = colors.white }, 21 | }, 22 | visual = { 23 | a = { bg = colors.primary, fg = colors.white, gui = 'bold' }, 24 | b = { bg = colors.secondary, fg = colors.white }, 25 | c = { bg = colors.background, fg = colors.white }, 26 | }, 27 | replace = { 28 | a = { bg = colors.primary, fg = colors.white, gui = 'bold' }, 29 | b = { bg = colors.secondary, fg = colors.white }, 30 | c = { bg = colors.background, fg = colors.white }, 31 | }, 32 | command = { 33 | a = { bg = colors.primary, fg = colors.white, gui = 'bold' }, 34 | b = { bg = colors.secondary, fg = colors.white }, 35 | c = { bg = colors.background, fg = colors.white }, 36 | }, 37 | inactive = { 38 | a = { bg = colors.primary, fg = colors.white, gui = 'bold' }, 39 | b = { bg = colors.secondary, fg = colors.white }, 40 | c = { bg = colors.background, fg = colors.white }, 41 | }, 42 | } 43 | -------------------------------------------------------------------------------- /lua/config/plug/dashboard.lua: -------------------------------------------------------------------------------- 1 | local g = vim.g 2 | 3 | g.dashboard_default_executive = 'telescope' 4 | g.dashboard_diable_statusline = 1 5 | 6 | g.dashboard_custom_header = { 7 | '┍━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┑', 8 | '│ ⣇⣿⠘⣿⣿⣿⡿⡿⣟⣟⢟⢟⢝⠵⡝⣿⡿⢂⣼⣿⣷⣌⠩⡫⡻⣝⠹⢿⣿⣷ │', 9 | '│ ⡆⣿⣆⠱⣝⡵⣝⢅⠙⣿⢕⢕⢕⢕⢝⣥⢒⠅⣿⣿⣿⡿⣳⣌⠪⡪⣡⢑⢝⣇ │', 10 | '│ ⡆⣿⣿⣦⠹⣳⣳⣕⢅⠈⢗⢕⢕⢕⢕⢕⢈⢆⠟⠋⠉⠁⠉⠉⠁⠈⠼⢐⢕⢽ │', 11 | '│ ⡗⢰⣶⣶⣦⣝⢝⢕⢕⠅⡆⢕⢕⢕⢕⢕⣴⠏⣠⡶⠛⡉⡉⡛⢶⣦⡀⠐⣕⢕ │', 12 | '│ ⡝⡄⢻⢟⣿⣿⣷⣕⣕⣅⣿⣔⣕⣵⣵⣿⣿⢠⣿⢠⣮⡈⣌⠨⠅⠹⣷⡀⢱⢕ │', 13 | '│ ⡝⡵⠟⠈⢀⣀⣀⡀⠉⢿⣿⣿⣿⣿⣿⣿⣿⣼⣿⢈⡋⠴⢿⡟⣡⡇⣿⡇⡀⢕ │', 14 | '│ ⡝⠁⣠⣾⠟⡉⡉⡉⠻⣦⣻⣿⣿⣿⣿⣿⣿⣿⣿⣧⠸⣿⣦⣥⣿⡇⡿⣰⢗⢄ │', 15 | '│ ⠁⢰⣿⡏⣴⣌⠈⣌⠡⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣬⣉⣉⣁⣄⢖⢕⢕⢕ │', 16 | '│ ⡀⢻⣿⡇⢙⠁⠴⢿⡟⣡⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⣵⣿ │', 17 | '│ ⡻⣄⣻⣿⣌⠘⢿⣷⣥⣿⠇⣿⣿⣿⣿⣿⣿⠛⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │', 18 | '│ ⣷⢄⠻⣿⣟⠿⠦⠍⠉⣡⣾⣿⣿⣿⣿⣿⣿⢸⣿⣦⠙⣿⣿⣿⣿⣿⣿⣿⣿⠟ │', 19 | '│ ⡕⡑⣑⣈⣻⢗⢟⢞⢝⣻⣿⣿⣿⣿⣿⣿⣿⠸⣿⠿⠃⣿⣿⣿⣿⣿⣿⡿⠁⣠ │', 20 | '│ ⡝⡵⡈⢟⢕⢕⢕⢕⣵⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣿⣿⣿⣿⣿⠿⠋⣀⣈⠙ │', 21 | '│ ⡝⡵⡕⡀⠑⠳⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⡠⡲⡫⡪⡪⡣ │', 22 | '┕━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┙', 23 | } 24 | 25 | g.dashboard_custom_section = { 26 | a = { description = { ' Find File ' }, command = 'Telescope find_files' }, 27 | b = { description = { ' Recents ' }, command = 'Telescope oldfiles' }, 28 | c = { description = { ' Find Word ' }, command = 'Telescope live_grep' }, 29 | d = { description = { 'ﱐ New File ' }, command = 'DashboardNewFile' }, 30 | e = { description = { ' Bookmarks ' }, command = 'Telescope marks' }, 31 | f = { description = { ' Open Help Doc ' }, command = 'view ~/.config/nvim/doc/helpdoc.md' }, 32 | } 33 | 34 | g.dashboard_custom_footer = { 35 | ' ', 36 | '▷ nii-nvim ◁', 37 | } 38 | -------------------------------------------------------------------------------- /lua/themes/lualine/custom.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (c) 2021 Jnhtr 2 | -- MIT license, see LICENSE for more details. 3 | -- LuaFormatter off 4 | local colors = { 5 | black = '#1c1e26', 6 | white = '#6C6F93', 7 | red = '#F43E5C', 8 | green = '#09F7A0', 9 | blue = '#25B2BC', 10 | yellow = '#F09383', 11 | gray = '#E95678', 12 | darkgray = '#1A1C23', 13 | lightgray = '#2E303E', 14 | inactivegray = '#1C1E26', 15 | } 16 | --LuaFormatter on 17 | return { 18 | normal = { 19 | a = { bg = colors.gray, fg = colors.black, gui = 'bold' }, 20 | b = { bg = colors.lightgray, fg = colors.white }, 21 | c = { bg = colors.darkgray, fg = colors.white }, 22 | }, 23 | insert = { 24 | a = { bg = colors.blue, fg = colors.black, gui = 'bold' }, 25 | b = { bg = colors.lightgray, fg = colors.white }, 26 | c = { bg = colors.darkgray, fg = colors.white }, 27 | }, 28 | visual = { 29 | a = { bg = colors.yellow, fg = colors.black, gui = 'bold' }, 30 | b = { bg = colors.lightgray, fg = colors.white }, 31 | c = { bg = colors.darkgray, fg = colors.white }, 32 | }, 33 | replace = { 34 | a = { bg = colors.red, fg = colors.black, gui = 'bold' }, 35 | b = { bg = colors.lightgray, fg = colors.white }, 36 | c = { bg = colors.darkgray, fg = colors.white }, 37 | }, 38 | command = { 39 | a = { bg = colors.green, fg = colors.black, gui = 'bold' }, 40 | b = { bg = colors.lightgray, fg = colors.white }, 41 | c = { bg = colors.darkgray, fg = colors.white }, 42 | }, 43 | inactive = { 44 | a = { bg = colors.inactivegray, fg = colors.lightgray, gui = 'bold' }, 45 | b = { bg = colors.inactivegray, fg = colors.lightgray }, 46 | c = { bg = colors.inactivegray, fg = colors.lightgray }, 47 | }, 48 | } 49 | -------------------------------------------------------------------------------- /lua/themes/lualine/gruvbox-material.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (c) 2021 Jnhtr 2 | -- MIT license, see LICENSE for more details. 3 | -- LuaFormatter off 4 | local colors = { 5 | black = '#32302f', 6 | white = '#d4be98', 7 | red = '#ea6962', 8 | green = '#a9b665', 9 | blue = '#7daea3', 10 | yellow = '#e78a4e', 11 | darkgray = '#32302f', 12 | gray = '#3a3735', 13 | lightgray = '#504945', 14 | inactivegray = '#3c3432', 15 | } 16 | --LuaFormatter on 17 | return { 18 | normal = { 19 | a = { bg = colors.white, fg = colors.black, gui = 'bold' }, 20 | b = { bg = colors.lightgray, fg = colors.white }, 21 | c = { bg = colors.darkgray, fg = colors.white }, 22 | }, 23 | insert = { 24 | a = { bg = colors.blue, fg = colors.black, gui = 'bold' }, 25 | b = { bg = colors.lightgray, fg = colors.white }, 26 | c = { bg = colors.darkgray, fg = colors.white }, 27 | }, 28 | visual = { 29 | a = { bg = colors.yellow, fg = colors.black, gui = 'bold' }, 30 | b = { bg = colors.lightgray, fg = colors.white }, 31 | c = { bg = colors.darkgray, fg = colors.white }, 32 | }, 33 | replace = { 34 | a = { bg = colors.red, fg = colors.black, gui = 'bold' }, 35 | b = { bg = colors.lightgray, fg = colors.white }, 36 | c = { bg = colors.darkgray, fg = colors.white }, 37 | }, 38 | command = { 39 | a = { bg = colors.green, fg = colors.black, gui = 'bold' }, 40 | b = { bg = colors.lightgray, fg = colors.white }, 41 | c = { bg = colors.darkgray, fg = colors.white }, 42 | }, 43 | inactive = { 44 | a = { bg = colors.inactivegray, fg = colors.lightgray, gui = 'bold' }, 45 | b = { bg = colors.inactivegray, fg = colors.lightgray }, 46 | c = { bg = colors.inactivegray, fg = colors.lightgray }, 47 | }, 48 | } 49 | -------------------------------------------------------------------------------- /lua/themes/lualine/nord.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (c) 2021 Jnhtr 2 | -- MIT license, see LICENSE for more details. 3 | -- LuaFormatter off 4 | local colors = { 5 | base_fg = '#2E3440', 6 | light_fg = '#D8DEE9', 7 | secondary = '#434C5E', 8 | background = '#3B4252', 9 | norm_bg = '#81A1C1', 10 | ins_bg = '#88C0D0', 11 | vis_bg = '#5E81AC', 12 | rep_bg = '#BF616A', 13 | cmd_bg = '#8FBDBB', 14 | int_bg = '#282C34', 15 | } 16 | --LuaFormatter on 17 | return { 18 | normal = { 19 | a = { bg = colors.norm_bg, fg = colors.base_fg, gui = 'bold' }, 20 | b = { bg = colors.secondary, fg = colors.light_fg }, 21 | c = { bg = colors.background, fg = colors.light_fg }, 22 | }, 23 | insert = { 24 | a = { bg = colors.ins_bg, fg = colors.base_fg, gui = 'bold' }, 25 | b = { bg = colors.secondary, fg = colors.light_fg }, 26 | c = { bg = colors.background, fg = colors.light_fg }, 27 | }, 28 | visual = { 29 | a = { bg = colors.vis_bg, fg = colors.base_fg, gui = 'bold' }, 30 | b = { bg = colors.secondary, fg = colors.light_fg }, 31 | c = { bg = colors.background, fg = colors.light_fg }, 32 | }, 33 | replace = { 34 | a = { bg = colors.rep_bg, fg = colors.white, gui = 'bold' }, 35 | b = { bg = colors.secondary, fg = colors.light_fg }, 36 | c = { bg = colors.background, fg = colors.light_fg }, 37 | }, 38 | command = { 39 | a = { bg = colors.cmd_bg, fg = colors.base_fg, gui = 'bold' }, 40 | b = { bg = colors.secondary, fg = colors.light_fg }, 41 | c = { bg = colors.background, fg = colors.light_fg }, 42 | }, 43 | inactive = { 44 | a = { bg = colors.int_bg, fg = colors.white, gui = 'bold' }, 45 | b = { bg = colors.secondary, fg = colors.light_fg }, 46 | c = { bg = colors.background, fg = colors.light_fg }, 47 | }, 48 | } 49 | -------------------------------------------------------------------------------- /lua/themes/lualine/bluewery.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (c) 2021 Jnhtr 2 | -- MIT license, see LICENSE for more details. 3 | -- LuaFormatter off 4 | local colors = { 5 | base_fg = '#07242C', 6 | light_fg = '#C4C7C7', 7 | secondary = '#142C35', 8 | background = '#07242C', 9 | norm_bg = '#296873', 10 | ins_bg = '#FC6195', 11 | vis_bg = '#04A7A7', 12 | rep_bg = '#85919B', 13 | cmd_bg = '#FFF1AC', 14 | int_bg = '#282C34', 15 | } 16 | --LuaFormatter on 17 | return { 18 | normal = { 19 | a = { bg = colors.norm_bg, fg = colors.base_fg, gui = 'bold' }, 20 | b = { bg = colors.secondary, fg = colors.light_fg }, 21 | c = { bg = colors.background, fg = colors.light_fg }, 22 | }, 23 | insert = { 24 | a = { bg = colors.ins_bg, fg = colors.base_fg, gui = 'bold' }, 25 | b = { bg = colors.secondary, fg = colors.light_fg }, 26 | c = { bg = colors.background, fg = colors.light_fg }, 27 | }, 28 | visual = { 29 | a = { bg = colors.vis_bg, fg = colors.base_fg, gui = 'bold' }, 30 | b = { bg = colors.secondary, fg = colors.light_fg }, 31 | c = { bg = colors.background, fg = colors.light_fg }, 32 | }, 33 | replace = { 34 | a = { bg = colors.rep_bg, fg = colors.base_fg, gui = 'bold' }, 35 | b = { bg = colors.secondary, fg = colors.light_fg }, 36 | c = { bg = colors.background, fg = colors.light_fg }, 37 | }, 38 | command = { 39 | a = { bg = colors.cmd_bg, fg = colors.base_fg, gui = 'bold' }, 40 | b = { bg = colors.secondary, fg = colors.light_fg }, 41 | c = { bg = colors.background, fg = colors.light_fg }, 42 | }, 43 | inactive = { 44 | a = { bg = colors.int_bg, fg = colors.base_fg, gui = 'bold' }, 45 | b = { bg = colors.secondary, fg = colors.light_fg }, 46 | c = { bg = colors.background, fg = colors.light_fg }, 47 | }, 48 | } 49 | -------------------------------------------------------------------------------- /lua/themes/lualine/gruvbox.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (c) 2021 Jnhtr 2 | -- MIT license, see LICENSE for more details. 3 | -- LuaFormatter off 4 | local colors = { 5 | base_fg = '#3C3836', 6 | light_fg = '#BDAE93', 7 | secondary = '#504945', 8 | background = '#3C3836', 9 | norm_bg = '#D79921', 10 | ins_bg = '#FB4934', 11 | vis_bg = '#458588', 12 | rep_bg = '#B16286', 13 | cmd_bg = '#689D6A', 14 | int_bg = '#928374', 15 | } 16 | --LuaFormatter on 17 | return { 18 | normal = { 19 | a = { bg = colors.norm_bg, fg = colors.base_fg, gui = 'bold' }, 20 | b = { bg = colors.secondary, fg = colors.light_fg }, 21 | c = { bg = colors.background, fg = colors.light_fg }, 22 | }, 23 | insert = { 24 | a = { bg = colors.ins_bg, fg = colors.base_fg, gui = 'bold' }, 25 | b = { bg = colors.secondary, fg = colors.light_fg }, 26 | c = { bg = colors.background, fg = colors.light_fg }, 27 | }, 28 | visual = { 29 | a = { bg = colors.vis_bg, fg = colors.base_fg, gui = 'bold' }, 30 | b = { bg = colors.secondary, fg = colors.light_fg }, 31 | c = { bg = colors.background, fg = colors.light_fg }, 32 | }, 33 | replace = { 34 | a = { bg = colors.rep_bg, fg = colors.base_fg, gui = 'bold' }, 35 | b = { bg = colors.secondary, fg = colors.light_fg }, 36 | c = { bg = colors.background, fg = colors.light_fg }, 37 | }, 38 | command = { 39 | a = { bg = colors.cmd_bg, fg = colors.base_fg, gui = 'bold' }, 40 | b = { bg = colors.secondary, fg = colors.light_fg }, 41 | c = { bg = colors.background, fg = colors.light_fg }, 42 | }, 43 | inactive = { 44 | a = { bg = colors.int_bg, fg = colors.base_fg, gui = 'bold' }, 45 | b = { bg = colors.secondary, fg = colors.light_fg }, 46 | c = { bg = colors.background, fg = colors.light_fg }, 47 | }, 48 | } 49 | -------------------------------------------------------------------------------- /lua/themes/lualine/monokai.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (c) 2021 Jnhtr 2 | -- MIT license, see LICENSE for more details. 3 | -- LuaFormatter off 4 | local colors = { 5 | base_fg = '#272822', 6 | light_fg = '#D6D6D6', 7 | secondary = '#3c3d39', 8 | background = '#31322c', 9 | norm_bg = '#A6E33E', 10 | ins_bg = '#F92672', 11 | vis_bg = '#66D9EF', 12 | rep_bg = '#E06C75', 13 | cmd_bg = '#E6DB74', 14 | int_bg = '#282C34', 15 | } 16 | --LuaFormatter on 17 | return { 18 | normal = { 19 | a = { bg = colors.norm_bg, fg = colors.base_fg, gui = 'bold' }, 20 | b = { bg = colors.secondary, fg = colors.light_fg }, 21 | c = { bg = colors.background, fg = colors.light_fg }, 22 | }, 23 | insert = { 24 | a = { bg = colors.ins_bg, fg = colors.base_fg, gui = 'bold' }, 25 | b = { bg = colors.secondary, fg = colors.light_fg }, 26 | c = { bg = colors.background, fg = colors.light_fg }, 27 | }, 28 | visual = { 29 | a = { bg = colors.vis_bg, fg = colors.base_fg, gui = 'bold' }, 30 | b = { bg = colors.secondary, fg = colors.light_fg }, 31 | c = { bg = colors.background, fg = colors.light_fg }, 32 | }, 33 | replace = { 34 | a = { bg = colors.rep_bg, fg = colors.base_fg, gui = 'bold' }, 35 | b = { bg = colors.secondary, fg = colors.light_fg }, 36 | c = { bg = colors.background, fg = colors.light_fg }, 37 | }, 38 | command = { 39 | a = { bg = colors.cmd_bg, fg = colors.base_fg, gui = 'bold' }, 40 | b = { bg = colors.secondary, fg = colors.light_fg }, 41 | c = { bg = colors.background, fg = colors.light_fg }, 42 | }, 43 | inactive = { 44 | a = { bg = colors.int_bg, fg = colors.white, gui = 'bold' }, 45 | b = { bg = colors.secondary, fg = colors.light_fg }, 46 | c = { bg = colors.background, fg = colors.light_fg }, 47 | }, 48 | } 49 | -------------------------------------------------------------------------------- /lua/themes/lualine/onedark.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (c) 2021 Jnhtr 2 | -- MIT license, see LICENSE for more details. 3 | -- LuaFormatter off 4 | local colors = { 5 | base_fg = '#000000', 6 | light_fg = '#56B6C2', 7 | secondary = '#1f2228', 8 | background = '#17191E', 9 | norm_bg = '#E5C07B', 10 | ins_bg = '#61AFEF', 11 | vis_bg = '#C678DD', 12 | rep_bg = '#E06C75', 13 | cmd_bg = '#98C379', 14 | int_bg = '#282C34', 15 | } 16 | --LuaFormatter on 17 | return { 18 | normal = { 19 | a = { bg = colors.norm_bg, fg = colors.base_fg, gui = 'bold' }, 20 | b = { bg = colors.secondary, fg = colors.light_fg }, 21 | c = { bg = colors.background, fg = colors.light_fg }, 22 | }, 23 | insert = { 24 | a = { bg = colors.ins_bg, fg = colors.base_fg, gui = 'bold' }, 25 | b = { bg = colors.secondary, fg = colors.light_fg }, 26 | c = { bg = colors.background, fg = colors.light_fg }, 27 | }, 28 | visual = { 29 | a = { bg = colors.vis_bg, fg = colors.base_fg, gui = 'bold' }, 30 | b = { bg = colors.secondary, fg = colors.light_fg }, 31 | c = { bg = colors.background, fg = colors.light_fg }, 32 | }, 33 | replace = { 34 | a = { bg = colors.rep_bg, fg = colors.base_fg, gui = 'bold' }, 35 | b = { bg = colors.secondary, fg = colors.light_fg }, 36 | c = { bg = colors.background, fg = colors.light_fg }, 37 | }, 38 | command = { 39 | a = { bg = colors.cmd_bg, fg = colors.base_fg, gui = 'bold' }, 40 | b = { bg = colors.secondary, fg = colors.light_fg }, 41 | c = { bg = colors.background, fg = colors.light_fg }, 42 | }, 43 | inactive = { 44 | a = { bg = colors.int_bg, fg = colors.light_fg, gui = 'bold' }, 45 | b = { bg = colors.secondary, fg = colors.light_fg }, 46 | c = { bg = colors.background, fg = colors.light_fg }, 47 | }, 48 | } 49 | -------------------------------------------------------------------------------- /lua/themes/lualine/everforest.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (c) 2021 Jnhtr 2 | -- MIT license, see LICENSE for more details. 3 | -- LuaFormatter off 4 | local colors = { 5 | base_fg = '#2F383E', 6 | light_fg = '#9DA9A0', 7 | secondary = '#3A454A', 8 | background = '#445055', 9 | norm_bg = '#A7C080', 10 | ins_bg = '#E67E80', 11 | vis_bg = '#D699B6', 12 | rep_bg = '#E69875', 13 | cmd_bg = '#E69875', 14 | int_bg = '#282C34', 15 | } 16 | --LuaFormatter on 17 | return { 18 | normal = { 19 | a = { bg = colors.norm_bg, fg = colors.base_fg, gui = 'bold' }, 20 | b = { bg = colors.secondary, fg = colors.light_fg }, 21 | c = { bg = colors.background, fg = colors.light_fg }, 22 | }, 23 | insert = { 24 | a = { bg = colors.ins_bg, fg = colors.base_fg, gui = 'bold' }, 25 | b = { bg = colors.secondary, fg = colors.light_fg }, 26 | c = { bg = colors.background, fg = colors.light_fg }, 27 | }, 28 | visual = { 29 | a = { bg = colors.vis_bg, fg = colors.base_fg, gui = 'bold' }, 30 | b = { bg = colors.secondary, fg = colors.light_fg }, 31 | c = { bg = colors.background, fg = colors.light_fg }, 32 | }, 33 | replace = { 34 | a = { bg = colors.rep_bg, fg = colors.base_fg, gui = 'bold' }, 35 | b = { bg = colors.secondary, fg = colors.light_fg }, 36 | c = { bg = colors.background, fg = colors.light_fg }, 37 | }, 38 | command = { 39 | a = { bg = colors.cmd_bg, fg = colors.base_fg, gui = 'bold' }, 40 | b = { bg = colors.secondary, fg = colors.light_fg }, 41 | c = { bg = colors.background, fg = colors.light_fg }, 42 | }, 43 | inactive = { 44 | a = { bg = colors.int_bg, fg = colors.base_fg, gui = 'bold' }, 45 | b = { bg = colors.secondary, fg = colors.light_fg }, 46 | c = { bg = colors.background, fg = colors.light_fg }, 47 | }, 48 | } 49 | -------------------------------------------------------------------------------- /lua/themes/lualine/night-owl.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (c) 2021 Jnhtr 2 | -- MIT license, see LICENSE for more details. 3 | -- LuaFormatter off 4 | local colors = { 5 | base_fg = '#011627', 6 | light_fg = '#D6DEEB', 7 | secondary = '#575656', 8 | background = '#23384A', 9 | norm_bg = '#ADDB67', 10 | ins_bg = '#EF5350', 11 | vis_bg = '#C792EA', 12 | rep_bg = '#82AAFF', 13 | cmd_bg = '#21C7A8', 14 | int_bg = '#282C34', 15 | } 16 | --LuaFormatter on 17 | return { 18 | normal = { 19 | a = { bg = colors.norm_bg, fg = colors.base_fg, gui = 'bold' }, 20 | b = { bg = colors.secondary, fg = colors.light_fg }, 21 | c = { bg = colors.background, fg = colors.light_fg }, 22 | }, 23 | insert = { 24 | a = { bg = colors.ins_bg, fg = colors.base_fg, gui = 'bold' }, 25 | b = { bg = colors.secondary, fg = colors.light_fg }, 26 | c = { bg = colors.background, fg = colors.light_fg }, 27 | }, 28 | visual = { 29 | a = { bg = colors.vis_bg, fg = colors.base_fg, gui = 'bold' }, 30 | b = { bg = colors.secondary, fg = colors.light_fg }, 31 | c = { bg = colors.background, fg = colors.light_fg }, 32 | }, 33 | replace = { 34 | a = { bg = colors.rep_bg, fg = colors.base_fg, gui = 'bold' }, 35 | b = { bg = colors.secondary, fg = colors.light_fg }, 36 | c = { bg = colors.background, fg = colors.light_fg }, 37 | }, 38 | command = { 39 | a = { bg = colors.cmd_bg, fg = colors.base_fg, gui = 'bold' }, 40 | b = { bg = colors.secondary, fg = colors.light_fg }, 41 | c = { bg = colors.background, fg = colors.light_fg }, 42 | }, 43 | inactive = { 44 | a = { bg = colors.int_bg, fg = colors.light_fg, gui = 'bold' }, 45 | b = { bg = colors.secondary, fg = colors.light_fg }, 46 | c = { bg = colors.background, fg = colors.light_fg }, 47 | }, 48 | } 49 | -------------------------------------------------------------------------------- /lua/config/plug/lspkind.lua: -------------------------------------------------------------------------------- 1 | require('lspkind').init({ 2 | -- defines how annotations are shown 3 | -- default: symbol 4 | -- options: 'text', 'text_symbol', 'symbol_text', 'symbol' 5 | mode = 'symbol_text', 6 | 7 | -- default symbol map 8 | -- can be either 'default' (requires nerd-fonts font) or 9 | -- 'codicons' for codicon preset (requires vscode-codicons font) 10 | -- 11 | -- default: 'default' 12 | preset = 'codicons', 13 | 14 | -- override preset symbols 15 | -- 16 | -- default: {} 17 | symbol_map = { 18 | Text = "", 19 | Method = "", 20 | Function = "", 21 | Constructor = "", 22 | Field = "ﰠ", 23 | Variable = "", 24 | Class = "ﴯ", 25 | Interface = "", 26 | Module = "", 27 | Property = "ﰠ", 28 | Unit = "塞", 29 | Value = "", 30 | Enum = "", 31 | Keyword = "", 32 | Snippet = "", 33 | Color = "", 34 | File = "", 35 | Reference = "", 36 | Folder = "", 37 | EnumMember = "", 38 | Constant = "", 39 | Struct = "פּ", 40 | Event = "", 41 | Operator = "", 42 | TypeParameter = "" 43 | }, 44 | }) 45 | 46 | require('cmp').setup { 47 | formatting = { 48 | format = function(entry, vim_item) 49 | -- fancy icons and a name of kind 50 | vim_item.kind = require("lspkind").presets.default[vim_item.kind] .. " " .. vim_item.kind 51 | 52 | -- set a name for each source 53 | vim_item.menu = ({ 54 | buffer = "「Buffer」", 55 | text = "「Text」", 56 | nvim_lsp = "「Lsp」", 57 | ultisnips = "「UltiSnips」", 58 | nvim_lua = "「Lua」", 59 | })[entry.source.name] 60 | return vim_item 61 | end, 62 | }, 63 | } 64 | -------------------------------------------------------------------------------- /lua/config/plug/gitsigns.lua: -------------------------------------------------------------------------------- 1 | local keymap = require('keymap') 2 | require('gitsigns').setup({ 3 | signs = { 4 | add = { hl = 'GitSignsAdd', text = '│', numhl = 'GitSignsAddNr', linehl = 'GitSignsAddLn' }, 5 | change = { hl = 'GitSignsChange', text = '│', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, 6 | delete = { hl = 'GitSignsDelete', text = '_', numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, 7 | topdelete = { hl = 'GitSignsDelete', text = '‾', numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, 8 | changedelete = { hl = 'GitSignsChange', text = '~', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, 9 | }, 10 | signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` 11 | numhl = false, -- Toggle with `:Gitsigns toggle_numhl` 12 | linehl = false, -- Toggle with `:Gitsigns toggle_linehl` 13 | word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` 14 | 15 | keymaps = keymap.gitsigns_mappings, 16 | 17 | watch_gitdir = { 18 | interval = 1000, 19 | follow_files = true, 20 | }, 21 | attach_to_untracked = true, 22 | current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` 23 | current_line_blame_opts = { 24 | virt_text = true, 25 | virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' 26 | delay = 1000, 27 | }, 28 | current_line_blame_formatter_opts = { 29 | relative_time = false, 30 | }, 31 | sign_priority = 6, 32 | update_debounce = 100, 33 | status_formatter = nil, -- Use default 34 | max_file_length = 40000, 35 | preview_config = { 36 | -- Options passed to nvim_open_win 37 | border = 'single', 38 | style = 'minimal', 39 | relative = 'cursor', 40 | row = 0, 41 | col = 1, 42 | }, 43 | yadm = { 44 | enable = false, 45 | }, 46 | }) 47 | -------------------------------------------------------------------------------- /lua/config/plug/nvimtree.lua: -------------------------------------------------------------------------------- 1 | local g = vim.g 2 | 3 | g.nvim_tree_auto_ignore_ft = { 'startify', 'dashboard' } 4 | g.nvim_tree_quit_on_open = 0 5 | g.nvim_tree_indent_markers = 1 6 | g.nvim_tree_git_hl = 1 7 | g.nvim_tree_highlight_opened_files = 1 8 | g.nvim_tree_root_folder_modifier = ':~' 9 | g.nvim_tree_add_trailing = 1 10 | g.nvim_tree_group_empty = 1 11 | g.nvim_tree_disable_window_picker = 0 12 | g.nvim_tree_icon_padding = ' ' 13 | g.nvim_tree_symlink_arrow = ' >> ' 14 | g.nvim_tree_show_icons = { 15 | git = 1, 16 | folders = 1, 17 | files = 1, 18 | } 19 | 20 | require'nvim-tree'.setup { 21 | disable_netrw = true, 22 | hijack_netrw = true, 23 | open_on_setup = false, 24 | ignore_ft_on_setup = {}, 25 | auto_close = false, 26 | open_on_tab = false, 27 | hijack_cursor = false, 28 | update_cwd = false, 29 | update_to_buf_dir = { 30 | enable = true, 31 | auto_open = true, 32 | }, 33 | diagnostics = { 34 | enable = false, 35 | icons = { 36 | hint = "", 37 | info = "", 38 | warning = "", 39 | error = "", 40 | } 41 | }, 42 | update_focused_file = { 43 | enable = false, 44 | update_cwd = false, 45 | ignore_list = {} 46 | }, 47 | system_open = { 48 | cmd = nil, 49 | args = {} 50 | }, 51 | filters = { 52 | dotfiles = false, 53 | custom = {} 54 | }, 55 | git = { 56 | enable = true, 57 | ignore = false, 58 | timeout = 500, 59 | }, 60 | view = { 61 | width = 30, 62 | height = 30, 63 | hide_root_folder = false, 64 | side = 'left', 65 | auto_resize = false, 66 | mappings = { 67 | custom_only = false, 68 | list = {} 69 | }, 70 | number = false, 71 | relativenumber = false, 72 | signcolumn = "yes" 73 | }, 74 | trash = { 75 | cmd = "trash", 76 | require_confirm = true 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /lua/config/lsp/lua_lsp.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Setup script for the lua lsp server sumneko 3 | --]] 4 | local fn = vim.fn 5 | 6 | -- check for the underlying operating system 7 | local system_name 8 | if fn.has('mac') == 1 then 9 | system_name = 'macOS' 10 | elseif fn.has('unix') == 1 then 11 | system_name = 'Linux' 12 | elseif fn.has('win32') == 1 then 13 | system_name = 'Windows' 14 | else 15 | print('Unsupported system for sumneko') 16 | end 17 | 18 | -- set the path to the sumneko installation (ABSOLUTE PATH) 19 | local sumneko_install_path = fn.stdpath('data') .. '/lspservers/lua-language-server' 20 | local pathcheck = sumneko_install_path .. '/bin/' .. system_name 21 | local sumneko_binary 22 | 23 | -- check of weird build directories 24 | if fn.isdirectory(pathcheck) > 0 then 25 | -- set binary path to that with a system directory 26 | sumneko_binary = sumneko_install_path .. '/bin/' .. system_name .. '/lua-language-server' 27 | else 28 | -- set binary path to just the (oddly) bin directory 29 | sumneko_binary = sumneko_install_path .. '/bin/lua-language-server' 30 | end 31 | 32 | local runtime_path = vim.split(package.path, ';') 33 | table.insert(runtime_path, 'lua/?.lua') 34 | table.insert(runtime_path, 'lua/?/init.lua') 35 | 36 | require('lspconfig').sumneko_lua.setup({ 37 | cmd = { sumneko_binary, '-E', sumneko_install_path .. '/main.lua' }, 38 | settings = { 39 | Lua = { 40 | runtime = { 41 | -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) 42 | version = 'LuaJIT', 43 | -- Setup your lua path 44 | path = runtime_path, 45 | }, 46 | diagnostics = { 47 | -- Get the language server to recognize the `vim` global 48 | globals = { 'vim' }, 49 | }, 50 | workspace = { 51 | -- Make the server aware of Neovim runtime files 52 | library = vim.api.nvim_get_runtime_file('', true), 53 | }, 54 | -- Do not send telemetry data containing a randomized but unique identifier 55 | telemetry = { 56 | enable = false, 57 | }, 58 | }, 59 | }, 60 | }) 61 | -------------------------------------------------------------------------------- /lua/plug.lua: -------------------------------------------------------------------------------- 1 | require('packer').startup({ 2 | function(use) 3 | -- packer self management 4 | use('wbthomason/packer.nvim') 5 | 6 | -- {{{ lsp/autocompletion/snippets 7 | -- lsp plugins 8 | use('neovim/nvim-lspconfig') 9 | use('onsails/lspkind-nvim') 10 | 11 | -- autocompletion 12 | use({ 13 | 'hrsh7th/nvim-cmp', 14 | requires = { 15 | { 'hrsh7th/cmp-nvim-lsp' }, 16 | { 'hrsh7th/cmp-path' }, 17 | { 'hrsh7th/cmp-buffer' }, 18 | }, 19 | }) 20 | 21 | -- snippets 22 | use('sirver/ultisnips') 23 | use('quangnguyen30192/cmp-nvim-ultisnips') 24 | -- }}} 25 | 26 | -- {{{ utility plugins 27 | -- these plugins are all realted to editor configs 28 | use({ 'nvim-lualine/lualine.nvim', requires = { 'kyazdani42/nvim-web-devicons', opt = true } }) 29 | use('kdheepak/tabline.nvim') 30 | use({ 'nvim-telescope/telescope.nvim', requires = { { 'nvim-lua/popup.nvim' }, { 'nvim-lua/plenary.nvim' } } }) 31 | use({ 'kyazdani42/nvim-tree.lua', requires = 'kyazdani42/nvim-web-devicons' }) 32 | use({ 'nvim-telescope/telescope-fzf-native.nvim', run = 'make' }) 33 | use('windwp/nvim-autopairs') 34 | use('terrortylor/nvim-comment') 35 | use('sbdchd/neoformat') 36 | use('phaazon/hop.nvim') 37 | use({ 'lewis6991/gitsigns.nvim', requires = { 'nvim-lua/plenary.nvim' } }) 38 | -- }}} 39 | 40 | -- {{{ imporved syntax plugins 41 | -- these add in a bit more bling and flair to nvim 42 | use({ 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' }) 43 | use({ 'glepnir/dashboard-nvim', disable = false }) 44 | use('norcalli/nvim-colorizer.lua') 45 | -- }}} 46 | 47 | -- {{{ themes 48 | -- popular themes incoming 49 | use('joshdick/onedark.vim') 50 | use('sickill/vim-monokai') 51 | use('morhetz/gruvbox') 52 | use('shaunsingh/nord.nvim') 53 | use('sainnhe/gruvbox-material') 54 | 55 | -- neesh themes 56 | use('sainnhe/everforest') 57 | use('relastle/bluewery.vim') 58 | use('haishanh/night-owl.vim') 59 | -- }}} 60 | -- 61 | end, 62 | -- display packer dialouge in the center in a floating window 63 | config = { 64 | display = { 65 | open_fn = require('packer.util').float, 66 | }, 67 | }, 68 | }) 69 | 70 | -- # vim foldmethod=marker 71 | -------------------------------------------------------------------------------- /lua/config/lsp/setup.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | LSP setup script for default capibilities 3 | --]] 4 | local fn = vim.fn 5 | 6 | -- {{{ on_attach config 7 | local on_attach = function(client, bufnr) 8 | local function buf_set_keymap(...) 9 | vim.api.nvim_buf_set_keymap(bufnr, ...) 10 | end 11 | local function buf_set_option(...) 12 | vim.api.nvim_buf_set_option(bufnr, ...) 13 | end 14 | 15 | buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') 16 | 17 | -- {{{ Mappings. 18 | local opts = { noremap = true, silent = true } 19 | buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) 20 | buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) 21 | buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) 22 | buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) 23 | buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) 24 | buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) 25 | buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) 26 | buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) 27 | buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) 28 | buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) 29 | buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) 30 | buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) 31 | buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) 32 | buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) 33 | buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) 34 | -- }}} 35 | 36 | -- {{{ Set some keybinds conditional on server capabilities 37 | if client.resolved_capabilities.document_formatting then 38 | buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) 39 | elseif client.resolved_capabilities.document_range_formatting then 40 | buf_set_keymap('n', 'f', 'lua vim.lsp.buf.range_formatting()', opts) 41 | end 42 | -- }}} 43 | 44 | -- {{{ Set autocommands conditional on server_capabilities 45 | if client.resolved_capabilities.document_highlight then 46 | vim.api.nvim_exec( 47 | [[ 48 | augroup lsp_document_highlight 49 | autocmd! * 50 | autocmd CursorHold lua vim.lsp.buf.document_highlight() 51 | autocmd CursorMoved lua vim.lsp.buf.clear_references() 52 | augroup END 53 | ]], 54 | false 55 | ) 56 | end 57 | end 58 | -- }}} 59 | 60 | -- }}} 61 | 62 | -- {{{ standard paths for lsp servers 63 | 64 | -- check if lspservers directory exists in data stdpath 65 | -- and create one if not 66 | local lspserver_dir = fn.isdirectory(fn.stdpath('data') .. '/lspservers') 67 | if lspserver_dir == 0 then 68 | fn.mkdir(fn.stdpath('data') .. '/lspservers') 69 | end 70 | 71 | -- }}} 72 | 73 | -- # vim foldmethod=marker 74 | -------------------------------------------------------------------------------- /lua/lib/scheme.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | scheme.lua 3 | This file is wrapper code for handiling loading themes for the statusline 4 | and for neovim 5 | 6 | Lualine has some default themes that are bundled with it, so lualine_def_themes 7 | contains a list of all the default themes for lualine 8 | 9 | Themes are primarily loaded via require()ing files in the lua/themes/ 10 | directory 11 | 12 | --]] 13 | 14 | -- module definition 15 | local M = {} 16 | 17 | -- {{{ list of pre-packaged lualine themes 18 | -- NOTE: certain lualine default themes are exculded for 19 | -- improved asthetic changes 20 | local lualine_def_themes = { 21 | '16color', 22 | 'ayu_dark', 23 | 'ayu_light', 24 | 'ayu_mirage', 25 | 'codedark', 26 | 'dracula', 27 | 'gruvbox', 28 | 'gruvbox_light', 29 | 'gurvbox_material', 30 | 'horizon', 31 | 'iceberg_dark', 32 | 'iceberg_light', 33 | 'jellybeans', 34 | 'material', 35 | 'modeus_vivendi', 36 | 'molokai', 37 | 'nightfly', 38 | 'nord', 39 | 'oceanicnext', 40 | 'onedark', 41 | 'onelight', 42 | 'palenight', 43 | 'papercolor_dark', 44 | 'papercolor_light', 45 | 'powerline', 46 | 'seoul256', 47 | 'solarized_dark', 48 | 'solarized_light', 49 | 'tommorow', 50 | 'wombat', 51 | } 52 | 53 | -- string-based theme definitions for lualine schemes [WIP] 54 | local lualine_def_styles = { 55 | 'powerline', 56 | 'dotline', 57 | 'chevron', 58 | } 59 | -- }}} 60 | 61 | -- {{{ varible definitions 62 | M.scheme = 'everforest' -- specifies scheme. default is "everforest" 63 | 64 | -- specifies line style 65 | M.lualine_style_left = '' 66 | M.lualine_style_right = '' 67 | 68 | -- specifies line seperator style 69 | M.lualine_seperator_left = '' 70 | M.lualine_seperator_right = '' 71 | 72 | -- tabline styles 73 | M.tabline_style_left = '' 74 | M.tabline_style_right = '' 75 | 76 | -- tabline seperator 77 | M.tabline_seperator_left = '' 78 | M.tabline_seperator_right = '' 79 | 80 | -- if the scheme bundled with lualine? 81 | -- used in config/plug/lualine.lua 82 | M.is_lualine_default = false 83 | 84 | -- local indicators if a scheme has been loaded 85 | local scheme_loaded = false 86 | -- }}} 87 | 88 | -- {{{ Global Wrappers 89 | -- pretty wrapper for loading theme files 90 | -- @param choice string 91 | -- The scheme name to load 92 | function M.load_scheme(choice) 93 | require('themes.' .. choice) 94 | scheme_loaded = true 95 | end 96 | 97 | -- checks if the arg is a theme in the default themes list, 98 | -- otherwise it requires a file 99 | -- @param choice string 100 | -- The scheme name to load 101 | function M.load_lualine_scheme(choice) 102 | M.scheme = choice 103 | local is_present = false 104 | for i, name in ipairs(lualine_def_themes) do 105 | if name == choice then 106 | is_present = true 107 | M.is_lualine_default = true 108 | M.scheme = name 109 | end 110 | end 111 | if is_present == false then 112 | M.is_lualine_default = false 113 | M.scheme = choice 114 | end 115 | scheme_loaded = true 116 | end 117 | 118 | -- loads both editor and statusline scheme simultaniously 119 | -- @param choice string 120 | -- The scheme name to load 121 | function M.load_shared_scheme(choice) 122 | require('themes.' .. choice) 123 | M.load_lualine_scheme(choice) 124 | scheme_loaded = true 125 | end 126 | 127 | -- 128 | function M.load_global_style(style, seperator) 129 | if style and seperator then 130 | M.set_lualine_style(style) 131 | M.set_tabline_style(style) 132 | M.set_lualine_seperator(seperator) 133 | M.set_tabline_seperator(seperator) 134 | end 135 | end 136 | -- }}} 137 | 138 | -- {{{ Lualine style loaders 139 | -- sets the style for the lualine bar 140 | -- @param choice table 141 | -- used in config/plus/lualine.lua 142 | function M.set_lualine_style(choice) 143 | if type(choice) == 'table' then 144 | M.lualine_style_left = choice[1] 145 | M.lualine_style_right = choice[2] 146 | else 147 | M.lualine_style_left = '' 148 | M.lualine_style_right = '' 149 | end 150 | end 151 | 152 | -- sets the style for the lualine seperators 153 | -- @param choice table 154 | -- used in config/plus/lualine.lua 155 | function M.set_lualine_seperator(choice) 156 | if type(choice) == 'table' then 157 | M.lualine_seperator_left = choice[1] 158 | M.lualine_seperator_right = choice[2] 159 | else 160 | M.lualine_seperator_left = '' 161 | M.lualine_seperator_right = '' 162 | end 163 | end 164 | -- }}} 165 | 166 | --{{{ Tabline style loaders 167 | function M.set_tabline_style(choice) 168 | if type(choice) == 'table' then 169 | M.tabline_style_left = choice[1] 170 | M.tabline_style_right = choice[2] 171 | else 172 | M.tabline_style_left = '' 173 | M.tabline_style_right = '' 174 | end 175 | end 176 | 177 | -- sets the style for the lualine seperators 178 | -- @param choice table 179 | -- used in config/plus/lualine.lua 180 | function M.set_tabline_seperator(choice) 181 | if type(choice) == 'table' then 182 | M.tabline_seperator_left = choice[1] 183 | M.tabline_seperator_right = choice[2] 184 | else 185 | M.tabline_seperator_left = '' 186 | M.tabline_seperator_right = '' 187 | end 188 | end 189 | --}}} 190 | 191 | -- checks if a scheme has been specified by the user 192 | -- if not, loads default scheme 193 | if scheme_loaded == false then 194 | require('themes.' .. M.scheme) 195 | M.load_lualine_scheme(M.scheme) 196 | end 197 | 198 | return M 199 | 200 | -- # vim foldmethod=marker 201 | -------------------------------------------------------------------------------- /doc/keybinds.md: -------------------------------------------------------------------------------- 1 | # Keybinds 2 | 3 | Welcome to the nii-nvim keybinds doc! Here you will find references to all of the non-nvim native keybinds 4 | 5 | ### Understanding doc syntax 6 | 7 | #### Normal Keybind Syntax 8 | `f` Defines a keybind sequence of f 9 | `F` Defines a keybind sequence of Shift-f 10 | `` Defines a keybind seqence of Ctrl-f 11 | `` Defines a keybind squence of Ctrl-Shift-f 12 | 13 | #### Leader Keybind Syntax 14 | `` Indicates the leader key (Default: Space) 15 | `f` Indicates the leader key plus f (Think Space-f) 16 | `f` Indicates the leader key plus capital F (Think Space-Shift-f) 17 | 18 | #### Special Key Names 19 | `` Is equivalent to Enter/Return 20 | `` Is equivalent to Backspace 21 | `` Left Mouse Button 22 | `` Right Mouse Button 23 | `` Is equivalent to the h,j,k,l navigation keys (also equivalent to the arrow keys) 24 | 25 | # Keybinds 26 | 27 | ### General 28 | 29 | ``: Toggle line comment 30 | ``: Toggle relative and absolute line numbers 31 | 32 | `WW`: Write File 33 | 34 | `nf`: Format buffer with neoformat | Normal Mode ONLY 35 | `ya`: Yank buffer to system clipboard 36 | `yl`: Yank line to system clipboard 37 | 38 | `~`: Open Dashboard 39 | 40 | ### Autocompletion 41 | 42 | ``: Select next autocompletion item 43 | ``: Select previous autocompletion item 44 | ``: Scroll up autocompletion docs 45 | ``: Scroll down autocompletion docs 46 | ``: Close autocompletion menu 47 | ``: Select complete autocompletion selction 48 | 49 | ### Text Navigation 50 | 51 | `aH`: hop.nvim hop by word | Normal Mode ONLY 52 | `aH`: hop.nvim hop by line | Normal Mode ONLY 53 | 54 | 55 | ### Buffer/Window Management 56 | 57 | 58 | `l`: Focus window focus to right | Normal Mode ONLY 59 | `k`: Focus window focus to top | Normal Mode ONLY 60 | `j`: Focus window focus to bottom | Normal Mode ONLY 61 | `h`: Focus window focus to left | Normal Mode ONLY 62 | 63 | `bh`: Switch to the first buffer in the bufferlist | Normal Mode ONLY 64 | `bj`: Cycle to the next buffer in the bufferlist | Normal Mode ONLY 65 | `bk`: Cycle to the previous buffer in the bufferlist | Normal Mode ONLY 66 | `bl`: Switch to the last buffer in the bufferlist | Normal Mode ONLY 67 | `bd`: Delete current buffer 68 | 69 | ### Terminal 70 | 71 | ``: Spawn terminal session in vertical split | Normal Mode ONLY 72 | `\`: Spawn terminal session in horizontal split | Normal Mode ONLY 73 | 74 | 75 | ## Plugin Binds 76 | 77 | ### Nvimtree 78 | *all nvimtree keybinds are the default keybinds* 79 | 80 | ``: Navigate Through the tree 81 | ``: Open the selected directory in the ui or will follow a symlink to its location 82 | ``: Set tree root working directory to selected directory 83 | `a`: Create file (append a / to make a directory) 84 | `x`: Cut file/directory to tree clipbaord 85 | `c`: Copy file/directory to tree clipbaord 86 | `y`: Copy file name to system clipboard 87 | `Y`: Copy relative path to system clipboard 88 | `gy`: Copy absolute path to system clipboard 89 | `P`: Paste from tree clipboard (Cut files have precidence over Copied files) 90 | `d`: Delete file/directory (will prompt for confirmation) 91 | `]c`: Next git item 92 | `[c`: Previous git item 93 | `-`: Navigate to the parent direcory of the current file/directory 94 | `s`: Open file with system default application and directory with system file manager 95 | 96 | ``: Open file in a vertical split 97 | ``: Open file in a horizontal split 98 | ``: Open file in new buffer 99 | ``: Preview file in a new buffer (keeps cursor in tree) 100 | `I`: Toggle visibility of configured hidden files/directories 101 | `H`: Toggle visibility of hidden files/directories (dotfiles) 102 | `R`: Refresh Tree 103 | 104 | ``: Double clicking acts like `` 105 | ``: Double clicking acts like `` 106 | 107 | ### Gitsigns 108 | 109 | `]c`: Priview next hunk 110 | `[c`: Priview previous hunk 111 | 112 | `gs`: stage hunk | Normal Mode ONLY 113 | `gu`: undo stage hunk | Normal Mode ONLY 114 | `gr`: reset hunk | Normal Mode ONLY 115 | `gR`: reset buffer | Normal Mode ONLY 116 | `gp`: preview hunk | Normal Mode ONLY 117 | `gb`: blame line | Normal Mode ONLY 118 | `gS`: stage buffer | Normal Mode ONLY 119 | `gU`: reset buffer_index | Normal Mode ONLY 120 | 121 | `gs`: stage hunk by current selection | Visual Mode ONLY 122 | `gr`: reset hunk by current selection | Visual Mode ONLY 123 | 124 | ### Telescope-nvim 125 | 126 | `ff`: Open telescope in find_files mode | Normal Mode ONLY 127 | `fw`: Open telescope in find_word mode | Normal Mode ONLY 128 | `fF`: Open telescope in file_browser mode | Normal Mode ONLY 129 | 130 | `fg`: Open telescope in git_commits mode | Normal Mode ONLY 131 | `fG`: Open telescope in git_branches mode | Normal Mode ONLY 132 | 133 | ### Hop.nvim 134 | 135 | `ah`: Quickhop in word mode | Normal Mode ONLY 136 | `aH`: Quickhop in line mode | Normal Mode ONLY 137 | -------------------------------------------------------------------------------- /lua/keymap.lua: -------------------------------------------------------------------------------- 1 | -- {{{ 2 | local function map(mode, bind, exec, opts) 3 | local options = { noremap = true, silent = true } 4 | if opts then 5 | options = vim.tbl_extend('force', options, opts) 6 | end 7 | vim.api.nvim_set_keymap(mode, bind, exec, opts) 8 | end 9 | 10 | local function unmap(mode, bind) 11 | vim.api.nvim_del_keymap(mode, bind) 12 | end 13 | 14 | local opt = {} --empty opt for maps with no extra options 15 | local M = {} 16 | -- }}} 17 | 18 | --[[ 19 | MAPPING: 20 | map takes 4 args: 21 | The first is the type, whether in all, normal, insert etc. (reference: https://github.com/nanotee/nvim-lua-guide#defining-mappings) 22 | The Second Arg is the keybind. Just like normal vim way 23 | The Third is the command to execute 24 | The Fourth is other extra options 25 | 26 | Example: (toggles line numbers) 27 | map("n", "", ":set rnu!", opt) 28 | --]] 29 | 30 | -- {{{ Umapping 31 | --unmap('n', 'f') 32 | -- }}} 33 | 34 | -- {{{ misc bindings 35 | vim.g.mapleader = ' ' -- Map leader key to space 36 | vim.g.maplocalleader = ',' 37 | map('n', '', ':set rnu!', opt) -- toggle relative line numbers 38 | map('', '', ':CommentToggle', opt) -- toggle comment on current line or selection 39 | map('', '', ':NvimTreeToggle', opt) -- toggle nvimtree 40 | map('n', 'nf', ':Neoformat', { noremap = true }) -- format current buffer with neoformat 41 | map('n', '~', ':Dashboard', opt) -- map show dashboard 42 | 43 | -- clipboard mappings 44 | map('n', 'ya', ':%y+', opt) -- Copy content of entire buffer to system clipboard 45 | map('n', 'yl', '"+yy', opt) -- yank current line into system clipboard 46 | 47 | -- write buffer changes 48 | map('n', 'WW', ":w", opt) 49 | -- }}} 50 | 51 | -- {{{ autocompletion mappings for cmp 52 | local cmp = require('cmp') 53 | M.cmp_mappings = { 54 | 55 | [''] = cmp.mapping(cmp.mapping.select_next_item(), { 'i', 's' }), 56 | [''] = cmp.mapping(cmp.mapping.select_prev_item(), { 'i', 's' }), 57 | [''] = cmp.mapping.complete(), 58 | [''] = cmp.mapping.scroll_docs(-4), 59 | [''] = cmp.mapping.scroll_docs(4), 60 | [''] = cmp.mapping.close(), 61 | [''] = cmp.mapping.confirm({ 62 | behavior = cmp.ConfirmBehavior.Insert, 63 | select = true, 64 | }), 65 | } 66 | -- }}} 67 | 68 | -- {{{ gitsigns mappings 69 | M.gitsigns_mappings = { 70 | noremap = true, 71 | ['n ]c'] = { expr = true, "&diff ? ']c' : 'lua require\"gitsigns.actions\".next_hunk()'" }, 72 | ['n [c'] = { expr = true, "&diff ? '[c' : 'lua require\"gitsigns.actions\".prev_hunk()'" }, 73 | 74 | ['n gs'] = 'lua require"gitsigns".stage_hunk()', 75 | ['v gs'] = 'lua require"gitsigns".stage_hunk({vim.fn.line("."), vim.fn.line("v")})', 76 | ['n gu'] = 'lua require"gitsigns".undo_stage_hunk()', 77 | ['n gr'] = 'lua require"gitsigns".reset_hunk()', 78 | ['v gr'] = 'lua require"gitsigns".reset_hunk({vim.fn.line("."), vim.fn.line("v")})', 79 | ['n gR'] = 'lua require"gitsigns".reset_buffer()', 80 | ['n gp'] = 'lua require"gitsigns".preview_hunk()', 81 | ['n gb'] = 'lua require"gitsigns".blame_line(true)', 82 | ['n gS'] = 'lua require"gitsigns".stage_buffer()', 83 | ['n gU'] = 'lua require"gitsigns".reset_buffer_index()', 84 | 85 | -- Text objects 86 | ['o ih'] = ':lua require"gitsigns.actions".select_hunk()', 87 | ['x ih'] = ':lua require"gitsigns.actions".select_hunk()', 88 | } 89 | -- }}} 90 | 91 | -- {{{ buffer management 92 | map('n', 'bh', ':bf', { noremap = true }) 93 | map('n', 'bk', ':bn', { noremap = true }) 94 | map('n', 'bj', ':bp', { noremap = true }) 95 | map('n', 'bl', ':bl', { noremap = true }) 96 | map('n', 'bd', ':bd', { noremap = true }) 97 | -- }}} 98 | 99 | -- {{{ window navigation 100 | map('n', 'h', ':wincmd h', opt) 101 | map('n', 'j', ':wincmd j', opt) 102 | map('n', 'k', ':wincmd k', opt) 103 | map('n', 'l', ':wincmd l', opt) 104 | -- }}} 105 | 106 | -- {{{ terminal commands 107 | map('n', '', ':vs | terminali', opt) 108 | map('n', '\\', ':sp | terminali', opt) 109 | map('t', '', '', opt) 110 | -- }}} 111 | 112 | -- {{{ telescope pullup 113 | map('n', 'ff', ':Telescope find_files', { noremap = true }) 114 | map('n', 'fw', ':Telescope live_grep', { noremap = true }) 115 | map('n', 'fg', ':Telescope git_commits', { noremap = true }) 116 | map('n', 'fG', ':Telescope git_branches', { noremap = true }) 117 | map('n', 'fe', ':lua require(\'telescope.builtin\').symbols({ sources = { \'kaomoji\'}})', { noremap = true }) 118 | -- }}} 119 | 120 | -- {{{ hop.nvim 121 | map('n', 'ah', ':HopWord', opt) 122 | map('n', 'ak', ':HopWordBC', opt) 123 | map('n', 'aj', ':HopWordAC', opt) 124 | map('n', 'al', ':HopWordMW', opt) 125 | map('n', 'ac', ':HopChar1', opt) 126 | map('n', 'aC', ':HopChar2', opt) 127 | map('n', 'ag', ':HopPattern', opt) 128 | map('n', 'an', ':HopLineStart', opt) 129 | map('n', 'af', ':HopWordCurrentLine', opt) 130 | -- }}} 131 | 132 | map('n', 's', ':Telescope buffers', opt) 133 | 134 | -- returns any externally-required keymaps for usage 135 | return M 136 | 137 | -- # vim foldmethod=marker 138 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

This project is unmaintained

2 | I have no desire to continue work on this project. 3 | People who wish to maintain this project, please reach out to me. 4 | 5 |














6 |

nii-nvim:
a no-nonsense neovim configuration

7 |
8 | 9 | img 10 | 11 |
12 | 13 |
14 | Docs 15 | 16 | Install 17 | 18 | Contribute 19 | 20 | Support 21 |

22 |
23 | 24 |
25 | 26 | [![Lua](https://img.shields.io/badge/Made%20With-Lua-2C2D72?style=for-the-badge&logo=lua&logoColor=white)]() 27 | [![Repo_Size](https://img.shields.io/github/languages/code-size/theory-of-everything/nii-nvim?color=orange&label=Repo%20Size&style=for-the-badge)]() 28 | 29 | 30 | 31 |
32 | 33 | Nii-nvim is a very minimal neovim configuration focused on creating a functional editor with a minimal amount of code. Nii-nvim also keeps the user in mind by being very extensible and well documented. 34 | Nii-nvim is finally out of heavy development, thus the project should be considered *mostly stable* 35 | 36 | # NOTICE!!!!!!!! 37 | 38 | You are looking at the obsolite `master` branch, if you wish to migrate your configs and pull a new version of nii-nvim, 39 | please take a look at the [docs](https://docs.theoryware.net/nii-nvim/migration-branch/)! 40 | 41 | **NOTE:** Active development will be moved to my [sr.ht repo](https://git.sr.ht/~theorytoe/nii-nvim) for this project, It is prefered that you leave issues and patches/pull requests over there, rather than opening issue sand prs on github. However i will still keep an eye on github too. 42 | 43 | 44 | 45 | ## Why nii-nvim? 46 | There are many neovim configurations that exist (i.e. NvChad, Lunar Vim, etc.), however, many of these configurations suffer from a host of problems. 47 | - Some configurations (like NvChad), have very abstracted and complex codebases. 48 | - Others rely on having as much overall functionality as possible (like LunarVim). 49 | 50 | While none of this is bad, there are some problems that can arise from these choices: 51 | - Complex codebases lead to less freedom for end-user extensibility and configuration, as there is more reliance on the maintainer of said code. 52 | - Users may not use half of what is made available to them simply because they don't need all of that functionality, so all of it may not be necessary. 53 | 54 | nii-nvim provides a solution to these problems by providing only the necessary code in order to make a functioning configuration. 55 | The end goal of nii-nvim is to be used as a base config for users to extend and add upon, leading to a more unique editing experience. 56 | 57 | Also the name is cute. (・3・) 58 | 59 | ## Requirements 60 | - neovim 5.0 or greater 61 | - fzf 62 | - git 63 | - A Nerd Font 64 | - ripgrep 65 | - Python 3 66 | 67 | ## Features 68 | - Heavy focus on both in-source documentation as well as external documentation. 69 | - Sane Keybinds for extra added functionality 70 | - Small codebase for easy extensibility 71 | - A handful of plugins that build off neovim's strengths 72 | - Swag (and Minimalism!!) 73 | 74 | ## Contributing 75 | 76 | PLEASE BE WARY! If you are thinking of contributing, please wait. I am currently in the process of moving this project to sr.ht. 77 | Contributions are always appreciated! If you would like to contribute, please check out [CONTIBUTING.md](./CONTRIBUTING.md) in the repository root. 78 | If you like sending patches using git's built-in email features, please send all patches to the [nii-nvim-devel](mailto:~theorytoe/nii-nvim-devel@lists.sr.ht) mailing list. 79 | 80 | ## Support/Community 81 | If you are looking for help, or are looking for others to interact with, you can join the "official" Matrix room and Discord server 82 | - Matrix Room: [#nii-nvim:halogen.city](https://matrix.to/#/#nii-nvim:halogen.city) 83 | - Discord Server: [Invite Link (H6WY7cUkfw)](https://discord.gg/H6WY7cUkfw) 84 | 85 | You can also shoot an email to the mailing list: 86 | - [~theorytoe/nii-nvim-discuss@lists.sr.ht](https://lists.sr.ht/~theorytoe/nii-nvim-discuss) 87 | 88 | # Screenshots 89 | ## Functionality Showcase 90 | ![lsp](https://raw.githubusercontent.com/Theory-of-Everything/imagehost/main/nii-nvim/feat_completion.png) 91 | ![hop](https://raw.githubusercontent.com/Theory-of-Everything/imagehost/main/nii-nvim/feat_hop.png) 92 | ![tree](https://raw.githubusercontent.com/Theory-of-Everything/imagehost/main/nii-nvim/feat_tree.png) 93 | ![docs](https://raw.githubusercontent.com/Theory-of-Everything/imagehost/main/nii-nvim/helpdoc.png) 94 | ![file_find](https://raw.githubusercontent.com/Theory-of-Everything/imagehost/main/nii-nvim/telescope_0.png) 95 | ![git](https://raw.githubusercontent.com/Theory-of-Everything/imagehost/main/nii-nvim/telescope_1.png) 96 | 97 | ## Theme Showcase 98 | ![Everforest](https://raw.githubusercontent.com/Theory-of-Everything/imagehost/main/nii-nvim/scrot_everforest.png) 99 | ![Bluewery](https://raw.githubusercontent.com/Theory-of-Everything/imagehost/main/nii-nvim/scrot_bluewery.png) 100 | ![Gruvbox-material](https://raw.githubusercontent.com/Theory-of-Everything/imagehost/main/nii-nvim/scrot_gruvboxmaterial.png) 101 | ![Nord](https://raw.githubusercontent.com/Theory-of-Everything/imagehost/main/nii-nvim/scrot_nord.png) 102 | -------------------------------------------------------------------------------- /doc/helpdoc.md: -------------------------------------------------------------------------------- 1 | # Helpdoc 2 | 3 | Welcome to the helpdoc! 4 | 5 | This is currently a work in progress, so contributing to the project would be very appreciated! 6 | 7 | [Repo](https://github.com/Theory-of-Everything/nii-nvim) 8 | 9 | 10 | ## Welcome to the builtin helpdoc! 11 | This is a In-editor documentation page for nii-nvim. This contains all of the relevant information on the semantics of the config. 12 | 13 | **NOTE** This isn't intended to be a guide for nvim itself, as there are many other better places for you to learn nvim. 14 | 15 | ## Table of Contents 16 | *You can search for sections with nvim's built in search `/` command like /[01]* 17 | 18 | ### [01] Technical Overview 19 | - A look at the technical end of the configuration 20 | 21 | ### [02] Basic Configuration 22 | - A guide on very basic modification of the configuration 23 | 24 | ### [03] Contributing to the Project 25 | - How to contribute to the project's development 26 | 27 | 28 | # [01] Technical Overview: 29 | 30 | ### File Tree 31 | 32 | Most of magic in this configuration is in the file structure, with an organized file structure, 33 | this configration is easy to understand and implement custom configuration. 34 | 35 | The basic file tree follows: 36 | ``` 37 | . 38 | ├── init.lua 39 | ├── doc/ 40 | │   └── ... 41 | └── lua/ 42 |    ├── config/ 43 |    │   └── ... 44 |    ├── keymap.lua 45 |    ├── modules/ 46 |    │   └── ... 47 |    ├── options.lua 48 |    ├── plug.lua 49 |    ├── scheme.lua 50 |    ├── settings.lua 51 |    └── themes/ 52 |    ├── lualine 53 |    │   └── ... 54 |    └── ... 55 | ``` 56 | - `init.lua`: The entry point for the config, almost all of the modules loaded through `require()` are here. 57 | - `lua/`: The directory that is sourced by neovim for importing, most of the stuff not present in the init file will be here. 58 | - `lua/config/`: This is the directory contains the config files for the default plugins. 59 | - `lua/modules/`: This is a WIP, more documentation related to it will come soon once it is finished. 60 | - `lua/themes/`: This contains all of the init files for each theme packaged with nii-nvim. (note these are not color definitions!!) 61 | - `lua/themes/lualine/`: This directory contains all of the themes for lualine and their respective colors. (note these are color definitions.) 62 | - `lua/keymap.lua`: All of the custom keybind definitions. 63 | - `lua/scheme.lua`: The custom theme handler library. 64 | - `lua/options.lua`: All editor options and nvim settings. 65 | 66 | # [02] Basic Configuration 67 | 68 | ### Understanding the init.lua 69 | 70 | The init.lua file in the root directory of nii-nvim is going to be the entry-point for basic modifications of the default configuration. 71 | Most of the core modules are loaded in the init.lua file, along with setting initialization and theme setting. 72 | 73 | In general, the init will contain all of the relevant `require()` commands, and reference the `scheme` library for theme setting. 74 | Generally, you probably won't want to be adding code in the init file, as its main purpose is to require any needed modules for startup. 75 | However, quick code testing here might prove useful, as you don't need to keep track of a extra files and requirements. 76 | 77 | ### Adding New Plugins 78 | Adding in plugins is a trivial task, however, this base configuration has some basic organization rules that you would replicate. (I would hope) 79 | If you want to add a plugin, these are the basic steps that nii-nvim takes. 80 | 81 | 82 | Plugins to install with Packer are defined in the `lua/plug.lua` file so add your plug to the file. (In this case we will be installing [presence.nvim](https://github.com/andweeb/presence.nvim)) 83 | ```lua 84 | return require('packer').startup(function(use) 85 | ... 86 | use({'andweeb/presence.nvim'}) 87 | ... 88 | end) 89 | ``` 90 | 91 | Next, you will want to create the configuration file that initializes the plugin. 92 | - Plugin config files are made in the `lua/config/` directory. 93 | - Make a file `lua/config/presence.lua` and write all the code for the plugin to startup as desired. 94 | - Lastly, require the file in the `init.lua` 95 | ```lua 96 | ... 97 | require('config.presence') 98 | ... 99 | ``` 100 | 101 | ### Changing Keybinds 102 | 103 | If you want to change or add custom keybinds for nvim, all keybinds are defined in the file `lua/keymap.lua`. 104 | 105 | To add a custom keybind, insert the following into `keymap.lua` 106 | (for example we will make a keybind that replaces all `"` with `'`) 107 | ```lua 108 | ... 109 | -- map() is a wrapper function for setting keybinds with nvim's lua api 110 | -- Arg1 specifies the mode of the keybind (similar to imap, nmap, etc.) 111 | -- Arg2 is the actual keybind 112 | -- Arg3 is the command to execute 113 | -- Arg4 is for aany extra options (noremap and silent are true by default) 114 | -- you can also pass in an empty table or the opt var if you don't want any options. 115 | 116 | map("n", "s", ":%s/"/'/g', opts) 117 | ... 118 | ``` 119 | 120 | ### Changing the colorscheme 121 | 122 | By default, nii-nvim (should) be using the Onedark colorscheme for both nvim and lualine. However, if you want to change the theme, you can do that pretty easily. 123 | In your `init.lua` there should be a line: 124 | - `scheme.load_shared_scheme('onedark')` 125 | 126 | This is the code that sets the colorscheme configuration for both nvim and lualine. 127 | There are a multitude of popular themes included with nii-nvim, with a complete list being: 128 | **Text Editor:** 129 | - Ondark 130 | - Nord 131 | - Monokai 132 | - Gruvbox 133 | - Everforest 134 | - Bluewery 135 | - Night Owl 136 | 137 | **Lualine:** 138 | - Ondark 139 | - Nord 140 | - Monokai 141 | - Gruvbox 142 | - Everforest 143 | - Bluewery 144 | - Night Owl 145 | - MinimalDark 146 | - Custom (Boilerplate code) 147 | 148 | To define a separate text editor theme and lualine theme, you can use the following in the `init.lua` file: 149 | ```lua 150 | scheme.load_scheme('Nord') 151 | scheme.load_lualine_scheme('minimaldark') 152 | ``` 153 | ### Adding Colorschemes 154 | 155 | nii-nvim handles coloschemes in a different manner than most other configurations, as loading is handled by the scheme module. 156 | All theme loading files are defined in `lua/themes/`. 157 | To add a theme (whether installed via plugin or custom) create a file in the themes folder, then add all required code for the theme so load: 158 | 159 | **Sample: (Gruvbox)** 160 | ```lua 161 | -- File in lua/themes/gruvbox.lua 162 | vim.opt.termguicolors = true 163 | vim.cmd('colorscheme gruvbox') 164 | -- EOF 165 | ``` 166 | 167 | You can also create custom statusline themes by taking the boilerplate code in `lua/themes/lualine/custom.lua` and modifying it to your own statusline theme. 168 | **NOTE:** The scheme loading functions directly depend on the filename, so when specifying a theme, make sure that you use the correct filename when scheme functions are called. 169 | 170 | # [03] Contributing 171 | nii-nvim is currently in pre-release, so any contributions are highly appreciated. 172 | If you want to start contributing, make sure to refer to the following in the repository if you want a starting point. 173 | 174 | - The CONTRIBUTING.md 175 | - Any current issues and pull requests 176 | - Planned Features 177 | 178 | You can also help in these ways 179 | - Bug Hunting/Fixing 180 | - Documentation checking/writing 181 | - Promotion of the project (Yes, this is contributing in my opinion) 182 | 183 | Any contributions to these parts of the project are really appreciated. 184 | 185 | **NOTE ON FEATURE REQUESTS:** Currently I the maintainer (Theory_of_Everything) have no interest in feature request at the moment of this commit, 186 | and instead want to focus on the project's current roadmap. However, if you feel a feature request is in the scope of the project's goals, feel free to open an issue. 187 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to nii-nvim 2 | 3 | Decided to help and contribute to [nii-nvim](https://sr.ht/~theorytoe/nii-nvim/)? Great! I am always looking for contributors! 4 | 5 | Please take a moment to review this document in order to make proper contributions and not waste time of the maintainer. 6 | 7 | Following these guidelines helps to communicate that you respect the time spent contributing to this Project. 8 | In return, I will reciprocate that respect in addressing contributions. 9 | 10 | ## Issues/Bug Reports 11 | 12 | **NOTE: I will not be consistently reviewing github issues, as I have moved away from github's workflow** 13 | 14 | If you encounter any bugs, please submit a ticket to the [issue tracker](https://todo.sr.ht/~theorytoe/nii-nvim-bugs) with a "bug" label. 15 | If you encounter dependency/update issues file a ticket with the "bump" tag. 16 | Keep all issue reports on-topic and relevant to the project. 17 | 18 | 19 | 20 | 21 | ## Code Conventions 22 | 23 | Code contributed to nii-nvim must follow these basic conventions: 24 | 25 | - All module definitions should be defined as `M` in the respective containing file 26 | Example: 27 | (correct) 28 | 29 | ```lua 30 | local M = {} 31 | 32 | M.myvar = 'hello world' 33 | 34 | M.myfunc = function() 35 | print('hello world') 36 | end 37 | 38 | return M 39 | ``` 40 | 41 | (incorrect) 42 | 43 | ```lua 44 | local module = {} 45 | 46 | module.myvar = 'hello world' 47 | 48 | module.myfunc = function() 49 | print('hello world') 50 | end 51 | 52 | return module 53 | ``` 54 | 55 | - All strings are encapsulated in single quotes `'`, nested quotes wil alternate between double quotes `"` and single quotes `'` 56 | Example: 57 | 58 | ```lua 59 | myvar0 = 'lua' -- correct! 60 | 61 | myvar1 = "fennel" -- incorrect! 62 | ``` 63 | 64 | - All files must have a brief description of their functionality and(or) layout/usage in multiline comments `--[[`/`--]]`. The contents of this comment should be tabbed once. 65 | Example: 66 | 67 | ```lua 68 | --[[ 69 | 70 | This is the file description with proper tabbing, 71 | contained in a multiline comment. 72 | Don't have descriptions in multiple single line comments 73 | There shold also be 1 line of space between the comment and the text body 74 | 75 | this is improper tabbing with imporper spacing in relation to the end comment! 76 | --]] 77 | ``` 78 | 79 | - Tab style should be 4 spaces (no expandtab). 80 | - All variables should be cast at the top of the file (unless local to a block) 81 | - All code should be well commented, with proper semantics as shown below. 82 | 83 | ```lua 84 | -- varbles can be commented like this regardless of size 85 | local mytable = { 86 | 'item1', 87 | 'item2', 88 | 'item3', 89 | } 90 | 91 | local myvarinline = nil -- small one-liners can be commented inline too (does not apply for blocks) 92 | 93 | 94 | cmd('syntax enable') -- Try to keep one-liners 95 | o.rnu = true -- tabbed the same distance 96 | o.nu = true -- away from code 97 | o.mouse = 'a' -- this makes comments and code 98 | o.cursorline = true -- much more readable 99 | o.modeline = true -- and keeps everything organized 100 | o.modelines = 5 -- for future me (or you) 101 | 102 | -- this is how to comment on block of code 103 | function myfunc() -- you can't comment a block like this 104 | print('myfunc() ran!') 105 | 106 | -- You CAN however comment on lines 107 | -- like this, just make sure there 108 | -- is a space above the comment block 109 | print('This is more cool stuff') 110 | end 111 | ``` 112 | 113 | - You can format all code automatically with [stylua](https://github.com/johnnymorganz/stylua) this project's stylua configuration is in the `.stylua.toml` file 114 | - (you may (or may not) need to rename the stylua config file to `stylua.toml` without the dot) 115 | - stylua tends to mess up on-liner comments. It tends to keep them right next to the code, and not tabbed. (be careful of this please) 116 | 117 | 118 | 119 | ## Commit Messages 120 | 121 | If you are into reading long articles, [this](https://medium.com/@nmpegetis/git-commit-message-conventions-841d6998fc4f) 122 | article is mostly what this project follows in terms of commit messages (although the whole history isn't like this) 123 | 124 | Here is the TD;DR: 125 | - Keep all commit messages in the imperative mood. 126 | - All commit messages must be short and concise. 127 | - All commits are preferred to be smaller than larger (atom commits). 128 | - all messages should follow this format: `(): ` 129 | - Where `:` is the kid of change (i.e `fix:`, `patch:`, `chore:`, `docs:`) and is followed by the (optional) scope and (required) colon. 130 | - Where `` is extra information about the change. 131 | - Where `` is a VERY SHORT description of the fix. 132 | - The commit message body (which is optional, but necessary for larger changes) should have a short description of the reasoning of the changes, and any potentially important details that the commit relates to. 133 | - The footer must reference any relevant issues/prs and indicate any issues/prs that that commit closes. 134 | - A boilerplate snippet: 135 | ``` 136 | [Issue-Code] (): 137 | 138 | 139 | 140 |