From 2bc39386548ebab70594b73211f99c6a59f2b53b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sat, 18 Feb 2023 16:22:21 +0100 Subject: [PATCH 1/4] nvim: add lspkind --- modules/programs/nvim/default.nix | 1 + modules/programs/nvim/init.lua | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index 21c7e42..721d7b4 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -53,6 +53,7 @@ in comment-nvim dashboard-nvim lsp_lines-nvim + lspkind-nvim lualine-lsp-progress lualine-nvim luasnip diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index 3a5008a..f77fd34 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -92,9 +92,18 @@ require("nvim-treesitter.configs").setup({ }, }) +local lspkind = require("lspkind") + local cmp = require("cmp") local luasnip = require("luasnip") cmp.setup({ + formatting = { + format = lspkind.cmp_format({ + mode = "symbol", -- show only symbol annotations + maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) + ellipsis_char = "...", -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first) + }), + }, snippet = { -- REQUIRED - you must specify a snippet engine expand = function(args) From 819590103d4af4a678e933e1b964dbd415879399 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sat, 18 Feb 2023 16:23:58 +0100 Subject: [PATCH 2/4] nvim: add copilot --- modules/programs/nvim/default.nix | 2 ++ modules/programs/nvim/init.lua | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index 721d7b4..db96e2f 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -51,6 +51,8 @@ in cmp-nvim-lsp cmp_luasnip comment-nvim + copilot-cmp + copilot-lua dashboard-nvim lsp_lines-nvim lspkind-nvim diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index f77fd34..c55e2f0 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -93,6 +93,11 @@ require("nvim-treesitter.configs").setup({ }) local lspkind = require("lspkind") +lspkind.init({ + symbol_map = { + Copilot = "", + }, +}) local cmp = require("cmp") local luasnip = require("luasnip") @@ -136,9 +141,10 @@ cmp.setup({ end, { "i", "s" }), }), sources = { - { name = "nvim_lsp" }, - { name = "luasnip" }, - { name = "buffer" }, + { name = "buffer", priority = 1 }, + { name = "copilot", priority = 8 }, + { name = "luasnip", priority = 7 }, + { name = "nvim_lsp", priority = 9 }, }, }) @@ -381,3 +387,9 @@ require("nvim-treesitter.configs").setup({ keymaps = { ["."] = "textsubjects-smart" }, }, }) + +require("copilot").setup({ + suggestion = { enabled = false }, + panel = { enabled = false }, +}) +require("copilot_cmp").setup() From eb77aa882343f079601d11aa7f224591004dc66e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sat, 18 Feb 2023 16:24:38 +0100 Subject: [PATCH 3/4] nvim: add orgmode --- modules/programs/nvim/default.nix | 1 + modules/programs/nvim/init.lua | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index db96e2f..c6a02ad 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -70,6 +70,7 @@ in nvim-treesitter.withAllGrammars nvim-ts-context-commentstring nvim-web-devicons # for dashboard-nvim + orgmode plenary-nvim # for telescope, neogit telescope-nvim which-key-nvim diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index c55e2f0..3326708 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -145,6 +145,7 @@ cmp.setup({ { name = "copilot", priority = 8 }, { name = "luasnip", priority = 7 }, { name = "nvim_lsp", priority = 9 }, + { name = "orgmode", priority = 9 }, }, }) @@ -393,3 +394,22 @@ require("copilot").setup({ panel = { enabled = false }, }) require("copilot_cmp").setup() + +local orgmode = require("orgmode") +-- Load custom treesitter grammar for org filetype +orgmode.setup_ts_grammar() +-- Treesitter configuration +require("nvim-treesitter.configs").setup({ + -- If TS highlights are not enabled at all, or disabled via `disable` prop, + -- highlighting will fallback to default Vim syntax highlighting + highlight = { + enable = true, + -- Required for spellcheck, some LaTex highlights and + -- code block highlights that do not have ts grammar + additional_vim_regex_highlighting = { "org" }, + }, +}) +orgmode.setup({ + org_agenda_files = { "~/Notes/org" }, + org_default_notes_file = "~/Notes/org/refile.org", +}) From b26149af9834734892973b5cce47ee10954eca9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sat, 18 Feb 2023 16:25:09 +0100 Subject: [PATCH 4/4] nvim: formatting --- modules/programs/nvim/default.nix | 2 +- modules/programs/nvim/init.lua | 76 +++++++++++++++---------------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index c6a02ad..6a400f1 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -54,12 +54,12 @@ in copilot-cmp copilot-lua dashboard-nvim + formatter-nvim lsp_lines-nvim lspkind-nvim lualine-lsp-progress lualine-nvim luasnip - formatter-nvim neogit noice-nvim nui-nvim # for noice-nvim diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index 3326708..e4b557a 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -206,39 +206,53 @@ wk.register({ ["="] = { "Format", "format (formatter)" }, }, { noremap = true, silent = true }) +local lsp_lines = require("lsp_lines") +lsp_lines.setup() +-- Disable virtual_text since it's redundant due to lsp_lines. +vim.diagnostic.config({ + virtual_text = false, +}) + -- The nvim-cmp almost supports LSP's capabilities so You should advertise it to LSP servers.. local capabilities = require("cmp_nvim_lsp").default_capabilities() local lspconfig = require("lspconfig") -local on_attach_def = function(client, bufnr) - local options = { noremap = true, silent = true } -- default options - local buffer_options = table_merge(options, { buffer = bufnr }) -- buffer specific options +local on_attach_def = function(_, bufnr) + local options = { noremap = true, silent = true, buffer = bufnr } - -- set format keybinding - -- prefere lsp formatting over external formatter - if client.server_capabilities.documentFormattingProvider then - local modes = { "n", "v" } - for _, mode in ipairs(modes) do - wk.register({ - ["="] = { + wk.register({ + K = { vim.lsp.buf.hover, "show info" }, + [""] = { + l = { + name = "lsp", + d = { vim.diagnostic.open_float, "open diagnostic window" }, + n = { vim.diagnostic.goto_next, "next error" }, + p = { vim.diagnostic.goto_prev, "prev error" }, + c = { vim.lsp.buf.code_action, "code action" }, + r = { vim.lsp.buf.rename, "rename" }, + f = { function() vim.lsp.buf.format({ async = true }) end, "format (lsp)", + mode = { "n", "v" }, }, - }, table_merge(buffer_options, { mode = mode })) - end - end - - wk.register({ - K = { vim.lsp.buf.hover, "show info" }, - ["l"] = { - name = "lsp", - d = { vim.diagnostic.open_float, "open diagnostic window" }, - n = { vim.diagnostic.goto_next, "next error" }, - p = { vim.diagnostic.goto_prev, "prev error" }, - c = { vim.lsp.buf.code_action, "code action" }, - r = { vim.lsp.buf.rename, "rename" }, + }, + w = { + name = "workspace", + a = { vim.lsp.buf.add_workspace_folder, "add workspace folder" }, + r = { vim.lsp.buf.remove_workspace_folder, "remove workspace folder" }, + l = { + function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, + "list workspace folders", + }, + }, + t = { + name = "toggle", + l = { lsp_lines.toggle, "lsp lines" }, + }, }, g = { name = "goto", @@ -248,7 +262,7 @@ local on_attach_def = function(client, bufnr) i = { vim.lsp.buf.implementation, "implementation" }, t = { vim.lsp.buf.type_definition, "type defininition" }, }, - }, buffer_options) + }, options) end local lspconfig_default_options = { @@ -302,20 +316,6 @@ lspconfig_setup("lua_ls", { }, }) -local lsp_lines = require("lsp_lines") -lsp_lines.setup() --- Disable virtual_text since it's redundant due to lsp_lines. -vim.diagnostic.config({ - virtual_text = false, -}) -wk.register({ - t = { - name = "toggle", - l = { lsp_lines.toggle, "lsp lines" }, - }, - { prefix = "" }, -}) - require("dashboard").setup({ theme = "hyper", config = {