Soooo many changes

This commit is contained in:
Fabian Becker 2022-10-27 17:03:03 +02:00
parent f5a7947005
commit 949811bf94
11 changed files with 152 additions and 86 deletions

View File

@ -1,22 +1,25 @@
env:
TERM: screen-256color
# Font # Font
font: font:
normal: normal:
family: Hack Nerd Font family: FiraCode Nerd Font Mono
style: Regular style: Regular
bold: bold:
family: Hack Nerd Font family: FiraCode Nerd Font Mono
style: Bold style: Bold
italic: italic:
family: Hack Nerd Font family: FiraCode Nerd Font Mono
style: Italic style: Italic
bold_italic: bold_italic:
family: Hack Nerd Font family: FiraCode Nerd Font Mono
style: Bold Italic style: Bold Italic
size: 15 size: 18
ligatures: true ligatures: true
# Gruvbox # Gruvbox
@ -54,5 +57,6 @@ window:
key_bindings: key_bindings:
- { key: Right, mods: Alt, chars: "\x1BF" } - { key: Right, mods: Alt, chars: "\x1BF" }
- { key: Left, mods: Alt, chars: "\x1BB" } - { key: Left, mods: Alt, chars: "\x1BB" }
- { key: Key6, mods: Control, chars: "\x1e" }
alt_send_esc: true alt_send_esc: true

View File

