diff --git a/home/modules/neovim/default.nix b/home/modules/neovim/default.nix index 50e4875b..860ef77e 100644 --- a/home/modules/neovim/default.nix +++ b/home/modules/neovim/default.nix @@ -99,15 +99,18 @@ in { globals = { mapleader = " "; - - # TODO: Set this differntly and actually move local keybindings to this, e.g. for LaTeX - mallocalleader = " "; + maplocalleader = ","; }; opts = import ./vim_opts.nix {inherit lib mylib;}; extraConfigLuaPost = builtins.readFile ./extraConfigLuaPost.lua; extraConfigLua = builtins.readFile ./extraConfigLua.lua; + extraFiles = { + # For this its probably important to set the default filetype to tex (see extraConfigLua) + "ftplugin/tex.lua".text = mylib.generators.toLuaKeymap (import ./mappings_latex.nix {}); + }; + # extraLuaPackages = with pkgs.lua51Packages; []; # extraPython3Packages = p: []; @@ -1585,6 +1588,7 @@ in { pkg = pkgs.vimPlugins.vimtex; init = '' function() + vim.g.vimtex_mappings_enabled = false vim.g.vimtex_view_method = "zathura" vim.g.vimtex_compiler_latexmk = { options = { diff --git a/home/modules/neovim/extraConfigLua.lua b/home/modules/neovim/extraConfigLua.lua index e18e453c..eb557d10 100644 --- a/home/modules/neovim/extraConfigLua.lua +++ b/home/modules/neovim/extraConfigLua.lua @@ -2,6 +2,9 @@ require("lazy.core.config").options.ui.border = "rounded" require("lazy.core.config").options.rocks.enabled = false +-- Default filetype to tex instead of plaintex +vim.g.tex_flavor = "latex" + -- Toggle inline diagnostics and show border vim.g.enable_inline_diagnostics = false vim.diagnostic.config({ diff --git a/home/modules/neovim/mappings.nix b/home/modules/neovim/mappings.nix index 363ede7f..10c789c8 100644 --- a/home/modules/neovim/mappings.nix +++ b/home/modules/neovim/mappings.nix @@ -1,6 +1,8 @@ {...}: let + # TODO: Doesn't work reliably. I think they are rebound by plugins after? Try setting in extraConfigLuaPost... disabled-mappings = let mkDisabledMapping = mapping: { + mode = ["n" "v"]; key = mapping; action = ""; }; @@ -11,6 +13,14 @@ "S" "t" "T" + + # Use flash to repeat f/F instead of ;/, + # ;/, are now free for localleader and exiting visual mode like helix + "," + ";" + + # Use Telescope on "/", I don't want backwards search + "?" ]; in builtins.map mkDisabledMapping disableMappings; @@ -247,6 +257,12 @@ action = "Telescope current_buffer_fuzzy_find"; options.desc = "Grep Buffer"; } + { + mode = "v"; + key = ";"; + action = ""; + options.desc = "Exit Visual Mode"; + } ]; leader = [ @@ -588,12 +604,12 @@ action = ":set wrap!"; options.desc = "Word Wrapping"; } - { - mode = "n"; - key = "tv"; - action = "VimtexTocToggle"; - options.desc = "VimTex ToC"; - } + # { + # mode = "n"; + # key = "tv"; + # action = "VimtexTocToggle"; + # options.desc = "VimTex ToC"; + # } ]; leader-git = [ @@ -679,19 +695,32 @@ action = "lua vim.lsp.buf.rename()"; options.desc = "Rename Symbol"; } - { - mode = "n"; - key = "ca"; - action = "lua vim.lsp.buf.code_action()"; - options.desc = "Code Actions"; - } # { # mode = "n"; # key = "cr"; # action = ":IncRename "; # options.desc = "Rename LSP symbol"; # } + { + mode = "n"; + key = "ca"; + action = "lua vim.lsp.buf.code_action()"; + options.desc = "Code Actions"; + } + { + mode = "n"; + key = "cI"; + action = "Telescope lsp_incoming_calls"; + options.desc = "Incoming Calls"; + } + { + mode = "n"; + key = "cO"; + action = "Telescope lsp_outgoing_calls"; + options.desc = "Outgoing Calls"; + } + # GoTo { mode = "n"; key = "cg"; @@ -729,22 +758,37 @@ } { mode = "n"; - key = "cI"; - action = "Telescope lsp_incoming_calls"; - options.desc = "Incoming Calls"; + key = "cge"; + action = "lua vim.diagnostic.goto_next()"; + options.desc = "Next Error"; } { mode = "n"; - key = "cO"; - action = "Telescope lsp_outgoing_calls"; - options.desc = "Outgoing Calls"; + key = ""; + action = "lua vim.diagnostic.goto_next()"; + options.desc = "Next Error"; } + { + mode = "n"; + key = "cgE"; + action = "lua vim.diagnostic.goto_prev()"; + options.desc = "Previous Error"; + } + { + mode = "n"; + key = ""; + action = "lua vim.diagnostic.goto_prev()"; + options.desc = "Previous Error"; + } + ]; + + localleader-latex = [ ]; in builtins.concatLists [ disabled-mappings - no-leader + leader leader-help leader-quit @@ -754,4 +798,6 @@ in leader-toggles leader-git leader-code + + localleader-latex ] diff --git a/home/modules/neovim/mappings_latex.nix b/home/modules/neovim/mappings_latex.nix index 87b0fe8f..3d7dbaaa 100644 --- a/home/modules/neovim/mappings_latex.nix +++ b/home/modules/neovim/mappings_latex.nix @@ -3,6 +3,48 @@ mode = "n"; key = "t"; action = "VimtexTocToggle"; - options.desc = "VimTex ToC"; + options.desc = "Vimtex ToC"; + } + { + mode = "n"; + key = "c"; + action = "VimtexCompile"; + options.desc = "Vimtex Compile"; + } + { + mode = "n"; + key = "C"; + action = "VimtexClean!"; + options.desc = "Vimtex Clean"; + } + { + mode = "n"; + key = "v"; + action = "VimtexView"; + options.desc = "Vimtex View"; + } + { + mode = "n"; + key = "I"; + action = "VimtexInfo"; + options.desc = "Vimtex Info"; + } + { + mode = "n"; + key = ","; + action = "VimtexContextMenu"; + options.desc = "Vimtex Context Menu"; + } + { + mode = "n"; + key = "e"; + action = "VimtexErrors"; + options.desc = "Vimtex Errors"; + } + { + mode = "n"; + key = "p"; + action = "VimtexDocPackage"; + options.desc = "Vimtex Package Docs"; } ] diff --git a/lib/generators.nix b/lib/generators.nix index b24e3da0..dac7672c 100644 --- a/lib/generators.nix +++ b/lib/generators.nix @@ -46,4 +46,17 @@ else if (args == null) then "nil" else ""; + + toLuaKeymap = args: let + removeDeprecatedMapAttrs = v: builtins.removeAttrs v ["lua"]; + in '' + -- Set up keybinds using mylib.generators.toLuaKeymap {{{ + do + local __nixvim_binds = ${toLuaObject (map removeDeprecatedMapAttrs args)} + for i, map in ipairs(__nixvim_binds) do + vim.keymap.set(map.mode, map.key, map.action, map.options) + end + end + -- }}} + ''; }