-- 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', 'l', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', 'Jk', 'l', { noremap = true, silent = true }) n_keymap('j', 'gj') n_keymap('k', 'gk') vim.keymap.set('v', '', '"+y') zzkeys = {'u', 'n', 'N', '}', '{', ']]', '[[', '][', '[]', '', '', '', '', ''} for i,k in pairs(zzkeys) do n_keymap(k, k..'zz') end n_keymap('w', ':w!') n_keymap('q', ':keepalt bd!') n_keymap('i', ':set list! number relativenumber signcolumn=auto') n_keymap('n', ':set nonumber norelativenumber signcolumn=no') n_keymap('', ':let @/ = ""cclose:echo @%') n_keymap('', '') n_keymap('ebi', ':e ~/.bin') n_keymap('ecc', ':e ~/.config') n_keymap('ecs', ':e ~/.ssh') n_keymap('ecf', ':e ~/.config/fish') n_keymap('ecg', ':e ~/.config/git') n_keymap('eck', ':e ~/.kube/config') n_keymap('eco', ':e ~/.config/opencode') n_keymap('ecv', ':e ~/.config/nvim') n_keymap('f', "Telescope find_files hidden=true") n_keymap('b', 'Telescope buffers') n_keymap(';', 'Telescope live_grep hidden=true') -- 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, -- }) --