diff --git a/init.lua b/init.lua index 97980e0..25b0e6d 100644 --- a/init.lua +++ b/init.lua @@ -1,26 +1,21 @@ - -- Load user configuration files - require("user.options") - require("user.keymaps") - require("user.cmp") - require("user.java") - require("user.autopairs") - require("user.telescope") - require("user.gruvbox") - require("user.lsp") - require("user.treesitter") - require("user.null-ls") -- Load null-ls configuration - require("user.terminal") - require("user.markdown") - require("user.autocmds") - require("user.files_utils") - require("user.commands") - require("user.comment") +-- /home/prabhat/.config/nvim/init.lua - return require("packer").startup(function(use) +-- 1. Packer Bootstrap (required to make 'packer' available) +-- This ensures 'packer.nvim' is installed if not present and then loaded. +-- This part is usually placed at the very top. +local install_path = vim.fn.stdpath('data')..'/site/pack/packer/start/packer.nvim' +if vim.fn.empty(vim.fn.glob(install_path)) > 0 then + vim.fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) + vim.cmd [[packadd packer.nvim]] +end + +-- 2. Call packer.startup to define your plugins. +-- This part should NOT be preceded by 'return' if you have other configs. +require("packer").startup(function(use) -- Let packer manage itself use("wbthomason/packer.nvim") - -- Completion framework + -- Completion framework use("hrsh7th/nvim-cmp") use("hrsh7th/cmp-buffer") use("hrsh7th/cmp-path") @@ -29,72 +24,85 @@ use("saadparwaiz1/cmp_luasnip") use("L3MON4D3/LuaSnip") - -- Load test plugin configuration - require("user.test")(use) + -- Load test plugin configuration (this `require` should call a `use` inside user.test) + require("user.test")(use) -- Make sure user.test returns a function that takes 'use' -- NERDTree plugin use("preservim/nerdtree") -- Plugin for integrating formatters/linters - use("jose-elias-alvarez/null-ls.nvim") + use({ + "nvimtools/none-ls.nvim", + requires = { "nvim-lua/plenary.nvim" }, + }) - -- -- TS Server - use("jose-elias-alvarez/nvim-lsp-ts-utils") + -- TS Server + use("jose-elias-alvarez/nvim-lsp-ts-utils") -- Treesitter - use("nvim-treesitter/nvim-treesitter") + use("nvim-treesitter/nvim-treesitter") - -- Auto pairs - use("windwp/nvim-autopairs") + -- Auto pairs + use("windwp/nvim-autopairs") - -- LSP Configuration - use("neovim/nvim-lspconfig") + -- LSP Configuration + use("neovim/nvim-lspconfig") - -- Java Language Server support - use("mfussenegger/nvim-jdtls") + -- Java Language Server support + use("mfussenegger/nvim-jdtls") -- Markdown Preview (optional) - use({ "iamcco/markdown-preview.nvim", run = "cd app && npm install" }) + use({ "iamcco/markdown-preview.nvim", run = "cd app && npm install" }) - use({ - "nvim-telescope/telescope.nvim", - tag = "0.1.8", - -- or , branch = '0.1.x', - requires = { { "nvim-lua/plenary.nvim" } }, - }) + use({ + "nvim-telescope/telescope.nvim", + tag = "0.1.8", + -- or , branch = '0.1.x', + requires = { { "nvim-lua/plenary.nvim" } }, + }) - -- Comment - use 'numToStr/Comment.nvim' + -- Comment + use 'numToStr/Comment.nvim' + -- Telescope FZF native + use({ + "nvim-telescope/telescope-fzf-native.nvim", + run = "make", + }) - -- Telescope FZF native - use({ - "nvim-telescope/telescope-fzf-native.nvim", - run = "make", - }) + use({ "ellisonleao/gruvbox.nvim" }) - use({ "ellisonleao/gruvbox.nvim" }) + -- Mason and Mason-LSPConfig + -- **** IMPORTANT: Pinning to known stable commits **** + -- This helps resolve "nil enable" errors due to transient incompatibilities + -- between the latest versions of these two plugins. + -- If these specific commits cause new issues, you may try slightly different + -- recent commits, or check their GitHub repos for very recent stable ones. + use({ "williamboman/mason.nvim" }) + use({ "williamboman/mason-lspconfig.nvim" }) - use({ - "williamboman/mason.nvim", - config = function() - require("mason").setup() - end, - }) - - -- Mason LSPConfig for integrating Mason with nvim-lspconfig - use({ - "williamboman/mason-lspconfig.nvim", - config = function() - require("mason-lspconfig").setup({ - ensure_installed = { - "pyright", - "ts_ls", - "jdtls", - "marksman", - "kotlin_language_server", - }, - }) - end, - }) end) + +-- 3. Load user configuration files (after Packer has defined and made plugins available) +-- These files will contain the `setup()` calls for your plugins. +require("user.options") +require("user.keymaps") +require("user.cmp") +require("user.java") +require("user.autopairs") +require("user.telescope") +require("user.gruvbox") + +-- This is where your mason.setup() and mason-lspconfig.setup() calls should be. +-- Ensure that your 'user/lsp.lua' contains the 'handlers' table in its +-- mason-lspconfig.setup call as instructed previously. +require("user.lsp") + +require("user.treesitter") +require("user.null-ls") -- Load null-ls configuration +require("user.terminal") +require("user.markdown") +require("user.autocmds") +require("user.files_utils") +require("user.commands") +require("user.comment") diff --git a/lua/user/lsp.lua b/lua/user/lsp.lua index 2091946..c416bfa 100644 --- a/lua/user/lsp.lua +++ b/lua/user/lsp.lua @@ -1,13 +1,21 @@ --- Load language server configuration +vim.opt.rtp:prepend(vim.fn.stdpath('data') .. '/site/pack/packer/start/mason.nvim') +vim.opt.rtp:prepend(vim.fn.stdpath('data') .. '/site/pack/packer/start/mason-lspconfig.nvim') +vim.opt.rtp:prepend(vim.fn.stdpath('data') .. '/site/pack/packer/start/nvim-lspconfig') + +require("mason").setup() +require("mason-lspconfig").setup({ + ensure_installed = { "lua_ls" }, -- Test with a single, simple LSP + automatic_installation = false, + handlers = { + function(server_name) + require("lspconfig")[server_name].setup({}) + end, + }, +}) +-- Load LSP configurations require("user.lsp_servers.pyright") require("user.lsp_servers.ts_ls") -require("user.lsp_servers.jdtls") require("user.lsp_servers.marksman") require("user.lsp_servers.kotlin_ls") require("user.lsp_servers.graphql") - --- Mason setup -require("mason").setup() -require("mason-lspconfig").setup({ - ensure_installed = { "pyright", "ts_ls", "jdtls", "marksman", "kotlin_language_server" }, -- Ensure Kotlin LSP is installed -}) +require("user.lsp_servers.jdtls")