mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
215 lines
6.9 KiB
Nix
215 lines
6.9 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
helpers,
|
|
pkgs,
|
|
...
|
|
}:
|
|
with lib;
|
|
with helpers.vim-plugin;
|
|
mkVimPlugin config {
|
|
name = "markdown-preview";
|
|
originalName = "markdown-preview.nvim";
|
|
defaultPackage = pkgs.vimPlugins.markdown-preview-nvim;
|
|
globalPrefix = "mkdp_";
|
|
|
|
maintainers = [maintainers.GaetanLepage];
|
|
|
|
# TODO introduced 2024-03-02: remove 2024-05-02
|
|
deprecateExtraConfig = true;
|
|
optionsRenamedToSettings = [
|
|
"autoStart"
|
|
"autoClose"
|
|
"refreshSlow"
|
|
"commandForGlobal"
|
|
"openToTheWorld"
|
|
"openIp"
|
|
"browser"
|
|
"echoPreviewUrl"
|
|
"browserFunc"
|
|
"previewOptions"
|
|
"markdownCss"
|
|
"highlightCss"
|
|
"port"
|
|
"pageTitle"
|
|
"theme"
|
|
];
|
|
imports = [
|
|
(
|
|
mkRenamedOptionModule
|
|
["plugins" "markdown-preview" "fileTypes"]
|
|
["plugins" "markdown-preview" "settings" "filetypes"]
|
|
)
|
|
];
|
|
|
|
settingsOptions = {
|
|
auto_start = helpers.defaultNullOpts.mkBool false ''
|
|
Open the preview window after entering the markdown buffer.
|
|
'';
|
|
|
|
auto_close = helpers.defaultNullOpts.mkBool true ''
|
|
Auto close current preview window when change from markdown buffer to another buffer.
|
|
'';
|
|
|
|
refresh_slow = helpers.defaultNullOpts.mkBool false ''
|
|
Refresh markdown when save the buffer or leave from insert mode, default false is auto
|
|
refresh markdown as you edit or move the cursor.
|
|
'';
|
|
|
|
command_for_global = helpers.defaultNullOpts.mkBool false ''
|
|
Enable markdown preview for all files (by default, the plugin is only enabled for markdown
|
|
files).
|
|
'';
|
|
|
|
open_to_the_world = helpers.defaultNullOpts.mkBool false ''
|
|
Make the preview server available to others in your network.
|
|
By default, the server listens on localhost (127.0.0.1).
|
|
'';
|
|
|
|
open_ip = helpers.defaultNullOpts.mkStr "" ''
|
|
Custom IP used to open the preview page.
|
|
This can be useful when you work in remote vim and preview on local browser.
|
|
For more detail see: https://github.com/iamcco/markdown-preview.nvim/pull/9.
|
|
'';
|
|
|
|
browser = helpers.defaultNullOpts.mkStr "" ''
|
|
The browser to open the preview page.
|
|
'';
|
|
|
|
echo_preview_url = helpers.defaultNullOpts.mkBool false ''
|
|
Echo preview page url in command line when opening the preview page.
|
|
'';
|
|
|
|
browser_func = helpers.defaultNullOpts.mkStr "" ''
|
|
A custom vim function name to open preview page.
|
|
This function will receive url as param.
|
|
'';
|
|
|
|
preview_options =
|
|
helpers.mkNullOrOption
|
|
(
|
|
types.submodule {
|
|
freeformType = types.attrs;
|
|
|
|
options = {
|
|
mkit = helpers.defaultNullOpts.mkListOf types.str "[]" ''
|
|
`markdown-it` options for render.
|
|
'';
|
|
|
|
katex = helpers.defaultNullOpts.mkListOf types.str "[]" ''
|
|
`katex` options for math.
|
|
'';
|
|
|
|
uml = helpers.defaultNullOpts.mkListOf types.str "[]" ''
|
|
`markdown-it-plantuml` options.
|
|
'';
|
|
|
|
maid = helpers.defaultNullOpts.mkListOf types.str "[]" ''
|
|
`mermaid` options.
|
|
'';
|
|
|
|
disable_sync_scroll = helpers.defaultNullOpts.mkBool false ''
|
|
Disable sync scroll.
|
|
'';
|
|
|
|
sync_scroll_type =
|
|
helpers.defaultNullOpts.mkEnumFirstDefault
|
|
["middle" "top" "relative"]
|
|
''
|
|
Scroll type:
|
|
- "middle": The cursor position is always shown at the middle of the preview page.
|
|
- "top": The vim top viewport is always shown at the top of the preview page.
|
|
- "relative": The cursor position is always shown at the relative position of the preview page.
|
|
'';
|
|
|
|
hide_yaml_meta = helpers.defaultNullOpts.mkBool true ''
|
|
Hide yaml metadata.
|
|
'';
|
|
|
|
sequence_diagrams = helpers.defaultNullOpts.mkListOf types.str "[]" ''
|
|
`js-sequence-diagrams` options.
|
|
'';
|
|
|
|
flowchart_diagrams = helpers.defaultNullOpts.mkListOf types.str "[]" ''
|
|
`flowcharts` diagrams options.
|
|
'';
|
|
|
|
content_editable = helpers.defaultNullOpts.mkBool false ''
|
|
Content editable from the preview page.
|
|
'';
|
|
|
|
disable_filename = helpers.defaultNullOpts.mkBool false ''
|
|
Disable filename header for the preview page.
|
|
'';
|
|
|
|
toc = helpers.defaultNullOpts.mkListOf types.str "[]" ''
|
|
Toc options.
|
|
'';
|
|
};
|
|
}
|
|
)
|
|
"Preview options";
|
|
|
|
markdown_css = helpers.defaultNullOpts.mkStr "" ''
|
|
Custom markdown style.
|
|
Must be an absolute path like `"/Users/username/markdown.css"` or
|
|
`{__raw = "vim.fn.expand('~/markdown.css')";}`.
|
|
'';
|
|
|
|
highlight_css = helpers.defaultNullOpts.mkStr "" ''
|
|
Custom highlight style.
|
|
Must be an absolute path like "/Users/username/highlight.css" or
|
|
`{__raw = "vim.fn.expand('~/highlight.css')";}`.
|
|
'';
|
|
|
|
port = helpers.defaultNullOpts.mkStr "" ''
|
|
Custom port to start server or empty for random.
|
|
'';
|
|
|
|
page_title = helpers.defaultNullOpts.mkStr "「\$\{name}」" ''
|
|
Preview page title.
|
|
`$${name}` will be replaced with the file name.
|
|
'';
|
|
|
|
images_path = helpers.defaultNullOpts.mkStr "" ''
|
|
Use a custom location for images.
|
|
'';
|
|
|
|
filetypes = helpers.defaultNullOpts.mkListOf types.str ''["markdown"]'' ''
|
|
Recognized filetypes. These filetypes will have `MarkdownPreview...` commands.
|
|
'';
|
|
|
|
theme = helpers.mkNullOrOption (types.enum ["dark" "light"]) ''
|
|
Default theme (dark or light).
|
|
By default the theme is define according to the preferences of the system.
|
|
'';
|
|
|
|
combine_preview = helpers.defaultNullOpts.mkBool false ''
|
|
Combine preview window.
|
|
If enable it will reuse previous opened preview window when you preview markdown file.
|
|
Ensure to set `auto_close = false` if you have enable this option.
|
|
'';
|
|
|
|
combine_preview_auto_refresh = helpers.defaultNullOpts.mkBool true ''
|
|
Auto refetch combine preview contents when change markdown buffer only when
|
|
`combine_preview` is `true`.
|
|
'';
|
|
};
|
|
|
|
settingsExample = {
|
|
auto_start = true;
|
|
auto_close = true;
|
|
browser = "firefox";
|
|
echo_preview_url = true;
|
|
preview_options = {
|
|
disable_sync_scroll = true;
|
|
sync_scroll_type = "middle";
|
|
disable_filename = true;
|
|
};
|
|
markdown_css = "/Users/username/markdown.css";
|
|
highlight_css.__raw = "vim.fn.expand('~/highlight.css')";
|
|
port = "8080";
|
|
page_title = "「\$\{name}」";
|
|
theme = "dark";
|
|
};
|
|
}
|