@ -1,28 +1,35 @@
local Worktree = require("git-worktree") local Worktree = require("git-worktree")
local Job = require("plenary.job") 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.schedule(function()
vim.notify.notify(message) vim.notify.notify(message, level or "info")
end) end)
end end
local function is_massdriver() local function is_elixir_project()
return not not (string.find(vim.loop.cwd(), "massdriver.git", 1, true)) return file_exists(vim.loop.cwd() .. "/" .. "mix.exs")
end end
Worktree.on_tree_change(function(op, metadata) -- Run mix compile
local compile_job = Job:new({ local compile_job = Job:new({
command = "mix", command = "mix",
args = { "compile" }, args = { "compile" },
on_start = function() on_start = function()
schedule_notify("Compiling...") schedule_notify("Compiling...", "debug")
end, end,
on_exit = function(_j, _return_val) on_exit = function(_j, _return_val)
schedule_notify("Compiling done") schedule_notify("Compiling done")
end end
}) })
-- Run mix deps.get
local deps_job = Job:new({ local deps_job = Job:new({
command = "mix", command = "mix",
args = { "deps.get" }, args = { "deps.get" },
@ -34,13 +41,76 @@ Worktree.on_tree_change(function(op, metadata)
end end
}) })
if op == Worktree.Operations.Create and is_massdriver() then local function create_docker_up_job(path)
deps_job:and_then(compile_job) return Job:new({
deps_job:sync() command = "docker-compose",
compile_job:wait() 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 end
if op == Worktree.Operations.Switch and is_massdriver() then 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', '<A-t>', function ()
iex:toggle()
end)
vim.keymap.set('n', '<A-t>', function ()
iex:toggle()
end)
Worktree.on_tree_change(function(op, metadata)
if op == Worktree.Operations.Create and is_elixir_project() then
deps_job:and_then(compile_job)
deps_job:start()
end
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() compile_job:start()
docker_down:start()
iex:close(true)
end end
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,
})

View File

@ -127,7 +127,7 @@ local on_attach = function(client, bufnr)
nnoremap("gr", function() vim.lsp.buf.references() end) nnoremap("gr", function() vim.lsp.buf.references() end)
nnoremap("<leader>rn", function() vim.lsp.buf.rename() end) nnoremap("<leader>rn", function() vim.lsp.buf.rename() end)
nnoremap("<leader>cl", function() vim.lsp.codelens.run() end) nnoremap("<leader>cl", function() vim.lsp.codelens.run() end)
nnoremap("<leader>ff", function() vim.lsp.buf.format{async = true} end) nnoremap("<leader>fa", function() vim.lsp.buf.format{async = true} end)
inoremap("<C-h>", function() vim.lsp.buf.signature_help() end) inoremap("<C-h>", function() vim.lsp.buf.signature_help() end)
lsp_status.on_attach(client, bufnr) lsp_status.on_attach(client, bufnr)
@ -137,7 +137,7 @@ local function config(_config)
_config = vim.tbl_deep_extend("force", { _config = vim.tbl_deep_extend("force", {
log_level = vim.lsp.protocol.MessageType.Log, log_level = vim.lsp.protocol.MessageType.Log,
message_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, on_attach = on_attach,
}, _config or {}) }, _config or {})

View File

@ -0,0 +1 @@
require("luasnip/loaders/from_vscode").lazy_load()

View File

@ -2,25 +2,24 @@ local Remap = require("halfdan.keymap")
local nnoremap = Remap.nnoremap local nnoremap = Remap.nnoremap
local builtin = require("telescope.builtin") local builtin = require("telescope.builtin")
nnoremap("<leader>pg", function() nnoremap("<leader>gg", function()
builtin.live_grep() builtin.live_grep()
end) end)
nnoremap("<C-p>", function() nnoremap("<C-p>", function()
if not pcall(builtin.git_files) then builtin.commands()
builtin.find_files()
end
end) end)
nnoremap("<Leader>pf", function()
nnoremap("<Leader>ff", function()
builtin.find_files() builtin.find_files()
end) end)
nnoremap("<Leader>ps", function() nnoremap("<Leader>fs", function()
builtin.lsp_workspace_symbols() builtin.lsp_workspace_symbols()
end) end)
nnoremap("<leader>pw", function() nnoremap("<leader>gw", function()
builtin.grep_string { search = vim.fn.expand("<cword>") } builtin.grep_string { search = vim.fn.expand("<cword>") }
end) end)
nnoremap("<leader>pb", function() nnoremap("<leader>fb", function()
builtin.buffers() builtin.buffers()
end) end)
nnoremap("<leader>vh", function() nnoremap("<leader>vh", function()
@ -36,3 +35,5 @@ end)
nnoremap("<leader>gc", function() nnoremap("<leader>gc", function()
builtin.git_branches() builtin.git_branches()
end) end)

View File

@ -5,10 +5,9 @@ local source_mapping = {
buffer = "[Buffer]", buffer = "[Buffer]",
nvim_lsp = "[LSP]", nvim_lsp = "[LSP]",
nvim_lua = "[Lua]", nvim_lua = "[Lua]",
cmp_tabnine = "[TN]",
path = "[Path]", path = "[Path]",
orgmode = "[Org]",
luasnip = "[Snippet]", luasnip = "[Snippet]",
jira = "[Jira]",
} }
local has_words_before = function() local has_words_before = function()
@ -58,38 +57,27 @@ cmp.setup({
end, { "i", "s" }) end, { "i", "s" })
}, },
sources = cmp.config.sources({ sources = cmp.config.sources({
{ name = 'cmp_tabnine' },
{ name = 'nvim_lsp' },
{ name = 'luasnip' }, { name = 'luasnip' },
{ name = 'nvim_lsp' },
}, {
{ name = 'buffer'}
}), }),
formatting = { formatting = {
format = function(entry, vim_item) format = function(entry, vim_item)
vim_item.kind = lspkind.presets.default[vim_item.kind] vim_item.kind = lspkind.presets.default[vim_item.kind]
local menu = source_mapping[entry.source.name] 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 vim_item.menu = menu
return vim_item return vim_item
end 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). -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline('/', { cmp.setup.cmdline({ '/', '?' }, {
sources = { sources = {
{ name = 'buffer' } { name = 'buffer' }
} }
@ -105,17 +93,3 @@ cmp.setup.cmdline(':', {
mappings = cmp.mapping.preset.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
};
})

View File

@ -1,3 +1,11 @@
local function formatted_status()
local status = require'lsp-status'.status()
status = string.gsub(status, "%%", "%%%%")
return status
end
require 'lualine'.setup { require 'lualine'.setup {
options = { options = {
icons_enabled = true, icons_enabled = true,
@ -10,7 +18,12 @@ require 'lualine'.setup {
lualine_a = { 'mode' }, lualine_a = { 'mode' },
lualine_b = { 'branch', 'diff', 'diagnostics' }, lualine_b = { 'branch', 'diff', 'diagnostics' },
lualine_c = { 'filename' }, 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_y = { 'progress' },
lualine_z = { 'location' } lualine_z = { 'location' }
}, },

View File

@ -4,4 +4,3 @@ luasnip.config.set_config {
updateevents = "TextChanged,TextChangedI" updateevents = "TextChanged,TextChangedI"
} }
require("luasnip/loaders/from_vscode").lazy_load()

View File

@ -9,6 +9,4 @@ neogit.setup {
nnoremap("<leader>gs", function() nnoremap("<leader>gs", function()
neogit.open({ }) neogit.open({ })
end); end)
nnoremap("<leader>ga", "<cmd>!git fetch --all<CR>");

View File

@ -30,6 +30,7 @@ end
vim.cmd "autocmd BufWritePost plugins.lua PackerCompile" -- Auto compile when there are changes in plugins.lua 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({ return require("packer").startup({
function(use) function(use)
-- Packer can manage itself as an optional plugin -- Packer can manage itself as an optional plugin
@ -113,7 +114,8 @@ return require("packer").startup({
{ 'hrsh7th/cmp-nvim-lua', after = 'nvim-cmp' }, { 'hrsh7th/cmp-nvim-lua', after = 'nvim-cmp' },
{ 'saadparwaiz1/cmp_luasnip', after = 'nvim-cmp' }, { 'saadparwaiz1/cmp_luasnip', after = 'nvim-cmp' },
{ 'hrsh7th/cmp-cmdline', after = 'nvim-cmp', event = 'CmdlineEnter' }, { '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() require('Comment').setup()
end end
} }
use { 'numToStr/FTerm.nvim' }
-- Telescope fuzzy find files/grep -- Telescope fuzzy find files/grep
use {'nvim-lua/popup.nvim'} use {'nvim-lua/popup.nvim'}
use {'nvim-lua/plenary.nvim'} use {'nvim-lua/plenary.nvim'}

View File

@ -0,0 +1,2 @@
hi def NeogitDiffAddHighlight guibg=#404040 guifg=#859900
hi def NeogitDiffDeleteHighlight guibg=#404040 guifg=#dc322f