Skip to content

Instantly share code, notes, and snippets.

@DanielFGray
Last active February 22, 2025 04:14
Show Gist options
  • Save DanielFGray/4615af89345e540942e0975c7203beeb to your computer and use it in GitHub Desktop.
Save DanielFGray/4615af89345e540942e0975c7203beeb to your computer and use it in GitHub Desktop.
current init.lua
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable",
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
vim.g.mapleader = " " -- 'vim.g' sets global variables
vim.g.loaded_netrwPlugin = 1
require("lazy").setup({
-- utils/commands/maps
{
"https://github.com/nvim-telescope/telescope.nvim",
dependencies = {
"https://github.com/nvim-lua/plenary.nvim",
-- 'https://github.com/joaomsa/telescope-orgmode.nvim',
-- 'https://github.com/ThePrimeagen/refactoring.nvim',
},
tag = "0.1.4",
keys = {
{
"<Leader>/",
function()
require("telescope.builtin").live_grep()
end,
desc = "Live Grep",
mode = "n",
silent = true,
},
{
"<Leader>b",
function()
require("telescope.builtin").buffers()
end,
desc = "List buffers",
mode = "n",
silent = true,
},
{
"<Leader>;",
function()
require("telescope.builtin").commands()
end,
desc = "List commands",
mode = "n",
silent = true,
},
{
"<Leader>ff",
function()
require("telescope.builtin").find_files()
end,
desc = "List project files",
mode = "n",
silent = true,
},
{
"<Leader>fr",
function()
require("telescope.builtin").oldfiles()
end,
desc = "List recent files",
mode = "n",
silent = true,
},
{
"<Leader><space>",
function()
require("telescope.builtin").keymaps()
end,
desc = "List keymaps",
mode = "n",
silent = true,
},
-- { '<leader>crr', "<Esc><cmd>lua require('telescope').extensions.refactoring.refactors()<CR>", desc = 'List refactoring methods' , mode = 'v', silent = true }
},
cmd = { "Telescope" },
opts = {
defaults = {
vimgrep_arguments = {
"rg",
"-L",
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
"--smart-case",
},
prompt_prefix = "  ",
selection_caret = " ",
file_ignore_patterns = { "node_modules" },
path_display = { "truncate" },
},
},
},
{
"https://github.com/jebaum/vim-tmuxify", -- tmux integration
init = function()
vim.g.tmuxify_map_prefix = "<Leader>x"
vim.g.tmuxify_custom_command = "tmux splitw -dv -p25"
vim.g.tmuxify_global_maps = 1
vim.g.tmuxify_run = {
lilypond = ' f="%"; lilypond "$f" && x-pdf "${f/%ly/pdf}"; unset f',
tex = ' f="%"; texi2pdf "$f" && x-pdf "${f/%tex/pdf}"; unset f',
ruby = " ruby %",
python = " python %",
typescript = " ts-node %",
javascript = " node %",
}
end,
},
"https://github.com/vim-utils/vim-husk", -- readline command maps
"https://github.com/tpope/vim-abolish", -- extended subsititions and replacements `:S :Ab`
"https://github.com/tpope/vim-eunuch", -- simple commands for common linux tasks
"https://github.com/tpope/vim-sleuth", -- better indent/buffer type detection
{
"https://github.com/tpope/vim-unimpaired", -- lots of keybinds `[e ]b yox`
keys = { "[", "]", "yo", "<", ">", "=" },
},
"https://github.com/tpope/vim-dotenv", -- make .env vars accessible
"https://github.com/tpope/vim-fugitive", -- git integration
"https://github.com/haya14busa/is.vim", -- better incsearch highlighting
"https://github.com/chrisbra/NrrwRgn", -- `:NR` edits selected regions in separate buffer
"https://github.com/zx2c4/password-store", -- disable viminfo etc for files in ~/.password-store
{
"https://github.com/nvim-treesitter/nvim-treesitter", -- highlighting driven by syntax parsers
event = { "BufReadPre", "BufNewFile" },
lazy = true,
dependencies = {
"https://github.com/nvim-treesitter/nvim-treesitter-textobjects",
"https://github.com/RRethy/nvim-treesitter-endwise",
"https://github.com/andymass/vim-matchup",
"https://github.com/windwp/nvim-ts-autotag",
"https://github.com/JoosepAlviste/nvim-ts-context-commentstring",
},
build = ":TSUpdate",
config = function()
require("nvim-treesitter.configs").setup({
ensure_installed = {
"bash",
"c",
"clojure",
"cmake",
"cpp",
"css",
"dockerfile",
"gitignore",
"graphql",
"haskell",
"html",
"javascript",
"json",
"json5",
"jsonc",
"lua",
"make",
"markdown",
"markdown_inline",
"org",
"perl",
"python",
"regex",
"rust",
"sql",
"tsx",
"typescript",
"vim",
"vimdoc",
"yaml",
},
auto_install = true,
highlight = { enabled = true },
indent = { enable = true },
endwise = { enable = true },
matchup = { enable = true },
autotag = { enable = true },
textobjects = { enable = true },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "gnn",
node_incremental = "grn",
scope_incremental = "grc",
node_decremental = "grm",
},
},
})
end,
},
{ "https://github.com/folke/neodev.nvim", config = true, ft = "lua" },
{ "https://github.com/stevearc/stickybuf.nvim", opts = {} },
-- LSP
{
"https://github.com/VonHeikemen/lsp-zero.nvim",
branch = "v2.x",
lazy = true,
config = function()
-- This is where you modify the settings for lsp-zero
-- Note: autocompletion settings will not take effect
require("lsp-zero.settings").preset({
name = "minimal",
set_lsp_keymaps = false,
manage_nvim_cmp = true,
suggest_lsp_servers = true,
})
end,
},
{
"https://github.com/j-hui/fidget.nvim",
tag = "legacy",
event = { "BufReadPre", "BufNewFile" },
opts = {
text = {
spinner = "dots_negative",
},
timer = {
spinner_rate = 150,
},
},
},
{
"https://github.com/hrsh7th/nvim-cmp",
event = "InsertEnter",
dependencies = {
"https://github.com/hrsh7th/cmp-nvim-lsp",
"https://github.com/hrsh7th/cmp-buffer",
"https://github.com/hrsh7th/cmp-path",
"https://github.com/saadparwaiz1/cmp_luasnip",
"https://github.com/hrsh7th/cmp-nvim-lua",
{
"https://github.com/L3MON4D3/LuaSnip",
dependencies = { "https://github.com/rafamadriz/friendly-snippets" },
build = "make install_jsregexp",
},
"https://github.com/onsails/lspkind.nvim",
{
"https://github.com/roobert/tailwindcss-colorizer-cmp.nvim",
opts = {
color_square_width = 2,
},
},
{
"https://github.com/zbirenbaum/copilot-cmp",
dependencies = {
"https://github.com/zbirenbaum/copilot.lua",
cmd = "Copilot",
event = "InsertEnter",
opts = {
suggestion = { enabled = false },
panel = {
enabled = true,
auto_refresh = true,
},
},
},
opts = true,
},
},
config = function()
require("lsp-zero.cmp").extend({
use_luasnip = true,
set_format = true,
set_sources = "recommended",
})
local cmp = require("cmp")
local cmp_action = require("lsp-zero.cmp").action()
cmp.setup({
formatting = {
format = function(entry, item)
require("lspkind").cmp_format({
mode = "symbol",
symbol_map = { Copilot = "" },
})(entry, item)
return require("tailwindcss-colorizer-cmp").formatter(entry, item)
end,
},
sources = {
{ name = "copilot" },
{ name = "orgmode" },
{ name = "path" },
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "nvim_lua" },
{ name = "buffer" },
},
mapping = {
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-o>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm({ select = true }),
["<Tab>"] = cmp_action.luasnip_supertab(),
["<S-Tab>"] = cmp_action.luasnip_shift_supertab(),
["<C-Space>"] = cmp.mapping.complete(),
["<C-y>"] = cmp_action.luasnip_jump_forward(),
["<C-n>"] = cmp_action.luasnip_jump_backward(),
},
})
end,
},
{
"https://github.com/yetone/avante.nvim",
event = "VeryLazy",
lazy = false,
version = false, -- Set this to "*" to always pull the latest release version, or set it to false to update to the latest code changes.
opts = {
provider = "copilot",
hints = { enabled = false },
windows = {
position = "right",
width = 35,
},
},
-- if you want to build from source then do `make BUILD_FROM_SOURCE=true`
build = "make",
-- build = "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- for windows
dependencies = {
"https://github.com/stevearc/dressing.nvim",
"https://github.com/nvim-lua/plenary.nvim",
"https://github.com/MunifTanjim/nui.nvim",
--- The below dependencies are optional,
"https://github.com/nvim-telescope/telescope.nvim", -- for file_selector provider telescope
"https://github.com/hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
"https://github.com/ibhagwan/fzf-lua", -- for file_selector provider fzf
"https://github.com/nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
"https://github.com/zbirenbaum/copilot.lua", -- for providers='copilot'
{
-- support for image pasting
"https://github.com/HakonHarnes/img-clip.nvim",
event = "VeryLazy",
opts = {
-- recommended settings
default = {
embed_image_as_base64 = false,
prompt_for_file_name = false,
drag_and_drop = {
insert_mode = true,
},
-- required for Windows users
use_absolute_path = true,
},
},
},
{
-- Make sure to set this up properly if you have lazy=true
"https://github.com/MeanderingProgrammer/render-markdown.nvim",
opts = {
file_types = { "markdown", "Avante" },
},
ft = { "markdown", "Avante" },
},
},
},
{
"https://github.com/neovim/nvim-lspconfig",
cmd = "LspInfo",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
-- 'https://github.com/jinzhongjia/LspUI.nvim',
{
"https://github.com/glepnir/lspsaga.nvim",
after = "nvim-lspconfig",
dependencies = {
"https://github.com/nvim-tree/nvim-web-devicons",
"https://github.com/nvim-treesitter/nvim-treesitter",
},
},
"https://github.com/hrsh7th/cmp-nvim-lsp",
"https://github.com/williamboman/mason-lspconfig.nvim",
{
"https://github.com/williamboman/mason.nvim",
cmd = "Mason",
build = function()
pcall(vim.cmd, "MasonUpdate")
end,
},
{
"https://github.com/jose-elias-alvarez/null-ls.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"https://github.com/CKolkey/ts-node-action",
"https://github.com/jay-babu/mason-null-ls.nvim",
"https://github.com/nvim-lua/plenary.nvim",
{ "https://github.com/jose-elias-alvarez/typescript.nvim", config = true },
},
},
{
"https://github.com/ThePrimeagen/refactoring.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"https://github.com/nvim-lua/plenary.nvim",
"https://github.com/nvim-treesitter/nvim-treesitter",
},
opts = {},
-- keys = {
-- -- Remaps for the refactoring operations currently offered by the plugin
-- { '<leader>cre', function() require('refactoring').refactor('Extract Function') end, desc = 'Extract function', mode = 'v', silent = true, expr = false },
-- { '<leader>crf', function() require('refactoring').refactor('Extract Function To File') end, desc = 'Extract function to file', mode = 'v', silent = true, expr = false },
-- { '<leader>crv', function() require('refactoring').refactor('Extract Variable') end, desc = 'Extract variable', mode = 'v', silent = true, expr = false },
-- { '<leader>cri', function() require('refactoring').refactor('Inline Variable') end, desc = 'Inline variable', mode = 'v', silent = true, expr = false },
-- -- Extract block doesn't need visual mode
-- { '<leader>crb', function() require('refactoring').refactor('Extract Block') end, desc = 'Extract block', mode = 'n', silent = true, expr = false },
-- { '<leader>crbf', function() require('refactoring').refactor('Extract Block To File') end, desc = 'Extract block to file', mode = 'n', silent = true, expr = false },
-- -- Inline variable can also pick up the identifier currently under the cursor without visual mode
-- { '<leader>cri', function() require('refactoring').refactor('Inline Variable') end, desc = 'Inline variable', mode = 'n', silent = true, expr = false },
-- },
},
},
config = function()
local lsp = require("lsp-zero")
-- local LspUI = require('LspUI')
-- LspUI.setup({
-- code_action = {
-- icon = '',
-- keybind = {
-- exec = '<CR>',
-- prev = 'k',
-- next = 'j',
-- quit = '<esc>',
-- },
-- }
-- })
require("lspsaga").setup({
lightbulb = {
enable = false,
},
symbol_in_winbar = {
enable = false,
},
ui = {
title = true,
border = "single",
winblend = 10,
expand = "",
collapse = "",
code_action = "",
incoming = " ",
outgoing = " ",
hover = " ",
kind = {},
},
rename = {
title = true,
border = "single",
},
})
lsp.on_attach(function(client, bufnr)
-- vim.keymap.set('n', '<leader>crn', LspUI.api.rename, { buffer = bufnr, desc = 'Rename Symbol', silent = true })
-- vim.keymap.set('n', '<leader>cc', LspUI.api.code_action, { buffer = bufnr, desc = 'Code Action' , silent = true })
-- vim.keymap.set('n', 'gD', LspUI.api.peek_definition, { buffer = bufnr, desc = 'Go to Declaration', silent = true })
vim.keymap.set(
"n",
"<leader>crn",
"<cmd>Lspsaga rename<CR>",
{ buffer = bufnr, desc = "Rename Symbol", silent = true }
)
vim.keymap.set(
{ "n", "x" },
"<leader>cc",
"<cmd>Lspsaga code_action<CR>",
{ buffer = bufnr, desc = "Code Action", silent = true }
)
vim.keymap.set(
"n",
"gl",
vim.diagnostic.open_float,
{ buffer = bufnr, desc = "Show Diagnostics", silent = true }
)
vim.keymap.set(
"n",
"K",
"<Cmd>Lspsaga hover_doc<CR>",
{ buffer = bufnr, desc = "Show Hover", silent = true }
)
vim.keymap.set({ "n", "x" }, "<leader>cf", function()
vim.lsp.buf.format({ async = true })
end, { buffer = bufnr, desc = "Format", silent = true })
vim.keymap.set(
"n",
"gd",
vim.lsp.buf.definition,
{ buffer = bufnr, desc = "Go to Definition", silent = true }
)
vim.keymap.set(
"n",
"gD",
"<cmd>Lspsaga peek_type_definition<CR>",
{ buffer = bufnr, desc = "Go to Declaration", silent = true }
)
vim.keymap.set(
"n",
"gi",
vim.lsp.buf.implementation,
{ buffer = bufnr, desc = "Go to Implementaion", silent = true }
)
vim.keymap.set(
"n",
"[d",
vim.diagnostic.goto_prev,
{ buffer = bufnr, desc = "Previous Diagnostic", silent = true }
)
vim.keymap.set(
"n",
"]d",
vim.diagnostic.goto_next,
{ buffer = bufnr, desc = "Next Diagnostic", silent = true }
)
-- vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = bufnr, desc = 'Show Hover', silent = true })
-- vim.keymap.set('n', 'go', vim.lsp.buf.type_definition, { buffer = bufnr, desc = 'Go to Type Definition', silent = true })
-- vim.keymap.set('n', '<Ctrl-k>', vim.lsp.buf.signature_help, { buffer = bufnr, desc = 'Signature Help', silent = true })
if client.server_capabilities.documentHighlightProvider then
vim.api.nvim_create_augroup("lsp_document_highlight", { clear = true })
vim.api.nvim_clear_autocmds({ buffer = bufnr, group = "lsp_document_highlight" })
vim.api.nvim_create_autocmd("CursorMoved", {
callback = vim.lsp.buf.clear_references,
buffer = bufnr,
group = "lsp_document_highlight",
desc = "Clear All the References",
})
vim.api.nvim_create_autocmd("CursorHold", {
callback = vim.lsp.buf.document_highlight,
buffer = bufnr,
group = "lsp_document_highlight",
desc = "Document Highlight",
})
vim.api.nvim_create_autocmd("CursorHoldI", {
callback = vim.lsp.buf.document_highlight,
buffer = bufnr,
group = "lsp_document_highlight",
desc = "Document Highlight",
})
end
end)
require("lspconfig").lua_ls.setup(lsp.nvim_lua_ls())
lsp.setup()
require("mason").setup({
ui = {
icons = {
package_installed = "✓",
package_pending = "➜",
package_uninstalled = " ",
},
},
})
require("mason-null-ls").setup({
ensure_installed = {
"astro-language-server",
"bash-language-server",
"css-lsp",
"docker-compose-language-service",
"dockerfile-language-server",
"emmet-ls",
"gopls",
"graphql-language-service-cli",
"html-lsp",
"json-lsp",
"lua-language-server",
"prettierd",
"tailwindcss-language-server",
"typescript-language-server",
},
automatic_installation = true,
handlers = {},
})
local null_ls = require("null-ls")
null_ls.setup({
sources = {
require("typescript.extensions.null-ls.code-actions"),
null_ls.builtins.code_actions.ts_node_action,
null_ls.builtins.code_actions.gitsigns,
null_ls.builtins.formatting.prettierd.with({
-- prefer_local = 'node_modules/.bin',
condition = function(utils)
return utils.root_has_file({
".prettierrc",
".prettierrc.json",
".prettierrc.json5",
".prettierrc.js",
".prettierrc.cjs",
"prettier.config.js",
"prettier.config.cjs",
})
end,
}),
-- null_ls.builtins.diagnostics.eslint_d.with({
-- diagnostics_format = '[eslint] #{m}\n(#{c})',
-- condition = function(utils)
-- return utils.root_has_file({
-- '.eslintrc.js',
-- '.eslintrc.cjs',
-- '.eslintrc.json',
-- })
-- end
-- }),
-- null_ls.builtins.formatting.eslint_d,
-- null_ls.builtins.code_actions.eslint_d,
},
})
vim.diagnostic.config({
virtual_text = false,
signs = true,
update_in_insert = false,
underline = true,
severity_sort = true,
float = {
border = "single",
},
virtual_lines = {
only_current_line = true,
spacing = 1,
},
})
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
silent = true,
border = false,
})
vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
border = "single",
})
end,
},
{
"https://github.com/folke/trouble.nvim",
dependencies = "https://github.com/nvim-tree/nvim-web-devicons",
opts = {
use_diagnostic_signs = true,
},
cmd = { "TroubleToggle", "Trouble" },
keys = {
{ "gr", "<cmd>TroubleToggle lsp_references<cr>", desc = "Show References", mode = "n", silent = true },
},
},
-- operators
"https://github.com/tpope/vim-repeat", -- enables repeat `.` for plugins
"https://github.com/tpope/vim-commentary", -- toggle comments `gc<motion>`
"https://github.com/tpope/vim-surround", -- manage surrounding pairs `ds.. cs.. ys..`
"https://github.com/tommcdo/vim-exchange", -- swap selections `cx<motion>` in normal `X` in visual
"https://github.com/AndrewRadev/splitjoin.vim", -- smarter `gJ` joins and split with `gS`
"https://github.com/tpope/vim-speeddating", -- ctrl-x/a works on dates
"https://github.com/Konfekt/vim-CtrlXA", -- ctrl-x/a works on other stuff
"https://github.com/christoomey/vim-titlecase", -- Title Case mappings
-- { 'https://github.com/echasnovski/mini.align',
-- version = '*',
-- opts = true,
-- },
{
"https://github.com/junegunn/vim-easy-align", -- automatic visual alignments
keys = {
{ "ga", "<Plug>(EasyAlign)", mode = { "n", "x" }, desc = "Align text", silent = true },
},
},
{
"https://github.com/dahu/Insertlessly", -- insert newline with enter
init = function()
vim.g.insertlessly_insert_newlines = 1
vim.g.insertlessly_open_newlines = 0
vim.g.insertlessly_backspace_past_bol = 1
vim.g.insertlessly_delete_at_eol_joins = 1
vim.g.insertlessly_insert_spaces = 0
vim.g.insertlessly_cleanup_trailing_ws = 0
vim.g.insertlessly_cleanup_all_ws = 0
vim.g.insertlessly_adjust_cursor = 1
end,
},
-- motions
{
"https://github.com/justinmk/vim-sneak", -- linewise `fFtT;,` and two char sneak `s.. S..`
keys = {
{ "s", "<Plug>Sneak_s", desc = "Sneak forwards" },
{ "S", "<Plug>Sneak_S", desc = "Sneak backwards" },
{ "f", "<Plug>Sneak_f", desc = "Move to next char" },
{ "F", "<Plug>Sneak_F", desc = "Move to previous char" },
{ "t", "<Plug>Sneak_t", desc = "Move before next char" },
{ "T", "<Plug>Sneak_T", desc = "Move before previous char" },
{ "z", "<Plug>Sneak_s", desc = "Sneak forwards", mode = "o" },
{ "Z", "<Plug>Sneak_S", desc = "Sneak backwards", mode = "o" },
{ ";", "<Plug>SneakNext" },
{ ",", "<Plug>SneakPrevious" },
},
},
{
"https://github.com/haya14busa/vim-asterisk", -- improved * search
keys = {
{ "*", "<Plug>(asterisk-z*)<Plug>(is-nohl-1)" },
{ "#", "<Plug>(asterisk-z#)<Plug>(is-nohl-1)" },
{ "g*", "<Plug>(asterisk-gz*)<Plug>(is-nohl-1)" },
{ "g#", "<Plug>(asterisk-gz#)<Plug>(is-nohl-1)" },
},
},
{
"https://github.com/andymass/vim-matchup", -- extended `%` jumping
keys = { "%" },
},
"https://github.com/wellle/targets.vim", -- extended motions `vin)`
{
"https://github.com/kana/vim-textobj-indent", -- indent textobj `vii`
event = { "BufReadPre", "BufNewFile" },
dependencies = { "https://github.com/kana/vim-textobj-user" }, -- custom textobj engine, more textobj: https://github.com/kana/vim-textobj-user/wiki
},
{
"https://github.com/glts/vim-textobj-comment", -- comment textobj `vac`
dependencies = { "https://github.com/kana/vim-textobj-user" },
},
-- UI
{
"https://github.com/utilyre/barbecue.nvim",
name = "barbecue",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"https://github.com/SmiteshP/nvim-navic",
"https://github.com/nvim-tree/nvim-web-devicons", -- optional dependency
},
opts = true,
},
{
"https://github.com/nvim-lualine/lualine.nvim", -- fancy statusline
event = "VeryLazy",
dependencies = {
"https://github.com/nvim-tree/nvim-web-devicons",
-- 'https://github.com/SmiteshP/nvim-navic',
"https://github.com/jcdickinson/wpm.nvim",
-- 'https://github.com/arkav/lualine-lsp-progress',
},
config = function()
-- local navic = require('nvim-navic')
-- navic.setup({
-- highlight = true,
-- separator = '  ',
-- -- separator = '  ',
-- lsp = {
-- auto_attach = true,
-- },
-- })
local wpm = require("wpm")
wpm.setup({})
require("lualine").setup({
options = {
disabled_filetypes = { statusline = { "alpha" } },
globalstatus = true,
},
extensions = {
"fzf",
"fugitive",
"nvim-tree",
"neo-tree",
"lazy",
},
sections = {
lualine_c = {
"filename",
},
lualine_x = {
function()
return wpm.wpm() .. " wpm" .. " " .. wpm.historic_graph()
end,
},
lualine_y = { "encoding", "fileformat" },
lualine_z = { "filetype" },
},
})
end,
},
{
"https://github.com/romgrk/barbar.nvim",
dependencies = {
"https://github.com/lewis6991/gitsigns.nvim", -- OPTIONAL: for git status
"https://github.com/nvim-tree/nvim-web-devicons", -- OPTIONAL: for file icons
},
init = function()
vim.g.barbar_auto_setup = false
end,
keys = {
{ "[b", "<Cmd>BufferPrevious<CR>", desc = "Previous buffer in bar list", mode = "n", silent = true },
{ "]b", "<Cmd>BufferNext<CR>", desc = "Next buffer in bar list", mode = "n", silent = true },
{ "[B", "<Cmd>BufferMovePrevious<CR>", desc = "Next buffer in bar list", mode = "n", silent = true },
{ "]B", "<Cmd>BufferMoveNext<CR>", desc = "Next buffer in bar list", mode = "n", silent = true },
},
opts = {
hide = { extensions = true },
sidebar_filetypes = {
NvimTree = true,
undotree = { text = "undotree" },
["neo-tree"] = { event = "BufWipeout" },
},
},
},
{
"https://github.com/nvim-neo-tree/neo-tree.nvim",
dependencies = {
"https://github.com/nvim-lua/plenary.nvim",
"https://github.com/nvim-tree/nvim-web-devicons",
"https://github.com/MunifTanjim/nui.nvim",
{ "https://github.com/miversen33/netman.nvim", opts = true },
},
lazy = true,
keys = {
{
"-",
"<Cmd>Neotree focus filesystem right reveal_force_cwd<CR>",
desc = "Show file in filetree",
mode = "n",
silent = true,
},
},
commands = { "Neotree" },
opts = {
follow_current_file = { enabled = true },
popup_border_style = "rounded",
enable_git_status = true,
enable_diagnostics = false,
open_files_do_not_replace_types = { "terminal", "trouble", "qf" },
sources = {
"filesystem",
"buffers",
"document_symbols",
"git_status",
"netman.ui.neo-tree",
},
event_handlers = {
{
event = "file_opened",
handler = function(file_path)
require("neo-tree.command").execute({ action = "close" })
end,
},
},
document_symbols = {
follow_cursor = false,
kinds = {
File = { icon = "󰈙", hl = "Tag" },
Namespace = { icon = "󰌗", hl = "Include" },
Package = { icon = "󰏖", hl = "Label" },
Class = { icon = "󰌗", hl = "Include" },
Property = { icon = "󰆧", hl = "@property" },
Enum = { icon = "󰒻", hl = "@number" },
Function = { icon = "󰊕", hl = "Function" },
String = { icon = "󰀬", hl = "String" },
Number = { icon = "󰎠", hl = "Number" },
Array = { icon = "󰅪", hl = "Type" },
Object = { icon = "󰅩", hl = "Type" },
Key = { icon = "󰌋", hl = "" },
Struct = { icon = "󰌗", hl = "Type" },
Operator = { icon = "󰆕", hl = "Operator" },
TypeParameter = { icon = "󰊄", hl = "Type" },
StaticMethod = { icon = "󰠄 ", hl = "Function" },
},
},
-- Add this section only if you've configured source selector.
source_selector = {
-- winbar = true,
statusline = false,
sources = {
{ source = "document_symbols", display_name = " 󰌗 Symbols " },
{ source = "filesystem", display_name = " 󰉓 Files " },
{ source = "buffers", display_name = " 󰉓 Buffers " },
{ source = "git_status", display_name = " 󰊢 Git " },
},
},
filesystem = {
hijack_netrw_behavior = "open_default",
window = {
mappings = {
["-"] = "navigate_up",
},
},
},
default_component_configs = {
container = {
enable_character_fade = true,
},
indent = {
indent_size = 2,
padding = 1, -- extra padding on left hand side
-- indent guides
with_markers = true,
indent_marker = "│",
last_indent_marker = "└",
highlight = "NeoTreeIndentMarker",
-- expander config, needed for nesting files
with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders
expander_collapsed = "",
expander_expanded = "",
expander_highlight = "NeoTreeExpander",
},
icon = {
folder_closed = "",
folder_open = "",
folder_empty = "󰜌",
-- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there
-- then these will never be used.
default = "*",
highlight = "NeoTreeFileIcon",
},
modified = {
symbol = "[+]",
highlight = "NeoTreeModified",
},
name = {
trailing_slash = false,
use_git_status_colors = true,
highlight = "NeoTreeFileName",
},
git_status = {
symbols = {
-- Change type
added = "", -- or '✚', but this is redundant info if you use git_status_colors on the name
modified = "", -- or '', but this is redundant info if you use git_status_colors on the name
deleted = "✖", -- this can only be used in the git_status source
renamed = "󰁕", -- this can only be used in the git_status source
-- Status type
untracked = "",
ignored = "",
unstaged = "󰄱",
staged = "",
conflict = "",
},
},
-- If you don't want to use these columns, you can set `enabled = false` for each of them individually
file_size = {
enabled = true,
required_width = 64, -- min width of window required to show this column
},
type = {
enabled = true,
required_width = 122, -- min width of window required to show this column
},
last_modified = {
enabled = true,
required_width = 88, -- min width of window required to show this column
},
created = {
enabled = true,
required_width = 110, -- min width of window required to show this column
},
symlink_target = {
enabled = false,
},
},
},
},
"https://github.com/noahfrederick/vim-noctu", -- a simple terminal-based theme
{
"https://github.com/flazz/vim-colorschemes", -- lots of colorschemes
priority = 100,
},
"https://github.com/markonm/traces.vim", -- visual substitution highlight
{
"https://github.com/junegunn/goyo.vim", -- fences in current buffer with extra windows
keys = {
{ "<Leader>tG", "<Cmd>Goyo<CR>", desc = "Toggle Goyo", mode = "n", silent = true },
},
},
{
"https://github.com/junegunn/limelight.vim", -- helps focus on current paragraph
cmd = { "Limelight" },
lazy = true,
init = function()
vim.g.limelight_conceal_ctermfg = "black"
end,
keys = {
{ "<Leader>tl", "<Cmd>Limelight!!<CR>", mode = "n", desc = "Toggle limelight", silent = true },
},
},
{
"https://github.com/DanielFGray/DistractionFree.vim", -- toggle UI elements
keys = {
{ "<Leader>td", "<Cmd>DistractionsToggle<CR>", desc = "Toggle distractions", mode = "n", silent = true },
},
},
{
"https://github.com/anuvyklack/pretty-fold.nvim", -- prettier/configurable folds
opts = {
keep_indentation = true,
fill_char = " ",
process_comment_signs = true,
},
},
{
"https://github.com/goolord/alpha-nvim", -- fancy startup screen
dependencies = { "https://github.com/nvim-tree/nvim-web-devicons" },
config = function()
require("alpha").setup(require("alpha.themes.startify").config)
end,
},
{
"https://github.com/folke/which-key.nvim", -- visual keybind navigator
dependencies = { "https://github.com/afreakk/unimpaired-which-key.nvim" },
keys = { "<leader>", "[", "]", "g", "v", "c", "d", "y", '"', "z", "<C-w>", "=", "@" },
config = function()
local wk = require("which-key")
local uwk = require("unimpaired-which-key")
wk.setup({
key_labels = {
["<CR>"] = "",
["<Plug>"] = "",
},
-- window = {
-- winblend = 12
-- },
})
wk.register({
d = "db",
e = "edit",
f = "files",
g = "git",
n = "narrow",
c = {
"code",
r = "refactor",
},
t = "toggles/tabs",
x = "tmux",
}, { prefix = "<leader>" })
wk.register(uwk.normal_mode)
wk.register(uwk.normal_and_visual_mode, { mode = { "n", "v" } })
end,
},
{
"https://github.com/lewis6991/gitsigns.nvim", -- git markers
event = { "BufReadPre", "BufNewFile" },
opts = {
current_line_blame = false,
signs = {
add = { text = "+" },
change = { text = "~" },
delete = { text = "_" },
topdelete = { text = "‾" },
changedelete = { text = "~" },
},
preview_config = {
border = "single",
},
-- word_diff = true,
on_attach = function(bufnr)
local gitsigns = require("gitsigns")
vim.keymap.set("n", "[g", function()
gitsigns.nav_hunk("prev")
end, { buffer = bufnr, desc = "Jump to previous hunk" })
vim.keymap.set("n", "]g", function()
gitsigns.nav_hunk("next")
end, { buffer = bufnr, desc = "Jump to next hunk" })
vim.keymap.set("n", "<leader>gs", gitsigns.stage_hunk, { buffer = bufnr, desc = "Stage hunk" })
vim.keymap.set("n", "<leader>gr", gitsigns.reset_hunk, { buffer = bufnr, desc = "Reset hunk" })
vim.keymap.set("n", "<leader>gR", gitsigns.reset_buffer, { buffer = bufnr, desc = "Reset buffer" })
vim.keymap.set("n", "<leader>gp", gitsigns.preview_hunk, { buffer = bufnr, desc = "Preview hunk" })
vim.keymap.set(
"n",
"<leader>gb",
gitsigns.blame_line,
{ buffer = bufnr, desc = "Show blame information" }
)
vim.keymap.set(
"n",
"<leader>gS",
gitsigns.stage_buffer,
{ buffer = bufnr, desc = "Stage entire buffer" }
)
vim.keymap.set("n", "<leader>gD", gitsigns.diffthis, { buffer = bufnr, desc = "Diff buffer" })
vim.keymap.set(
"n",
"<leader>gT",
gitsigns.toggle_current_line_blame,
{ buffer = bufnr, desc = "Toggle current blame" }
)
vim.keymap.set("n", "<leader>gd", function()
gitsigns.preview_hunk_inline()
end, { buffer = bufnr, desc = "Toggle deleted" })
end,
},
},
{
"https://github.com/mbbill/undotree", -- visual undo tree
keys = {
{ "<Leader>u", "<Cmd>UndotreeToggle<CR>", desc = "Toggle undotree window", mode = "n", silent = true },
},
config = function()
vim.g.undotree_WindowLayout = 4
vim.g.undotree_SetFocusWhenToggle = 1
vim.g.undotree_SplitWidth = 60
vim.g.Undotree_CustomMap = function()
vim.keymap.set("n", "k", "<Plug>UndotreeGoNextState", { buffer = true, silent = true })
vim.keymap.set("n", "j", "<Plug>UndotreeGoPreviousState", { buffer = true, silent = true })
vim.keymap.set("n", "<Esc>", "<Plug>UndotreeClose", { buffer = true, silent = true })
end
end,
},
{
"https://github.com/TimUntersberger/neogit", -- git integration
dependencies = {
"https://github.com/nvim-lua/plenary.nvim",
"https://github.com/sindrets/diffview.nvim",
},
cmd = { "Neogit" },
opts = {
kind = "split",
-- Persist the values of switches/options within and across sessions
remember_settings = true,
-- Scope persisted settings on a per-project basis
use_per_project_settings = false,
-- Array-like table of settings to never persist. Uses format 'Filetype--cli-value'
-- ie: `{ 'NeogitCommitPopup--author', 'NeogitCommitPopup--no-verify' }`
ignored_settings = {},
-- Change the default way of opening the commit popup
commit_popup = {
kind = "split",
},
-- Change the default way of opening the preview buffer
preview_buffer = {
kind = "split",
},
-- Change the default way of opening popups
popup = {
kind = "split",
},
-- customize displayed signs
signs = {
-- { CLOSED, OPENED },
section = { "󰜴", "󰜮" },
item = { "󰜴", "󰜮" },
hunk = { "", "" },
},
integrations = {
diffview = false,
},
-- Setting any section to `false` will make the section not render at all
sections = {
-- untracked = { folded = false },
-- unstaged = { folded = false },
-- staged = { folded = false },
-- stashes = { folded = true },
-- unpulled = { folded = true },
-- unmerged = { folded = false },
-- recent = { folded = true },
},
-- override/add mappings
mappings = {
-- modify status buffer mappings
-- status = {
-- -- Adds a mapping with 'B' as key that does the 'BranchPopup' command
-- ['B'] = 'BranchPopup',
-- -- Removes the default mapping of 's'
-- ['s'] = '',
-- },
},
},
},
{
"https://github.com/hkupty/iron.nvim", -- interactive repl
config = true,
lazy = true,
},
{
"https://github.com/kristijanhusak/vim-dadbod-ui", -- UI for interacting with a db
dependencies = {
"https://github.com/tpope/vim-dispatch",
"https://github.com/tpope/vim-dadbod",
},
keys = {
{ "<Leader>db", "<Cmd>DBUIToggle<CR>", desc = "open DB UI", mode = "n", silent = true },
{ "<Leader>db", "<Cmd>'<,'>DB<CR>", desc = "execute code", mode = "x", silent = true },
},
init = function()
vim.g.db_ui_env_variable_url = "DATABASE_URL"
vim.g.db_ui_hide_schemas = { "migrations", "information_schema", "pg_catalog" }
vim.g.db_ui_use_nerd_fonts = 1
vim.g.db_ui_table_helpers = {
postgresql = {
Count = "SELECT count(*) FROM {optional_schema}{table}",
Explain = "EXPLAIN ANALYZE\n{last_query}",
},
}
end,
},
{
"https://github.com/cshuaimin/ssr.nvim",
keys = {
{
"<Leader><C-s>",
function()
require("ssr").open()
end,
mode = { "n", "x" },
desc = "Structural replace",
silent = true,
},
},
opts = {
min_width = 50,
min_height = 5,
max_width = 120,
max_height = 25,
keymaps = {
close = "q",
next_match = "n",
prev_match = "N",
replace_confirm = "<CR>",
replace_all = "<Leader><CR>",
},
},
},
{
"https://github.com/gorbit99/codewindow.nvim", -- minimap
keys = {
{
"<Leader>tm",
function()
require("codewindow").toggle_minimap()
end,
mode = "n",
desc = "Toggle minimap",
silent = true,
},
},
config = function()
require("codewindow").setup({
exclude_filetypes = { "help", "NvimTree", "Trouble" },
window_border = "single",
})
vim.api.nvim_set_hl(0, "CodewindowBackground", { bg = "#222730" })
-- vim.api.nvim_set_hl(0, 'CodewindowError', { bg = '#ff0000' })
-- vim.api.nvim_set_hl(0, 'CodewindowWarn', { bg = '#ebcb8b' })
-- CodewindowAddition -- the color of the addition git sign
-- CodewindowDeletion -- the color of the deletion git sign
-- CodewindowUnderline -- the color of the underlines on the minimap
end,
},
{
"https://github.com/nvim-orgmode/orgmode",
ft = "org",
dependencies = {
{
"https://github.com/lukas-reineke/headlines.nvim",
dependencies = "https://github.com/nvim-treesitter/nvim-treesitter",
config = true, -- or `opts = {}`
},
{ "https://github.com/michaelb/sniprun", build = "sh ./install.sh" },
{ "https://github.com/akinsho/org-bullets.nvim", opts = true },
},
config = function()
local orgmode = require("orgmode")
orgmode.setup_ts_grammar()
orgmode.setup({
-- org_agenda_files = {'~/Dropbox/org/*', '~/my-orgs/**/*'},
-- org_default_notes_file = '~/Dropbox/org/refile.org',
})
end,
},
{
"https://github.com/NvChad/nvim-colorizer.lua",
lazy = true,
opts = {
buftypes = {
"!prompt",
"!popup",
"!mason",
},
user_default_options = {
tailwind = true,
},
},
},
{
"https://github.com/akinsho/bufferline.nvim",
event = "VeryLazy",
dependencies = {
"https://github.com/nvim-tree/nvim-web-devicons",
},
opts = {
options = {
diagnostics = "nvim_lsp",
always_show_bufferline = false,
hover = {
enabled = true,
},
},
},
},
-- { 'https://github.com/nvim-tree/nvim-tree.lua', -- file tree browser `-`
-- dependencies = 'https://github.com/nvim-tree/nvim-web-devicons',
-- opts = {
-- -- sort_by = 'case_insensitive',
-- disable_netrw = true,
-- hijack_cursor = true,
-- hijack_netrw = true,
-- hijack_directories = {
-- enable = true,
-- auto_open = true,
-- },
-- update_focused_file = {
-- enable = true,
-- update_root = true,
-- ignore_list = {},
-- },
-- actions = {
-- open_file = {
-- quit_on_open = true
-- },
-- },
-- view = {
-- adaptive_size = true,
-- side = 'right',
-- },
-- renderer = {
-- group_empty = true,
-- },
-- filters = {
-- dotfiles = false,
-- },
-- git = {
-- enable = true,
-- ignore = true,
-- },
-- },
-- keys = {
-- { '-', function() require('nvim-tree.api').tree.toggle({ find_file = true, focus = true, current_window = false }) end, desc = 'Show file in filetree', mode = 'n', silent = true },
-- },
-- },
-- { 'https://github.com/lukas-reineke/indent-blankline.nvim',
-- event = { 'BufReadPost', 'BufNewFile' },
-- opts = {
-- char_list = { '|', '¦', '┆', '┊' },
-- filetype_exclude = { 'help', 'alpha', 'neo-tree', 'Trouble', 'lazy' },
-- show_current_context = true,
-- show_current_context_start = true,
-- use_treesitter_scope = true,
-- space_char_highlight_list = { 'Comment' },
-- },
-- },
-- { 'https://github.com/barrett-ruth/import-cost.nvim',
-- build = 'sh install.sh yarn',
-- ft = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact' },
-- opts = {
-- highlight = 'Comment',
-- format = {
-- virtual_text = '%s (gz: %s)',
-- },
-- },
-- },
})
vim.opt.autoread = true
vim.opt.backspace = "indent,eol,start" -- backspace over everything
vim.opt.colorcolumn = { 80 } -- highlight 80th column
vim.opt.confirm = true -- y/n save prompt on quit
vim.opt.equalalways = true
vim.opt.foldexpr = "nvim_treesitter#foldexpr()" -- fold by expressions
vim.opt.foldlevelstart = 999 -- open all folds by default
vim.opt.foldmethod = "expr"
vim.opt.hidden = true -- switch buffers without saving
vim.opt.hlsearch = true
vim.opt.incsearch = true -- visual searching
vim.opt.linebreak = true -- break at word boundaries when wrap enabled
vim.opt.list = true
vim.opt.listchars = { tab = "| ", trail = "★" } -- visible tab chars and trailing spaces
vim.opt.listchars:append({ extends = "»", precedes = "«" }) -- custom line wrap chars
-- vim.opt.listchars:append({ eol = '¬', space = '🞄' }) -- visible space and eol chars (very noisy)
vim.opt.modeline = true
vim.opt.mouse = "nv" -- mouse on for normal,visual mode (but not insert while typing)
vim.opt.number = true -- toggle with yon -- show current line number (0 with rnu)
vim.opt.relativenumber = true -- toggle with yor -- line numbers relative to current position
vim.opt.showcmd = true -- visual operator pending
vim.opt.showmode = false -- hide mode indicator from command (already shown in statusline)
vim.opt.showtabline = 2 -- always show tabline
vim.opt.laststatus = 3 -- always show statusline
vim.opt.signcolumn = "yes" -- always keep the sign column open
vim.opt.smarttab = true
vim.opt.splitright = false -- split defaults
vim.opt.timeoutlen = 100 -- see help
vim.opt.ttimeoutlen = 100 -- see help
vim.opt.backupdir = vim.fn.stdpath("config") .. "/backups//" -- vim backups in vim dir
vim.opt.undodir = vim.fn.stdpath("config") .. "/undo//" -- undofiles in vim dir
vim.opt.directory = vim.fn.stdpath("config") .. "/swaps//" -- swap files in vim dir
vim.opt.undofile = true -- enable persistent undo files
vim.opt.updatetime = 100 -- cursorhold time and writing swap file debounce time in ms,
vim.opt.wrap = false -- toggle with yow -- disable linewrap
-- vim.opt.termguicolors = true
-- ╒══ Disable hlsearch while loading viminfo
-- │ ╒══ Remember marks for last 500 files
-- │ │ ╒══ Remember last 1000 commands
-- │ │ │ ╒══ Remember last 1000 search patterns
-- │ │ │ │ ╒══ Remember up to 1MB in each register
-- │ │ │ │ │ ╒═══ Remember up to 10000 lines in each register
-- │ │ │ │ │ │
-- │ │ │ │ │ │
vim.cmd([[set viminfo=h,'500,:1000,/1000,s1000,<10000]])
vim.fn.sign_define("DiagnosticSignWarn", { text = "", texthl = "DiagnosticSignWarn" })
vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" })
vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
vim.fn.sign_define("DiagnosticSignError", { text = "", texthl = "DiagnosticSignError" })
-- make Y behave like C and D
vim.keymap.set("", "Y", "y$")
-- swap ' and `
vim.keymap.set("", "'", "`")
vim.keymap.set("", "`", "'")
-- an attempt at exclusive folds
vim.keymap.set("n", "zj", "zjzMzvzz", { desc = "Jump to the fold below", silent = true })
vim.keymap.set("n", "zk", "zkzMzvzz", { desc = "Jump to the fold above", silent = true })
vim.keymap.set("n", "za", "zazMzvzz", { desc = "Toggle fold under cursor", silent = true })
-- easy tab size changing
vim.keymap.set("n", "<Leader>t2", "<Cmd>setl ts=2 sw=2<CR>", { desc = "Set tabsize to 2", silent = true })
vim.keymap.set("n", "<Leader>t4", "<Cmd>setl ts=4 sw=4<CR>", { desc = "Set tabsize to 4", silent = true })
vim.keymap.set("n", "<Leader>t8", "<Cmd>setl ts=8 sw=8<CR>", { desc = "Set tabsize to 8", silent = true })
-- unimpaired-like expandtab toggle
vim.keymap.set("n", "yoe", "<Cmd>set expandtab!<CR>", { desc = "Toggle expandtab", silent = true })
vim.keymap.set(
"n",
"<Leader>ec",
':e <C-r>=stdpath("config")<CR>/init.lua<CR>',
{ desc = "edit config file", silent = true }
)
-- quicker :s mappings
-- see also :h c_CTRL-R_CTRL-W
vim.keymap.set(
"n",
"<Leader>s",
"<esc>:s///gc<left><left><left><left>",
{ desc = ":subsitute on current line", silent = true }
)
vim.keymap.set(
"n",
"<Leader>S",
"<esc>:%s///gc<left><left><left><left>",
{ desc = ":subsitute on all lines", silent = true }
)
vim.keymap.set("x", "<Leader>s", ":s///gc<left><left>", { desc = ":subsitute on selection", silent = true })
-- insert timestamp with ctrl-t
vim.keymap.set(
{ "c", "i" },
"<C-t>",
'<C-r>=strftime("%FT%TZ")<Left><Left>',
{ desc = "insert timestamp", silent = true }
)
vim.keymap.set(
"n",
"<Leader>cl",
"execute 'norm! yiwoconsole.log({})' | norm! hhp",
{ desc = "console.log current word", silent = true }
)
vim.api.nvim_create_autocmd("TextYankPost", {
callback = function()
vim.highlight.on_yank({
-- on_visual = false,
timeout = 750,
})
end,
group = vim.api.nvim_create_augroup("YankHighlight", { clear = true }),
pattern = "*",
})
-- vim.api.nvim_create_autocmd('BufReadPost', {
-- callback = function()
-- local mark = vim.api.nvim_buf_get_mark(0, '"')
-- local lcount = vim.api.nvim_buf_line_count(0)
-- if mark[1] > 0 and mark[1] <= lcount then
-- pcall(vim.api.nvim_win_set_cursor, 0, mark)
-- end
-- end,
-- })
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "*",
callback = function()
vim.api.nvim_set_hl(0, "LspReferenceText", { ctermbg = "black" })
vim.api.nvim_set_hl(0, "Whitespace", { ctermfg = 0 })
vim.api.nvim_set_hl(0, "NonText", { ctermfg = 0 })
vim.api.nvim_set_hl(0, "SpecialKey", { ctermfg = 0 })
vim.api.nvim_set_hl(0, "WinSeparator", { ctermbg = "none", ctermfg = "black" })
vim.api.nvim_set_hl(0, "DiffChange", { ctermbg = "none", ctermfg = "yellow" })
vim.api.nvim_set_hl(0, "DiffAdd", { ctermbg = "none", ctermfg = "green" })
vim.api.nvim_set_hl(0, "DiffDelete", { ctermbg = "none", ctermfg = "red" })
vim.api.nvim_set_hl(0, "Sneak", { ctermfg = "black", ctermbg = "white" })
vim.api.nvim_set_hl(0, "WinBar", { ctermbg = "black" })
end,
group = vim.api.nvim_create_augroup("colorscheme", { clear = true }),
})
vim.cmd([[
" expand %% in the command prompt to the current dir
cabbrev %% <C-r>=fnameescape(expand('%:h'))<CR>
" common typing mistakes
iabbrev functino function
iabbrev seperate separate
iabbrev actino action
iabbrev improt import
iabbrev frmo from
iabbrev teh the
" common command typos
command! -bang W w<bang>
command! -bang Q q<bang>
command! -bang Qa qa<bang>
command! -bang QA qa<bang>
command! -bang Wa wa<bang>
command! -bang WA wa<bang>
command! -bang Wqa wqa<bang>
command! -bang WQa wqa<bang>
command! -bang WQA wqa<bang>
" autocmds
augroup Vim
" always wrap autocmds in an augroup
" reset the augroup so autocmds don't stack on reload
autocmd!
"" enable treesitter by default
" autocmd BufReadPre *
" \ TSEnable highlight
" reload init.lua on save
autocmd BufWritePost $MYVIMRC
\ execute 'luafile %'
" restore last known position in file
autocmd BufReadPost *
\ if &ft != 'gitcommit' && line("'\"") > 0 && line("'\"") <= line('$') |
\ execute 'normal! g`"zvzz' |
\ endif
" start git commits in insert mode with spelling and textwidth
autocmd FileType gitcommit
\ setlocal spell textwidth=72 |
\ startinsert
" use q to close non-files (help, quickfix, etc)
autocmd BufEnter *
\ if &buftype != '' |
\ nnoremap <silent><buffer> q :<C-u>bw<CR> |
\ endif
" open :help to the right at 80 columns
autocmd FileType help
\ wincmd L |
\ vert resize 81
" expand help when focused
autocmd BufEnter *
\ if &filetype ==? 'help' |
\ execute 'normal 0' |
\ vert resize 81 |
\ endif
" make help small when unfocus
autocmd BufLeave *
\ if &filetype ==? 'help' |
\ vert resize 10 |
\ endif
" make help small when vim resized
autocmd VimResized help
\ vert resize 10
autocmd TermOpen *
\ setlocal nonu nornu signcolumn=no
augroup END
if exists('g:neovide') || exists('g:goneovim')
set guifont=FiraCode\ Nerd\ Font:h9
let g:neovide_floating_blur_amount_x = 2.0
let g:neovide_floating_blur_amount_y = 2.0
let g:neovide_cursor_animation_length = 0
set termguicolors
colorscheme nord
"else
" colorscheme noctu
endif
]])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment