Skip to content

plugins/markdown-preview: modernize #2896

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jan 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 40 additions & 64 deletions plugins/by-name/markdown-preview/default.nix
Original file line number Diff line number Diff line change
@@ -1,114 +1,88 @@
{
lib,
helpers,
...
}:
with lib;
with lib.nixvim.plugins;
mkVimPlugin {
let
inherit (lib) types;
inherit (lib.nixvim) defaultNullOpts;
in
lib.nixvim.plugins.mkVimPlugin {
name = "markdown-preview";
packPathName = "markdown-preview.nvim";
package = "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"
"previewOptions"
"markdownCss"
"highlightCss"
"port"
"pageTitle"
"theme"
{
old = "fileTypes";
new = "filetypes";
}
{
old = "browserFunc";
new = "browserfunc";
}
];
maintainers = [ lib.maintainers.GaetanLepage ];

settingsOptions = {
auto_start = helpers.defaultNullOpts.mkFlagInt 0 ''
auto_start = defaultNullOpts.mkFlagInt 0 ''
Open the preview window after entering the markdown buffer.
'';

auto_close = helpers.defaultNullOpts.mkFlagInt 1 ''
auto_close = defaultNullOpts.mkFlagInt 1 ''
Auto close current preview window when change from markdown buffer to another buffer.
'';

refresh_slow = helpers.defaultNullOpts.mkFlagInt 0 ''
refresh_slow = defaultNullOpts.mkFlagInt 0 ''
Refresh markdown when save the buffer or leave from insert mode, default `0` is auto
refresh markdown as you edit or move the cursor.
'';

command_for_global = helpers.defaultNullOpts.mkFlagInt 0 ''
command_for_global = defaultNullOpts.mkFlagInt 0 ''
Enable markdown preview for all files (by default, the plugin is only enabled for markdown
files).
'';

open_to_the_world = helpers.defaultNullOpts.mkFlagInt 0 ''
open_to_the_world = defaultNullOpts.mkFlagInt 0 ''
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 "" ''
open_ip = 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 "" ''
browser = defaultNullOpts.mkStr "" ''
The browser to open the preview page.
'';

echo_preview_url = helpers.defaultNullOpts.mkFlagInt 0 ''
echo_preview_url = defaultNullOpts.mkFlagInt 0 ''
Echo preview page url in command line when opening the preview page.
'';

browserfunc = helpers.defaultNullOpts.mkStr "" ''
browserfunc = defaultNullOpts.mkStr "" ''
A custom vim function name to open preview page.
This function will receive url as param.
'';

preview_options = helpers.mkNullOrOption (types.submodule {
preview_options = lib.nixvim.mkNullOrOption (types.submodule {
freeformType = types.attrs;

options = {
mkit = helpers.defaultNullOpts.mkListOf types.str [ ] ''
mkit = defaultNullOpts.mkListOf types.str [ ] ''
`markdown-it` options for render.
'';

katex = helpers.defaultNullOpts.mkListOf types.str [ ] ''
katex = defaultNullOpts.mkListOf types.str [ ] ''
`katex` options for math.
'';

uml = helpers.defaultNullOpts.mkListOf types.str [ ] ''
uml = defaultNullOpts.mkListOf types.str [ ] ''
`markdown-it-plantuml` options.
'';

maid = helpers.defaultNullOpts.mkListOf types.str [ ] ''
maid = defaultNullOpts.mkListOf types.str [ ] ''
`mermaid` options.
'';

disable_sync_scroll = helpers.defaultNullOpts.mkFlagInt 0 ''
disable_sync_scroll = defaultNullOpts.mkFlagInt 0 ''
Disable sync scroll.
'';

sync_scroll_type =
helpers.defaultNullOpts.mkEnumFirstDefault
defaultNullOpts.mkEnumFirstDefault
[
"middle"
"top"
Expand All @@ -121,79 +95,79 @@ mkVimPlugin {
- "relative": The cursor position is always shown at the relative position of the preview page.
'';

hide_yaml_meta = helpers.defaultNullOpts.mkFlagInt 1 ''
hide_yaml_meta = defaultNullOpts.mkFlagInt 1 ''
Hide yaml metadata.
'';

sequence_diagrams = helpers.defaultNullOpts.mkListOf types.str [ ] ''
sequence_diagrams = defaultNullOpts.mkListOf types.str [ ] ''
`js-sequence-diagrams` options.
'';

flowchart_diagrams = helpers.defaultNullOpts.mkListOf types.str [ ] ''
flowchart_diagrams = defaultNullOpts.mkListOf types.str [ ] ''
`flowcharts` diagrams options.
'';

content_editable = helpers.defaultNullOpts.mkFlagInt 0 ''
content_editable = defaultNullOpts.mkFlagInt 0 ''
Content editable from the preview page.
'';

disable_filename = helpers.defaultNullOpts.mkFlagInt 0 ''
disable_filename = defaultNullOpts.mkFlagInt 0 ''
Disable filename header for the preview page.
'';

toc = helpers.defaultNullOpts.mkListOf types.str [ ] ''
toc = defaultNullOpts.mkListOf types.str [ ] ''
Toc options.
'';
};
}) "Preview options";

markdown_css = helpers.defaultNullOpts.mkStr "" ''
markdown_css = 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 "" ''
highlight_css = 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 "" ''
port = defaultNullOpts.mkStr "" ''
Custom port to start server or empty for random.
'';

page_title = helpers.defaultNullOpts.mkStr "「\$\{name}」" ''
page_title = defaultNullOpts.mkStr "「\$\{name}」" ''
Preview page title.
`$${name}` will be replaced with the file name.
'';

images_path = helpers.defaultNullOpts.mkStr "" ''
images_path = defaultNullOpts.mkStr "" ''
Use a custom location for images.
'';

filetypes = helpers.defaultNullOpts.mkListOf types.str [ "markdown" ] ''
filetypes = defaultNullOpts.mkListOf types.str [ "markdown" ] ''
Recognized filetypes. These filetypes will have `MarkdownPreview...` commands.
'';

theme = helpers.defaultNullOpts.mkEnum' {
theme = defaultNullOpts.mkEnum' {
values = [
"dark"
"light"
];
description = ''
Default theme (dark or light).
'';
pluginDefault = literalMD "chosen based on system preferences";
pluginDefault = lib.literalMD "chosen based on system preferences";
};

combine_preview = helpers.defaultNullOpts.mkFlagInt 0 ''
combine_preview = defaultNullOpts.mkFlagInt 0 ''
Combine preview window.
If enable it will reuse previous opened preview window when you preview markdown file.
Ensure to set `auto_close = 0` if you have enable this option.
'';

combine_preview_auto_refresh = helpers.defaultNullOpts.mkFlagInt 1 ''
combine_preview_auto_refresh = defaultNullOpts.mkFlagInt 1 ''
Auto refetch combine preview contents when change markdown buffer only when
`combine_preview` is `1`.
'';
Expand All @@ -215,4 +189,6 @@ mkVimPlugin {
page_title = "「\$\{name}」";
theme = "dark";
};

inherit (import ./deprecations.nix) deprecateExtraConfig optionsRenamedToSettings;
}
29 changes: 29 additions & 0 deletions plugins/by-name/markdown-preview/deprecations.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
# TODO introduced 2024-03-02: remove 2024-05-02
deprecateExtraConfig = true;
optionsRenamedToSettings = [
"autoStart"
"autoClose"
"refreshSlow"
"commandForGlobal"
"openToTheWorld"
"openIp"
"browser"
"echoPreviewUrl"
"previewOptions"
"markdownCss"
"highlightCss"
"port"
"pageTitle"
"theme"
{
old = "fileTypes";
new = "filetypes";
}
{
old = "browserFunc";
new = "browserfunc";
}
];

}
Loading