{"id":37042874,"url":"https://github.com/mr-u0b0dy/crazy-coverage.nvim","last_synced_at":"2026-04-01T22:11:17.103Z","repository":{"id":331576605,"uuid":"1120611978","full_name":"mr-u0b0dy/crazy-coverage.nvim","owner":"mr-u0b0dy","description":"Neovim plugin for displaying code coverage","archived":false,"fork":false,"pushed_at":"2026-03-21T20:09:45.000Z","size":735,"stargazers_count":13,"open_issues_count":3,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-22T03:49:34.797Z","etag":null,"topics":["coverage","coverage-report","nvim","nvim-lua","nvim-plugin"],"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/mr-u0b0dy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"mr-u0b0dy","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2025-12-21T15:29:10.000Z","updated_at":"2026-03-21T20:09:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mr-u0b0dy/crazy-coverage.nvim","commit_stats":null,"previous_names":["mr-u0b0dy/crazy-coverage.nvim"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/mr-u0b0dy/crazy-coverage.nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mr-u0b0dy%2Fcrazy-coverage.nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mr-u0b0dy%2Fcrazy-coverage.nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mr-u0b0dy%2Fcrazy-coverage.nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mr-u0b0dy%2Fcrazy-coverage.nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mr-u0b0dy","download_url":"https://codeload.github.com/mr-u0b0dy/crazy-coverage.nvim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mr-u0b0dy%2Fcrazy-coverage.nvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292637,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["coverage","coverage-report","nvim","nvim-lua","nvim-plugin"],"created_at":"2026-01-14T05:00:26.175Z","updated_at":"2026-04-01T22:11:17.092Z","avatar_url":"https://github.com/mr-u0b0dy.png","language":"Lua","readme":"# crazy-coverage.nvim\n\nA Neovim plugin for displaying code coverage overlays directly in your editor with smart auto-loading and file watching.\n\n## Features\n\n- **Multi-Format Support**: LCOV, LLVM JSON, Cobertura XML, Go Coverprofile, GCOV, LLVM Profdata\n- **Smart Toggle**: Single command auto-loads coverage and watches for changes\n- **Flexible Display**: Show hit counts via virtual text or sign column\n- **Branch/Region Overlays**: Inspect branch and LLVM region hit details at cursor\n- **Tree Integration**: Coverage in NvimTree and neo-tree (optional)\n- **Configurable**: Customize colors, display behavior, and summary popup\n- **Navigation**: Jump between covered/uncovered/partial lines\n\n## Demo\n\n### Branch Coverage Overlay\n\n![Branch Coverage Overlay](assets/branch_coverage.png)\n\n### Coverage Summary\n\n![Coverage Summary](assets/Coverage_summary.png)\n\n### Region Coverage Overlay\n\n![Region Coverage Overlay](assets/region_coverage.png)\n\n## Supported Languages\n\n- **C/C++** - GCC (gcov/lcov), LLVM/Clang\n- **Go** - Native `go test -coverprofile` (`coverage.out`)\n- **Any Language** - Via LCOV, Cobertura XML, or LLVM JSON formats\n\nThe plugin supports any language that can generate coverage in one of the supported formats.\n\n## Installation\n\n### Using [lazy.nvim](https://github.com/folke/lazy.nvim)\n\n```lua\n{\n  \"mr-u0b0dy/crazy-coverage.nvim\",\n  config = function()\n    require(\"crazy-coverage\").setup()\n  end,\n}\n```\n\n### Using [packer.nvim](https://github.com/wbthomason/packer.nvim)\n\n```lua\nuse {\n  \"mr-u0b0dy/crazy-coverage.nvim\",\n  config = function()\n    require(\"crazy-coverage\").setup()\n  end,\n}\n```\n\nSee [Installation Guide](doc/installation.md) for other plugin managers and AstroVim setup.\n\n## Quick Start\n\n```lua\n-- Toggle coverage (auto-loads file, watches for changes)\n:CoverageToggle\n\n-- Navigate uncovered code\n]cu  \" Next uncovered line\n[cu  \" Previous uncovered line\n```\n\n**What the toggle does:**\n- Finds and loads coverage file automatically\n- Enables overlay with line highlighting  \n- Watches file for changes (auto-reloads)\n- Shows notifications on updates\n- Cleans up everything when disabled\n\n## Automatic Coverage File Discovery\n\nThe plugin intelligently finds your coverage file automatically. It:\n\n1. **Searches Standard Directories** in order:\n   - `build/coverage/` - CMake build output\n   - `coverage/` - Standard coverage directory\n   - `build/` - Build directory root\n   - `.` - Project root\n\n2. **Detects by Content** - Not just filenames:\n   - Finds LCOV files (even if not named `*.lcov`)\n   - Finds JSON coverage reports (even with custom names)\n   - Finds Cobertura XML files (regardless of filename)\n   - Finds Go coverprofile files (`coverage.out`)\n   - Finds GCOV/LLVM Profdata binary files\n\n3. **Supports Any Filename**:\n   ```\n   ✓ build/coverage_report              (no extension)\n   ✓ coverage_2025_01_09.json           (custom name)\n   ✓ results.xml                        (non-standard name)\n   ✓ my_coverage_data                   (any name works)\n   ```\n\nYou can customize the search directories in config:\n\n```lua\nrequire(\"crazy-coverage\").setup({\n  coverage_dirs = {\n    \"build/coverage\",      -- Search here first\n    \".coverage\",           -- Custom location\n    \"coverage\",\n    \".\",\n  }\n})\n```\n\nSee [Configuration Reference](doc/configuration.md#file-detection) for more details.\n\n## Configuration\n\n### Basic Setup\n\n```lua\nrequire(\"crazy-coverage\").setup({\n  hit_count = {\n    show_by_default = true,        -- Show hit counts when coverage is enabled\n    display = \"eol\",              -- \"eol\", \"inline\", \"overlay\", \"right_align\", \"sign\"\n  },\n  auto_adapt_colors = true,       -- Auto-adapt colors to your theme\n})\n```\n\n### Common Configurations\n\n```lua\n-- Right-aligned with branch coverage\nrequire(\"crazy-coverage\").setup({\n  hit_count = {\n    display = \"right_align\",\n  },\n  show_branch_summary = true,      -- Branch overlay header: taken/total + percentage\n})\n\n-- Custom colors (disable auto-adaptation)\nrequire(\"crazy-coverage\").setup({\n  auto_adapt_colors = false,\n  colors = {\n    covered = { bg = \"#1a4d1a\", fg = \"#66ff66\" },\n    uncovered = { bg = \"#4d1a1a\", fg = \"#ff6666\" },\n    partial = { bg = \"#4d4d1a\", fg = \"#ffff66\" },\n  },\n})\n\n-- Auto-adapt with one manual override\nrequire(\"crazy-coverage\").setup({\n  auto_adapt_colors = true,  -- Adapt most colors\n  colors = {\n    uncovered = \"#660000\",   -- But always use dark red for uncovered\n  },\n})\n```\n\nLegacy options (`default_show_hit_count`, `show_hit_count`) are still supported for compatibility.\n\nSee [Configuration Reference](doc/configuration.md) for all 15+ options.\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `:CoverageToggle` | Toggle coverage overlay (auto-loads, watches file) |\n| `:CoverageToggleHitCount` | Toggle hit count display |\n| `:CoverageToggleBranchOverlay` | Toggle branch overlay at cursor |\n| `:CoverageToggleRegionOverlay` | Toggle LLVM region overlay at cursor |\n| `:CoverageToggleNvimTree` | Toggle coverage display in NvimTree |\n| `:CoverageToggleNeoTree` | Toggle coverage display in neo-tree |\n| `:CoverageLoad \u003cfile\u003e` | Manually load specific coverage file |\n| `:CoverageSummary \u003cproject/file\u003e` | Show coverage summary popup (alias: `:CrazyCoverageSummary`) |\n| `:CoverageNextCovered` | Jump to next covered line |\n| `:CoveragePrevCovered` | Jump to previous covered line |\n| `:CoverageNextUncovered` | Jump to next uncovered line |\n| `:CoveragePrevUncovered` | Jump to previous uncovered line |\n| `:CoverageNextPartial` | Jump to next partially covered line |\n| `:CoveragePrevPartial` | Jump to previous partially covered line |\n\nSee [Usage Guide](doc/usage.md) for keybindings and navigation.\n\n## Documentation\n\n- **[Installation Guide](doc/installation.md)** - Plugin managers and AstroVim setup\n- **[Usage Guide](doc/usage.md)** - Commands, keybindings, and workflows\n- **[Configuration Reference](doc/configuration.md)** - All config options\n- **[Supported Formats](doc/formats.md)** - Coverage format details\n- **[Coverage Examples](coverage-examples/)** - C/C++/Go examples with GCC/LLVM/Go tools\n- **[Architecture](doc/architecture.md)** - Plugin design guide\n- **[Development](doc/development.md)** - Testing and contributing\n\n## Requirements\n\n- Neovim 0.7+\n- Coverage files from your build system (lcov, llvm-cov, etc.)\n\n## License\n\nApache License 2.0 - Copyright © 2026 mr-u0b0dy\n\n## Contributing\n\nSee [Development Guide](doc/development.md) for testing and contribution guidelines.\n","funding_links":["https://github.com/sponsors/mr-u0b0dy"],"categories":["Test"],"sub_categories":["Quickfix"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmr-u0b0dy%2Fcrazy-coverage.nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmr-u0b0dy%2Fcrazy-coverage.nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmr-u0b0dy%2Fcrazy-coverage.nvim/lists"}