From 4309e63c01abdd3f64d0c72e609068dc270cbd47 Mon Sep 17 00:00:00 2001 From: Jonathan DeMasi Date: Thu, 11 Sep 2025 23:25:29 -0600 Subject: [PATCH] init --- init.lua | 9 ++++++ lazy-lock.json | 9 ++++++ lua/config/lazy.lua | 35 +++++++++++++++++++++++ lua/plugins/blink.lua | 55 +++++++++++++++++++++++++++++++++++++ lua/plugins/colorscheme.lua | 12 ++++++++ lua/plugins/mini.lua | 10 +++++++ lua/plugins/nvim-lsp.lua | 10 +++++++ lua/plugins/treesitter.lua | 24 ++++++++++++++++ 8 files changed, 164 insertions(+) create mode 100644 init.lua create mode 100644 lazy-lock.json create mode 100644 lua/config/lazy.lua create mode 100644 lua/plugins/blink.lua create mode 100644 lua/plugins/colorscheme.lua create mode 100644 lua/plugins/mini.lua create mode 100644 lua/plugins/nvim-lsp.lua create mode 100644 lua/plugins/treesitter.lua diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..4ad2e3d --- /dev/null +++ b/init.lua @@ -0,0 +1,9 @@ +require("config.lazy") +vim.keymap.set('n', 'e', 'lua vim.diagnostic.open_float()', {noremap=true, silent=true}) +vim.keymap.set('n', 'f', 'lua MiniFiles.open()', { desc = "Find files recursively" }) + vim.diagnostic.config({ + virtual_text = true, -- Display diagnostics as inline text + -- Other options can be added here, like: + -- signs = true, -- Show icons in the gutter + -- underline = true, -- Highlight the affected text + }) diff --git a/lazy-lock.json b/lazy-lock.json new file mode 100644 index 0000000..e6fcaee --- /dev/null +++ b/lazy-lock.json @@ -0,0 +1,9 @@ +{ + "blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "mini.nvim": { "branch": "main", "commit": "d12b7c1b4dccc5245a3d2b7bc73da6dd910af2c0" }, + "nvim-lspconfig": { "branch": "master", "commit": "d89f4891f0720cd2598e4bdd60010d8784b2ac8a" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" } +} diff --git a/lua/config/lazy.lua b/lua/config/lazy.lua new file mode 100644 index 0000000..f5ee74c --- /dev/null +++ b/lua/config/lazy.lua @@ -0,0 +1,35 @@ +-- 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) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- 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 }, +}) diff --git a/lua/plugins/blink.lua b/lua/plugins/blink.lua new file mode 100644 index 0000000..8fd69bd --- /dev/null +++ b/lua/plugins/blink.lua @@ -0,0 +1,55 @@ +return { +{ + 'saghen/blink.cmp', + -- optional: provides snippets for the snippet source + dependencies = { 'rafamadriz/friendly-snippets' }, + + -- use a release tag to download pre-built binaries + version = '1.6', + -- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust + -- build = 'cargo build --release', + -- If you use nix, you can build from source using latest nightly rust with: + -- build = 'nix run .#build-plugin', + + ---@module 'blink.cmp' + ---@type blink.cmp.Config + opts = { + -- 'default' (recommended) for mappings similar to built-in completions (C-y to accept) + -- 'super-tab' for mappings similar to vscode (tab to accept) + -- 'enter' for enter to accept + -- 'none' for no mappings + -- + -- All presets have the following mappings: + -- C-space: Open menu or open docs if already open + -- C-n/C-p or Up/Down: Select next/previous item + -- C-e: Hide menu + -- C-k: Toggle signature help (if signature.enabled = true) + -- + -- See :h blink-cmp-config-keymap for defining your own keymap + keymap = { preset = 'super-tab' }, + + appearance = { + -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' + -- Adjusts spacing to ensure icons are aligned + nerd_font_variant = 'mono' + }, + + -- (Default) Only show the documentation popup when manually triggered + completion = { documentation = { auto_show = false } }, + + -- Default list of enabled providers defined so that you can extend it + -- elsewhere in your config, without redefining it, due to `opts_extend` + sources = { + default = { 'lsp', 'path', 'snippets', 'buffer' }, + }, + + -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance + -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation, + -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"` + -- + -- See the fuzzy documentation for more information + fuzzy = { implementation = "prefer_rust" } + }, + opts_extend = { "sources.default" } +}, +} diff --git a/lua/plugins/colorscheme.lua b/lua/plugins/colorscheme.lua new file mode 100644 index 0000000..c7b6240 --- /dev/null +++ b/lua/plugins/colorscheme.lua @@ -0,0 +1,12 @@ +return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, +} diff --git a/lua/plugins/mini.lua b/lua/plugins/mini.lua new file mode 100644 index 0000000..2364444 --- /dev/null +++ b/lua/plugins/mini.lua @@ -0,0 +1,10 @@ +return { + { + 'nvim-mini/mini.nvim', + version = false, + config = function(_, opts) + require('mini.statusline').setup() + require('mini.files').setup() + end, +}, +} diff --git a/lua/plugins/nvim-lsp.lua b/lua/plugins/nvim-lsp.lua new file mode 100644 index 0000000..43ba6fa --- /dev/null +++ b/lua/plugins/nvim-lsp.lua @@ -0,0 +1,10 @@ +return { + { + "https://github.com/neovim/nvim-lspconfig", + config = function() + local lspconfig = require("lspconfig") + lspconfig.gopls.setup({}) + end, + + } +} diff --git a/lua/plugins/treesitter.lua b/lua/plugins/treesitter.lua new file mode 100644 index 0000000..5f45a6d --- /dev/null +++ b/lua/plugins/treesitter.lua @@ -0,0 +1,24 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + config = function() + require'nvim-treesitter.configs'.setup { + ensure_installed = { "bash", "c", "go", "lua", "vim", "vimdoc", "query", "markdown", "markdown_inline", "python" }, + auto_install = false, + highlight = { + enable = true, + disable = function(lang, buf) + local max_filesize = 100 * 1024 -- 100 KB + local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) + if ok and stats and stats.size > max_filesize then + return true + end + end, + additional_vim_regex_highlighting = false, + }, + } + end, + } +} +