From 4f0a5c12240b4cfd2714ccecd7241b7a4ee4e368 Mon Sep 17 00:00:00 2001 From: TheK4n Date: Mon, 30 Jan 2023 03:37:07 +0300 Subject: [PATCH] feat(nvim): snippets --- sub/nvim/after/plugin/cmp.lua | 18 +++++++++++++++--- sub/nvim/after/plugin/luasnip.lua | 15 +++++++++++++++ sub/nvim/lua/base/plugins.lua | 6 +++++- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/sub/nvim/after/plugin/cmp.lua b/sub/nvim/after/plugin/cmp.lua index 3393733..e9157f4 100644 --- a/sub/nvim/after/plugin/cmp.lua +++ b/sub/nvim/after/plugin/cmp.lua @@ -3,6 +3,11 @@ local status, cmp = pcall(require, "cmp") if (not status) then return end +local function has_words_before() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil +end + -- nvim-cmp setup local cmp = require 'cmp' cmp.setup { @@ -15,11 +20,18 @@ cmp.setup { end, }, mapping = { - [''] = cmp.mapping.select_prev_item(), - [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + [''] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), [''] = cmp.mapping.close(), [''] = cmp.mapping.confirm { behavior = cmp.ConfirmBehavior.Replace, diff --git a/sub/nvim/after/plugin/luasnip.lua b/sub/nvim/after/plugin/luasnip.lua index 52761f1..984923a 100644 --- a/sub/nvim/after/plugin/luasnip.lua +++ b/sub/nvim/after/plugin/luasnip.lua @@ -2,3 +2,18 @@ local status, luasnip = pcall(require, "luasnip") if (not status) then return end +luasnip.add_snippets(nil, { + all = { + luasnip.snippet({ + trig = "ifmain", + namr = "ifmain", + dscr = "If python file run as main (not import)", + }, { + luasnip.text_node({ + "if __name__ == '__main__':", + "\t" + }) + }) + } +}) + diff --git a/sub/nvim/lua/base/plugins.lua b/sub/nvim/lua/base/plugins.lua index 3fc09d3..19e4622 100644 --- a/sub/nvim/lua/base/plugins.lua +++ b/sub/nvim/lua/base/plugins.lua @@ -48,7 +48,11 @@ return require('packer').startup(function(use) use 'hrsh7th/nvim-cmp' use 'hrsh7th/cmp-nvim-lsp' use 'saadparwaiz1/cmp_luasnip' - use 'L3MON4D3/LuaSnip' + use { + 'L3MON4D3/LuaSnip', + after = 'nvim-cmp', + } + use { 'williamboman/mason.nvim', requires = {