diff --git a/.black.toml b/.black.toml new file mode 100644 index 00000000..cde81ae8 --- /dev/null +++ b/.black.toml @@ -0,0 +1,3 @@ +column_width = 120 +line_endings = "Unix" +indent_type = "Spaces" diff --git a/.stylua.toml b/.stylua.toml index 48575bec..3c57f372 100644 --- a/.stylua.toml +++ b/.stylua.toml @@ -1,4 +1,4 @@ -column_width = 100 +column_width = 120 line_endings = "Unix" indent_type = "Spaces" indent_width = 2 diff --git a/init.lua b/init.lua index 56e43b15..345d7e0c 100644 --- a/init.lua +++ b/init.lua @@ -24,7 +24,7 @@ If you experience any errors while trying to install kickstart, run `:checkhealt --]] -- The file rakshit/core/options.lua will be storing all the options that we want to save n our file -require 'rakshit.core' +require('rakshit.core') -- Set to true if you have a Nerd Font installed and selected in the terminal vim.g.have_nerd_font = true @@ -43,8 +43,18 @@ vim.api.nvim_create_autocmd('TextYankPost', { end, }) -require('rakshit.lazy') +-- Configure Neovim tab settings for Go files +-- vim.api.nvim_create_autocmd('FileType', { +-- pattern = 'go', +-- callback = function() +-- vim.bo.expandtab = true -- Use spaces instead of tabs +-- vim.bo.tabstop = 4 -- Display each tab as 4 spaces +-- vim.bo.shiftwidth = 4 -- Indentation size of 4 spaces +-- vim.bo.softtabstop = 4 -- key inserts 4 spaces +-- end, +-- }) +require('rakshit.lazy') -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ts=2 sts=2 sw=2 et diff --git a/lua/kickstart/plugins/debug.lua b/lua/kickstart/plugins/debug.lua index 196f2c6d..a5647075 100644 --- a/lua/kickstart/plugins/debug.lua +++ b/lua/kickstart/plugins/debug.lua @@ -1,105 +1 @@ --- debug.lua --- --- Shows how to use the DAP plugin to debug your code. --- --- Primarily focused on configuring the debugger for Go, but can --- be extended to other languages as well. That's why it's called --- kickstart.nvim and not kitchen-sink.nvim ;) - -return { - -- NOTE: Yes, you can install new plugins here! - 'mfussenegger/nvim-dap', - -- NOTE: And you can specify dependencies as well - dependencies = { - -- Creates a beautiful debugger UI - 'rcarriga/nvim-dap-ui', - - -- Required dependency for nvim-dap-ui - 'nvim-neotest/nvim-nio', - - -- Installs the debug adapters for you - 'williamboman/mason.nvim', - 'jay-babu/mason-nvim-dap.nvim', - - -- Add your own debuggers here - 'leoluz/nvim-dap-go', - }, - keys = function(_, keys) - local dap = require 'dap' - local dapui = require 'dapui' - return { - -- Basic debugging keymaps, feel free to change to your liking! - { '', dap.continue, desc = 'Debug: Start/Continue' }, - { '', dap.step_into, desc = 'Debug: Step Into' }, - { '', dap.step_over, desc = 'Debug: Step Over' }, - { '', dap.step_out, desc = 'Debug: Step Out' }, - { 'b', dap.toggle_breakpoint, desc = 'Debug: Toggle Breakpoint' }, - { - 'B', - function() - dap.set_breakpoint(vim.fn.input 'Breakpoint condition: ') - end, - desc = 'Debug: Set Breakpoint', - }, - -- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception. - { '', dapui.toggle, desc = 'Debug: See last session result.' }, - unpack(keys), - } - end, - config = function() - local dap = require 'dap' - local dapui = require 'dapui' - - require('mason-nvim-dap').setup { - -- Makes a best effort to setup the various debuggers with - -- reasonable debug configurations - automatic_installation = true, - - -- You can provide additional configuration to the handlers, - -- see mason-nvim-dap README for more information - handlers = {}, - - -- You'll need to check that you have the required things installed - -- online, please don't ask me how to install them :) - ensure_installed = { - -- Update this to ensure that you have the debuggers for the langs you want - 'delve', - }, - } - - -- Dap UI setup - -- For more information, see |:help nvim-dap-ui| - dapui.setup { - -- Set icons to characters that are more likely to work in every terminal. - -- Feel free to remove or use ones that you like more! :) - -- Don't feel like these are good choices. - icons = { expanded = '▾', collapsed = '▸', current_frame = '*' }, - controls = { - icons = { - pause = '⏸', - play = '▶', - step_into = '⏎', - step_over = '⏭', - step_out = '⏮', - step_back = 'b', - run_last = '▶▶', - terminate = '⏹', - disconnect = '⏏', - }, - }, - } - - dap.listeners.after.event_initialized['dapui_config'] = dapui.open - dap.listeners.before.event_terminated['dapui_config'] = dapui.close - dap.listeners.before.event_exited['dapui_config'] = dapui.close - - -- Install golang specific config - require('dap-go').setup { - delve = { - -- On Windows delve must be run attached or it crashes. - -- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring - detached = vim.fn.has 'win32' == 0, - }, - } - end, -} +return {} diff --git a/lua/rakshit/plugins/debug.lua b/lua/rakshit/plugins/debug.lua new file mode 100644 index 00000000..52c1bd56 --- /dev/null +++ b/lua/rakshit/plugins/debug.lua @@ -0,0 +1,105 @@ +-- debug.lua +-- +-- Shows how to use the DAP plugin to debug your code. +-- +-- Primarily focused on configuring the debugger for Go, but can +-- be extended to other languages as well. That's why it's called +-- kickstart.nvim and not kitchen-sink.nvim ;) + +return {} +-- -- NOTE: Yes, you can install new plugins here! +-- 'mfussenegger/nvim-dap', +-- -- NOTE: And you can specify dependencies as well +-- dependencies = { +-- -- Creates a beautiful debugger UI +-- 'rcarriga/nvim-dap-ui', +-- +-- -- Required dependency for nvim-dap-ui +-- 'nvim-neotest/nvim-nio', +-- +-- -- Installs the debug adapters for you +-- 'williamboman/mason.nvim', +-- 'jay-babu/mason-nvim-dap.nvim', +-- +-- -- Add your own debuggers here +-- 'leoluz/nvim-dap-go', +-- }, +-- keys = function(_, keys) +-- local dap = require('dap') +-- local dapui = require('dapui') +-- return { +-- -- Basic debugging keymaps, feel free to change to your liking! +-- { '', dap.continue, desc = 'Debug: Start/Continue' }, +-- { '', dap.step_into, desc = 'Debug: Step Into' }, +-- { '', dap.step_over, desc = 'Debug: Step Over' }, +-- { '', dap.step_out, desc = 'Debug: Step Out' }, +-- { 'b', dap.toggle_breakpoint, desc = 'Debug: Toggle Breakpoint' }, +-- { +-- 'B', +-- function() +-- dap.set_breakpoint(vim.fn.input('Breakpoint condition: ')) +-- end, +-- desc = 'Debug: Set Breakpoint', +-- }, +-- -- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception. +-- { '', dapui.toggle, desc = 'Debug: See last session result.' }, +-- unpack(keys), +-- } +-- end, +-- config = function() +-- local dap = require('dap') +-- local dapui = require('dapui') +-- +-- require('mason-nvim-dap').setup({ +-- -- Makes a best effort to setup the various debuggers with +-- -- reasonable debug configurations +-- automatic_installation = true, +-- +-- -- You can provide additional configuration to the handlers, +-- -- see mason-nvim-dap README for more information +-- handlers = {}, +-- +-- -- You'll need to check that you have the required things installed +-- -- online, please don't ask me how to install them :) +-- ensure_installed = { +-- -- Update this to ensure that you have the debuggers for the langs you want +-- 'delve', +-- }, +-- }) +-- +-- -- Dap UI setup +-- -- For more information, see |:help nvim-dap-ui| +-- dapui.setup({ +-- -- Set icons to characters that are more likely to work in every terminal. +-- -- Feel free to remove or use ones that you like more! :) +-- -- Don't feel like these are good choices. +-- icons = { expanded = '▾', collapsed = '▸', current_frame = '*' }, +-- controls = { +-- icons = { +-- pause = '⏸', +-- play = '▶', +-- step_into = '⏎', +-- step_over = '⏭', +-- step_out = '⏮', +-- step_back = 'b', +-- run_last = '▶▶', +-- terminate = '⏹', +-- disconnect = '⏏', +-- }, +-- }, +-- }) +-- +-- dap.listeners.after.event_initialized['dapui_config'] = dapui.open +-- dap.listeners.before.event_terminated['dapui_config'] = dapui.close +-- dap.listeners.before.event_exited['dapui_config'] = dapui.close +-- +-- -- Install golang specific config +-- require('dap-go').setup({ +-- delve = { +-- -- On Windows delve must be run attached or it crashes. +-- -- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring +-- detached = vim.fn.has('win32') == 0, +-- }, +-- }) +-- end, +-- } diff --git a/lua/rakshit/plugins/formatting.lua b/lua/rakshit/plugins/formatting.lua index 82bc99cb..ea0d5841 100644 --- a/lua/rakshit/plugins/formatting.lua +++ b/lua/rakshit/plugins/formatting.lua @@ -17,9 +17,11 @@ return { -- Autoformat format_on_save = { lsp_fallback = true, async = false, - timeout_ms = 500, + timeout_ms = 5000, }, formatters_by_ft = { + go = { 'goimports', 'gofmt' }, + terraform = { 'terraform_fmt' }, lua = { 'stylua' }, javascript = { 'prettier' }, typescript = { 'prettier' }, @@ -33,7 +35,20 @@ return { -- Autoformat markdown = { 'prettier' }, graphql = { 'prettier' }, liquid = { 'prettier' }, - python = { 'isort', 'black' }, + -- python = { 'isort', 'black' }, + -- You can use a function here to determine the formatters dynamically + python = function(bufnr) + if require('conform').get_formatter_info('ruff_format', bufnr).available then + return { 'ruff_format' } + else + return { 'isort', 'black' } + end + end, + -- Use the "*" filetype to run formatters on all filetypes. + ['*'] = { 'codespell' }, + -- Use the "_" filetype to run formatters on filetypes that don't + -- have other formatters configured. + ['_'] = { 'trim_whitespace' }, -- Conform can also run multiple formatters sequentially -- python = { "isort", "black" }, -- @@ -41,4 +56,14 @@ return { -- Autoformat -- javascript = { "prettierd", "prettier", stop_after_first = true }, }, }, + -- Configure Neovim tab settings for Go files + -- vim.api.nvim_create_autocmd('FileType', { + -- pattern = 'go', + -- callback = function() + -- -- vim.bo.expandtab = true -- Use spaces instead of tabs + -- vim.bo.tabstop = 4 -- Display each tab as 4 spaces + -- vim.bo.shiftwidth = 4 -- Indentation size of 4 spaces + -- vim.bo.softtabstop = 4 -- key inserts 4 spaces + -- end, + -- }), } diff --git a/lua/rakshit/plugins/lsp/lspconfig.lua b/lua/rakshit/plugins/lsp/lspconfig.lua index 1dc19c25..bb578dde 100644 --- a/lua/rakshit/plugins/lsp/lspconfig.lua +++ b/lua/rakshit/plugins/lsp/lspconfig.lua @@ -107,6 +107,17 @@ return { end, }) + -- Configure Neovim tab settings for Go files [Go indendation] + vim.api.nvim_create_autocmd('FileType', { + pattern = 'go', + callback = function() + vim.bo.expandtab = true -- Use spaces instead of tabs + vim.bo.tabstop = 4 -- Display each tab as 4 spaces + vim.bo.shiftwidth = 4 -- Indentation size of 4 spaces + vim.bo.softtabstop = 4 -- key inserts 4 spaces + end, + }) + local capabilities = cmp_nvim_lsp.default_capabilities() -- Change the Diagnostic symbols in the sign column (gutter) -- (not in youtube nvim video) diff --git a/lua/rakshit/plugins/nvim-cmp.lua b/lua/rakshit/plugins/nvim-cmp.lua index 73cc33bb..3f6cea0c 100644 --- a/lua/rakshit/plugins/nvim-cmp.lua +++ b/lua/rakshit/plugins/nvim-cmp.lua @@ -9,7 +9,7 @@ return { -- Autocompletion -- Build Step is needed for regex support in snippets. -- This step is not supported in many windows environments. -- Remove the below condition to re-enable on windows. - if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then + if vim.fn.has('win32') == 1 or vim.fn.executable('make') == 0 then return end return 'make install_jsregexp' @@ -39,15 +39,15 @@ return { -- Autocompletion }, config = function() -- See `:help cmp` - local cmp = require 'cmp' - local luasnip = require 'luasnip' - local lspkind = require 'lspkind' + local cmp = require('cmp') + local luasnip = require('luasnip') + local lspkind = require('lspkind') -- loads vscode style snippets from the installed plugins (e.g. friendly-snippets) require('luasnip.loaders.from_vscode').lazy_load() - luasnip.config.setup {} + luasnip.config.setup({}) - cmp.setup { + cmp.setup({ snippet = { expand = function(args) luasnip.lsp_expand(args.body) @@ -59,7 +59,7 @@ return { -- Autocompletion -- chosen, you will need to read `:help ins-completion` -- -- No, but seriously. Please read `:help ins-completion`, it is really good! - mapping = cmp.mapping.preset.insert { + mapping = cmp.mapping.preset.insert({ -- Select the [n]ext item -- [''] = cmp.mapping.select_next_item(), -- Select the [p]revious item @@ -77,12 +77,12 @@ return { -- Autocompletion -- This will auto-import if your LSP supports it. -- This will expand snippets if the LSP sent a snippet. -- [''] = cmp.mapping.confirm { select = true }, - [''] = cmp.mapping.confirm { select = false }, + [''] = cmp.mapping.confirm({ select = false }), -- Manually trigger a completion from nvim-cmp. -- Generally you don't need this, because nvim-cmp will display -- completions whenever it has completion options available. - [''] = cmp.mapping.complete {}, + [''] = cmp.mapping.complete({}), [''] = cmp.mapping.abort(), -- close completion window -- Think of as moving to the right of your snippet expansion. @@ -106,13 +106,13 @@ return { -- Autocompletion -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps - }, + }), sources = { - { - name = 'lazydev', - -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it - group_index = 0, - }, + -- { + -- name = 'lazydev', + -- -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it + -- group_index = 0, + -- }, { name = 'nvim_lsp' }, { name = 'luasnip' }, { name = 'buffer' }, @@ -121,11 +121,13 @@ return { -- Autocompletion -- configure lspkind for VSCode like pictograms in completion menu -- formatting = { + -- fields = cmp.ItemField.Abbr, + -- expandable_indicator = true, -- format = lspkind.cmp_format({ -- maxwidth = 50, -- ellipsis_char = '...', -- }), -- }, - } + }) end, } diff --git a/lua/rakshit/plugins/nvim-tree.lua b/lua/rakshit/plugins/nvim-tree.lua index 9cfb8ff3..fe970c1e 100644 --- a/lua/rakshit/plugins/nvim-tree.lua +++ b/lua/rakshit/plugins/nvim-tree.lua @@ -2,22 +2,25 @@ return { 'nvim-tree/nvim-tree.lua', dependencies = 'nvim-tree/nvim-web-devicons', config = function() - local nvimtree = require 'nvim-tree' + local nvimtree = require('nvim-tree') -- recommended settings from nvim-tree documentation vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 - nvimtree.setup { + nvimtree.setup({ view = { width = 35, + number = true, relativenumber = true, + centralize_selection = true, }, -- change folder arrow icons renderer = { indent_markers = { enable = true, }, + add_trailing = true, icons = { glyphs = { folder = { @@ -43,15 +46,23 @@ return { git = { ignore = false, }, - } + }) -- set keymaps local keymap = vim.keymap -- for conciseness keymap.set('n', 'ee', 'NvimTreeToggle', { desc = 'Toggle file explorer' }) -- toggle file explorer - keymap.set('n', 'ef', 'NvimTreeFindFileToggle', { desc = 'Toggle file explorer on current file' }) -- toggle file explorer on current file + keymap.set( + 'n', + 'ef', + 'NvimTreeFindFileToggle', + { desc = 'Toggle file explorer on current file' } + ) -- toggle file explorer on current file -- keymap.set('n', ')', 'NvimTreeFindFileToggle', { desc = 'Toggle file explorer on current file' }) -- toggle file explorer on current file keymap.set('n', 'ec', 'NvimTreeCollapse', { desc = 'Collapse file explorer' }) -- collapse file explorer keymap.set('n', 'er', 'NvimTreeRefresh', { desc = 'Refresh file explorer' }) -- refresh file explorer + + -- New ones I'm adding just for testing and hopefully that works + -- keymap.set('n', 'h', 'NvimTreeCollapse', { desc = 'Collapse file explorer' }) -- collapse file explorer end, }