From 6f1bcbf4dc53166635c59286e3cfc8197800d8a9 Mon Sep 17 00:00:00 2001 From: Hadi <112569860+anotherhadi@users.noreply.github.com> Date: Tue, 4 Feb 2025 20:40:54 +0100 Subject: [PATCH] markdown writting --- home/programs/nvim/plugins/markdown.nix | 379 ++++++++++++++---------- home/programs/nvim/plugins/tree.nix | 5 + home/programs/nvim/plugins/utils.nix | 11 +- 3 files changed, 230 insertions(+), 165 deletions(-) diff --git a/home/programs/nvim/plugins/markdown.nix b/home/programs/nvim/plugins/markdown.nix index b1d8435..180bf92 100644 --- a/home/programs/nvim/plugins/markdown.nix +++ b/home/programs/nvim/plugins/markdown.nix @@ -1,172 +1,239 @@ { config, ... }: let accent = "#${config.lib.stylix.colors.base0D}"; - accent-alt = "#${config.lib.stylix.colors.base08}"; muted = "#${config.lib.stylix.colors.base03}"; - background = "#${config.lib.stylix.colors.base00}"; in { - programs.nixvim = { - plugins.mkdnflow = { - enable = true; - modules = { conceal = false; }; - toDo.symbols = [ " " "-" "x" "!" "/" ]; - mappings = { - MkdnCreateLink = false; - MkdnCreateLinkFromClipboard = { - key = "ml"; - modes = [ "n" "v" ]; - }; - MkdnDecreaseHeading = { - key = "m-"; - modes = "n"; - }; - MkdnDestroyLink = false; - MkdnEnter = { - key = ""; - modes = [ "v" ]; - }; - MkdnExtendList = false; + # Markdown settings + extraFiles."after/ftplugin/markdown.lua".text = '' + vim.bo.tabstop = 2 + vim.bo.shiftwidth = 2 + vim.bo.expandtab = true + ''; - MkdnFoldSection = { - key = "mf"; - modes = "n"; - }; - - MkdnUnfoldSection = { - key = "mF"; - modes = "n"; - }; - - MkdnFollowLink = { - key = "gd"; - modes = "n"; - }; - MkdnGoBack = false; - MkdnGoForward = false; - MkdnIncreaseHeading = { - key = "m+"; - modes = "n"; - }; - MkdnMoveSource = false; - MkdnNewListItem = false; - MkdnNewListItemAboveInsert = { - key = "O"; - modes = "n"; - }; - MkdnNewListItemBelowInsert = { - key = "o"; - modes = "n"; - }; - MkdnNextHeading = { - key = "m#"; - modes = "n"; - }; - MkdnNextLink = false; - MkdnPrevLink = false; - MkdnPrevHeading = { - key = "m*"; - modes = "n"; - }; - MkdnSTab = false; - MkdnTab = false; - MkdnTableNewColAfter = { - key = "mc"; - modes = "n"; - }; - MkdnTableNewColBefore = { - key = "mC"; - modes = "n"; - }; - MkdnTableNewRowAbove = { - key = "mR"; - modes = "n"; - }; - MkdnTableNewRowBelow = { - key = "mr"; - modes = "n"; - }; - MkdnTableNextCell = { - key = ""; - modes = "n"; - }; - MkdnTableNextRow = false; - MkdnTablePrevCell = { - key = ""; - modes = "n"; - }; - MkdnTablePrevRow = false; - MkdnToggleToDo = { - key = ""; - modes = [ "n" "v" ]; - }; - MkdnUpdateNumbering = { - key = "mn"; - modes = "n"; - }; - MkdnYankAnchorLink = { - key = "ya"; - modes = "n"; - }; - MkdnYankFileAnchorLink = { - key = "yfa"; - modes = "n"; - }; - }; - }; - extraFiles = { - "after/ftplugin/markdown.lua".text = '' - vim.bo.tabstop = 2 - vim.bo.shiftwidth = 2 - vim.bo.expandtab = true - ''; - }; + # Highlight colors highlight = { - RenderMarkdownBg.bg = background; - RenderMarkdownH1.fg = accent; - RenderMarkdownH2.fg = accent; - RenderMarkdownH3.fg = accent-alt; - RenderMarkdownH4.fg = accent-alt; - RenderMarkdownH5.fg = accent-alt; - RenderMarkdownH6.fg = accent-alt; + Headline1 = { + bg = "#4B4266"; + fg = accent; + }; + Headline2 = { + bg = "#3B575E"; + fg = "#9FFEFE"; + }; + Headline3 = { + bg = "#3B5742"; + fg = "#9FFE9F"; + }; + Headline4 = { + bg = "#574842"; + fg = "#FECB9F"; + }; + RenderMarkdownTodo.fg = "#f78c6c"; RenderMarkdownWarning.fg = "#ff5370"; RenderMarkdownDone.fg = muted; }; - plugins.render-markdown = { - enable = true; - settings = { - heading = { - icons = [ "# " "󰲣 " "󰲥 " "󰲧 " "󰲩 " "󰲫 " ]; - sign = false; - backgrounds = [ "RenderMarkdownBg" ]; - foregrounds = [ - "RenderMarkdownH1" - "RenderMarkdownH2" - "RenderMarkdownH3" - "RenderMarkdownH4" - "RenderMarkdownH5" - "RenderMarkdownH6" - ]; + + # Plugins + plugins = { + # Paste images from clipboard + clipboard-image = { + enable = true; + settings = { default.img_dir = [ "%:p:h" "img" ]; }; + }; + + # Zen mode + zen-mode = { + enable = true; + settings = { + on_close = '' + function() + end + ''; + on_open = '' + function() + end + ''; + plugins = { + gitsigns = { enabled = false; }; + options = { + enabled = true; + ruler = false; + showcmd = false; + laststatus = "0"; + kitty = { + enabled = true; + font = "+4"; + }; + }; + }; + window = { + backdrop = 0.95; + height = 1; + options = { + signcolumn = "no"; + number = false; + relativenumber = false; + }; + width = 0.8; + }; }; - checkbox = { - unchecked = { highlight = "RenderMarkdownTodo"; }; - checked = { highlight = "RenderMarkdownDone"; }; - custom = { - pending = { - raw = "[-]"; - rendered = " "; - highlight = "RenderMarkdownTodo"; - }; - important = { - raw = "[!]"; - rendered = "󰰱 "; - highlight = "RenderMarkdownWarning"; - }; - cancel = { - raw = "[/]"; - rendered = "󱋬 "; - highlight = "RenderMarkdownWarning"; + }; + + # Display images in markdown + image = { + enable = true; + integrations.markdown = { + clearInInsertMode = true; + onlyRenderImageAtCursor = true; + }; + }; + + # This one takes care of the markdown titles + headlines = { + enable = true; + settings = { + markdown = { + headline_highlights = + [ "Headline1" "Headline2" "Headline3" "Headline4" ]; + }; + }; + }; + + # MkdnFlow is a plugin that helps you navigate markdown files + mkdnflow = { + enable = true; + modules = { conceal = false; }; + toDo.symbols = [ " " "-" "x" "!" "/" ]; + mappings = { + MkdnCreateLink = false; + MkdnCreateLinkFromClipboard = { + key = "ml"; + modes = [ "n" "v" ]; + }; + MkdnDecreaseHeading = { + key = "m-"; + modes = "n"; + }; + MkdnDestroyLink = false; + MkdnEnter = { + key = ""; + modes = [ "v" ]; + }; + MkdnExtendList = false; + + MkdnFoldSection = { + key = "mf"; + modes = "n"; + }; + + MkdnUnfoldSection = { + key = "mF"; + modes = "n"; + }; + + MkdnFollowLink = { + key = "gd"; + modes = "n"; + }; + MkdnGoBack = false; + MkdnGoForward = false; + MkdnIncreaseHeading = { + key = "m+"; + modes = "n"; + }; + MkdnMoveSource = false; + MkdnNewListItem = false; + MkdnNewListItemAboveInsert = { + key = "O"; + modes = "n"; + }; + MkdnNewListItemBelowInsert = { + key = "o"; + modes = "n"; + }; + MkdnNextHeading = { + key = "m#"; + modes = "n"; + }; + MkdnNextLink = false; + MkdnPrevLink = false; + MkdnPrevHeading = { + key = "m*"; + modes = "n"; + }; + MkdnSTab = false; + MkdnTab = false; + MkdnTableNewColAfter = { + key = "mc"; + modes = "n"; + }; + MkdnTableNewColBefore = { + key = "mC"; + modes = "n"; + }; + MkdnTableNewRowAbove = { + key = "mR"; + modes = "n"; + }; + MkdnTableNewRowBelow = { + key = "mr"; + modes = "n"; + }; + MkdnTableNextCell = { + key = ""; + modes = "n"; + }; + MkdnTableNextRow = false; + MkdnTablePrevCell = { + key = ""; + modes = "n"; + }; + MkdnTablePrevRow = false; + MkdnToggleToDo = { + key = ""; + modes = [ "n" "v" ]; + }; + MkdnUpdateNumbering = { + key = "mn"; + modes = "n"; + }; + MkdnYankAnchorLink = { + key = "ya"; + modes = "n"; + }; + MkdnYankFileAnchorLink = { + key = "yfa"; + modes = "n"; + }; + }; + }; + + # Render UI elements + render-markdown = { + enable = true; + settings = { + heading = { enabled = false; }; + checkbox = { + unchecked = { highlight = "RenderMarkdownTodo"; }; + checked = { highlight = "RenderMarkdownDone"; }; + custom = { + pending = { + raw = "[-]"; + rendered = " "; + highlight = "RenderMarkdownTodo"; + }; + important = { + raw = "[!]"; + rendered = "󰰱 "; + highlight = "RenderMarkdownWarning"; + }; + cancel = { + raw = "[/]"; + rendered = "󱋬 "; + highlight = "RenderMarkdownWarning"; + }; }; }; }; diff --git a/home/programs/nvim/plugins/tree.nix b/home/programs/nvim/plugins/tree.nix index d0eb537..f3f6ce9 100644 --- a/home/programs/nvim/plugins/tree.nix +++ b/home/programs/nvim/plugins/tree.nix @@ -7,6 +7,11 @@ settings = { default_file_explorer = false; skip_confirm_for_simple_edits = true; + view_options.is_hidden_file = '' + function(name, bufnr) + return vim.startswith(name, ".") or name == "img" + end + ''; win_options = { concealcursor = "ncv"; conceallevel = 3; diff --git a/home/programs/nvim/plugins/utils.nix b/home/programs/nvim/plugins/utils.nix index f10112f..e0ba4f4 100644 --- a/home/programs/nvim/plugins/utils.nix +++ b/home/programs/nvim/plugins/utils.nix @@ -3,17 +3,10 @@ highlightOverride = { FloatBorder.fg = "#${config.lib.stylix.colors.base0D}"; }; + nixpkgs.config = { allowUnfree = true; }; plugins = { - # FIXME: broken on unstable - # copilot-vim.enable = true; + copilot-vim.enable = true; flash.enable = true; - image = { - enable = true; - integrations.markdown = { - clearInInsertMode = true; - onlyRenderImageAtCursor = true; - }; - }; tmux-navigator.enable = true; comment.enable = true; nvim-autopairs.enable = true;