diff --git a/modules/plugins/languages/tex.nix b/modules/plugins/languages/tex.nix index 57b3be97..9b611c99 100644 --- a/modules/plugins/languages/tex.nix +++ b/modules/plugins/languages/tex.nix @@ -11,7 +11,6 @@ # - completion # - inlayHints # - experimental - { config, pkgs, @@ -22,13 +21,20 @@ let inherit (lib.options) mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) - package - str bool listOf + package + str ; inherit (lib.nvim.types) mkGrammarOption; - inherit (builtins) any attrValues; + inherit (builtins) + any + attrValues + concatStringsSep + length + map + toString + ; cfg = config.vim.languages.tex; in @@ -204,7 +210,6 @@ in - %l: The current line number. ''; }; - }; extraLuaSettings = mkOption { @@ -235,12 +240,49 @@ in }; # Add other LSPs here + }; + + extraOpts = { + texFlavor = { + enable = mkOption { + type = bool; + default = false; + example = true; + description = '' + Whether to set the vim.g.tex_flavor (g:tex_flavor) option in your lua config. + + When opening a .tex file vim will try to automatically try to determine the file type from + the three options: plaintex (for plain TeX), context (for ConTeXt), or tex (for LaTeX). + This can either be done by a indicator line of the form `%&` on the first line or + if absent vim will search the file for keywords to try and determine the filetype. + If no filetype can be determined automatically then by default it will fallback to plaintex. + + This option will enable setting the tex flavor in your lua config and you can set its value + useing the `vim.languages.tex.lsp.extraOpts.texFlavor.flavor = ` in your nvf config. + Setting this option to `false` will omit the `vim.g.tex_flavor = ` line from your lua + config entirely (unless you manually set it elsewhere of course). + ''; + }; + flavor = mkOption { + type = str; + default = "plaintex"; + example = "tex"; + description = '' + The flavor to set as a fallback for when vim cannot automatically determine the tex flavor when + opening a .tex document. + + The options are: plaintex (for plain TeX), context (for ConTeXt), or tex (for LaTeX). + + This can be particularly useful for when using `vim.utility.new-file-template` options for + creating templates when no context has yet been added to a new file. + ''; + }; + }; }; }; config = mkIf cfg.enable (mkMerge [ - # Treesitter (mkIf cfg.treesitter.latex.enable { vim.treesitter.enable = true; @@ -257,16 +299,9 @@ in vim.lsp.lspconfig.enable = true; # Enable lspconfig when any of the lsps are enabled } // (mkMerge [ - # Texlab ( let - inherit (builtins) - length - concatStringsSep - map - toString - ; tl = cfg.lsp.texlab; build = tl.build; @@ -315,5 +350,9 @@ in ]) )) + # Extra Lua config options + (mkIf cfg.extraOpts.texFlavor.enable { + vim.globals.tex_flavor = "${cfg.extraOpts.texFlavor.flavor}"; + }) ]); }