nix-community.nixvim/plugins/by-name/markdown-preview/default.nix

195 lines
5.7 KiB
Nix
Raw Permalink Normal View History

{
lib,
...
}:
let
inherit (lib) types;
inherit (lib.nixvim) defaultNullOpts;
in
lib.nixvim.plugins.mkVimPlugin {
2024-05-05 19:39:35 +02:00
name = "markdown-preview";
packPathName = "markdown-preview.nvim";
package = "markdown-preview-nvim";
2024-05-05 19:39:35 +02:00
globalPrefix = "mkdp_";
maintainers = [ lib.maintainers.GaetanLepage ];
2024-05-05 19:39:35 +02:00
settingsOptions = {
auto_start = defaultNullOpts.mkFlagInt 0 ''
2024-05-05 19:39:35 +02:00
Open the preview window after entering the markdown buffer.
'';
auto_close = defaultNullOpts.mkFlagInt 1 ''
2024-05-05 19:39:35 +02:00
Auto close current preview window when change from markdown buffer to another buffer.
'';
refresh_slow = defaultNullOpts.mkFlagInt 0 ''
2024-09-08 13:52:18 +01:00
Refresh markdown when save the buffer or leave from insert mode, default `0` is auto
2024-05-05 19:39:35 +02:00
refresh markdown as you edit or move the cursor.
'';
command_for_global = defaultNullOpts.mkFlagInt 0 ''
2024-05-05 19:39:35 +02:00
Enable markdown preview for all files (by default, the plugin is only enabled for markdown
files).
'';
open_to_the_world = defaultNullOpts.mkFlagInt 0 ''
2024-05-05 19:39:35 +02:00
Make the preview server available to others in your network.
By default, the server listens on localhost (127.0.0.1).
'';
open_ip = defaultNullOpts.mkStr "" ''
2024-05-05 19:39:35 +02:00
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 = defaultNullOpts.mkStr "" ''
2024-05-05 19:39:35 +02:00
The browser to open the preview page.
'';
echo_preview_url = defaultNullOpts.mkFlagInt 0 ''
2024-05-05 19:39:35 +02:00
Echo preview page url in command line when opening the preview page.
'';
browserfunc = defaultNullOpts.mkStr "" ''
2024-05-05 19:39:35 +02:00
A custom vim function name to open preview page.
This function will receive url as param.
'';
preview_options = lib.nixvim.mkNullOrOption (types.submodule {
2024-05-05 19:39:35 +02:00
freeformType = types.attrs;
options = {
mkit = defaultNullOpts.mkListOf types.str [ ] ''
2024-05-05 19:39:35 +02:00
`markdown-it` options for render.
'';
katex = defaultNullOpts.mkListOf types.str [ ] ''
2024-05-05 19:39:35 +02:00
`katex` options for math.
'';
uml = defaultNullOpts.mkListOf types.str [ ] ''
2024-05-05 19:39:35 +02:00
`markdown-it-plantuml` options.
'';
maid = defaultNullOpts.mkListOf types.str [ ] ''
2024-05-05 19:39:35 +02:00
`mermaid` options.
'';
disable_sync_scroll = defaultNullOpts.mkFlagInt 0 ''
2024-05-05 19:39:35 +02:00
Disable sync scroll.
'';
sync_scroll_type =
defaultNullOpts.mkEnumFirstDefault
2024-05-05 19:39:35 +02:00
[
"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 = defaultNullOpts.mkFlagInt 1 ''
2024-05-05 19:39:35 +02:00
Hide yaml metadata.
'';
sequence_diagrams = defaultNullOpts.mkListOf types.str [ ] ''
2024-05-05 19:39:35 +02:00
`js-sequence-diagrams` options.
'';
flowchart_diagrams = defaultNullOpts.mkListOf types.str [ ] ''
2024-05-05 19:39:35 +02:00
`flowcharts` diagrams options.
'';
content_editable = defaultNullOpts.mkFlagInt 0 ''
2024-05-05 19:39:35 +02:00
Content editable from the preview page.
'';
disable_filename = defaultNullOpts.mkFlagInt 0 ''
2024-05-05 19:39:35 +02:00
Disable filename header for the preview page.
'';
toc = defaultNullOpts.mkListOf types.str [ ] ''
2024-05-05 19:39:35 +02:00
Toc options.
'';
};
2024-05-05 19:39:35 +02:00
}) "Preview options";
markdown_css = defaultNullOpts.mkStr "" ''
2024-05-05 19:39:35 +02:00
Custom markdown style.
Must be an absolute path like `"/Users/username/markdown.css"` or
`{__raw = "vim.fn.expand('~/markdown.css')";}`.
'';
highlight_css = defaultNullOpts.mkStr "" ''
2024-05-05 19:39:35 +02:00
Custom highlight style.
Must be an absolute path like "/Users/username/highlight.css" or
`{__raw = "vim.fn.expand('~/highlight.css')";}`.
'';
port = defaultNullOpts.mkStr "" ''
2024-05-05 19:39:35 +02:00
Custom port to start server or empty for random.
'';
page_title = defaultNullOpts.mkStr "\$\{name}" ''
2024-05-05 19:39:35 +02:00
Preview page title.
`$${name}` will be replaced with the file name.
'';
images_path = defaultNullOpts.mkStr "" ''
2024-05-05 19:39:35 +02:00
Use a custom location for images.
'';
filetypes = defaultNullOpts.mkListOf types.str [ "markdown" ] ''
2024-05-05 19:39:35 +02:00
Recognized filetypes. These filetypes will have `MarkdownPreview...` commands.
'';
theme = defaultNullOpts.mkEnum' {
values = [
"dark"
"light"
];
description = ''
Default theme (dark or light).
'';
pluginDefault = lib.literalMD "chosen based on system preferences";
};
2024-05-05 19:39:35 +02:00
combine_preview = defaultNullOpts.mkFlagInt 0 ''
2024-05-05 19:39:35 +02:00
Combine preview window.
If enable it will reuse previous opened preview window when you preview markdown file.
2024-09-08 13:52:18 +01:00
Ensure to set `auto_close = 0` if you have enable this option.
2024-05-05 19:39:35 +02:00
'';
combine_preview_auto_refresh = defaultNullOpts.mkFlagInt 1 ''
2024-05-05 19:39:35 +02:00
Auto refetch combine preview contents when change markdown buffer only when
2024-09-08 13:52:18 +01:00
`combine_preview` is `1`.
2024-05-05 19:39:35 +02:00
'';
};
settingsExample = {
2024-09-08 13:52:18 +01:00
auto_start = 1;
auto_close = 1;
2024-05-05 19:39:35 +02:00
browser = "firefox";
2024-09-08 13:52:18 +01:00
echo_preview_url = 1;
2024-05-05 19:39:35 +02:00
preview_options = {
2024-09-08 13:52:18 +01:00
disable_sync_scroll = 1;
2024-05-05 19:39:35 +02:00
sync_scroll_type = "middle";
2024-09-08 13:52:18 +01:00
disable_filename = 1;
};
2024-05-05 19:39:35 +02:00
markdown_css = "/Users/username/markdown.css";
highlight_css.__raw = "vim.fn.expand('~/highlight.css')";
port = "8080";
page_title = "\$\{name}";
theme = "dark";
};
inherit (import ./deprecations.nix) deprecateExtraConfig optionsRenamedToSettings;
2024-05-05 19:39:35 +02:00
}