{"id":21917170,"url":"https://github.com/oxy2dev/helpview.nvim","last_synced_at":"2025-04-12T18:45:58.830Z","repository":{"id":250562855,"uuid":"834808728","full_name":"OXY2DEV/helpview.nvim","owner":"OXY2DEV","description":"A hackable \u0026 fancy vimdoc/help file viewer for Neovim","archived":false,"fork":false,"pushed_at":"2025-03-07T18:21:08.000Z","size":10351,"stargazers_count":327,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-03T22:07:19.716Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OXY2DEV.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-28T12:31:45.000Z","updated_at":"2025-03-30T18:36:49.000Z","dependencies_parsed_at":"2024-07-28T13:58:19.191Z","dependency_job_id":"799ad584-a794-4a91-bda2-0ecf9828f2a5","html_url":"https://github.com/OXY2DEV/helpview.nvim","commit_stats":null,"previous_names":["oxy2dev/helpview.nvim"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OXY2DEV%2Fhelpview.nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OXY2DEV%2Fhelpview.nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OXY2DEV%2Fhelpview.nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OXY2DEV%2Fhelpview.nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OXY2DEV","download_url":"https://codeload.github.com/OXY2DEV/helpview.nvim/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248617472,"owners_count":21134191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-28T19:28:29.835Z","updated_at":"2025-04-12T18:45:58.795Z","avatar_url":"https://github.com/OXY2DEV.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧊 Helpview.nvim\n\n\u003cp align=\"center\"\u003e\n    A hackable \u0026 \u003ci\u003efancy\u003c/i\u003e vimdoc viewer for \u003ccode\u003eNeovim\u003c/code\u003e.\n\u003c/p\u003e\n\n\u003cimg src=\"https://github.com/OXY2DEV/helpview.nvim/blob/images/v2/repo/helpview-1.png\"\u003e\n\u003cimg src=\"https://github.com/OXY2DEV/helpview.nvim/blob/images/v2/repo/helpview-2.png\"\u003e\n\u003cimg src=\"https://github.com/OXY2DEV/helpview.nvim/blob/images/v2/repo/helpview-3.png\"\u003e\n\n\u003cimg src=\"https://github.com/OXY2DEV/helpview.nvim/blob/images/v2/wiki/hybrid_mode-normal.png\"\u003e\n\n\u003c!-- Images here --\u003e\n\n## 📖 Table of contents\n\n- [✨ Features](#-features)\n- [📚 Requirements](#-requirements)\n- [📐 Installation](#-installation)\n- [🧭 Configuration](#-configuration)\n\n- [🎇 Commands](#-commands)\n- [🎨 Highlight groups](#-highlight-groups)\n\n## ✨ Features\n\n- Adds various decorations to make `vimdoc` files *nicer* to look at.\n- No external dependencies(other than the `vimdoc` parser)!\n- Supports a variety of vimdoc syntaxes such as,\n\n    + Arguments.\n    + Code blocks.\n    + Headings(\u0026 column headings).\n    + Highlight group names.\n    + Horizontal rules.\n    + Inline codes.\n    + Keycodes.\n    + Vim modeline.\n    + Notes.\n    + Option links.\n    + Tags.\n    + Tag links.\n\n- Custom renderer support.\n- *Dynamic* highlight groups.\n- Hybrid mode for viewing \u0026 writing together.\n- Splitview for side-by-side viewing of the file being edited.\n- Help command wrappers(`:Help`, `:H`) to change *where* help is shown.\n\n## 📚 Requirements\n\nSystem,\n\n- **Neovim:** 0.10.3\n\n---\n\nColorscheme,\n\n- Any *tree-sitter* based colorscheme is recommended.\n\nExternal icon providers,\n\n\u003e[!NOTE]\n\u003e You need to change the config to use the desired icon provider.\n\u003e \n\u003e ```lua\n\u003e {\n\u003e     preview = {\n\u003e         icon_provider = \"internal\", -- \"mini\" or \"devicons\"\n\u003e     }\n\u003e }\n\u003e ```\n\n- [mini.icons](https://github.com/echasnovski/mini.icons)\n- [nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons)\n\nParsers,\n\n\u003e[!TIP]\n\u003e You can use `nvim-treesitter` to easily install parsers. You can install all the parsers with the following command,\n\u003e \n\u003e ```vim\n\u003e :TSInstall vimdoc\n\u003e ```\n\n- `vimdoc`\n\nFonts,\n\n- *Nerd fonts* are recommended.\n\n\u003e[!TIP]\n\u003e It is recommended to run `:checkhealth helpview` after installing the plugin to check if any potential issues exist.\n\n## 📐 Installation\n\n### 🧩 Vim-plug\n\nAdd this to your plugin list.\n\n```vim\nPlug \"OXY2DEV/helpview.nvim\"\n```\n\n### 💤 Lazy.nvim\n\n\u003e[!WARNING]\n\u003e Do *not* lazy load this plugin as it is already lazy-loaded.\n\u003e\n\u003e Lazy-loading will cause **more time** for the previews to load when starting Neovim.\n\nThe plugin should be loaded *after* your colorscheme to ensure the correct highlight groups are used.\n\n```lua\n-- For `plugins/helpview.lua` users.\nreturn {\n    \"OXY2DEV/helpview.nvim\",\n    lazy = false\n};\n```\n\n```lua\n-- For `plugins.lua` users.\n{\n    \"OXY2DEV/helpview.nvim\",\n    lazy = false\n},\n```\n\n### 🦠 Mini.deps\n\n```lua\nlocal MiniDeps = require(\"mini.deps\");\n\nMiniDeps.add({\n    source = \"OXY2DEV/helpview.nvim\"\n});\n```\n\n### 🌒 Rocks.nvim\n\n\u003e[!WARNING]\n\u003e `luarocks package` may sometimes be a bit behind `main`.\n\n```vim\n:Rocks install helpview.nvim\n```\n\n### 📥 GitHub release\n\nTagged releases can be found in the [release page](https://github.com/OXY2DEV/helpview.nvim/releases).\n\n\u003e[!NOTE]\n\u003e `Github releases` may sometimes be slightly behind `main`.\n\n### 🚨 Development version\n\nYou can use the [dev](https://github.com/OXY2DEV/helpview.nvim/tree/dev) branch to use test features.\n\n\u003e[!WARNING]\n\u003e Development releases can contain *breaking changes* and **experimental changes**.\n\u003e Use at your own risk!\n\n```lua\nreturn {\n    \"OXY2DEV/helpview.nvim\",\n    branch = \"dev\",\n    lazy = false\n};\n```\n\n## 🧭 Configuration\n\nCheck the [wiki](https://github.com/OXY2DEV/helpview.nvim/wiki) for the entire configuration table. A simplified version is given below.\n\n```lua\n--- Configuration for `helpview.nvim`.\n---@class helpview.config\n---\n--- Preview options.\n---@field preview? helpview.preview\n---\n--- Configuration options for vimdoc.\n---@field vimdoc? helpview.vimdoc\n---\n--- Custom highlight groups.\n---@field highlight_groups? table[]\n---\n--- Custom renderers\n---@field renderers? { [string]: function }\n{\n\trenderers = {},\n\n\tpreview = {\n\t\tenable = true,\n\t\tenable_hybrid_mode = true,\n\n\t\tmodes = { \"n\", \"c\", \"no\" },\n\t\thybrid_modes = {},\n\t\tlinewise_hybrid_mode = false,\n\n\t\tfiletypes = { \"help\" },\n\t\tignore_previews = {},\n\t\tignore_buftypes = {},\n\t\tcondition = nil,\n\n\t\tmax_buf_lines = 500,\n\t\tdraw_range = { 2 * vim.o.lines, 2 * vim.o.lines },\n\t\tedit_range = { 0, 0 },\n\n\t\tdebounce = 150,\n\t\tcallbacks = {},\n\n\t\ticon_provider = \"internal\",\n\n\t\tsplitview_winopts = { split = \"right\" },\n\t\tpreview_winopts = { width = math.floor(80) }\n\t},\n\n    vimdoc = {\n        arguments = {},\n        code_blocks = {},\n        headings = {},\n        highlight_groups = {},\n        horizontal_rules = {},\n        inline_codes = {},\n        keycodes = {},\n        modelines = {},\n        notes = {},\n        optionlinks = {},\n        tags = {},\n        taglinks = {},\n        urls = {}\n    }\n}\n```\n\n## 🎇 Commands\n\nThis plugin follows the *sub-commands* approach for creating commands. There is only a single `:Helpview` command.\n\nIt comes with the following sub-commands,\n\n\u003e[!NOTE]\n\u003e When no sub-command name is provided(or an invalid sub-command is used) `:Helpview` will run `:Helpview Toggle`.\n\n\n| Sub-command  | Arguments           | Description                              |\n|--------------|---------------------|------------------------------------------|\n| `Start`      | none                | Allows attaching to new buffers.         |\n| `Stop`       | none                | Prevents attaching to new buffers.       |\n| ———————————— | ——————————————————— | ———————————————————————————————————————— |\n| `attach`     | **buffer**, integer | Attaches to **buffer**.                  |\n| `detach`     | **buffer**, integer | Detaches from **buffer**.                |\n| ———————————— | ——————————————————— | ———————————————————————————————————————— |\n| `Enable`     | none                | Enables preview *globally*.              |\n| `Disable`    | none                | Disables preview *globally*.             |\n| `Toggle`     | none                | Toggles preview *globally*.              |\n| ———————————— | ——————————————————— | ———————————————————————————————————————— |\n| `enable`     | **buffer**, integer | Enables preview for **buffer**.          |\n| `disable`    | **buffer**, integer | Disables preview for **buffer**.         |\n| `toggle`     | **buffer**, integer | Toggles preview for **buffer**.          |\n| ———————————— | ——————————————————— | ———————————————————————————————————————— |\n| `splitOpen`  | **buffer**, integer | Opens *splitview* for **buffer**.        |\n| `splitClose` | none                | Closes any open *splitview*.             |\n| `splitToggle`| none                | Toggles *splitview*.                     |\n| `splitRedraw`| none                | Updates *splitview* contents.            |\n| ———————————— | ——————————————————— | ———————————————————————————————————————— |\n| `Render`     | none                | Updates preview of all *active* buffers. |\n| `Clear`      | none                | Clears preview of all **active** buffer. |\n| ———————————— | ——————————————————— | ———————————————————————————————————————— |\n| `render`     | **buffer**, integer | Renders preview for **buffer**.          |\n| `clear`      | **buffer**, integer | Clears preview for **buffer**.           |\n| ———————————— | ——————————————————— | ———————————————————————————————————————— |\n| `toggleAll`  | none                | **Deprecated** version of `Toggle`.      |\n| `enableAll`  | none                | **Deprecated** version of `Enable`.      |\n| `disableAll` | none                | **Deprecated** version of `Disable`.     |\n| ———————————— | ——————————————————— | ———————————————————————————————————————— |\n| `traceExport`| none                | Exports trace logs to `trace.txt`.       |\n| `traceShow`  | none                | Shows trace logs in a window.            |\n\n\u003e[!TIP]\n\u003e **buffer** defaults to the current buffer. So, you can run commands on the current buffer without providing the buffer.\n\u003e ```vim\n\u003e :Helpview toggle \"Toggles preview of the current buffer.\n\u003e ```\n\n## 🎨 Highlight groups\n\n`helpview.nvim` creates a number of *primary highlight groups* that are used by most of the decorations.\n\n\u003e[!IMPORTANT]\n\u003e These groups are all **generated** during runtime and as such their colors may look different.\n\nIf you want to create your own *dynamic* highlight groups or modify existing ones, see the [custom highlight groups](placeholder) section.\n\n\n| Highlight group      | Generated from                           | Default                     |\n|----------------------|------------------------------------------|-----------------------------|\n| HelpviewPalette0     | Normal(bg) + Comment(fg)                 | fg: `#9399b2` bg: `#35374a` |\n| HelpviewPalette0Fg   | Comment(fg)                              | fg: `#9399b2`               |\n| HelpviewPalette0Bg   | Normal(bg) + Comment(fg)                 | bg: `#35374a`               |\n| HelpviewPalette0Sign | Normal(bg) + Comment(fg), LineNr(bg)     | fg: `#9399b2`               |\n| ———————————————————— | ———————————————————————————————————————— | ——————————————————————————— |\n| HelpviewPalette1     | Normal(bg) + markdownH1(fg)              | fg: `#f38ba8` bg: `#4d3649` |\n| HelpviewPalette1Fg   | markdownH1(fg)                           | fg: `#f38ba8`               |\n| HelpviewPalette1Bg   | Normal(bg) + markdownH1(fg)              | bg: `#4d3649`               |\n| HelpviewPalette1Sign | Normal(bg) + markdownH1(fg), LineNr(bg)  | fg: `#f38ba8`               |\n| ———————————————————— | ———————————————————————————————————————— | ——————————————————————————— |\n| HelpviewPalette2     | Normal(bg) + markdownH2(fg)              | fg: `#f9b387` bg: `#4d3d43` |\n| HelpviewPalette2Fg   | markdownH2(fg)                           | fg: `#f9b387`               |\n| HelpviewPalette2Bg   | Normal(bg) + markdownH2(fg)              | bg: `#4d3d43`               |\n| HelpviewPalette2Sign | Normal(bg) + markdownH2(fg), LineNr(bg)  | fg: `#f9b387`               |\n| ———————————————————— | ———————————————————————————————————————— | ——————————————————————————— |\n| HelpviewPalette3     | Normal(bg) + markdownH3(fg)              | fg: `#f9e2af` bg: `#4c474b` |\n| HelpviewPalette3Fg   | markdownH3(fg)                           | fg: `#f9e2af`               |\n| HelpviewPalette3Bg   | Normal(bg) + markdownH3(fg)              | bg: `#4c474b`               |\n| HelpviewPalette3Sign | Normal(bg) + markdownH3(fg), LineNr(bg)  | fg: `#f9e2af`               |\n| ———————————————————— | ———————————————————————————————————————— | ——————————————————————————— |\n| HelpviewPalette4     | Normal(bg) + markdownH4(fg)              | fg: `#a6e3a1` bg: `#3c4948` |\n| HelpviewPalette4Fg   | markdownH4(fg)                           | fg: `#a6e3a1`               |\n| HelpviewPalette4Bg   | Normal(bg) + markdownH4(fg)              | bg: `#3c4948`               |\n| HelpviewPalette4Sign | Normal(bg) + markdownH4(fg), LineNr(bg)  | fg: `#a6e3a1`               |\n| ———————————————————— | ———————————————————————————————————————— | ——————————————————————————— |\n| HelpviewPalette5     | Normal(bg) + markdownH5(fg)              | fg: `#74c7ec` bg: `#314358` |\n| HelpviewPalette5Fg   | markdownH5(fg)                           | fg: `#74c7ec`               |\n| HelpviewPalette5Bg   | Normal(bg) + markdownH5(fg)              | bg: `#314358`               |\n| HelpviewPalette5Sign | Normal(bg) + markdownH5(fg), LineNr(bg)  | fg: `#74c7ec`               |\n| ———————————————————— | ———————————————————————————————————————— | ——————————————————————————— |\n| HelpviewPalette6     | Normal(bg) + markdownH6(fg)              | fg: `#b4befe` bg: `#3c405b` |\n| HelpviewPalette6Fg   | markdownH6(fg)                           | fg: `#b4befe`               |\n| HelpviewPalette6Bg   | Normal(bg) + markdownH6(fg)              | bg: `#3c405b`               |\n| HelpviewPalette6Sign | Normal(bg) + markdownH6(fg), LineNr(bg)  | fg: `#b4befe`               |\n| ———————————————————— | ———————————————————————————————————————— | ——————————————————————————— |\n| HelpviewPalette7     | Normal(bg) + @conditional(fg)            | fg: `#cba6f7` bg: `#403b5a` |\n| HelpviewPalette7Fg   | @conditional(fg)                         | fg: `#cba6f7`               |\n| HelpviewPalette7Bg   | Normal(bg) + @conditional(fg)            | bg: `#403b5a`               |\n| HelpviewPalette7Sign | Normal(bg) + @conditional(fg), LineNr(bg)| fg: `#cba6f7`               |\n\n\n\u003e The source highlight group's values are turned into `Lab` color-space and then mixed to reduce unwanted results.\n\nThese groups are then used as links by other groups responsible for various preview elements,\n\n\u003e[!NOTE]\n\u003e These groups exist for the sake of *backwards compatibility* and *ease of use*.\n\u003e\n\u003e You will see something like `fg: Normal`, it means the *fg* of Normal was used as the *fg* of that group.\n\n\n| Highlight group           | value                                    |\n|---------------------------|------------------------------------------|\n| HelpviewCode              | bg\\*: `normal` ± 5%(L)                   |\n| HelpviewCodeInfo          | bg\\*: `normal` ± 5%(L), fg: `comment`    |\n| HelpviewCodeFg            | fg\\*: `normal` ± 5%(L)                   |\n| HelpviewInlineCode        | fg\\*: `normal` ± 10%(L)                  |\n| ————————————————————————— | ———————————————————————————————————————— |\n| HelpviewIcon0             | link\\*\\*: `HelpviewPalette0Fg`           |\n| HelpviewIcon1             | link\\*\\*: `HelpviewPalette1Fg`           |\n| HelpviewIcon2             | link\\*\\*: `HelpviewPalette5Fg`           |\n| HelpviewIcon3             | link\\*\\*: `HelpviewPalette4Fg`           |\n| HelpviewIcon4             | link\\*\\*: `HelpviewPalette3Fg`           |\n| HelpviewIcon5             | link\\*\\*: `HelpviewPalette2Fg`           |\n| ————————————————————————— | ———————————————————————————————————————— |\n| HelpviewGradient0         | fg: `Normal`                             |\n| HelpviewGradient1         | fg\\*\\*\\*: `lerp(Normal, Title, 1/9)`     |\n| HelpviewGradient2         | fg\\*\\*\\*: `lerp(Normal, Title, 2/9)`     |\n| HelpviewGradient3         | fg\\*\\*\\*: `lerp(Normal, Title, 3/9)`     |\n| HelpviewGradient4         | fg\\*\\*\\*: `lerp(Normal, Title, 4/9)`     |\n| HelpviewGradient5         | fg\\*\\*\\*: `lerp(Normal, Title, 5/9)`     |\n| HelpviewGradient6         | fg\\*\\*\\*: `lerp(Normal, Title, 6/9)`     |\n| HelpviewGradient7         | fg\\*\\*\\*: `lerp(Normal, Title, 7/9)`     |\n| HelpviewGradient8         | fg\\*\\*\\*: `lerp(Normal, Title, 8/9)`     |\n| HelpviewGradient9         | fg: `Title`                              |\n\n\n\u003e \\* = The color is converted to HSL and it's luminosity(L) is increased/decreased by the specified amount.\n\u003e \n\u003e \\*\\* = The background color of `HelpviewCode` is added to the groups.\n\u003e \n\u003e \\*\\*\\* = Linearly interpolated value between 2 highlight groups `fg`.\n\nThere are also highlight groups that are made using the default highlight groups\n\n\n| Highlight group           | Inherited from                           |\n|---------------------------|------------------------------------------|\n| HelpviewTaglink           | @markup.link.vimdoc                      |\n| HelpviewTag               | @label.vimdoc                            |\n| HelpviewTag               | @label.vimdoc                            |\n| HelpviewOptionlink        | @markup.link.vimdoc                      |\n| HelpviewKeycode           | @string.special.vimdoc                   |\n| HelpviewArgument          | @variable.parameter.vimdoc               |\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxy2dev%2Fhelpview.nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxy2dev%2Fhelpview.nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxy2dev%2Fhelpview.nvim/lists"}