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}" } status = { recent_commit_count = 100, }, integrations = { diffview = true, telescope = true, fzf_lua = true, }, mappings = { commit_editor = { ["q"] = "Close", [""] = "Submit", [""] = "Abort", }, rebase_editor = { ["p"] = "Pick", ["r"] = "Reword", ["e"] = "Edit", ["s"] = "Squash", ["f"] = "Fixup", ["x"] = "Execute", ["d"] = "Drop", ["b"] = "Break", ["q"] = "Close", [""] = "OpenCommit", ["gk"] = "MoveUp", ["gj"] = "MoveDown", [""] = "Submit", [""] = "Abort", }, finder = { [""] = "Select", [""] = "Close", [""] = "Close", [""] = "Next", [""] = "Previous", [""] = "Next", [""] = "Previous", [""] = "MultiselectToggleNext", [""] = "MultiselectTogglePrevious", [""] = "NOP", }, -- Setting any of these to `false` will disable the mapping. popup = { ["?"] = "HelpPopup", ["A"] = "CherryPickPopup", ["D"] = "DiffPopup", ["M"] = "RemotePopup", ["P"] = "PushPopup", ["X"] = "ResetPopup", ["Z"] = "StashPopup", ["b"] = "BranchPopup", ["c"] = "CommitPopup", ["f"] = "FetchPopup", ["l"] = "LogPopup", ["m"] = "MergePopup", ["p"] = "PullPopup", ["r"] = "RebasePopup", ["v"] = "RevertPopup", }, status = { ["q"] = "Close", ["I"] = "InitRepo", ["1"] = "Depth1", ["2"] = "Depth2", ["3"] = "Depth3", ["4"] = "Depth4", [""] = "Toggle", ["x"] = "Discard", ["s"] = "Stage", ["S"] = "StageUnstaged", [""] = "StageAll", ["u"] = "Unstage", ["U"] = "UnstageStaged", ["$"] = "CommandHistory", ["#"] = "Console", ["Y"] = "YankSelected", [""] = "RefreshBuffer", [""] = "GoToFile", [""] = "VSplitOpen", [""] = "SplitOpen", [""] = "TabOpen", ["{"] = "GoToPreviousHunkHeader", ["}"] = "GoToNextHunkHeader", }, }, }) 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("completion")