Commit 42ddd058 authored by Tim van Deurzen's avatar Tim van Deurzen

Latest updates.

parent a920a0b6
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
org-agenda-skip-deadline-if-done t org-agenda-skip-deadline-if-done t
org-agenda-skip-scheduled-if-done t org-agenda-skip-scheduled-if-done t
org-clock-rounding-minutes 5 org-clock-rounding-minutes 15
org-clock-persist t org-clock-persist t
org-clock-in-resume t org-clock-in-resume t
org-clock-persist-query-resume nil org-clock-persist-query-resume nil
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: ;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
;(package! some-package) ;(package! some-package)
(package! evil-colemak-basics) (package! evil-colemak-basics :recipe (:branch "main"))
(package! org-super-agenda) (package! org-super-agenda)
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
email = tim@kompiler.org email = tim@kompiler.org
name = Tim van Deurzen name = Tim van Deurzen
[includeIf "gitdir:~/src/blockport/"]
path = ~/src/blockport/.gitconfig_bux
[includeIf "gitdir:~/src/bux/"]
path = ~/src/bux/.gitconfig_bux
[alias] [alias]
co = checkout co = checkout
br = branch br = branch
...@@ -15,12 +21,15 @@ ...@@ -15,12 +21,15 @@
[url "ssh://git@gitlab.dopey.blockport.io"] [url "ssh://git@gitlab.dopey.blockport.io"]
insteadOf = https://gitlab.dopey.blockport.io insteadOf = https://gitlab.dopey.blockport.io
[url "ssh://git@github.com-vdeurzen-bux/buxapp"]
insteadOf = https://github.com/buxapp
[core] [core]
editor = nvim editor = nvim
pager = delta pager = delta
[delta] [delta]
features = line-numbers decorations side-by-side features = line-numbers decorations
plus-style = "syntax bold auto" plus-style = "syntax bold auto"
minus-style = "syntax bold italic auto" minus-style = "syntax bold italic auto"
syntax-theme = "gruvbox-light" syntax-theme = "gruvbox-light"
......
local lsp_config = require("lspconfig")
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities)
capabilities.textDocument.completion.completionItem.snippetSupport = true
lsp_config.gopls.setup({
capabilities = capabilities,
settings = {
gopls = {
experimentalPostfixCompletions = true,
analyses = {
fieldalignment = true,
nilness = true,
unusedwrite = true,
unusedparams = true,
shadow = true,
unreachable = true,
bools = true,
},
staticcheck = true,
usePlaceholders = true,
codelenses = {
gc_details = true,
},
},
},
})
vim.cmd('set noexpandtab')
...@@ -4,3 +4,5 @@ require("keybindings") ...@@ -4,3 +4,5 @@ require("keybindings")
require("plugins") require("plugins")
require("lsp") require("lsp")
require("treesitter") require("treesitter")
require("snippets")
require("automagic")
...@@ -10,6 +10,7 @@ end ...@@ -10,6 +10,7 @@ end
local function basic_configuration() local function basic_configuration()
local options = { local options = {
winbar = "%=%m %f";
hidden = true; hidden = true;
fileformats = "unix,mac,dos"; fileformats = "unix,mac,dos";
modeline = true; modeline = true;
...@@ -31,7 +32,7 @@ local function basic_configuration() ...@@ -31,7 +32,7 @@ local function basic_configuration()
termguicolors = true; termguicolors = true;
background = "dark"; background = "dark";
ttyfast = true; ttyfast = true;
lazyredraw = true; -- lazyredraw = true;
listchars = "tab:»·,nbsp:+,trail:·,extends:→,precedes:←"; listchars = "tab:»·,nbsp:+,trail:·,extends:→,precedes:←";
showcmd = true; showcmd = true;
ruler = true; ruler = true;
...@@ -42,7 +43,7 @@ local function basic_configuration() ...@@ -42,7 +43,7 @@ local function basic_configuration()
wildmenu = true; wildmenu = true;
wildignore = "*.o,*.class,*.hi,*.pdf,*.git,*.blg,*.bbl,*.aux,*.gcno,*.gcda"; wildignore = "*.o,*.class,*.hi,*.pdf,*.git,*.blg,*.bbl,*.aux,*.gcno,*.gcda";
showmode = true; showmode = true;
laststatus = 2; laststatus = 3;
scrolloff = 7; scrolloff = 7;
cmdheight = 2; cmdheight = 2;
tabpagemax = 100; tabpagemax = 100;
......
...@@ -2,30 +2,122 @@ local lspkind = require("lspkind") ...@@ -2,30 +2,122 @@ local lspkind = require("lspkind")
lspkind.init() lspkind.init()
local cmp_autopairs = require("nvim-autopairs.completion.cmp") local cmp_autopairs = require("nvim-autopairs.completion.cmp")
local luasnip = require("luasnip")
local cmp = require("cmp") local cmp = require("cmp")
local has_words_before = function()
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
local t = function(str)
return vim.api.nvim_replace_termcodes(str, true, true, true)
end
cmp.setup({ cmp.setup({
snippet = { snippet = {
expand = function(args) expand = function(args)
--require("luasnip").lsp_expand(args.body) luasnip.lsp_expand(args.body)
require("snippy").expand_snippet(args.body) --require("snippy").expand_snippet(args.body)
end, end,
}, },
mapping = { mapping = {
["<C-d>"] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }), ["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }), ["<C-f>"] = cmp.mapping.scroll_docs(2),
["<C-e>"] = cmp.mapping({ ['<Down>'] = cmp.mapping(cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }), { 'i' }),
i = cmp.mapping.abort(), ['<Up>'] = cmp.mapping(cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }), { 'i' }),
c = cmp.mapping.close(), ['<C-n>'] = cmp.mapping({
c = function()
if cmp.visible() then
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
elseif has_words_before() then
cmp.complete()
else
vim.api.nvim_feedkeys(t('<Down>'), 'n', true)
end
end,
i = function(fallback)
if cmp.visible() then
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end
}),
['<C-p>'] = cmp.mapping({
c = function()
if cmp.visible() then
cmp.select_prev_item({ behavior = cmp.SelectBehavior.Select })
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
vim.api.nvim_feedkeys(t('<Up>'), 'n', true)
end
end,
i = function(fallback)
if cmp.visible() then
cmp.select_prev_item({ behavior = cmp.SelectBehavior.Select })
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end
}),
["<C-e>"] = cmp.mapping.close(),
["<c-y>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Insert,
select = true,
}), }),
["<c-q>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}),
-- ["<CR>"] = cmp.mapping.confirm({ select = true }),
-- ["<Tab>"] = cmp.mapping(function(fallback)
-- if cmp.visible() then
-- cmp.select_next_item()
-- elseif luasnip.expand_or_jumpable() then
-- luasnip.expand_or_jump()
-- elseif has_words_before() then
-- cmp.complete()
-- else
-- fallback()
-- end
-- end, {
-- "i",
-- "s",
-- }),
-- ["<S-Tab>"] = cmp.mapping(function(fallback)
-- if cmp.visible() then
-- cmp.select_prev_item()
-- elseif luasnip.jumpable(-1) then
-- luasnip.jump(-1)
-- else
-- fallback()
-- end
-- end, {
-- "i",
-- "s",
-- }),
}, },
sources = cmp.config.sources({ sources = cmp.config.sources({
{ name = "nvim_lsp" }, { name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "nvim_lua" }, { name = "nvim_lua" },
{ name = "path" }, { name = "path" },
{ name = "snippy" }, --{ name = "snippy" },
{ name = "buffer", keyword_length = 5 }, { name = "buffer", keyword_length = 5 },
}), }),
...@@ -42,6 +134,18 @@ cmp.setup({ ...@@ -42,6 +134,18 @@ cmp.setup({
}), }),
}, },
sorting = {
comparators = {
cmp.config.compare.offset,
cmp.config.compare.exact,
cmp.config.compare.score,
cmp.config.compare.kind,
cmp.config.compare.sort_text,
cmp.config.compare.length,
cmp.config.compare.order,
},
},
experimental = { experimental = {
native_menu = false, native_menu = false,
ghost_text = true, ghost_text = true,
......
...@@ -31,7 +31,7 @@ local keymap = { ...@@ -31,7 +31,7 @@ local keymap = {
r = { "<Cmd>lua vim.lsp.buf.rename()<CR>", "rename" }, r = { "<Cmd>lua vim.lsp.buf.rename()<CR>", "rename" },
s = { "<Cmd>lua vim.lsp.buf.references()<CR>", "find" }, s = { "<Cmd>lua vim.lsp.buf.references()<CR>", "find" },
p = { "<cmd>lua vim.lsp.buf.hover()<CR>", "preview definition" }, p = { "<cmd>lua vim.lsp.buf.hover()<CR>", "preview definition" },
f = { "<Cmd>lua vim.lsp.buf.formatting()<CR>", "format" }, f = { "<Cmd>lua vim.lsp.buf.format({ async = true })<CR>", "format" },
d = { "<Cmd>lua vim.lsp.buf.definition()<CR>", "go to definition" }, d = { "<Cmd>lua vim.lsp.buf.definition()<CR>", "go to definition" },
i = { "<Cmd>lua vim.lsp.buf.implementation()<CR>", "go to definition" }, i = { "<Cmd>lua vim.lsp.buf.implementation()<CR>", "go to definition" },
t = { "<Cmd>LspTroubleToggle lsp_workspace_diagnostics<CR>", "open LspTrouble" }, t = { "<Cmd>LspTroubleToggle lsp_workspace_diagnostics<CR>", "open LspTrouble" },
......
local lsp_config = require("lspconfig") local lsp_config = require("lspconfig")
-- local ih = require("inlay-hints")
--
-- ih.setup({
-- only_current_line = true,
-- eol = {
-- right_align = true,
-- right_align_padding = 10,
-- }
-- })
-- lsp_lines includes a better solution, disabled to avoid double diags.
vim.diagnostic.config({
virtual_text = false,
})
local capabilities = vim.lsp.protocol.make_client_capabilities() local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities)
capabilities.textDocument.completion.completionItem.snippetSupport = true capabilities.textDocument.completion.completionItem.snippetSupport = true
lsp_config.terraformls.setup({})
lsp_config.java_language_server.setup({
cmd = { "/usr/bin/java-language-server" },
})
lsp_config.gopls.setup({ lsp_config.gopls.setup({
capabilities = capabilities, capabilities = capabilities,
-- on_attach = function(c, b)
-- ih.on_attach(c, b)
-- end,
settings = { settings = {
gopls = { gopls = {
experimentalPostfixCompletions = true, experimentalPostfixCompletions = true,
...@@ -14,15 +37,27 @@ lsp_config.gopls.setup({ ...@@ -14,15 +37,27 @@ lsp_config.gopls.setup({
nilness = true, nilness = true,
unusedwrite = true, unusedwrite = true,
unusedparams = true, unusedparams = true,
unusedvariable = true,
shadow = true, shadow = true,
unreachable = true, unreachable = true,
bools = true, bools = true,
useany = true,
}, },
staticcheck = true, staticcheck = true,
usePlaceholders = true, usePlaceholders = true,
codelenses = { codelenses = {
gc_details = true, gc_details = true,
}, },
semanticTokens = true,
hints = {
assignVariableTypes = true,
compositeLiteralFields = true,
compositeLiteralTypes = true,
constantValues = true,
functionTypeParameters = true,
parameterNames = true,
rangeVariableTypes = true,
},
}, },
}, },
}) })
...@@ -52,7 +87,7 @@ local opts = { ...@@ -52,7 +87,7 @@ local opts = {
-- Whether to show hover actions inside the hover window -- Whether to show hover actions inside the hover window
-- This overrides the default hover handler -- This overrides the default hover handler
hover_with_actions = true, -- hover_with_actions = true,
runnables = { runnables = {
-- whether to use telescope for selection menu or not -- whether to use telescope for selection menu or not
...@@ -154,15 +189,23 @@ lsp_config.metals.setup({ ...@@ -154,15 +189,23 @@ lsp_config.metals.setup({
lsp_config.dartls.setup({}) lsp_config.dartls.setup({})
lsp_config.texlab.setup({})
lsp_config.ccls.setup({ lsp_config.ccls.setup({
capabilities = capabilities, capabilities = capabilities,
}) })
lsp_config.sumneko_lua.setup({ lsp_config.sumneko_lua.setup({
cmd = { "/usr/bin/lua-language-server" }, cmd = { "/usr/bin/lua-language-server" },
-- on_attach = function(c, b)
-- ih.on_attach(c, b)
-- end,
capabilities = capabilities, capabilities = capabilities,
settings = { settings = {
Lua = { Lua = {
hint = {
enable = true,
},
runtime = { runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = "LuaJIT", version = "LuaJIT",
...@@ -251,6 +294,7 @@ if vim.g.snippets ~= "luasnip" then ...@@ -251,6 +294,7 @@ if vim.g.snippets ~= "luasnip" then
end end
local ls = require("luasnip") local ls = require("luasnip")
require("snippets")
ls.config.set_config({ ls.config.set_config({
history = true, history = true,
...@@ -384,6 +428,7 @@ local function go_result_type(info) ...@@ -384,6 +428,7 @@ local function go_result_type(info)
end end
end end
end end
-- }}} -- }}}
local shortcut = function(val) local shortcut = function(val)
if type(val) == "string" then if type(val) == "string" then
...@@ -461,13 +506,14 @@ snippets.go = make { ...@@ -461,13 +506,14 @@ snippets.go = make {
ie = { "if err != nil {", "\treturn err", i(0), "}" }, ie = { "if err != nil {", "\treturn err", i(0), "}" },
} }
vim.cmd([[augroup lsp]])
vim.cmd [[augroup lsp]] vim.cmd([[au!]])
vim.cmd [[au!]] vim.cmd([[au FileType scala,sbt lua require("metals").initialize_or_attach({})]])
vim.cmd [[au FileType scala,sbt lua require("metals").initialize_or_attach({})]] vim.cmd([[augroup end]])
vim.cmd [[augroup end]]
local metals_config = require("metals").bare_config() local metals_config = require("metals").bare_config()
metals_config.settings = { metals_config.settings = {
showImplicitArguments = true, showImplicitArguments = true,
} }
require('dap-go').setup()
...@@ -57,6 +57,85 @@ return require("packer").startup(function(use) ...@@ -57,6 +57,85 @@ return require("packer").startup(function(use)
require("bufferline").setup({}) require("bufferline").setup({})
end, end,
}) })
use({
"dnlhc/glance.nvim",
config = function()
require('glance').setup({
height = 18, -- Height of the window
zindex = 45,
border = {
enable = false, -- Show window borders. Only horizontal borders allowed
top_char = '―',
bottom_char = '―',
},
list = {
position = 'right', -- Position of the list window 'left'|'right'
width = 0.33, -- 33% width relative to the active window, min 0.1, max 0.5
},
theme = { -- This feature might not work properly in nvim-0.7.2
enable = true, -- Will generate colors for the plugin based on your current colorscheme
mode = 'auto', -- 'brighten'|'darken'|'auto', 'auto' will set mode based on the brightness of your colorscheme
},
hooks = {},
folds = {
fold_closed = '',
fold_open = '',
folded = true, -- Automatically fold list on startup
},
indent_lines = {
enable = true,
icon = '│',
},
winbar = {
enable = true, -- Available strating from nvim-0.8+
},
})
end,
})
-- use({
-- "folke/noice.nvim",
-- config = function()
-- require("noice").setup()
-- end,
-- requires = {
-- -- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
-- "MunifTanjim/nui.nvim",
-- -- OPTIONAL:
-- -- `nvim-notify` is only needed, if you want to use the notification view.
-- -- If not available, we use `mini` as the fallback
-- "rcarriga/nvim-notify",
-- }
-- })
-- use({
-- "b0o/incline.nvim",
-- config = function()
-- require("incline").setup({
-- debounce_threshold = { falling = 500, rising = 250 },
-- render = function(props)
-- local bufname = vim.api.nvim_buf_get_name(props.buf)
-- local filename = vim.fn.fnamemodify(bufname, ":t")
-- local diagnostics = get_diagnostic_label(props)
-- local modified = vim.api.nvim_buf_get_option(props.buf, "modified") and "bold,italic" or "None"
-- local filetype_icon, color = require("nvim-web-devicons").get_icon_color(filename)
-- local buffer = {
-- { filetype_icon, guifg = color },
-- { " " },
-- { filename, gui = modified },
-- }
-- if #diagnostics > 0 then
-- table.insert(diagnostics, { "| ", guifg = "grey" })
-- end
-- for _, buffer_ in ipairs(buffer) do
-- table.insert(diagnostics, buffer_)
-- end
-- return diagnostics
-- end,
-- })
-- end
-- })
-- Utilities -- Utilities
use("editorconfig/editorconfig-vim") use("editorconfig/editorconfig-vim")
...@@ -70,6 +149,14 @@ return require("packer").startup(function(use) ...@@ -70,6 +149,14 @@ return require("packer").startup(function(use)
"nvim-treesitter/nvim-treesitter-textobjects", "nvim-treesitter/nvim-treesitter-textobjects",
}, },
}) })
use({
"nvim-treesitter/playground",
requires = {
"nvim-treesitter/nvim-treesitter"
}
})
use({ use({
"nvim-telescope/telescope.nvim", "nvim-telescope/telescope.nvim",
...@@ -101,6 +188,12 @@ return require("packer").startup(function(use) ...@@ -101,6 +188,12 @@ return require("packer").startup(function(use)
requires = { "RishabhRD/popfix" }, requires = { "RishabhRD/popfix" },
disable = true, disable = true,
}) })
use({
"https://git.sr.ht/~whynothugo/lsp_lines.nvim",
config = function()
require("lsp_lines").setup()
end,
})
use({ use({
"nvim-lua/lsp_extensions.nvim", "nvim-lua/lsp_extensions.nvim",
...@@ -120,6 +213,26 @@ return require("packer").startup(function(use) ...@@ -120,6 +213,26 @@ return require("packer").startup(function(use)
end, end,
}) })
use('simrat39/inlay-hints.nvim')
use('hashivim/vim-terraform')
use({
'simrat39/symbols-outline.nvim',
config = require("symbols-outline").setup()
})
use({
"rcarriga/nvim-dap-ui",
requires = { "mfussenegger/nvim-dap" }
})
use({
'yriveiro/dap-go.nvim',
requires = { 'nvim-lua/plenary.nvim' }
})
use({ use({
"folke/lsp-trouble.nvim", "folke/lsp-trouble.nvim",
disable = true, disable = true,
...@@ -140,20 +253,36 @@ return require("packer").startup(function(use) ...@@ -140,20 +253,36 @@ return require("packer").startup(function(use)
use("hrsh7th/cmp-nvim-lua") use("hrsh7th/cmp-nvim-lua")
use("hrsh7th/cmp-nvim-lsp") use("hrsh7th/cmp-nvim-lsp")
use("hrsh7th/nvim-cmp") use("hrsh7th/nvim-cmp")
-- use({
-- "dcampos/cmp-snippy",
-- requires = {
-- "dcampos/nvim-snippy",
-- "honza/vim-snippets",
-- },
-- })
use({ use({
"dcampos/cmp-snippy", "saadparwaiz1/cmp_luasnip",
requires = { requires = {
"dcampos/nvim-snippy", "L3MON4D3/LuaSnip",
"honza/vim-snippets",
}, },
}) })
-- use({ -- use({
-- "saadparwaiz1/cmp_luasnip", -- "rafamadriz/friendly-snippets",
-- disable = true, -- disable = true,
-- requires = { -- requires = {
-- "L3MON4D3/LuaSnip", -- "L3MON4D3/LuaSnip",
-- }, -- },
-- -- config = function()
-- -- require("config.snip").setup()
-- -- require("luasnip/loaders/from_vscode").load({
-- -- paths = { "~/.local/share/nvim/site/pack/packer/start/friendly-snippets" },
-- -- })
-- -- end,
-- }) -- })
use("windwp/nvim-autopairs") use("windwp/nvim-autopairs")
......
require("luasnip.loaders.from_vscode").load({paths= {"~/.local/share/nvim/site/pack/packer/start/friendly-snippets/"}})
local ls = require("luasnip")
ls.filetype_extend("all", { "_" })
...@@ -3,10 +3,11 @@ ts_configs.setup { ...@@ -3,10 +3,11 @@ ts_configs.setup {
ensure_installed = { ensure_installed = {
'bash', 'bibtex', 'c', 'comment', 'cpp', 'css', 'go', 'haskell', 'bash', 'bibtex', 'c', 'comment', 'cpp', 'css', 'go', 'haskell',
'html', 'javascript', 'json', 'jsonc', 'julia', 'kotlin', 'latex', 'lua', 'ocaml', 'html', 'javascript', 'json', 'jsonc', 'julia', 'kotlin', 'latex', 'lua', 'ocaml',
'ocaml_interface', 'python', 'regex', 'rust', 'teal', 'toml', 'typescript', 'yaml', 'zig' 'ocaml_interface', 'python', 'regex', 'rust', 'teal', 'toml', 'typescript', 'yaml',
'zig', 'query',
}, },
highlight = {enable = true, use_languagetree = true}, highlight = { enable = true, use_languagetree = true },
indent = {enable = false}, indent = { enable = false },
incremental_selection = { incremental_selection = {
enable = true, enable = true,
keymaps = { keymaps = {
...@@ -17,10 +18,30 @@ ts_configs.setup { ...@@ -17,10 +18,30 @@ ts_configs.setup {
} }
}, },
refactor = { refactor = {
smart_rename = {enable = true, keymaps = {smart_rename = "grr"}}, smart_rename = { enable = true, keymaps = { smart_rename = "grr" } },
highlight_definitions = {enable = true}, highlight_definitions = { enable = true },
highlight_current_scope = { enable = false } highlight_current_scope = { enable = false }
}--, },
playground = {
enable = true,
disable = {},
updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
persist_queries = false, -- Whether the query persists across vim sessions
keybindings = {
toggle_query_editor = 'o',
toggle_hl_groups = 'i',
toggle_injected_languages = 't',
toggle_anonymous_nodes = 'a',
toggle_language_display = 'I',
focus_language = 'f',
unfocus_language = 'F',
update = 'R',
goto_node = '<cr>',
show_help = '?',
},
}
--,
--textobjects = { --textobjects = {
-- select = { -- select = {
-- enable = true, -- enable = true,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment