diff --git a/init.lua b/init.lua index 776c6873..e7dba33e 100644 --- a/init.lua +++ b/init.lua @@ -70,7 +70,6 @@ Kickstart Guide: These are hints about where to find more information about the relevant settings, plugins or Neovim features used in Kickstart. - NOTE: Look for lines like this Throughout the file. These are for you, the reader, to help you understand what is happening. Feel free to delete them once you know what you're doing, but they should serve as a guide @@ -86,17 +85,16 @@ P.S. You can delete this when you're done too. It's your config now! :) -- Set as the leader key -- See `:help mapleader` --- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used) vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' -- Set to true if you have a Nerd Font installed and selected in the terminal -vim.g.have_nerd_font = false +vim.g.have_nerd_font = true -- [[ Setting options ]] -- See `:help vim.opt` --- NOTE: You can change these options as you wish! --- For more options, you can see `:help option-list` +-- You can change these options as you wish! +-- For more options, you can see `:help option-list` -- Make line numbers default vim.opt.number = true @@ -180,10 +178,10 @@ vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagn vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' }) -- TIP: Disable arrow keys in normal mode --- vim.keymap.set('n', '', 'echo "Use h to move!!"') --- vim.keymap.set('n', '', 'echo "Use l to move!!"') --- vim.keymap.set('n', '', 'echo "Use k to move!!"') --- vim.keymap.set('n', '', 'echo "Use j to move!!"') +vim.keymap.set('n', '', 'echo "Use h to move!!"') +vim.keymap.set('n', '', 'echo "Use l to move!!"') +vim.keymap.set('n', '', 'echo "Use k to move!!"') +vim.keymap.set('n', '', 'echo "Use j to move!!"') -- Keybinds to make split navigation easier. -- Use CTRL+ to switch between windows @@ -453,6 +451,13 @@ require('lazy').setup({ end, { desc = '[S]earch [N]eovim files' }) end, }, + { + 'nvimtools/none-ls.nvim', + event = 'VeryLazy', + opts = function() + return require 'custom.configs.none-ls' + end, + }, -- LSP Plugins { @@ -517,7 +522,7 @@ require('lazy').setup({ vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }), callback = function(event) - -- NOTE: Remember that Lua is a real programming language, and as such it is possible + -- Remember that Lua is a real programming language, and as such it is possible -- to define small helper and utility functions so you don't have to repeat yourself. -- -- In this case, we create a function that lets us more easily define mappings specific @@ -665,7 +670,7 @@ require('lazy').setup({ local servers = { -- clangd = {}, -- gopls = {}, - -- pyright = {}, + pyright = {}, -- rust_analyzer = {}, -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs -- @@ -708,6 +713,8 @@ require('lazy').setup({ local ensure_installed = vim.tbl_keys(servers or {}) vim.list_extend(ensure_installed, { 'stylua', -- Used to format Lua code + 'clangd', + 'clang-format', }) require('mason-tool-installer').setup { ensure_installed = ensure_installed } @@ -873,20 +880,22 @@ require('lazy').setup({ -- change the command in the config to whatever the name of that colorscheme is. -- -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. - 'folke/tokyonight.nvim', + 'catppuccin/nvim', + name = 'catppuccin', priority = 1000, -- Make sure to load this before all the other start plugins. config = function() ---@diagnostic disable-next-line: missing-fields - require('tokyonight').setup { + require('catppuccin').setup { + flavour = 'mocha', styles = { - comments = { italic = false }, -- Disable italics in comments + comments = { 'italic' }, }, } -- Load the colorscheme here. -- Like many other themes, this one has different styles, and you could load -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. - vim.cmd.colorscheme 'tokyonight-night' + vim.cmd.colorscheme 'catppuccin' end, }, @@ -965,8 +974,8 @@ require('lazy').setup({ -- Here are some example plugins that I've included in the Kickstart repository. -- Uncomment any of the lines below to enable them (you will need to restart nvim). -- - -- require 'kickstart.plugins.debug', - -- require 'kickstart.plugins.indent_line', + require 'kickstart.plugins.debug', + require 'kickstart.plugins.indent_line', -- require 'kickstart.plugins.lint', -- require 'kickstart.plugins.autopairs', -- require 'kickstart.plugins.neo-tree', @@ -976,7 +985,7 @@ require('lazy').setup({ -- This is the easiest way to modularize your config. -- -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. - -- { import = 'custom.plugins' }, + { import = 'custom.plugins' }, -- -- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec` -- Or use telescope! diff --git a/lua/custom/configs/none-ls.lua b/lua/custom/configs/none-ls.lua new file mode 100644 index 00000000..83f0beca --- /dev/null +++ b/lua/custom/configs/none-ls.lua @@ -0,0 +1,24 @@ +local augroup = vim.api.nvim_create_augroup('LspFormatting', {}) +local none_ls = require 'null-ls' + +local opts = { + sources = { + none_ls.builtins.formatting.clang_format, + }, + on_attach = function(client, bufnr) + if client.supports_method 'textDocument/formatting' then + vim.api.nvim_clear_autocmds { + group = augroup, + buffer = bufnr, + } + vim.api.nvim_create_autocmd('BufWritePre', { + group = augroup, + buffer = bufnr, + callback = function() + vim.lsp.buf.format { bufnr = bufnr } + end, + }) + end + end, +} +return opts diff --git a/lua/custom/keymaps.lua b/lua/custom/keymaps.lua new file mode 100644 index 00000000..86e78d66 --- /dev/null +++ b/lua/custom/keymaps.lua @@ -0,0 +1,12 @@ +local dap = require 'dap' +local dapui = require 'dapui' + +vim.keymap.set('n', '', dap.continue, { desc = 'Start/Continue debug' }) +vim.keymap.set('n', '', dap.step_over, { desc = 'Step over' }) +vim.keymap.set('n', '', dap.step_into, { desc = 'Step into' }) +vim.keymap.set('n', '', dap.step_out, { desc = 'Step out' }) +vim.keymap.set('n', 'b', dap.toggle_breakpoint, { desc = 'Toggle breakpoint' }) +vim.keymap.set('n', 'B', function() + dap.set_breakpoint(vim.fn.input 'Breakpoint condition: ') +end, { desc = 'Set conditional breakpoint' }) +vim.keymap.set('n', 'du', dapui.toggle, { desc = 'Toggle DAP UI' }) diff --git a/lua/custom/plugins/init.lua b/lua/custom/plugins/init.lua index be0eb9d8..740f0c8f 100644 --- a/lua/custom/plugins/init.lua +++ b/lua/custom/plugins/init.lua @@ -1,5 +1,52 @@ --- You can add your own plugins here or in other files in this directory! --- I promise not to create any merge conflicts in this directory :) --- --- See the kickstart.nvim README for more information -return {} +return { + -- Debug Adapter Protocol + { + 'mfussenegger/nvim-dap', + dependencies = { + 'rcarriga/nvim-dap-ui', + 'theHamsta/nvim-dap-virtual-text', + 'nvim-telescope/telescope-dap.nvim', + }, + config = function() + local dap = require 'dap' + local dapui = require 'dapui' + + require('nvim-dap-virtual-text').setup() + dapui.setup() + + dap.listeners.after.event_initialized['dapui_config'] = function() + dapui.open() + end + dap.listeners.before.event_terminated['dapui_config'] = function() + dapui.close() + end + dap.listeners.before.event_exited['dapui_config'] = function() + dapui.close() + end + + -- C++ Debug Adapter (lldb) + dap.adapters.lldb = { + type = 'executable', + command = '/usr/bin/lldb-dap', -- or 'lldb-dap' if available + name = 'lldb', + } + + dap.configurations.cpp = { + { + name = 'Launch file', + type = 'lldb', + request = 'launch', + program = function() + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') + end, + cwd = '${workspaceFolder}', + stopOnEntry = false, + args = {}, + }, + } + + dap.configurations.c = dap.configurations.cpp + dap.configurations.rust = dap.configurations.cpp + end, + }, +}