return { { "wakatime/vim-wakatime", lazy = false }, { "stevearc/conform.nvim", config = function() require("conform").setup({ formatters_by_ft = { lua = { "stylua" }, rust = { "rustfmt", lsp_format = "fallback" }, javascript = { "prettierd", "prettier", stop_after_first = true }, python = { "ruff_format" }, }, format_on_save = { lsp_format = "fallback", }, }) end, }, { "numToStr/Comment.nvim", }, { "akinsho/toggleterm.nvim", version = "*", config = true }, { "christoomey/vim-tmux-navigator", cmd = { "TmuxNavigateLeft", "TmuxNavigateDown", "TmuxNavigateUp", "TmuxNavigateRight", "TmuxNavigatePrevious", }, }, { "windwp/nvim-autopairs", event = "InsertEnter", config = true, }, { "sainnhe/gruvbox-material", lazy = false, config = function() -- Optionally configure and load the colorscheme -- directly inside the plugin declaration. vim.g.gruvbox_material_enable_italic = true vim.g.gruvbox_material_background = "hard" vim.cmd.colorscheme("gruvbox-material") end, }, { "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim" }, config = function() -- require("telescope").load_extension("fzf") end, }, { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", config = function() local configs = require("nvim-treesitter.configs") configs.setup({ ensure_installed = { "lua", "javascript", "typescript", "html", "tsx", "zig" }, sync_install = false, highlight = { enable = true }, indent = { enable = true }, }) end, }, { "nvim-neo-tree/neo-tree.nvim", branch = "v3.x", dependencies = { "nvim-lua/plenary.nvim", "nvim-tree/nvim-web-devicons", "MunifTanjim/nui.nvim", { "s1n7ax/nvim-window-picker", version = "2.*", config = function() require("window-picker").setup({ filter_rules = { include_current_win = false, autoselect_one = true, -- filter using buffer options bo = { -- if the file type is one of following, the window will be ignored filetype = { "neo-tree", "neo-tree-popup", "notify" }, -- if the buffer type is one of following, the window will be ignored buftype = { "terminal", "quickfix" }, }, }, }) end, }, }, config = function() require("neo-tree").setup({ filesystem = { follow_current_file = { enabled = true, }, }, close_if_last_window = false, }) vim.cmd([[nnoremap \ :Neotree reveal]]) end, }, { "neovim/nvim-lspconfig", config = function() local lsp = require("lspconfig") lsp.lua_ls.setup({ capabilities = capabilities, settings = { Lua = { diagnostics = { globals = { "vim", "require" } }, workspace = { -- Make the server aware of Neovim runtime files library = vim.api.nvim_get_runtime_file("", true), }, }, }, }) lsp.vtsls.setup({}) lsp.zls.setup({}) lsp.rust_analyzer.setup({ diagnostic = { -- Prevents the annoying popup for cancalled requests refreshSupport = false, }, }) lsp.gopls.setup({}) lsp.tailwindcss.setup({}) lsp.ocamllsp.setup({}) lsp.svelte.setup({}) lsp.biome.setup({}) lsp.pylsp.setup({}) lsp.svelte.setup({}) end, }, { "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.*", -- 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 = "enter" }, 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" }, }, -- (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_with_warning" }, }, opts_extend = { "sources.default" }, }, { "sindrets/diffview.nvim", }, }