local deps = require("nvim-deps") vim.opt.termguicolors = true vim.notify = require("notify") vim.notify.setup({background_colour = "#000000"}) require("oil").setup() local telescope = require('telescope.builtin') vim.keymap.set('n', 'ff', telescope.find_files, {}) vim.keymap.set('n', 'fg', telescope.live_grep, {}) vim.keymap.set('n', 'fb', telescope.buffers, {}) vim.keymap.set('n', 'fh', telescope.help_tags, {}) require("telescope").setup({ defaults = { mappings = { i = { [""] = function(bufnr) require("telescope.actions.set").edit(bufnr, "tab drop") end } } }, extensions = { undo = { side_by_side = true, layout_strategy = "vertical", layout_config = {preview_height = 0.8} } } }) require('telescope').load_extension("undo") local neogit = require('neogit') -- git commit -- vim.keymap.set('n', 'gc', neogit.open, { "commit" }) -- git neo -> Neogit vim.keymap.set('n', 'gN', neogit.open, {}) neogit.setup({ git_services = { ["github.com"] = "https://github.com/${owner}/${repository}/compare/${branch_name}?expand=1", ["bitbucket.org"] = "https://bitbucket.org/${owner}/${repository}/pull-requests/new?source=${branch_name}&t=1", ["gitlab.com"] = "https://gitlab.com/${owner}/${repository}/merge_requests/new?merge_request[source_branch]=${branch_name}", ["apps.terminal"] = "http://apps.terminal/${owner}/${repository}/merge_requests/new?merge_request[source_branch]=${branch_name}" } }) local dap, dapui = require("dap"), require("dapui") dap.adapters.lldb = { type = "executable", command = deps.lldb_path .. "/bin/lldb-vscode", name = "lldb" } local dap_breakpoint = { error = { text = "🟥", texthl = "LspDiagnosticsSignError", linehl = "", numhl = "" }, rejected = { text = "❗", texthl = "LspDiagnosticsSignHint", linehl = "", numhl = "" }, stopped = { text = "🛑", texthl = "LspDiagnosticsSignInformation", linehl = "DiagnosticUnderlineInfo", numhl = "LspDiagnosticsSignInformation" } } vim.keymap.set('n', 'dk', function() dap.continue() end) vim.keymap.set('n', 'dl', function() dap.run_last() end) vim.keymap.set('n', 'b', function() dap.toggle_breakpoint() end) vim.fn.sign_define("DapBreakpoint", dap_breakpoint.error) vim.fn.sign_define("DapStopped", dap_breakpoint.stopped) vim.fn.sign_define("DapBreakpointRejected", dap_breakpoint.rejected) dapui.setup() -- Auto open and close dapUI dap.listeners.after.event_initialized["dapui_config"] = function() dapui.open() end dap.listeners.before.event_terminated["dapui_config"] = function() dapui.close() end dap.listeners.before.event_exited["dapui_config"] = function() dapui.close() end -- Setup language servers. local lspconfig = require('lspconfig') -- Global mappings. -- See `:help vim.diagnostic.*` for documentation on any of the below functions vim.keymap.set('n', 'e', vim.diagnostic.open_float) vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) vim.keymap.set('n', ']d', vim.diagnostic.goto_next) vim.keymap.set('n', 'q', vim.diagnostic.setloclist) -- Use LspAttach autocommand to only map the following keys -- after the language server attaches to the current buffer vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('UserLspConfig', {}), callback = function(ev) -- Enable completion triggered by vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' -- Buffer local mappings. -- See `:help vim.lsp.*` for documentation on any of the below functions local opts = {buffer = ev.buf} vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) vim.keymap .set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) vim.keymap.set('n', 'wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, opts) vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) vim.keymap.set({'n', 'v'}, 'ca', vim.lsp.buf.code_action, opts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) vim.keymap.set('n', 'f', function() vim.lsp.buf.format {async = true} end, opts) end }) -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md -- deps.typst-lsp_path lspconfig.typst_lsp.setup { cmd = {(deps["typst-lsp_path"] .. "/bin/typst-lsp")}, settings = { exportPdf = "onType", -- Choose onType, onSave or never. serverPath = (deps["typst-lsp_path"] .. "/bin/typst-lsp") -- Normally, there is no need to uncomment it. } } lspconfig.nil_ls.setup { cmd = {(deps.nil_path .. "/bin/nil")}, -- https://github.com/oxalica/nil/blob/main/docs/configuration.md settings = {command = {formatting = "nixpkgs-fmt"}}, flake = {autoArchive = true, autoEvalInputs = true} } require("lsp-inlayhints").setup() require("rust.lua") require("completion")