From ac171b055bc3ae716abe2188517a8891b3c1281c Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Sat, 16 Oct 2021 16:21:06 +1100 Subject: [PATCH] Update NeoVIM configuration with build system --- dot_config/nvim/init.lua | 21 ++++++-- dot_config/nvim/lua/lang/build.lua | 58 ++++++++++++++++++++++ dot_config/nvim/lua/lang/yaml.lua | 1 + dot_config/nvim/lua/plugins/completion.lua | 36 ++++++++------ dot_config/nvim/lua/plugins/keymap.lua | 2 + dot_config/nvim/lua/plugins/search.lua | 17 ++----- 6 files changed, 101 insertions(+), 34 deletions(-) create mode 100644 dot_config/nvim/lua/lang/build.lua create mode 100644 dot_config/nvim/lua/lang/yaml.lua diff --git a/dot_config/nvim/init.lua b/dot_config/nvim/init.lua index 3737f2b..891d422 100644 --- a/dot_config/nvim/init.lua +++ b/dot_config/nvim/init.lua @@ -10,14 +10,18 @@ require('packer').startup(function() -- Package manager (Self update) use 'wbthomason/packer.nvim' -- General Editing - use 'b3nj5m1n/kommentary' -- 'gc' to comment visual regions/lines + use { + 'numToStr/Comment.nvim', -- 'gc' to comment visual regions/lines + config = function() + require('Comment').setup() + end + } use { 'Konfekt/vim-sentence-chopper', -- 'gw' to split using sentences config = function() vim.g.latexindent = false end, -- "gw" should not use latexindent } - use 'beauwilliams/focus.nvim' -- Automatically resize based on focused window -- Appearance - use { + use { 'cormacrelf/dark-notify', -- Automatic theme switching requires = { 'hoob3rt/lualine.nvim', -- Status line @@ -33,7 +37,11 @@ require('packer').startup(function() 'folke/which-key.nvim', -- Show key mappings config = function() require('plugins.keymap') end, } --- -- Language configuration + use { + "beauwilliams/focus.nvim", + config = function() require("focus").setup() end, + } + -- Language configuration use { 'neovim/nvim-lspconfig', -- Configuration of LSP requires = { @@ -49,9 +57,14 @@ require('packer').startup(function() require('lang.python') require('lang.rust') require('lang.tex') + require('lang.yaml') require('lang.zinc') end, } + use { + 'pianocomposer321/yabs.nvim', -- Build System + config = require('lang.build').conf_yabs, + } -- Auto-completion use { 'hrsh7th/nvim-cmp', diff --git a/dot_config/nvim/lua/lang/build.lua b/dot_config/nvim/lua/lang/build.lua new file mode 100644 index 0000000..3c8ccc2 --- /dev/null +++ b/dot_config/nvim/lua/lang/build.lua @@ -0,0 +1,58 @@ +-- YABS +function conf_yabs() + local c_tasks = { + default_task = "build", + tasks = { + build = { + command = "cmake --build build --config Debug", + output = "quickfix", + }, + build_rel = { + command = "cmake --build build --config Release", + output = "quickfix", + }, + clean = { + command = "cmake --build build --target clean", + output = "quickfix", + }, + } + } + require("yabs"):setup { + languages = { + cpp = c_tasks, + c = c_tasks, + rust = { + default_task = "build", + tasks = { + build = { + command = "cargo build -q", + output = "quickfix", + }, + build_rel = { + command = "cargo build -q --release", + output = "quickfix", + }, + clean = { + command = "cargo clean", + output = "quickfix", + }, + run = { + command = "cargo run", + output = "quickfix", + }, + } + }, + }, + -- Default tasks + tasks = {}, + opts = { + output_types = { + quickfix = { + open_on_run = "always" + } + } + }, + } +end + +return { conf_yabs = conf_yabs } diff --git a/dot_config/nvim/lua/lang/yaml.lua b/dot_config/nvim/lua/lang/yaml.lua new file mode 100644 index 0000000..66ea674 --- /dev/null +++ b/dot_config/nvim/lua/lang/yaml.lua @@ -0,0 +1 @@ +vim.cmd('autocmd Filetype yaml setlocal tabstop=2 shiftwidth=2 expandtab') diff --git a/dot_config/nvim/lua/plugins/completion.lua b/dot_config/nvim/lua/plugins/completion.lua index a8322b1..1ac1063 100644 --- a/dot_config/nvim/lua/plugins/completion.lua +++ b/dot_config/nvim/lua/plugins/completion.lua @@ -2,22 +2,26 @@ local conf_cmp = function() local cmp = require('cmp') cmp.setup({ - snippet = { - expand = function(args) - vim.fn["vsnip#anonymous"](args.body) - end, - }, - mapping = { - [''] = cmp.mapping.confirm({ select = true }), - }, - sources = { - { name = 'buffer' }, - { name = 'crates' }, - { name = 'nvim_lua' }, - { name = 'nvim_lsp' }, - { name = 'path' }, - } + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + mapping = { + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm({ select = true }), + }, + sources = { + { name = 'buffer' }, + { name = 'crates' }, + { name = 'nvim_lua' }, + { name = 'nvim_lsp' }, + { name = 'path' }, + } }) end -return { conf_cmp = conf_cmp } \ No newline at end of file +return { conf_cmp = conf_cmp } diff --git a/dot_config/nvim/lua/plugins/keymap.lua b/dot_config/nvim/lua/plugins/keymap.lua index 11d68f7..4a75fca 100644 --- a/dot_config/nvim/lua/plugins/keymap.lua +++ b/dot_config/nvim/lua/plugins/keymap.lua @@ -43,6 +43,8 @@ local mappings = { -- Project p = { f = { "lua require('telescope.builtin').find_files()", "Search Project" }, + b = { "lua require('yabs'):run_default_task()", "Build Project" }, + t = { "lua require('telescope').extensions.yabs.tasks()", "Search Project" }, }, -- Window diff --git a/dot_config/nvim/lua/plugins/search.lua b/dot_config/nvim/lua/plugins/search.lua index 8874904..12f372f 100644 --- a/dot_config/nvim/lua/plugins/search.lua +++ b/dot_config/nvim/lua/plugins/search.lua @@ -1,17 +1,6 @@ -- Telescope -local conf_telescope = function() - require('telescope').setup { - defaults = { - mappings = { - i = { - [""] = false, - [""] = false, - }, - }, - generic_sorter = require'telescope.sorters'.get_fzy_sorter, - file_sorter = require'telescope.sorters'.get_fzy_sorter, - } - } +function conf_telescope() + require("telescope").setup {} end -return { conf_telescope = conf_telescope } \ No newline at end of file +return { conf_telescope = conf_telescope }