diff --git a/init.lua b/init.lua index c5fc7cb4..e9ccf1d7 100644 --- a/init.lua +++ b/init.lua @@ -167,8 +167,8 @@ require('lazy').setup({ end, { desc = 'git diff against last commit' }) -- Toggles - map('n', 'tb', gs.toggle_current_line_blame, { desc = 'toggle git blame line' }) - map('n', 'td', gs.toggle_deleted, { desc = 'toggle git show deleted' }) + map('n', 'tb', gs.toggle_current_line_blame, { desc = '[T]oggle git [B]lame line' }) + map('n', 'td', gs.toggle_deleted, { desc = '[T]oggle git [S]how deleted' }) -- Text object map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk', { desc = 'select git hunk' }) @@ -248,6 +248,14 @@ require('lazy').setup({ build = ':TSUpdate', }, + { + "danymat/neogen", + dependencies = "nvim-treesitter/nvim-treesitter", + config = true, + -- Comment next line if you want to follow unstable versions + version = "*" + }, + -- NOTE: Next Step on Your Neovim Journey: Add/Configure additional "plugins" for kickstart -- These are some example plugins that I've included in the kickstart repository. -- Uncomment any of the lines below to enable them. @@ -299,11 +307,19 @@ vim.o.updatetime = 250 vim.o.timeoutlen = 300 -- Set completeopt to have a better completion experience -vim.o.completeopt = 'menuone,noselect' +vim.o.completeopt = 'menuone,noselect,preview' -- NOTE: You should make sure your terminal supports this vim.o.termguicolors = true +-- Create new window below instead of above +vim.o.splitbelow = true + +-- Setup the spell checker +vim.opt.spelllang = 'en_us' +vim.opt.spell = true + + -- [[ Basic Keymaps ]] -- Keymaps for better default experience @@ -316,6 +332,8 @@ vim.api.nvim_set_keymap('n', '', 'zz', { noremap = true, silent = true vim.api.nvim_set_keymap('n', 'n', 'nzzzv', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', 'N', 'Nzzzv', { noremap = true, silent = true }) +-- Toggle between absolute and relative line numbers +vim.keymap.set('n', 'tl', ":set number! relativenumber!", { desc = "[T]oggle [L]ine numbers display" }) -- Remap for dealing with word wrap vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) @@ -616,6 +634,32 @@ mason_lspconfig.setup_handlers { -- setup nvim tree require("nvim-tree").setup() + +-- setup docstring generation +require('neogen').setup({ + enabled = true, + snippet_engine = 'luasnip', + languages = { + python = { + template = { annotation_convention = 'numpydoc' }, + }, + }, + +}) + +local neomap = function(keys, func, desc) + if desc then + desc = 'DOC: [N]eogen ' .. desc + end + + vim.keymap.set('n', keys, func, { noremap = true, silent = true, desc = desc }) +end + +neomap("nf", ":lua require('neogen').generate()", "[f]unction") +neomap("nF", ":lua require('neogen').generate({type='file'})", "[F]ile") +neomap("nc", ":lua require('neogen').generate({type='class'})", "[c]lass") +neomap("nt", ":lua require('neogen').generate({type='type'})", "[t]ype") + -- [[ Configure nvim-cmp ]] -- See `:help cmp` local cmp = require 'cmp' @@ -631,16 +675,17 @@ cmp.setup { end, }, completion = { - completeopt = 'menu,menuone,noinsert', + completeopt = 'menuone,noinsert,preview', }, mapping = cmp.mapping.preset.insert { [''] = cmp.mapping.select_next_item(), [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.close(), [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete {}, - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Insert, select = true, }, [''] = cmp.mapping(function(fallback) @@ -666,7 +711,7 @@ cmp.setup { { name = 'nvim_lsp' }, { name = 'luasnip' }, { name = 'path' }, - { name = 'buffer', keyword_length = 4 }, + { name = 'buffer', keyword_length = 5, max_item_count = 5 }, }, formatting = { format = lspkind.cmp_format { diff --git a/lazy-lock.json b/lazy-lock.json index b4e6c795..84b31a01 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -18,6 +18,7 @@ "mason-nvim-dap.nvim": { "branch": "main", "commit": "3614a39aae98ccd34124b072939d6283853b3dd2" }, "mason.nvim": { "branch": "main", "commit": "c43eeb5614a09dc17c03a7fb49de2e05de203924" }, "neodev.nvim": { "branch": "main", "commit": "bbe17de89345ce40725e721d347c596dc4a02b32" }, + "neogen": { "branch": "main", "commit": "cb1f384df804c1bf729332c4f728253fe17962d4" }, "none-ls.nvim": { "branch": "main", "commit": "2d4d4f765da684c92cca714bfd7a395ff6b08333" }, "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" }, "nvim-dap": { "branch": "master", "commit": "fc880e82059eb21c0fa896be60146e5f17680648" }, diff --git a/spell/en.utf-8.add b/spell/en.utf-8.add new file mode 100644 index 00000000..c6ef0293 --- /dev/null +++ b/spell/en.utf-8.add @@ -0,0 +1,12 @@ +behnid/! +https +github +nvim +mapleader +txt +lua +Autocompletion +LSP +config +neovim +runtime diff --git a/spell/en.utf-8.add.spl b/spell/en.utf-8.add.spl new file mode 100644 index 00000000..b56e1c35 Binary files /dev/null and b/spell/en.utf-8.add.spl differ