diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index dac4b5c..69741cc 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -4,11 +4,11 @@ vim.g.mapleader = " " ----- custom config ----- if vim.g.neovide then - vim.g.neovide_transparency = 0.7 + vim.g.neovide_opacity = 0.5 vim.g.neovide_scale_factor = 0.7 vim.g.neovide_window_blurred = true - vim.g.neovide_floating_blur_amount_x = 1.0 - vim.g.neovide_floating_blur_amount_y = 1.0 + vim.g.neovide_floating_blur_amount_x = 1.9 + vim.g.neovide_floating_blur_amount_y = 1.9 vim.g.neovide_floating_shadow = true vim.g.neovide_floating_z_height = 0 vim.g.neovide_hide_mouse_when_typing = true @@ -18,16 +18,14 @@ if vim.g.neovide then -- vim.g.neovide_fullscreen = true -- vim.g.neovide_padding_bottom = 0 -- vim.g.neovide_light_radius = 5 - -- vim.g.neovide_show_border = false + -- vim.g.neovide_show_border = false -- vim.g.neovide_light_angle_degrees = 45 end vim.opt.relativenumber = true -vim.opt.wrap = false ----- end of custom ----- - -- bootstrap lazy and all plugins local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim" @@ -58,6 +56,22 @@ dofile(vim.g.base46_cache .. "statusline") require "options" require "nvchad.autocmds" +require "render-markdown" + +require("gen").prompts["Markdown_links"] = { + prompt = "Make markdown links wherever you find link in the following text, and generate the namas accordingly:\n$text", + replace = true, +} + +require("gen").prompts["Optimize code"] = { + prompt = "Check if code can be optimized for speed and readability:\n$text", + replace = true, +} + +require("gen").prompts["Genetrate types "] = { + prompt = "Check if types are correct in this code, fix and optimize if something is needed:\n$text", + replace = true, +} vim.schedule(function() require "mappings" diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json index 71ecefe..ce9c7ff 100644 --- a/.config/nvim/lazy-lock.json +++ b/.config/nvim/lazy-lock.json @@ -1,29 +1,32 @@ { - "LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" }, - "NvChad": { "branch": "v2.5", "commit": "46b15ef1b9d10a83ab7df26b14f474d15c01e770" }, - "base46": { "branch": "v3.0", "commit": "80358ecdb5779b199130ed03031c34c0c2bca3fc" }, - "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" }, + "LuaSnip": { "branch": "master", "commit": "0f7bbce41ea152a94d12aea286f2ce98e63c0f58" }, + "NvChad": { "branch": "v2.5", "commit": "bbc3d43db088c141b142a40cd5f717635833a54e" }, + "base46": { "branch": "v2.5", "commit": "8971be55aeb6d5fe086169c0ee9ce647a3871570" }, + "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, - "cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" }, + "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "conform.nvim": { "branch": "master", "commit": "eebc724d12c5579d733d1f801386e0ceb909d001" }, - "friendly-snippets": { "branch": "main", "commit": "31f2a2657b6261724313281fe0d8ba6f43f4a4fa" }, - "gitsigns.nvim": { "branch": "main", "commit": "fcfa7a989cd6fed10abf02d9880dc76d7a38167d" }, - "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, - "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, - "menu": { "branch": "main", "commit": "8adb036ec34c679050913864cbc98cc64eb91f6c" }, - "minty": { "branch": "main", "commit": "aafc9e8e0afe6bf57580858a2849578d8d8db9e0" }, - "nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" }, - "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, - "nvim-lspconfig": { "branch": "master", "commit": "81920264a264144bd075f7f48f0c4356fc2c6236" }, - "nvim-tree.lua": { "branch": "master", "commit": "5bea2b37523a31288e0fcab42f3be5c1bd4516bb" }, - "nvim-treesitter": { "branch": "master", "commit": "7bbed4b548d9a81c14351bda93d16336edefd067" }, - "nvim-web-devicons": { "branch": "master", "commit": "c90dee4e930ab9f49fa6d77f289bff335b49e972" }, - "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, - "telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" }, - "ui": { "branch": "v3.0", "commit": "9201de37eb4992bef5fec974618a9a14082765fe" }, - "volt": { "branch": "main", "commit": "c45d5f48da8e802e608b5c6da471ca4d84276dfb" }, - "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } + "conform.nvim": { "branch": "master", "commit": "023f795dbcf32d4351b6a9ed2e613d471b5bb812" }, + "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, + "gen.nvim": { "branch": "main", "commit": "c8e1f574d4a3a839dde73a87bdc319a62ee1e559" }, + "gitsigns.nvim": { "branch": "main", "commit": "ac5aba6dce8c06ea22bea2c9016f51a2dbf90dc7" }, + "indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" }, + "lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" }, + "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, + "menu": { "branch": "main", "commit": "657bfc91382c0928453d9a4d0a10ec92db5de2bb" }, + "mini.nvim": { "branch": "main", "commit": "efff26174ca363c059f92e906753db47e81d870b" }, + "minty": { "branch": "main", "commit": "a3d69bd63fc98f640815f94b797bf978e9193022" }, + "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, + "nvim-cmp": { "branch": "main", "commit": "f17d9b4394027ff4442b298398dfcaab97e40c4f" }, + "nvim-lspconfig": { "branch": "master", "commit": "f012c1b176f0e3c71f40eb309bdec0316689462e" }, + "nvim-tree.lua": { "branch": "master", "commit": "f7c65e11d695a084ca10b93df659bb7e68b71f9f" }, + "nvim-treesitter": { "branch": "master", "commit": "37427012d1c77c544356bfff0c9acc88fd3256bc" }, + "nvim-web-devicons": { "branch": "master", "commit": "e87554285f581047b1bf236794b0eb812b444b87" }, + "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, + "render-markdown.nvim": { "branch": "main", "commit": "eec00fbfd7273cdfa0a1154dbef0bb983641eaf8" }, + "telescope.nvim": { "branch": "master", "commit": "85922dde3767e01d42a08e750a773effbffaea3e" }, + "ui": { "branch": "v3.0", "commit": "9b31c25fc497d1ef726de15ae297769dbf90c1a5" }, + "volt": { "branch": "main", "commit": "41c03a5d6a0a8a997e774a3482d82e5ef820c6ba" }, + "which-key.nvim": { "branch": "main", "commit": "68e37e12913a66b60073906f5d3f14dee0de19f2" } } diff --git a/.config/nvim/lua/chadrc.lua b/.config/nvim/lua/chadrc.lua index 2277455..82bb41e 100644 --- a/.config/nvim/lua/chadrc.lua +++ b/.config/nvim/lua/chadrc.lua @@ -1,18 +1,43 @@ --- This file needs to have same structure as nvconfig.lua +-- This file needs to have same structure as nvconfig.lua -- https://github.com/NvChad/ui/blob/v3.0/lua/nvconfig.lua --- Please read that file to know all available options :( +-- Please read that file to know all available options :( ---@type ChadrcConfig -local M = {} -M.base46 = { - theme = "onedark", - transparency = true +local M = { + base46 = { + theme = "onedark", + transparency = true, + lsp = { signature = true }, + hl_override = { + NvimTreeGitDirty = { + fg = "#DBA55D", + }, + }, + -- Comment = { italic = true }, + -- ["@comment"] = { italic = true }, + }, - -- hl_override = { - -- Comment = { italic = true }, - -- ["@comment"] = { italic = true }, - -- }, + nvdash = { + load_on_startup = false, + -- buttons = { + -- { txt = " Find File", keys = "Spc f f", cmd = "Telescope find_files custom" }, + -- { txt = " Recent Files", keys = "Spc f o", cmd = "Telescope oldfiles" }, + -- -- more... check nvconfig.lua file for full list of buttons + -- }, + }, + + -- ui = { + -- -- lazyload it when there are 1+ buffers + -- tabufline = { + -- enabled = true, + -- lazyload = true, + -- order = { "treeOffset", "buffers", "tabs", "btns" }, + -- modules = nil, + -- bufwidth = 21, + -- transparency = true, + -- }, + -- }, } return M diff --git a/.config/nvim/lua/configs/lspconfig.lua b/.config/nvim/lua/configs/lspconfig.lua index 1a48953..9ff1ddd 100644 --- a/.config/nvim/lua/configs/lspconfig.lua +++ b/.config/nvim/lua/configs/lspconfig.lua @@ -1,24 +1,28 @@ --- load defaults i.e lua_lsp require("nvchad.configs.lspconfig").defaults() -local lspconfig = require "lspconfig" - --- EXAMPLE local servers = { "html", "cssls", "ts_ls" } -local nvlsp = require "nvchad.configs.lspconfig" +vim.lsp.enable(servers) --- lsps with default config -for _, lsp in ipairs(servers) do - lspconfig[lsp].setup { - on_attach = nvlsp.on_attach, - on_init = nvlsp.on_init, - capabilities = nvlsp.capabilities, - } -end - --- configuring single server, example: typescript +-- local lspconfig = require "lspconfig" +-- local nvlsp = require "nvchad.configs.lspconfig" +-- +-- -- lsps with default config +-- for _, lsp in ipairs(servers) do +-- lspconfig[lsp].setup { +-- on_attach = nvlsp.on_attach, +-- on_init = nvlsp.on_init, +-- capabilities = nvlsp.capabilities, +-- } +-- end +-- +-- -- configuring single server, example: typescript -- lspconfig.ts_ls.setup { --- on_attach = nvlsp.on_attach, --- on_init = nvlsp.on_init, --- capabilities = nvlsp.capabilities, +-- filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue', 'markdown' }, -- } +-- +-- -- configuring single server, example: typescript +-- -- lspconfig.ts_ls.setup { +-- -- on_attach = nvlsp.on_attach, +-- -- on_init = nvlsp.on_init, +-- -- capabilities = nvlsp.capabilities, +-- -- } diff --git a/.config/nvim/lua/configs/render-markdown.lua b/.config/nvim/lua/configs/render-markdown.lua new file mode 100644 index 0000000..ec75be3 --- /dev/null +++ b/.config/nvim/lua/configs/render-markdown.lua @@ -0,0 +1,851 @@ +require("render-markdown").setup { + -- Whether markdown should be rendered by default. + enabled = true, + -- Vim modes that will show a rendered view of the markdown file, :h mode(), for all enabled + -- components. Individual components can be enabled for other modes. Remaining modes will be + -- unaffected by this plugin. + render_modes = { "i", "n", "c", "t" }, + -- Maximum file size (in MB) that this plugin will attempt to render. + -- Any file larger than this will effectively be ignored. + max_file_size = 10.0, + -- Milliseconds that must pass before updating marks, updates occur. + -- within the context of the visible window, not the entire buffer. + debounce = 100, + -- Pre configured settings that will attempt to mimic various target user experiences. + -- Any user provided settings will take precedence. + -- | obsidian | mimic Obsidian UI | + -- | lazy | will attempt to stay up to date with LazyVim configuration | + -- | none | does nothing | + preset = "none", + -- The level of logs to write to file: vim.fn.stdpath('state') .. '/render-markdown.log'. + -- Only intended to be used for plugin development / debugging. + log_level = "error", + -- Print runtime of main update method. + -- Only intended to be used for plugin development / debugging. + log_runtime = false, + -- Filetypes this plugin will run on. + file_types = { "markdown" }, + -- Takes buffer as input, if it returns true this plugin will not attach to the buffer + ignore = function() + return false + end, + -- Additional events that will trigger this plugin's render loop. + change_events = {}, + injections = { + -- Out of the box language injections for known filetypes that allow markdown to be interpreted + -- in specified locations, see :h treesitter-language-injections. + -- Set enabled to false in order to disable. + + gitcommit = { + enabled = true, + query = [[ + ((message) @injection.content + (#set! injection.combined) + (#set! injection.include-children) + (#set! injection.language "markdown")) + ]], + }, + }, + patterns = { + -- Highlight patterns to disable for filetypes, i.e. lines concealed around code blocks + + markdown = { + disable = true, + directives = { + { id = 17, name = "conceal_lines" }, + { id = 18, name = "conceal_lines" }, + }, + }, + }, + anti_conceal = { + -- This enables hiding any added text on the line the cursor is on. + enabled = true, + -- Modes to disable anti conceal feature. + disabled_modes = false, + -- Number of lines above cursor to show. + above = 0, + -- Number of lines below cursor to show. + below = 0, + -- Which elements to always show, ignoring anti conceal behavior. Values can either be + -- booleans to fix the behavior or string lists representing modes where anti conceal + -- behavior will be ignored. Valid values are: + -- bullet + -- callout + -- check_icon, check_scope + -- code_background, code_border, code_language + -- dash + -- head_background, head_border, head_icon + -- indent + -- link + -- quote + -- sign + -- table_border + -- virtual_lines + ignore = { + code_background = true, + indent = true, + sign = true, + virtual_lines = true, + }, + }, + padding = { + -- Highlight to use when adding whitespace, should match background. + highlight = "Normal", + }, + latex = { + -- Turn on / off latex rendering. + enabled = true, + -- Additional modes to render latex. + render_modes = false, + -- Executable used to convert latex formula to rendered unicode. + converter = "latex2text", + -- Highlight for latex blocks. + highlight = "RenderMarkdownMath", + -- Determines where latex formula is rendered relative to block. + -- | above | above latex block | + -- | below | below latex block | + position = "above", + -- Number of empty lines above latex blocks. + top_pad = 0, + -- Number of empty lines below latex blocks. + bottom_pad = 0, + }, + on = { + -- Called when plugin initially attaches to a buffer. + attach = function() end, + -- Called before adding marks to the buffer for the first time. + initial = function() end, + -- Called after plugin renders a buffer. + render = function() end, + -- Called after plugin clears a buffer. + clear = function() end, + }, + completions = { + -- Settings for blink.cmp completions source + blink = { enabled = false }, + -- Settings for coq_nvim completions source + coq = { enabled = false }, + -- Settings for in-process language server completions + lsp = { enabled = false }, + filter = { + callout = function() + -- example to exclude obsidian callouts + -- return value.category ~= 'obsidian' + return true + end, + checkbox = function() + return true + end, + }, + }, + heading = { + -- Useful context to have when evaluating values. + -- | level | the number of '#' in the heading marker | + -- | sections | for each level how deeply nested the heading is | + + -- Turn on / off heading icon & background rendering. + enabled = true, + -- Additional modes to render headings. + render_modes = false, + -- Turn on / off atx heading rendering. + atx = true, + -- Turn on / off setext heading rendering. + setext = true, + -- Turn on / off any sign column related rendering. + sign = true, + -- Replaces '#+' of 'atx_h._marker'. + -- Output is evaluated depending on the type. + -- | function | `value(context)` | + -- | string[] | `cycle(value, context.level)` | + icons = { "󰲡 ", "󰲣 ", "󰲥 ", "󰲧 ", "󰲩 ", "󰲫 " }, + -- Determines how icons fill the available space. + -- | right | '#'s are concealed and icon is appended to right side | + -- | inline | '#'s are concealed and icon is inlined on left side | + -- | overlay | icon is left padded with spaces and inserted on left hiding any additional '#' | + position = "overlay", + -- Added to the sign column if enabled. + -- Output is evaluated by `cycle(value, context.level)`. + signs = { "󰫎 " }, + -- Width of the heading background. + -- | block | width of the heading text | + -- | full | full width of the window | + -- Can also be a list of the above values evaluated by `clamp(value, context.level)`. + width = "full", + -- Amount of margin to add to the left of headings. + -- Margin available space is computed after accounting for padding. + -- If a float < 1 is provided it is treated as a percentage of available window space. + -- Can also be a list of numbers evaluated by `clamp(value, context.level)`. + left_margin = 0, + -- Amount of padding to add to the left of headings. + -- Output is evaluated using the same logic as 'left_margin'. + left_pad = 0, + -- Amount of padding to add to the right of headings when width is 'block'. + -- Output is evaluated using the same logic as 'left_margin'. + right_pad = 0, + -- Minimum width to use for headings when width is 'block'. + -- Can also be a list of integers evaluated by `clamp(value, context.level)`. + min_width = 0, + -- Determines if a border is added above and below headings. + -- Can also be a list of booleans evaluated by `clamp(value, context.level)`. + border = false, + -- Always use virtual lines for heading borders instead of attempting to use empty lines. + border_virtual = false, + -- Highlight the start of the border using the foreground highlight. + border_prefix = false, + -- Used above heading for border. + above = "▄", + -- Used below heading for border. + below = "▀", + -- Highlight for the heading icon and extends through the entire line. + -- Output is evaluated by `clamp(value, context.level)`. + backgrounds = { + "RenderMarkdownH1Bg", + "RenderMarkdownH2Bg", + "RenderMarkdownH3Bg", + "RenderMarkdownH4Bg", + "RenderMarkdownH5Bg", + "RenderMarkdownH6Bg", + }, + -- Highlight for the heading and sign icons. + -- Output is evaluated using the same logic as 'backgrounds'. + foregrounds = { + "RenderMarkdownH1", + "RenderMarkdownH2", + "RenderMarkdownH3", + "RenderMarkdownH4", + "RenderMarkdownH5", + "RenderMarkdownH6", + }, + -- Define custom heading patterns which allow you to override various properties based on + -- the contents of a heading. + -- The key is for healthcheck and to allow users to change its values, value type below. + -- | pattern | matched against the heading text @see :h lua-patterns | + -- | icon | optional override for the icon | + -- | background | optional override for the background | + -- | foreground | optional override for the foreground | + custom = {}, + }, + paragraph = { + -- Useful context to have when evaluating values. + -- | text | text value of the node | + + -- Turn on / off paragraph rendering. + enabled = true, + -- Additional modes to render paragraphs. + render_modes = false, + -- Amount of margin to add to the left of paragraphs. + -- If a float < 1 is provided it is treated as a percentage of available window space. + -- Output is evaluated depending on the type. + -- | function | `value(context)` | + -- | number | `value` | + left_margin = 0, + -- Amount of padding to add to the first line of each paragraph. + -- Output is evaluated using the same logic as 'left_margin'. + indent = 0, + -- Minimum width to use for paragraphs. + min_width = 0, + }, + code = { + -- Turn on / off code block & inline code rendering. + enabled = true, + -- Additional modes to render code blocks. + render_modes = false, + -- Turn on / off any sign column related rendering. + sign = true, + -- Determines how code blocks & inline code are rendered. + -- | none | disables all rendering | + -- | normal | background highlighting + padding | + -- | language | language heading with icon + sign column | + -- | full | normal + language | + style = "full", + -- Whether to conceal nodes at the top and bottom of code blocks. + conceal_delimiters = true, + -- Turn on / off any language heading related rendering. + language = true, + -- Determines where language icon is rendered. + -- | right | right side of code block | + -- | left | left side of code block | + position = "left", + -- Whether to include the language icon above code blocks. + language_icon = true, + -- Whether to include the language name above code blocks. + language_name = true, + -- Whether to include the language info above code blocks. + language_info = true, + -- Amount of padding to add around the language. + -- If a float < 1 is provided it is treated as a percentage of available window space. + language_pad = 0, + -- A list of language names for which background highlighting will be disabled. + -- Likely because that language has background highlights itself. + -- Use a boolean to make behavior apply to all languages. + -- Borders above & below blocks will continue to be rendered. + disable_background = { "diff" }, + -- Width of the code block background. + -- | block | width of the code block | + -- | full | full width of the window | + width = "full", + -- Amount of margin to add to the left of code blocks. + -- If a float < 1 is provided it is treated as a percentage of available window space. + -- Margin available space is computed after accounting for padding. + left_margin = 0, + -- Amount of padding to add to the left of code blocks. + -- If a float < 1 is provided it is treated as a percentage of available window space. + left_pad = 0, + -- Amount of padding to add to the right of code blocks when width is 'block'. + -- If a float < 1 is provided it is treated as a percentage of available window space. + right_pad = 0, + -- Minimum width to use for code blocks when width is 'block'. + min_width = 0, + -- Determines how the top / bottom of code block are rendered. + -- | none | do not render a border | + -- | thick | use the same highlight as the code body | + -- | thin | when lines are empty overlay the above & below icons | + -- | hide | conceal lines unless language name or icon is added | + border = "hide", + -- Used above code blocks to fill remaining space around language. + language_border = "█", + -- Added to the left of language. + language_left = "", + -- Added to the right of language. + language_right = "", + -- Used above code blocks for thin border. + above = "▄", + -- Used below code blocks for thin border. + below = "▀", + -- Icon to add to the left of inline code. + inline_left = "", + -- Icon to add to the right of inline code. + inline_right = "", + -- Padding to add to the left & right of inline code. + inline_pad = 0, + -- Highlight for code blocks. + highlight = "RenderMarkdownCode", + -- Highlight for code info section, after the language. + highlight_info = "RenderMarkdownCodeInfo", + -- Highlight for language, overrides icon provider value. + highlight_language = nil, + -- Highlight for border, use false to add no highlight. + highlight_border = "RenderMarkdownCodeBorder", + -- Highlight for language, used if icon provider does not have a value. + highlight_fallback = "RenderMarkdownCodeFallback", + -- Highlight for inline code. + highlight_inline = "RenderMarkdownCodeInline", + }, + dash = { + -- Turn on / off thematic break rendering. + enabled = true, + -- Additional modes to render dash. + render_modes = false, + -- Replaces '---'|'***'|'___'|'* * *' of 'thematic_break'. + -- The icon gets repeated across the window's width. + icon = "─", + -- Width of the generated line. + -- | | a hard coded width value | + -- | full | full width of the window | + -- If a float < 1 is provided it is treated as a percentage of available window space. + width = "full", + -- Amount of margin to add to the left of dash. + -- If a float < 1 is provided it is treated as a percentage of available window space. + left_margin = 0, + -- Highlight for the whole line generated from the icon. + highlight = "RenderMarkdownDash", + }, + document = { + -- Turn on / off document rendering. + enabled = true, + -- Additional modes to render document. + render_modes = false, + -- Ability to conceal arbitrary ranges of text based on lua patterns, @see :h lua-patterns. + -- Relies entirely on user to set patterns that handle their edge cases. + conceal = { + -- Matched ranges will be concealed using character level conceal. + char_patterns = {}, + -- Matched ranges will be concealed using line level conceal. + line_patterns = {}, + }, + }, + bullet = { + -- Useful context to have when evaluating values. + -- | level | how deeply nested the list is, 1-indexed | + -- | index | how far down the item is at that level, 1-indexed | + -- | value | text value of the marker node | + + -- Turn on / off list bullet rendering + enabled = true, + -- Additional modes to render list bullets + render_modes = false, + -- Replaces '-'|'+'|'*' of 'list_item'. + -- If the item is a 'checkbox' a conceal is used to hide the bullet instead. + -- Output is evaluated depending on the type. + -- | function | `value(context)` | + -- | string | `value` | + -- | string[] | `cycle(value, context.level)` | + -- | string[][] | `clamp(cycle(value, context.level), context.index)` | + icons = { "●", "○", "◆", "◇" }, + -- Replaces 'n.'|'n)' of 'list_item'. + -- Output is evaluated using the same logic as 'icons'. + ordered_icons = function(ctx) + local value = vim.trim(ctx.value) + local index = tonumber(value:sub(1, #value - 1)) + return ("%d."):format(index > 1 and index or ctx.index) + end, + -- Padding to add to the left of bullet point. + -- Output is evaluated depending on the type. + -- | function | `value(context)` | + -- | integer | `value` | + left_pad = 0, + -- Padding to add to the right of bullet point. + -- Output is evaluated using the same logic as 'left_pad'. + right_pad = 0, + -- Highlight for the bullet icon. + -- Output is evaluated using the same logic as 'icons'. + highlight = "RenderMarkdownBullet", + -- Highlight for item associated with the bullet point. + -- Output is evaluated using the same logic as 'icons'. + scope_highlight = {}, + }, + checkbox = { + -- Checkboxes are a special instance of a 'list_item' that start with a 'shortcut_link'. + -- There are two special states for unchecked & checked defined in the markdown grammar. + + -- Turn on / off checkbox state rendering. + enabled = true, + -- Additional modes to render checkboxes. + render_modes = false, + -- Render the bullet point before the checkbox. + bullet = false, + -- Padding to add to the right of checkboxes. + right_pad = 1, + unchecked = { + -- Replaces '[ ]' of 'task_list_marker_unchecked'. + icon = "󰄱 ", + -- Highlight for the unchecked icon. + highlight = "RenderMarkdownUnchecked", + -- Highlight for item associated with unchecked checkbox. + scope_highlight = nil, + }, + checked = { + -- Replaces '[x]' of 'task_list_marker_checked'. + icon = "󰱒 ", + -- Highlight for the checked icon. + highlight = "RenderMarkdownChecked", + -- Highlight for item associated with checked checkbox. + scope_highlight = nil, + }, + -- Define custom checkbox states, more involved, not part of the markdown grammar. + -- As a result this requires neovim >= 0.10.0 since it relies on 'inline' extmarks. + -- The key is for healthcheck and to allow users to change its values, value type below. + -- | raw | matched against the raw text of a 'shortcut_link' | + -- | rendered | replaces the 'raw' value when rendering | + -- | highlight | highlight for the 'rendered' icon | + -- | scope_highlight | optional highlight for item associated with custom checkbox | + -- stylua: ignore + custom = { + todo = { raw = '[-]', rendered = '󰥔 ', highlight = 'RenderMarkdownTodo', scope_highlight = nil }, + }, + }, + quote = { + -- Turn on / off block quote & callout rendering. + enabled = true, + -- Additional modes to render quotes. + render_modes = false, + -- Replaces '>' of 'block_quote'. + icon = "▋", + -- Whether to repeat icon on wrapped lines. Requires neovim >= 0.10. This will obscure text + -- if incorrectly configured with :h 'showbreak', :h 'breakindent' and :h 'breakindentopt'. + -- A combination of these that is likely to work follows. + -- | showbreak | ' ' (2 spaces) | + -- | breakindent | true | + -- | breakindentopt | '' (empty string) | + -- These are not validated by this plugin. If you want to avoid adding these to your main + -- configuration then set them in win_options for this plugin. + repeat_linebreak = false, + -- Highlight for the quote icon. + -- If a list is provided output is evaluated by `cycle(value, level)`. + highlight = { + "RenderMarkdownQuote1", + "RenderMarkdownQuote2", + "RenderMarkdownQuote3", + "RenderMarkdownQuote4", + "RenderMarkdownQuote5", + "RenderMarkdownQuote6", + }, + }, + pipe_table = { + -- Turn on / off pipe table rendering. + enabled = true, + -- Additional modes to render pipe tables. + render_modes = false, + -- Pre configured settings largely for setting table border easier. + -- | heavy | use thicker border characters | + -- | double | use double line border characters | + -- | round | use round border corners | + -- | none | does nothing | + preset = "none", + -- Determines how the table as a whole is rendered. + -- | none | disables all rendering | + -- | normal | applies the 'cell' style rendering to each row of the table | + -- | full | normal + a top & bottom line that fill out the table when lengths match | + style = "full", + -- Determines how individual cells of a table are rendered. + -- | overlay | writes completely over the table, removing conceal behavior and highlights | + -- | raw | replaces only the '|' characters in each row, leaving the cells unmodified | + -- | padded | raw + cells are padded to maximum visual width for each column | + -- | trimmed | padded except empty space is subtracted from visual width calculation | + cell = "padded", + -- Amount of space to put between cell contents and border. + padding = 1, + -- Minimum column width to use for padded or trimmed cell. + min_width = 0, + -- Characters used to replace table border. + -- Correspond to top(3), delimiter(3), bottom(3), vertical, & horizontal. + -- stylua: ignore + border = { + '┌', '┬', '┐', + '├', '┼', '┤', + '└', '┴', '┘', + '│', '─', + }, + -- Always use virtual lines for table borders instead of attempting to use empty lines. + -- Will be automatically enabled if indentation module is enabled. + border_virtual = false, + -- Gets placed in delimiter row for each column, position is based on alignment. + alignment_indicator = "━", + -- Highlight for table heading, delimiter, and the line above. + head = "RenderMarkdownTableHead", + -- Highlight for everything else, main table rows and the line below. + row = "RenderMarkdownTableRow", + -- Highlight for inline padding used to add back concealed space. + filler = "RenderMarkdownTableFill", + }, + callout = { + -- Callouts are a special instance of a 'block_quote' that start with a 'shortcut_link'. + -- The key is for healthcheck and to allow users to change its values, value type below. + -- | raw | matched against the raw text of a 'shortcut_link', case insensitive | + -- | rendered | replaces the 'raw' value when rendering | + -- | highlight | highlight for the 'rendered' text and quote markers | + -- | quote_icon | optional override for quote.icon value for individual callout | + -- | category | optional metadata useful for filtering | + + note = { + raw = "[!NOTE]", + rendered = "󰋽 Note", + highlight = "RenderMarkdownInfo", + category = "github", + }, + tip = { + raw = "[!TIP]", + rendered = "󰌶 Tip", + highlight = "RenderMarkdownSuccess", + category = "github", + }, + important = { + raw = "[!IMPORTANT]", + rendered = "󰅾 Important", + highlight = "RenderMarkdownHint", + category = "github", + }, + warning = { + raw = "[!WARNING]", + rendered = "󰀪 Warning", + highlight = "RenderMarkdownWarn", + category = "github", + }, + caution = { + raw = "[!CAUTION]", + rendered = "󰳦 Caution", + highlight = "RenderMarkdownError", + category = "github", + }, + -- Obsidian: https://help.obsidian.md/Editing+and+formatting/Callouts + abstract = { + raw = "[!ABSTRACT]", + rendered = "󰨸 Abstract", + highlight = "RenderMarkdownInfo", + category = "obsidian", + }, + summary = { + raw = "[!SUMMARY]", + rendered = "󰨸 Summary", + highlight = "RenderMarkdownInfo", + category = "obsidian", + }, + tldr = { + raw = "[!TLDR]", + rendered = "󰨸 Tldr", + highlight = "RenderMarkdownInfo", + category = "obsidian", + }, + info = { + raw = "[!INFO]", + rendered = "󰋽 Info", + highlight = "RenderMarkdownInfo", + category = "obsidian", + }, + todo = { + raw = "[!TODO]", + rendered = "󰗡 Todo", + highlight = "RenderMarkdownInfo", + category = "obsidian", + }, + hint = { + raw = "[!HINT]", + rendered = "󰌶 Hint", + highlight = "RenderMarkdownSuccess", + category = "obsidian", + }, + success = { + raw = "[!SUCCESS]", + rendered = "󰄬 Success", + highlight = "RenderMarkdownSuccess", + category = "obsidian", + }, + check = { + raw = "[!CHECK]", + rendered = "󰄬 Check", + highlight = "RenderMarkdownSuccess", + category = "obsidian", + }, + done = { + raw = "[!DONE]", + rendered = "󰄬 Done", + highlight = "RenderMarkdownSuccess", + category = "obsidian", + }, + question = { + raw = "[!QUESTION]", + rendered = "󰘥 Question", + highlight = "RenderMarkdownWarn", + category = "obsidian", + }, + help = { + raw = "[!HELP]", + rendered = "󰘥 Help", + highlight = "RenderMarkdownWarn", + category = "obsidian", + }, + faq = { + raw = "[!FAQ]", + rendered = "󰘥 Faq", + highlight = "RenderMarkdownWarn", + category = "obsidian", + }, + attention = { + raw = "[!ATTENTION]", + rendered = "󰀪 Attention", + highlight = "RenderMarkdownWarn", + category = "obsidian", + }, + failure = { + raw = "[!FAILURE]", + rendered = "󰅖 Failure", + highlight = "RenderMarkdownError", + category = "obsidian", + }, + fail = { + raw = "[!FAIL]", + rendered = "󰅖 Fail", + highlight = "RenderMarkdownError", + category = "obsidian", + }, + missing = { + raw = "[!MISSING]", + rendered = "󰅖 Missing", + highlight = "RenderMarkdownError", + category = "obsidian", + }, + danger = { + raw = "[!DANGER]", + rendered = "󱐌 Danger", + highlight = "RenderMarkdownError", + category = "obsidian", + }, + error = { + raw = "[!ERROR]", + rendered = "󱐌 Error", + highlight = "RenderMarkdownError", + category = "obsidian", + }, + bug = { + raw = "[!BUG]", + rendered = "󰨰 Bug", + highlight = "RenderMarkdownError", + category = "obsidian", + }, + example = { + raw = "[!EXAMPLE]", + rendered = "󰉹 Example", + highlight = "RenderMarkdownHint", + category = "obsidian", + }, + quote = { + raw = "[!QUOTE]", + rendered = "󱆨 Quote", + highlight = "RenderMarkdownQuote", + category = "obsidian", + }, + cite = { + raw = "[!CITE]", + rendered = "󱆨 Cite", + highlight = "RenderMarkdownQuote", + category = "obsidian", + }, + }, + link = { + -- Turn on / off inline link icon rendering. + enabled = true, + -- Additional modes to render links. + render_modes = false, + -- How to handle footnote links, start with a '^'. + footnote = { + -- Turn on / off footnote rendering. + enabled = true, + -- Replace value with superscript equivalent. + superscript = true, + -- Added before link content. + prefix = "", + -- Added after link content. + suffix = "", + }, + -- Inlined with 'image' elements. + image = "󰥶 ", + -- Inlined with 'email_autolink' elements. + email = "󰀓 ", + -- Fallback icon for 'inline_link' and 'uri_autolink' elements. + hyperlink = "󰌹 ", + -- Applies to the inlined icon as a fallback. + highlight = "RenderMarkdownLink", + -- Applies to WikiLink elements. + wiki = { + icon = "󱗖 ", + body = function() + return nil + end, + highlight = "RenderMarkdownWikiLink", + }, + -- Define custom destination patterns so icons can quickly inform you of what a link + -- contains. Applies to 'inline_link', 'uri_autolink', and wikilink nodes. When multiple + -- patterns match a link the one with the longer pattern is used. + -- The key is for healthcheck and to allow users to change its values, value type below. + -- | pattern | matched against the destination text | + -- | icon | gets inlined before the link text | + -- | kind | optional determines how pattern is checked | + -- | | pattern | @see :h lua-patterns, is the default if not set | + -- | | suffix | @see :h vim.endswith() | + -- | priority | optional used when multiple match, uses pattern length if empty | + -- | highlight | optional highlight for 'icon', uses fallback highlight if empty | + custom = { + web = { pattern = "^http", icon = "󰖟 " }, + discord = { pattern = "discord%.com", icon = "󰙯 " }, + github = { pattern = "github%.com", icon = "󰊤 " }, + gitlab = { pattern = "gitlab%.com", icon = "󰮠 " }, + google = { pattern = "google%.com", icon = "󰊭 " }, + neovim = { pattern = "neovim%.io", icon = " " }, + reddit = { pattern = "reddit%.com", icon = "󰑍 " }, + stackoverflow = { pattern = "stackoverflow%.com", icon = "󰓌 " }, + wikipedia = { pattern = "wikipedia%.org", icon = "󰖬 " }, + youtube = { pattern = "youtube%.com", icon = "󰗃 " }, + }, + }, + sign = { + -- Turn on / off sign rendering. + enabled = true, + -- Applies to background of sign text. + highlight = "RenderMarkdownSign", + }, + inline_highlight = { + -- Mimics Obsidian inline highlights when content is surrounded by double equals. + -- The equals on both ends are concealed and the inner content is highlighted. + + -- Turn on / off inline highlight rendering. + enabled = true, + -- Additional modes to render inline highlights. + render_modes = false, + -- Applies to background of surrounded text. + highlight = "RenderMarkdownInlineHighlight", + }, + indent = { + -- Mimic org-indent-mode behavior by indenting everything under a heading based on the + -- level of the heading. Indenting starts from level 2 headings onward by default. + + -- Turn on / off org-indent-mode. + enabled = false, + -- Additional modes to render indents. + render_modes = false, + -- Amount of additional padding added for each heading level. + per_level = 2, + -- Heading levels <= this value will not be indented. + -- Use 0 to begin indenting from the very first level. + skip_level = 1, + -- Do not indent heading titles, only the body. + skip_heading = false, + -- Prefix added when indenting, one per level. + icon = "▎", + -- Priority to assign to extmarks. + priority = 0, + -- Applied to icon. + highlight = "RenderMarkdownIndent", + }, + html = { + -- Turn on / off all HTML rendering. + enabled = true, + -- Additional modes to render HTML. + render_modes = false, + comment = { + -- Turn on / off HTML comment concealing. + conceal = true, + -- Optional text to inline before the concealed comment. + text = nil, + -- Highlight for the inlined text. + highlight = "RenderMarkdownHtmlComment", + }, + -- HTML tags whose start and end will be hidden and icon shown. + -- The key is matched against the tag name, value type below. + -- | icon | gets inlined at the start | + -- | highlight | highlight for the icon | + tag = {}, + }, + win_options = { + -- Window options to use that change between rendered and raw view. + + -- @see :h 'conceallevel' + conceallevel = { + -- Used when not being rendered, get user setting. + default = vim.o.conceallevel, + -- Used when being rendered, concealed text is completely hidden. + rendered = 3, + }, + -- @see :h 'concealcursor' + concealcursor = { + -- Used when not being rendered, get user setting. + default = vim.o.concealcursor, + -- Used when being rendered, show concealed text in all modes. + rendered = "", + }, + }, + overrides = { + -- More granular configuration mechanism, allows different aspects of buffers to have their own + -- behavior. Values default to the top level configuration if no override is provided. Supports + -- the following fields: + -- enabled, max_file_size, debounce, render_modes, anti_conceal, padding, heading, paragraph, + -- code, dash, bullet, checkbox, quote, pipe_table, callout, link, sign, indent, latex, html, + -- win_options + + -- Override for different buflisted values, @see :h 'buflisted'. + buflisted = {}, + -- Override for different buftype values, @see :h 'buftype'. + buftype = { + nofile = { + render_modes = true, + padding = { highlight = "NormalFloat" }, + sign = { enabled = false }, + }, + }, + -- Override for different filetype values, @see :h 'filetype'. + filetype = {}, + }, + custom_handlers = { + -- Mapping from treesitter language to user defined handlers. + -- @see [Custom Handlers](doc/custom-handlers.md) + }, +} diff --git a/.config/nvim/lua/mappings.lua b/.config/nvim/lua/mappings.lua index 8f47e6b..a118e57 100644 --- a/.config/nvim/lua/mappings.lua +++ b/.config/nvim/lua/mappings.lua @@ -5,7 +5,15 @@ require "nvchad.mappings" local map = vim.keymap.set map("n", ";", ":", { desc = "CMD enter command mode" }) -map({ "n", "i", "v" }, "dg", " lua vim.diagnostic.open_float()", { desc = "Float diagnostic" }) +map("n", "gd", vim.lsp.buf.definition, { desc = "Go to definition" }) + +local builtin = require "telescope.builtin" + +map("n", "gD", builtin.lsp_definitions, { desc = "Go to definitions" }) +map("n", "grr", builtin.lsp_references, { desc = "Go to references" }) + +map({ "n", "v" }, "ge", ":Gen") + +map("n", "gl", "lua vim.lsp.buf.code_action()", { noremap = true, silent = true }) -- map({ "n", "i", "v" }, "", " w ") - diff --git a/.config/nvim/lua/plugins/init.lua b/.config/nvim/lua/plugins/init.lua index 4e5f5bb..fd42378 100644 --- a/.config/nvim/lua/plugins/init.lua +++ b/.config/nvim/lua/plugins/init.lua @@ -5,7 +5,6 @@ return { opts = require "configs.conform", }, - -- These are some examples, uncomment them if you want to see them work! { "neovim/nvim-lspconfig", config = function() @@ -13,18 +12,85 @@ return { end, }, + -- Custom Parameters (with defaults) { - "nvim-treesitter/nvim-treesitter", + "David-Kunz/gen.nvim", opts = { - ensure_installed = { - "vim", - "lua", - "vimdoc", - "html", - "css", - "typescript", - "javascript", - }, + -- model = "llama3.2:3b", -- The default model to use. + model = "mistral-small:22b", + -- host = "192.168.0.17", + quit_map = "q", -- set keymap to close the response window + retry_map = "", -- set keymap to re-send the current prompt + accept_map = "", -- set keymap to replace the previous selection with the last result + -- host = "localhost", -- The host running the Ollama service. + host = "192.168.0.204", -- The host running the Ollama service. + port = "11434", -- The port on which the Ollama service is listening. + display_mode = "vertical-split", -- The display mode. Can be "float" or "split" or "horizontal-split" or "vertical-split". + show_prompt = true, -- Shows the prompt submitted to Ollama. Can be true (3 lines) or "full". + show_model = true, -- Displays which model you are using at the beginning of your chat session. + no_auto_close = false, -- Never closes the window automatically. + file = false, -- Write the payload to a temporary file to keep the command short. + hidden = false, -- Hide the generation window (if true, will implicitly set `prompt.replace = true`), requires Neovim >= 0.10 + init = function(options) + pcall(io.popen, "ollama serve > /dev/null 2>&1 &") + end, + -- Function to initialize Ollama + command = function(options) + local body = { model = options.model, stream = true } + return "curl --silent --no-buffer -X POST http://" + .. options.host + .. ":" + .. options.port + .. "/api/chat -d $body" + end, + -- The command for the Ollama service. You can use placeholders $prompt, $model and $body (shellescaped). + -- This can also be a command string. + -- The executed command must return a JSON object with { response, context } + -- (context property is optional). + -- list_models = '', -- Retrieves a list of model names + result_filetype = "markdown", -- Configure filetype of the result buffer + debug = false, -- Prints errors and the command which is run. }, }, + { + "MeanderingProgrammer/render-markdown.nvim", + dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" }, -- if you use the mini.nvim suite + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons + ---@module 'render-markdown' + ---@type render.md.UserConfig + opts = {}, + }, + + -- { + -- "jacob411/Ollama-Copilot", + -- opts = { + -- model_name = "llama3:3b", + -- stream_suggestion = false, + -- python_command = "python3", + -- filetypes = { "python", "lua", "vim", "markdown", "javascript", "typescript" }, + -- ollama_model_opts = { + -- num_predict = 40, + -- temperature = 0.1, + -- }, + -- keymaps = { + -- suggestion = "os", + -- reject = "or", + -- insert_accept = "", + -- }, + -- }, + -- }, + + -- These are some examples, uncomment them if you want to see them work! + -- + -- { + -- "nvim-treesitter/nvim-treesitter", + -- opts = { + -- ensure_installed = { + -- "vim", "lua", "vimdoc", + -- "html", "css" + -- }, + -- }, + -- }, + -- }