summary refs log tree commit diff
path: root/.vim/lua/internal/plugins/writing.lua
diff options
context:
space:
mode:
Diffstat (limited to '.vim/lua/internal/plugins/writing.lua')
-rw-r--r--.vim/lua/internal/plugins/writing.lua123
1 files changed, 123 insertions, 0 deletions
diff --git a/.vim/lua/internal/plugins/writing.lua b/.vim/lua/internal/plugins/writing.lua
new file mode 100644
index 0000000..4792697
--- /dev/null
+++ b/.vim/lua/internal/plugins/writing.lua
@@ -0,0 +1,123 @@
+return {
+  {
+    'folke/zen-mode.nvim',
+    cmd = { 'ZenMode' },
+    opts = {
+      window = {
+        -- width = 0.9,
+        -- height = 0.9,
+        options = {
+          cursorline = true,
+        },
+      },
+      plugins = {
+        options = {
+          number = false,
+          ruler = false,
+          showcmd = false,
+        },
+        gitsigns = { enabled = false },
+        twilight = { enabled = true },
+      },
+      on_open = function()
+        vim.diagnostic.enable(false)
+      end,
+      on_close = function()
+        vim.diagnostic.enable(true)
+      end,
+    },
+    -- init = function()
+    --   vim.api.nvim_create_autocmd({ 'BufWinEnter', 'BufWinLeave' }, {
+    --     pattern = { '*.md' },
+    --     command = [[ZenMode]],
+    --   })
+    -- end,
+    dependencies = {
+      {
+        'folke/twilight.nvim',
+        opts = {
+          context = 24,
+          dimming = {
+            alpha = 0.5,
+            color = { 'Normal', '#ffffff' },
+          },
+        },
+      },
+    },
+  },
+  {
+    'tadmccorkle/markdown.nvim',
+    ft = { 'markdown' },
+    opts = {
+      mappings = false,
+    },
+    config = function(_, opts)
+      require('markdown').setup(opts)
+
+      local set = vim.keymap.set
+      set('n', '[[', [[<Plug>(markdown_go_prev_heading)]], { desc = 'md: previous heading' })
+      set('n', ']]', [[<Plug>(markdown_go_next_heading)]], { desc = 'md: next heading' })
+      set('n', '<s-tab>', [[:MDTaskToggle<cr>]], { desc = 'md: toggle task' })
+      set('x', '<c-l>', [[<esc>gv<Plug>(markdown_add_link_visual)]], { desc = 'md: make link' })
+      local toggle_emph = function(key)
+        return [[<esc>gv<cmd>lua require('markdown.inline').toggle_emphasis_visual(']]
+          .. key
+          .. [[')<cr>]]
+      end
+      set('x', '<c-b>', toggle_emph('b'), { desc = 'md: make bold' })
+      set('x', '<c-i>', toggle_emph('i'), { desc = 'md: make italic' })
+      set('x', '<c-s>', toggle_emph('s'), { desc = 'md: make strikethrough' })
+      set('x', '<c-c>', toggle_emph('c'), { desc = 'md: make code' })
+    end,
+  },
+  {
+    'MeanderingProgrammer/markdown.nvim',
+    name = 'render-markdown', -- needed if used together with markdown.nvim above
+    main = 'render-markdown',
+    dependencies = {
+      'nvim-treesitter/nvim-treesitter',
+      'echasnovski/mini.icons',
+    },
+    ft = { 'markdown' },
+    opts = {
+      heading = {
+        -- icons = { '❶  ', '❷  ', '❸  ', '❹  ', '❺  ', '❻  ' },
+        icons = {
+          ' ',
+          ' ',
+          ' ',
+          ' ',
+          ' ',
+          ' ',
+        },
+        signs = { 'ⅰ', 'ⅱ', 'ⅲ', 'ⅳ', 'ⅴ', 'ⅵ' },
+      },
+      bullet = {
+        icons = { '∙', '∘', '⋅', '⋄' },
+      },
+      checkbox = {
+        checked = { icon = '󰄲 ' },
+        unchecked = { icon = '󰄱 ' },
+        custom = {
+          todo = { raw = '[-]', rendered = '󰔟 ', highlight = 'RenderMarkdownTodo' },
+        },
+      },
+    },
+    init = vim.schedule_wrap(function()
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH1Bg', { bg = 'NvimDarkBlue' })
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH1Fg', { fg = 'NvimLightBlue' })
+
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH2Bg', { bg = 'NvimDarkMagenta' })
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH2Fg', { fg = 'NvimLightMagenta' })
+
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH3Bg', { bg = 'NvimDarkYellow' })
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH3Fg', { fg = 'NvimLightYellow' })
+
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH4Bg', { bg = 'NvimDarkCyan' })
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH4Fg', { fg = 'NvimLightCyan' })
+
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH6Bg', { bg = 'NvimDarkRed' })
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH6Fg', { fg = 'NvimLightRed' })
+    end),
+  },
+}