(let [mod {} keymap vim.keymap substitute (require :substitute) telescope-builtin (require :telescope.builtin) telescope-themes (require :telescope.themes) telescope-nifoc (require :nifoc.telescope) telescope-ivy (telescope-themes.get_ivy) telescope-dropdown (telescope-themes.get_dropdown) npairs (require :nvim-autopairs) hover (require :hover) gitsigns (require :gitsigns) neogit (require :neogit) wk (require :which-key) repl (require :nifoc.repl) repo (require :nifoc.repo) formatting (require :nifoc.formatting)] (fn mod.setup [] (keymap.set :n : : {:noremap true}) ;; Leader Mappings (keymap.set :n :o telescope-nifoc.find-files {:desc "Find Files"}) (keymap.set :n :s #(telescope-builtin.live_grep telescope-ivy) {:desc "Live Grep"}) (keymap.set :n :fn :enew {:desc "New File"}) (keymap.set :n :u "UrlView buffer" {:desc "Open UrlView"}) (keymap.set :n :ut "Telescope undo" {:desc "Toggle Undotree"}) (keymap.set :n :c repl.open-shell {:desc "Open Shell"}) (keymap.set :n :r repl.open-repl {:desc "Open REPL"}) (keymap.set :n :bl #(telescope-builtin.buffers telescope-dropdown) {:desc "List Buffers"}) (keymap.set :n :bf #(telescope-builtin.current_buffer_fuzzy_find telescope-dropdown) {:desc "Find In Buffer"}) (keymap.set :n :bt #(telescope-builtin.treesitter telescope-dropdown) {:desc "Find via Treesitter"}) (keymap.set :n :pt :TodoTelescope {:desc "TODO Comments"}) (keymap.set :n :g #(neogit.open {:kind :split}) {:desc "Open Neogit"}) (keymap.set :n :vs #(neogit.open {:kind :split}) {:desc "VCS Status"}) (keymap.set :n :vb #(telescope-builtin.git_branches telescope-dropdown) {:desc "List VCS Branches"}) (keymap.set :n :vl #(gitsigns.blame_line {:full true}) {:desc "Blame Line"}) (keymap.set :n :vd :DiffviewOpen {:desc "Open DiffView"}) (keymap.set :n :vvr #(repo.open-repo) {:desc "Open repository"}) (keymap.set :n :vvm #(repo.open-merge-request) {:desc "Open MR"}) (keymap.set :n :vvc #(repo.open-ci) {:desc "Open CI"}) (keymap.set :n :vtc #(repo.run-ci) {:desc "Trigger CI"}) (keymap.set :n :lk telescope-builtin.keymaps {:desc "Show Keymappings"}) (keymap.set :n :ld #(telescope-builtin.diagnostics telescope-ivy) {:desc "Show Diagnostics"}) (keymap.set :n :lt "TodoTelescope theme=ivy" {:desc "Show Todo Comments"}) (keymap.set :n :dli :LspInfo {:desc "LSP Info"}) (keymap.set :n :dlr :LspRestart {:desc "Restart LSP"}) (keymap.set :n :ds #(vim.diagnostic.open_float {:scope :line}) {:desc "Show Line Diagnostics"}) (keymap.set :n :dtp :TSPlaygroundToggle {:desc "Toggle Treetsitter Playground"}) ;; Other Mappings (keymap.set :i : npairs.autopairs_cr {:expr true :replace_keycodes false :silent true}) (keymap.set :n :F #(formatting.maybe-format-buffer 0) {:desc "Format Buffer"}) (keymap.set :n : :b) (keymap.set :n : :w) (keymap.set :n : "^") (keymap.set :n : "$") (keymap.set :i : :b) (keymap.set :i : :w) (keymap.set :i : :^) (keymap.set :i : :$) (keymap.set :n : "MoveLine -1" {:noremap true :silent true}) (keymap.set :n : "MoveLine 1" {:noremap true :silent true}) (keymap.set :x : "MoveBlock -1" {:noremap true :silent true}) (keymap.set :x : "MoveBlock 1" {:noremap true :silent true}) (keymap.set :n :p "(YankyPutAfter)") (keymap.set :n :P "(YankyPutBefore)") (keymap.set :x :p substitute.visual) (keymap.set :x :P "(YankyPutBefore)") (keymap.set :n :gp "(YankyGPutAfter)") (keymap.set :n :gP "(YankyGPutBefore)") (keymap.set :x :gp "(YankyGPutAfter)") (keymap.set :x :gP "(YankyGPutBefore)") (keymap.set :n :y "(YankyYank)") (keymap.set :x :y "(YankyYank)") (keymap.set :n "-" :Oil {:desc "Open Oil"}) ;; hover.nvim (keymap.set :n :K hover.hover {:desc "Show Documentation"}) (keymap.set :n :gK hover.hover_select {:desc "hover.nvim selection"}) (keymap.set :n : #(hover.hover_switch :previous) {:desc "hover.nvim previous source"}) (keymap.set :n : #(hover.hover_switch :next) {:desc "hover.nvim next source"}) (keymap.set :n : hover.hover_mouse {:desc "hover.nvim mouse"}) ;; Label (wk.add [{1 :v :group :vcs} {1 :l :group :list/lsp} {1 :d :group :debug}])) (fn mod.lsp-attach [_client bufnr] (keymap.set :n :t #(telescope-builtin.lsp_document_symbols telescope-dropdown) {:buffer bufnr :desc "LSP Document Symbols"}) (keymap.set :n :tw #(telescope-builtin.lsp_dynamic_workspace_symbols telescope-dropdown) {:buffer bufnr :desc "LSP Workspace Symbols"}) (keymap.set :n :th #(vim.lsp.inlay_hint.enable (not (vim.lsp.inlay_hint.is_enabled bufnr)) {: bufnr}) {:buffer bufnr :desc "Toggle Inlay Hints"}) (keymap.set :n :lca #(telescope-builtin.lsp_code_actions telescope-dropdown) {:buffer bufnr :desc "LSP Code Action"}) (keymap.set :n :lfr #(telescope-builtin.lsp_references telescope-dropdown) {:buffer bufnr :desc "Find References"}) (keymap.set :n :lfd #(telescope-builtin.lsp_definitions telescope-dropdown) {:buffer bufnr :desc "Find Definitions"}) (keymap.set :n :lfi #(telescope-builtin.lsp_implementations telescope-dropdown) {:buffer bufnr :desc "Find Implementations"})) (fn mod.terminal-open [bufnr] (let [map-opts {:buffer bufnr}] (keymap.set :t : "" map-opts) (keymap.set :t : "h" map-opts) (keymap.set :t : "j" map-opts) (keymap.set :t : "k" map-opts) (keymap.set :t : "l" map-opts))) mod)