Skip to content

Commit

Permalink
Added support for setting the g:tex_flavor option
Browse files Browse the repository at this point in the history
  • Loading branch information
isaacST08 committed Jan 19, 2025
1 parent 5883c09 commit c191420
Showing 1 changed file with 52 additions and 13 deletions.
65 changes: 52 additions & 13 deletions modules/plugins/languages/tex.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
# - completion
# - inlayHints
# - experimental

{
config,
pkgs,
Expand All @@ -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
Expand Down Expand Up @@ -204,7 +210,6 @@ in
- %l: The current line number.
'';
};

};

extraLuaSettings = mkOption {
Expand Down Expand Up @@ -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 `%&<format>` 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 = <flavor>` in your nvf config.
Setting this option to `false` will omit the `vim.g.tex_flavor = <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;
Expand All @@ -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;

Expand Down Expand Up @@ -315,5 +350,9 @@ in
])
))

# Extra Lua config options
(mkIf cfg.extraOpts.texFlavor.enable {
vim.globals.tex_flavor = "${cfg.extraOpts.texFlavor.flavor}";
})
]);
}

0 comments on commit c191420

Please sign in to comment.