plugins/markdown-preview: switch to settings option

This commit is contained in:
Gaetan Lepage 2024-03-02 21:20:17 +01:00 committed by Gaétan Lepage
parent c60fc8ec3e
commit 44a31bd1fe

View file

@ -12,215 +12,204 @@ with helpers.vim-plugin;
originalName = "markdown-preview.nvim"; originalName = "markdown-preview.nvim";
defaultPackage = pkgs.vimPlugins.markdown-preview-nvim; defaultPackage = pkgs.vimPlugins.markdown-preview-nvim;
globalPrefix = "mkdp_"; globalPrefix = "mkdp_";
deprecateExtraConfig = true;
maintainers = [maintainers.GaetanLepage]; maintainers = [maintainers.GaetanLepage];
options = { # TODO introduced 2024-03-02: remove 2024-05-02
autoStart = mkDefaultOpt { deprecateExtraConfig = true;
global = "auto_start"; optionsRenamedToSettings = [
type = types.bool; "autoStart"
description = '' "autoClose"
Open the preview window after entering the markdown buffer. "refreshSlow"
"commandForGlobal"
"openToTheWorld"
"openIp"
"browser"
"echoPreviewUrl"
"browserFunc"
"previewOptions"
"markdownCss"
"highlightCss"
"port"
"pageTitle"
"theme"
];
imports = [
(
mkRenamedOptionModule
["plugins" "markdown-preview" "fileTypes"]
["plugins" "markdown-preview" "settings" "filetypes"]
)
];
Default: `false` settingsOptions = {
''; auto_start = helpers.defaultNullOpts.mkBool false ''
}; Open the preview window after entering the markdown buffer.
'';
autoClose = mkDefaultOpt { auto_close = helpers.defaultNullOpts.mkBool true ''
global = "auto_close"; Auto close current preview window when change from markdown buffer to another buffer.
type = types.bool; '';
description = ''
Auto close current preview window when change from markdown buffer to another buffer.
Default: `true` 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.
'';
refreshSlow = mkDefaultOpt { command_for_global = helpers.defaultNullOpts.mkBool false ''
global = "refresh_slow"; Enable markdown preview for all files (by default, the plugin is only enabled for markdown
type = types.bool; files).
description = '' '';
Refresh markdown when save the buffer or leave from insert mode, default false is auto
refresh markdown as you edit or move the cursor.
Default: `false` 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).
'';
commandForGlobal = mkDefaultOpt { open_ip = helpers.defaultNullOpts.mkStr "" ''
global = "command_for_global"; Custom IP used to open the preview page.
type = types.bool; This can be useful when you work in remote vim and preview on local browser.
description = '' For more detail see: https://github.com/iamcco/markdown-preview.nvim/pull/9.
Enable markdown preview for all files (by default, the plugin is only enabled for markdown '';
files).
Default: `false` browser = helpers.defaultNullOpts.mkStr "" ''
''; The browser to open the preview page.
}; '';
openToTheWorld = mkDefaultOpt { echo_preview_url = helpers.defaultNullOpts.mkBool false ''
global = "open_to_the_world"; Echo preview page url in command line when opening the preview page.
type = types.bool; '';
description = ''
Make the preview server available to others in your network.
By default, the server listens on localhost (127.0.0.1).
Default: `false` browser_func = helpers.defaultNullOpts.mkStr "" ''
''; A custom vim function name to open preview page.
}; This function will receive url as param.
'';
openIp = mkDefaultOpt { preview_options =
global = "open_ip"; helpers.mkNullOrOption
type = types.str; (
description = '' types.submodule {
Custom IP used to open the preview page. freeformType = types.attrs;
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.
Default: "" options = {
''; mkit = helpers.defaultNullOpts.mkListOf types.str "[]" ''
}; `markdown-it` options for render.
browser = mkDefaultOpt {
type = types.str;
description = ''
The browser to open the preview page.
Default: ""
'';
};
echoPreviewUrl = mkDefaultOpt {
global = "echo_preview_url";
type = types.bool;
description = ''
Echo preview page url in command line when opening the preview page.
Default: `false`
'';
};
browserFunc = mkDefaultOpt {
global = "browser_func";
type = types.str;
description = ''
A custom vim function name to open preview page.
This function will receive url as param.
Default: ""
'';
};
previewOptions = mkDefaultOpt {
global = "preview_options";
default = {};
description = "Preview options";
type = types.submodule {
freeformType = types.attrs;
options = let
mkEmptyListOfStr = helpers.defaultNullOpts.mkNullable (with types; listOf str) "[]";
in {
mkit = mkEmptyListOfStr "markdown-it options for render";
katex = mkEmptyListOfStr "katex options for math";
uml = mkEmptyListOfStr "markdown-it-plantuml options";
maid = mkEmptyListOfStr "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 positon of the preview page.
Default: "middle"
''; '';
hide_yaml_meta = helpers.defaultNullOpts.mkBool true "Hide yaml metadata."; katex = helpers.defaultNullOpts.mkListOf types.str "[]" ''
`katex` options for math.
'';
sequence_diagrams = mkEmptyListOfStr "js-sequence-diagrams options"; uml = helpers.defaultNullOpts.mkListOf types.str "[]" ''
`markdown-it-plantuml` options.
'';
flowchart_diagrams = mkEmptyListOfStr "flowcharts diagrams options"; maid = helpers.defaultNullOpts.mkListOf types.str "[]" ''
`mermaid` options.
'';
content_editable = helpers.defaultNullOpts.mkBool false '' disable_sync_scroll = helpers.defaultNullOpts.mkBool false ''
Content editable from the preview page. Disable sync scroll.
''; '';
disable_filename = helpers.defaultNullOpts.mkBool false '' sync_scroll_type =
Disable filename header for the preview page. 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 positon of the preview page.
'';
toc = mkEmptyListOfStr "Toc options"; hide_yaml_meta = helpers.defaultNullOpts.mkBool true ''
}; Hide yaml metadata.
}; '';
};
sequence_diagrams = helpers.defaultNullOpts.mkListOf types.str "[]" ''
markdownCss = mkDefaultOpt { `js-sequence-diagrams` options.
global = "markdown_css"; '';
type = types.str;
description = '' flowchart_diagrams = helpers.defaultNullOpts.mkListOf types.str "[]" ''
Custom markdown style. `flowcharts` diagrams options.
Must be an absolute path like "/Users/username/markdown.css" or '';
`expand('~/markdown.css')`.
content_editable = helpers.defaultNullOpts.mkBool false ''
Default: "" Content editable from the preview page.
''; '';
};
disable_filename = helpers.defaultNullOpts.mkBool false ''
highlightCss = mkDefaultOpt { Disable filename header for the preview page.
global = "highlight_css"; '';
type = types.str;
description = '' toc = helpers.defaultNullOpts.mkListOf types.str "[]" ''
Custom highlight style. Toc options.
Must be an absolute path like "/Users/username/highlight.css" or '';
`expand('~/highlight.css')`. };
}
Default: "" )
''; "Preview options";
};
markdown_css = helpers.defaultNullOpts.mkStr "" ''
port = mkDefaultOpt { Custom markdown style.
type = types.ints.positive; Must be an absolute path like `"/Users/username/markdown.css"` or
apply = v: helpers.ifNonNull' v (toString v); `{__raw = "vim.fn.expand('~/markdown.css')";}`.
description = '' '';
Custom port to start server or empty for random.
''; highlight_css = helpers.defaultNullOpts.mkStr "" ''
}; Custom highlight style.
Must be an absolute path like "/Users/username/highlight.css" or
pageTitle = mkDefaultOpt { `{__raw = "vim.fn.expand('~/highlight.css')";}`.
global = "page_title"; '';
type = types.str;
description = '' port = helpers.defaultNullOpts.mkStr "" ''
Preview page title. Custom port to start server or empty for random.
`$${name}` will be replaced with the file name. '';
Default: "\$\{name}" page_title = helpers.defaultNullOpts.mkStr "\$\{name}" ''
''; Preview page title.
}; `$${name}` will be replaced with the file name.
'';
fileTypes = mkDefaultOpt {
global = "file_types"; images_path = helpers.defaultNullOpts.mkStr "" ''
type = with types; listOf str; Use a custom location for images.
description = '' '';
Recognized filetypes. These filetypes will have MarkdownPreview... commands.
filetypes = helpers.defaultNullOpts.mkListOf types.str ''["markdown"]'' ''
Default: `["markdown"]` Recognized filetypes. These filetypes will have `MarkdownPreview...` commands.
''; '';
};
theme = helpers.mkNullOrOption (types.enum ["dark" "light"]) ''
theme = mkDefaultOpt { Default theme (dark or light).
type = types.enum ["dark" "light"]; By default the theme is define according to the preferences of the system.
description = '' '';
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";
}; };
} }