From 949811bf941f726026bebf6f586dfb64af77deff Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Thu, 27 Oct 2022 17:03:03 +0200 Subject: [PATCH] Soooo many changes --- .config/alacritty/alacritty.yml | 16 ++- .config/nvim/after/plugin/git-worktree.lua | 130 ++++++++++++++++----- .config/nvim/after/plugin/lsp.lua | 4 +- .config/nvim/after/plugin/luasnip.lua | 1 + .config/nvim/after/plugin/telescope.lua | 17 +-- .config/nvim/lua/halfdan/cmp.lua | 42 ++----- .config/nvim/lua/halfdan/lualine.lua | 15 ++- .config/nvim/lua/halfdan/luasnip.lua | 1 - .config/nvim/lua/halfdan/neogit.lua | 4 +- .config/nvim/lua/halfdan/packer.lua | 6 +- .config/nvim/syntax/NeogitStatus.vim | 2 + 11 files changed, 152 insertions(+), 86 deletions(-) create mode 100644 .config/nvim/after/plugin/luasnip.lua create mode 100644 .config/nvim/syntax/NeogitStatus.vim diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml index 2081460..a3a57e5 100644 --- a/.config/alacritty/alacritty.yml +++ b/.config/alacritty/alacritty.yml @@ -1,23 +1,26 @@ +env: + TERM: screen-256color + # Font font: normal: - family: Hack Nerd Font + family: FiraCode Nerd Font Mono style: Regular bold: - family: Hack Nerd Font + family: FiraCode Nerd Font Mono style: Bold italic: - family: Hack Nerd Font + family: FiraCode Nerd Font Mono style: Italic bold_italic: - family: Hack Nerd Font + family: FiraCode Nerd Font Mono style: Bold Italic - size: 15 - ligatures: true + size: 18 + ligatures: true # Gruvbox colors: @@ -54,5 +57,6 @@ window: key_bindings: - { key: Right, mods: Alt, chars: "\x1BF" } - { key: Left, mods: Alt, chars: "\x1BB" } + - { key: Key6, mods: Control, chars: "\x1e" } alt_send_esc: true diff --git a/.config/nvim/after/plugin/git-worktree.lua b/.config/nvim/after/plugin/git-worktree.lua index 2e38c5b..20801fd 100644 --- a/.config/nvim/after/plugin/git-worktree.lua +++ b/.config/nvim/after/plugin/git-worktree.lua @@ -1,46 +1,116 @@ local Worktree = require("git-worktree") local Job = require("plenary.job") +local FTerm = require("FTerm") -local function schedule_notify(message) +local function file_exists(name) + local f=io.open(name,"r") + if f~=nil then io.close(f) return true else return false end +end + +local function schedule_notify(message, level) vim.schedule(function() - vim.notify.notify(message) + vim.notify.notify(message, level or "info") end) end -local function is_massdriver() - return not not (string.find(vim.loop.cwd(), "massdriver.git", 1, true)) +local function is_elixir_project() + return file_exists(vim.loop.cwd() .. "/" .. "mix.exs") end +-- Run mix compile +local compile_job = Job:new({ + command = "mix", + args = { "compile" }, + on_start = function() + schedule_notify("Compiling...", "debug") + end, + on_exit = function(_j, _return_val) + schedule_notify("Compiling done") + end +}) + +-- Run mix deps.get +local deps_job = Job:new({ + command = "mix", + args = { "deps.get" }, + on_start = function() + schedule_notify("Fetching dependencies...") + end, + on_exit = function(_j, _return_val) + schedule_notify("Fetched dependencies") + end +}) + +local function create_docker_up_job(path) + return Job:new({ + command = "docker-compose", + args = { "up" }, + cwd = path, + detached = true, + on_start = function () + schedule_notify("Running docker in " .. path, "debug") + end, + on_exit = function (_j, return_val) + if return_val ~= 0 then + schedule_notify("Error running docker for " .. path, "error") + end + end + }) +end + +local function create_docker_down_job(path) + return Job:new({ + command = "docker-compose", + args = { "down" }, + cwd = path, + on_start = function () + schedule_notify("Shutting down containers at " .. path, "debug") + end, + on_exit = function () + schedule_notify("Shut down containers at " .. path, "debug") + end, + }) +end + +local iex = FTerm:new({ + cmd = { "iex", "-S", "mix" }, + dimensions = { + height = 0.9, + width = 0.9 + } +}) + +vim.keymap.set('t', '', function () + iex:toggle() +end) +vim.keymap.set('n', '', function () + iex:toggle() +end) + Worktree.on_tree_change(function(op, metadata) - local compile_job = Job:new({ - command = "mix", - args = { "compile" }, - on_start = function() - schedule_notify("Compiling...") - end, - on_exit = function(_j, _return_val) - schedule_notify("Compiling done") - end - }) - - local deps_job = Job:new({ - command = "mix", - args = { "deps.get" }, - on_start = function() - schedule_notify("Fetching dependencies...") - end, - on_exit = function(_j, _return_val) - schedule_notify("Fetched dependencies") - end - }) - - if op == Worktree.Operations.Create and is_massdriver() then + if op == Worktree.Operations.Create and is_elixir_project() then deps_job:and_then(compile_job) - deps_job:sync() - compile_job:wait() + deps_job:start() end - if op == Worktree.Operations.Switch and is_massdriver() then + if op == Worktree.Operations.Switch and is_elixir_project() then + local docker_down = create_docker_down_job(metadata.prev_path) + local docker_up = create_docker_up_job(metadata.path) + + docker_down:and_then(docker_up) compile_job:start() + docker_down:start() + + iex:close(true) end end) + +local group = vim.api.nvim_create_augroup('MyCustomNeogitEvents', { clear = true }) +vim.api.nvim_create_autocmd('User', { + pattern = 'NeogitPullComplete', + group = group, + callback = function () + deps_job:and_then(compile_job) + deps_job:start() + end, +}) diff --git a/.config/nvim/after/plugin/lsp.lua b/.config/nvim/after/plugin/lsp.lua index db2c989..2f1470e 100644 --- a/.config/nvim/after/plugin/lsp.lua +++ b/.config/nvim/after/plugin/lsp.lua @@ -127,7 +127,7 @@ local on_attach = function(client, bufnr) nnoremap("gr", function() vim.lsp.buf.references() end) nnoremap("rn", function() vim.lsp.buf.rename() end) nnoremap("cl", function() vim.lsp.codelens.run() end) - nnoremap("ff", function() vim.lsp.buf.format{async = true} end) + nnoremap("fa", function() vim.lsp.buf.format{async = true} end) inoremap("", function() vim.lsp.buf.signature_help() end) lsp_status.on_attach(client, bufnr) @@ -137,7 +137,7 @@ local function config(_config) _config = vim.tbl_deep_extend("force", { log_level = vim.lsp.protocol.MessageType.Log, message_level = vim.lsp.protocol.MessageType.Log, - capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()), + capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()), on_attach = on_attach, }, _config or {}) diff --git a/.config/nvim/after/plugin/luasnip.lua b/.config/nvim/after/plugin/luasnip.lua new file mode 100644 index 0000000..89dbb2e --- /dev/null +++ b/.config/nvim/after/plugin/luasnip.lua @@ -0,0 +1 @@ +require("luasnip/loaders/from_vscode").lazy_load() diff --git a/.config/nvim/after/plugin/telescope.lua b/.config/nvim/after/plugin/telescope.lua index 818a238..8ad1386 100644 --- a/.config/nvim/after/plugin/telescope.lua +++ b/.config/nvim/after/plugin/telescope.lua @@ -2,25 +2,24 @@ local Remap = require("halfdan.keymap") local nnoremap = Remap.nnoremap local builtin = require("telescope.builtin") -nnoremap("pg", function() +nnoremap("gg", function() builtin.live_grep() end) nnoremap("", function() - if not pcall(builtin.git_files) then - builtin.find_files() - end + builtin.commands() end) -nnoremap("pf", function() + +nnoremap("ff", function() builtin.find_files() end) -nnoremap("ps", function() +nnoremap("fs", function() builtin.lsp_workspace_symbols() end) -nnoremap("pw", function() +nnoremap("gw", function() builtin.grep_string { search = vim.fn.expand("") } end) -nnoremap("pb", function() +nnoremap("fb", function() builtin.buffers() end) nnoremap("vh", function() @@ -36,3 +35,5 @@ end) nnoremap("gc", function() builtin.git_branches() end) + + diff --git a/.config/nvim/lua/halfdan/cmp.lua b/.config/nvim/lua/halfdan/cmp.lua index 276d2dd..f9c941a 100644 --- a/.config/nvim/lua/halfdan/cmp.lua +++ b/.config/nvim/lua/halfdan/cmp.lua @@ -5,10 +5,9 @@ local source_mapping = { buffer = "[Buffer]", nvim_lsp = "[LSP]", nvim_lua = "[Lua]", - cmp_tabnine = "[TN]", path = "[Path]", - orgmode = "[Org]", luasnip = "[Snippet]", + jira = "[Jira]", } local has_words_before = function() @@ -58,38 +57,27 @@ cmp.setup({ end, { "i", "s" }) }, sources = cmp.config.sources({ - { name = 'cmp_tabnine' }, - { name = 'nvim_lsp' }, { name = 'luasnip' }, + { name = 'nvim_lsp' }, + }, { + { name = 'buffer'} }), formatting = { format = function(entry, vim_item) vim_item.kind = lspkind.presets.default[vim_item.kind] local menu = source_mapping[entry.source.name] - if entry.source.name == 'cmp_tabnine' then - if entry.completion_item.data ~= nil and entry.completion_item.data.detail ~= nil then - menu = entry.completion_item.data.detail .. ' ' .. menu - end - vim_item.kind = '?' - end vim_item.menu = menu return vim_item end + }, + experimental = { + ghost_text = true, } }) --- Set configuration for specific filetype. -cmp.setup.filetype('org', { - sources = cmp.config.sources({ - { name = 'orgmode' }, - { name = 'cmp_tabnine' }, - }, { - { name = 'buffer' }, - }) -}) -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). -cmp.setup.cmdline('/', { +cmp.setup.cmdline({ '/', '?' }, { sources = { { name = 'buffer' } } @@ -105,17 +93,3 @@ cmp.setup.cmdline(':', { mappings = cmp.mapping.preset.cmdline(), }) --- Setup tabnine -local tabnine = require('cmp_tabnine.config') -tabnine:setup({ - max_lines = 1000; - max_num_results = 20; - sort = true; - run_on_every_keystroke = true; - snippet_placeholder = '..'; - ignored_file_types = { -- default is not to ignore - -- uncomment to ignore in lua: - lua = true - }; -}) - diff --git a/.config/nvim/lua/halfdan/lualine.lua b/.config/nvim/lua/halfdan/lualine.lua index 2488586..e4a9266 100644 --- a/.config/nvim/lua/halfdan/lualine.lua +++ b/.config/nvim/lua/halfdan/lualine.lua @@ -1,3 +1,11 @@ + +local function formatted_status() + local status = require'lsp-status'.status() + status = string.gsub(status, "%%", "%%%%") + return status +end + + require 'lualine'.setup { options = { icons_enabled = true, @@ -10,7 +18,12 @@ require 'lualine'.setup { lualine_a = { 'mode' }, lualine_b = { 'branch', 'diff', 'diagnostics' }, lualine_c = { 'filename' }, - lualine_x = { "require'lsp-status'.status()", 'filetype' }, + lualine_x = { + {"require'lsp-status'.status()", fmt = function (str) + return string.gsub(str, "%%", "%%%%") + end}, + 'filetype' + }, lualine_y = { 'progress' }, lualine_z = { 'location' } }, diff --git a/.config/nvim/lua/halfdan/luasnip.lua b/.config/nvim/lua/halfdan/luasnip.lua index c011f1d..c145da9 100644 --- a/.config/nvim/lua/halfdan/luasnip.lua +++ b/.config/nvim/lua/halfdan/luasnip.lua @@ -4,4 +4,3 @@ luasnip.config.set_config { updateevents = "TextChanged,TextChangedI" } -require("luasnip/loaders/from_vscode").lazy_load() diff --git a/.config/nvim/lua/halfdan/neogit.lua b/.config/nvim/lua/halfdan/neogit.lua index 314ffdf..e650526 100644 --- a/.config/nvim/lua/halfdan/neogit.lua +++ b/.config/nvim/lua/halfdan/neogit.lua @@ -9,6 +9,4 @@ neogit.setup { nnoremap("gs", function() neogit.open({ }) -end); - -nnoremap("ga", "!git fetch --all"); +end) diff --git a/.config/nvim/lua/halfdan/packer.lua b/.config/nvim/lua/halfdan/packer.lua index 74e7d5a..b23648c 100644 --- a/.config/nvim/lua/halfdan/packer.lua +++ b/.config/nvim/lua/halfdan/packer.lua @@ -30,6 +30,7 @@ end vim.cmd "autocmd BufWritePost plugins.lua PackerCompile" -- Auto compile when there are changes in plugins.lua +vim.opt.runtimepath:append("~/code/jira.nvim") return require("packer").startup({ function(use) -- Packer can manage itself as an optional plugin @@ -113,7 +114,8 @@ return require("packer").startup({ { 'hrsh7th/cmp-nvim-lua', after = 'nvim-cmp' }, { 'saadparwaiz1/cmp_luasnip', after = 'nvim-cmp' }, { 'hrsh7th/cmp-cmdline', after = 'nvim-cmp', event = 'CmdlineEnter' }, - {'tzachar/cmp-tabnine', run = './install.sh', after = 'nvim-cmp' } + {'tzachar/cmp-tabnine', run = './install.sh', after = 'nvim-cmp' }, + {'petertriho/cmp-git', after = 'nvim-cmp'}, } } @@ -129,6 +131,8 @@ return require("packer").startup({ require('Comment').setup() end } + use { 'numToStr/FTerm.nvim' } + -- Telescope fuzzy find files/grep use {'nvim-lua/popup.nvim'} use {'nvim-lua/plenary.nvim'} diff --git a/.config/nvim/syntax/NeogitStatus.vim b/.config/nvim/syntax/NeogitStatus.vim new file mode 100644 index 0000000..20d6797 --- /dev/null +++ b/.config/nvim/syntax/NeogitStatus.vim @@ -0,0 +1,2 @@ +hi def NeogitDiffAddHighlight guibg=#404040 guifg=#859900 +hi def NeogitDiffDeleteHighlight guibg=#404040 guifg=#dc322f