142 lines
4.1 KiB
Lua
142 lines
4.1 KiB
Lua
-- Bootstrap lazy.nvim
|
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
|
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
|
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
|
if vim.v.shell_error ~= 0 then
|
|
vim.api.nvim_echo({
|
|
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
|
{ out, "WarningMsg" },
|
|
{ "\nPress any key to exit..." },
|
|
}, true, {})
|
|
vim.fn.getchar()
|
|
os.exit(1)
|
|
end
|
|
end
|
|
vim.opt.rtp:prepend(lazypath)
|
|
|
|
vim.g.mapleader = " "
|
|
vim.g.netrw_fastbrowse = 0 -- close netrw on open
|
|
|
|
vim.opt.number = true
|
|
vim.opt.relativenumber = true
|
|
vim.opt.cursorline = true
|
|
vim.opt.tabstop = 4
|
|
vim.opt.shiftwidth = 4
|
|
vim.opt.autoindent = true
|
|
vim.opt.ignorecase = true
|
|
vim.opt.foldmethod = "expr"
|
|
vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
|
|
|
|
local n_keymap = function(lhs, rhs)
|
|
vim.api.nvim_set_keymap('n', lhs, rhs, { noremap = true, silent = true })
|
|
end
|
|
|
|
vim.api.nvim_set_keymap('i', 'jk', '<esc>l', { noremap = true, silent = true })
|
|
vim.api.nvim_set_keymap('i', 'Jk', '<esc>l', { noremap = true, silent = true })
|
|
n_keymap('j', 'gj')
|
|
n_keymap('k', 'gk')
|
|
vim.keymap.set('v', '<C-c>', '"+y')
|
|
|
|
zzkeys = {'u', 'n', 'N', '}', '{', ']]', '[[', '][', '[]', '<C-]>', '<C-t>', '<C-o>', '<C-i>', '<C-r>'}
|
|
for i,k in pairs(zzkeys) do
|
|
n_keymap(k, k..'zz')
|
|
end
|
|
|
|
n_keymap('<leader>w', ':w!<CR>')
|
|
n_keymap('<leader>q', ':keepalt bd!<CR>')
|
|
n_keymap('<leader>i', ':set list! number relativenumber signcolumn=auto<CR>')
|
|
n_keymap('<leader>n', ':set nonumber norelativenumber signcolumn=no<CR>')
|
|
n_keymap('<leader><space>', ':let @/ = ""<BAR>cclose<CR>:echo @%<CR>')
|
|
n_keymap('<leader><tab>', '<C-^>')
|
|
|
|
n_keymap('<leader>ebi', ':e ~/.bin<cr>')
|
|
|
|
n_keymap('<leader>ecc', ':e ~/.config<cr>')
|
|
n_keymap('<leader>ecs', ':e ~/.ssh<cr>')
|
|
n_keymap('<leader>ecf', ':e ~/.config/fish<cr>')
|
|
n_keymap('<leader>ecg', ':e ~/.config/git<cr>')
|
|
n_keymap('<leader>eck', ':e ~/.kube/config<cr>')
|
|
n_keymap('<leader>eco', ':e ~/.config/opencode<cr>')
|
|
n_keymap('<leader>ecv', ':e ~/.config/nvim<cr>')
|
|
|
|
n_keymap('<leader>f', "<cmd>Telescope find_files hidden=true<cr>")
|
|
n_keymap('<leader>b', '<cmd>Telescope buffers<cr>')
|
|
n_keymap(';', '<cmd>Telescope live_grep hidden=true<cr>')
|
|
|
|
-- Setup lazy.nvim
|
|
require("lazy").setup({
|
|
spec = {
|
|
'neovim/nvim-lspconfig',
|
|
'github/copilot.vim',
|
|
'tpope/vim-fugitive',
|
|
'tpope/vim-rhubarb',
|
|
{
|
|
"kylechui/nvim-surround",
|
|
version = "*",
|
|
event = "VeryLazy",
|
|
},
|
|
'tpope/vim-endwise',
|
|
'tpope/vim-eunuch',
|
|
'tpope/vim-surround',
|
|
'tpope/vim-obsession',
|
|
{
|
|
"folke/ts-comments.nvim",
|
|
opts = {},
|
|
event = "VeryLazy",
|
|
enabled = vim.fn.has("nvim-0.10.0") == 1,
|
|
},
|
|
{'nvim-telescope/telescope.nvim', tag = '0.1.8'},
|
|
{
|
|
"nvim-treesitter/nvim-treesitter",
|
|
build = ":TSUpdate",
|
|
},
|
|
},
|
|
-- Configure any other settings here. See the documentation for more details.
|
|
-- colorscheme that will be used when installing plugins.
|
|
install = { colorscheme = { "habamax" } },
|
|
-- automatically check for plugin updates
|
|
checker = { enabled = true },
|
|
})
|
|
|
|
require('telescope').setup {
|
|
pickers = {
|
|
live_grep = {
|
|
file_ignore_patterns = { 'node_modules', '.git', '.venv' },
|
|
additional_args = function(_)
|
|
return { "--hidden" }
|
|
end
|
|
},
|
|
},
|
|
extensions = {
|
|
"fzf"
|
|
},
|
|
}
|
|
|
|
require('nvim-treesitter.configs').setup {
|
|
ensure_installed = { "bash", "css", "dockerfile", "fish", "gitignore", "html", "javascript", "json", "lua", "markdown", "python", "query", "svelte", "terraform", "typescript", "vim", "yaml", },
|
|
highlight = { enable = true, },
|
|
}
|
|
|
|
-- Terraform Language Server
|
|
vim.lsp.enable('terraformls')
|
|
vim.api.nvim_create_autocmd({"BufWritePre"}, {
|
|
pattern = {"*.tf", "*.tfvars"},
|
|
callback = function()
|
|
vim.lsp.buf.format({ async = true })
|
|
end,
|
|
})
|
|
|
|
-- Create an event handler for the FileType autocommand
|
|
-- vim.api.nvim_create_autocmd('FileType', {
|
|
-- -- This handler will fire when the buffer's 'filetype' is "zig"
|
|
-- pattern = 'zig',
|
|
-- callback = function(args)
|
|
-- vim.lsp.start({
|
|
-- name = 'zls',
|
|
-- cmd = {'zls'},
|
|
-- root_dir = vim.fs.root(args.buf, {'build.zig'}),
|
|
-- })
|
|
-- end,
|
|
-- })
|
|
--
|