{"id":27935572,"url":"https://github.com/dmarshaltu/yaml-jumper","last_synced_at":"2025-05-07T06:49:39.997Z","repository":{"id":290195872,"uuid":"973660730","full_name":"DmarshalTU/yaml-jumper","owner":"DmarshalTU","description":"A Neovim plugin for quickly navigating YAML files using Telescope.","archived":false,"fork":false,"pushed_at":"2025-05-06T10:50:45.000Z","size":85,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T06:49:35.324Z","etag":null,"topics":["neovim","plugin","telescope","yaml"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DmarshalTU.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"zenodo":null}},"created_at":"2025-04-27T13:23:24.000Z","updated_at":"2025-05-06T10:50:48.000Z","dependencies_parsed_at":"2025-04-27T14:37:27.650Z","dependency_job_id":null,"html_url":"https://github.com/DmarshalTU/yaml-jumper","commit_stats":null,"previous_names":["dmarshaltu/yaml-jumper"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmarshalTU%2Fyaml-jumper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmarshalTU%2Fyaml-jumper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmarshalTU%2Fyaml-jumper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmarshalTU%2Fyaml-jumper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DmarshalTU","download_url":"https://codeload.github.com/DmarshalTU/yaml-jumper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252831190,"owners_count":21810780,"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":["neovim","plugin","telescope","yaml"],"created_at":"2025-05-07T06:49:38.941Z","updated_at":"2025-05-07T06:49:39.990Z","avatar_url":"https://github.com/DmarshalTU.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YAML Jumper\n\nA Neovim plugin for quickly navigating YAML files using Telescope.\n\n## Features\n\n- **Navigate YAML paths with Telescope**: Quickly search and jump to any node in your YAML structure\n- **Search by value**: Find YAML paths by their values\n- **Path preview**: See what's at a selected path before jumping to it\n- **Multi-file search**: Search YAML paths and values across all project files\n- **Edit YAML values directly from the search interface**\n- **Performance optimized with intelligent caching**\n- **Smart error handling for large files**\n- **History tracking**: Quickly return to your recently used YAML paths and values\n- **Smart YAML Parsing**: Properly handles complex YAML structures including arrays and nested objects\n- **Performance profiling**: Optional debug mode for optimizing performance\n\n## Requirements\n\n- [Telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) or [Snacks.nvim](https://github.com/folke/snacks.nvim)\n- [Plenary.nvim](https://github.com/nvim-lua/plenary.nvim) (for multi-file search)\n- [lyaml](https://github.com/gvvaughan/lyaml) (optional, for improved YAML parsing)\n\n## Installation\n\n### Using [lazy.nvim](https://github.com/folke/lazy.nvim)\n\n```lua\n{\n  \"DmarshalTU/yaml-jumper\",\n  dependencies = {\n    \"nvim-telescope/telescope.nvim\",\n    \"nvim-lua/plenary.nvim\",\n  },\n  config = function()\n    require(\"yaml-jumper\").setup()\n  end,\n  ft = {\"yaml\", \"yml\"},\n}\n```\n\n### Using [packer.nvim](https://github.com/wbthomason/packer.nvim)\n\n```lua\nuse {\n  \"DmarshalTU/yaml-jumper\",\n  requires = { \n    \"nvim-telescope/telescope.nvim\",\n    \"nvim-lua/plenary.nvim\"\n  },\n  config = function()\n    require(\"yaml-jumper\").setup()\n  end\n}\n```\n\n### Optional Dependencies\n\nFor enhanced YAML parsing with proper support for complex structures, you can install the lyaml library:\n\n```bash\nluarocks install lyaml\n```\n\n## Usage\n\n- **Navigate to YAML path**: Use `\u003cleader\u003eyp` to open a Telescope picker and search for YAML paths\n- **Search by value**: Use `\u003cleader\u003eyv` to search for YAML values\n- **Multi-file search**: \n  - `\u003cleader\u003eyJ` - Search YAML paths across all project files\n  - `\u003cleader\u003eyV` - Search YAML values across all project files\n- **Edit values**: Press `\u003cC-e\u003e` on a search result to edit the value\n- **Browse history**: Press `\u003cleader\u003eyh` to view and jump to recently used paths and values\n\n## Configuration\n\n```lua\nrequire('yaml-jumper').setup({\n    -- Customizing keymaps\n    path_keymap = '\u003cleader\u003eyp',        -- Search paths in current file\n    value_keymap = '\u003cleader\u003eyv',       -- Search values in current file\n    project_path_keymap = '\u003cleader\u003eyJ', -- Search paths across project\n    project_value_keymap = '\u003cleader\u003eyV', -- Search values across project\n    history_keymap = '\u003cleader\u003eyh',     -- Browse search history\n    \n    -- Performance settings\n    max_file_size = 1024 * 1024,       -- Max file size to process (1MB)\n    max_preview_lines = 20,            -- Max lines to show in preview\n    depth_limit = 10,                  -- Max directory scan depth\n    \n    -- Cache settings\n    cache_enabled = true,              -- Enable caching for better performance\n    cache_ttl = 30,                    -- Cache time-to-live in seconds\n    max_history_items = 20,            -- Max number of items to keep in history\n    \n    -- Parser settings\n    use_smart_parser = true,           -- Use the enhanced YAML parser when available\n    \n    -- Picker settings\n    picker_type = \"telescope\",         -- Choose between \"telescope\" or \"snacks\"\n    \n    -- Debug settings\n    debug_performance = false,         -- Enable performance profiling and logging\n    \n    -- Highlight settings\n    highlights = {\n        enabled = true,\n        path = { bg = '#404040', fg = '#ffffff', bold = true },\n        key = { fg = '#ff9900', bg = '#333333', bold = true }\n    }\n})\n```\n\n## Special Commands\n\n- `:YamlJumpPath` - Jump to YAML path in current file\n- `:YamlJumpValue` - Search YAML values in current file\n- `:YamlJumpProject` - Search YAML paths across project files\n- `:YamlJumpValueProject` - Search YAML values across project files\n- `:YamlJumpClearCache` - Clear the YAML path and value cache\n- `:YamlJumpHistory` - Browse through your recently used paths and values\n\n## Performance Profiling\n\nYou can enable performance profiling to identify bottlenecks by setting `debug_performance = true` in your configuration. This will output timing information for various operations to help optimize the plugin for your specific environment.\n\nWhen enabled, you'll see detailed logs with:\n- Parsing times for both smart and traditional parsers\n- Cache hit/miss information\n- Path extraction and mapping times\n- Overall performance metrics\n\nThis is particularly useful when working with large YAML files or when experiencing any slowdowns.\n\n## Example\n\nFor the following YAML:\n\n```yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n```\n\n- Press `\u003cleader\u003eyp` and type \"meta\" to find the `metadata` path\n- Press `\u003cleader\u003eyp` and type \"spec.rep\" to find the `spec.replicas` path\n- Press `\u003cleader\u003eyv` and type \"nginx\" to find values containing \"nginx\"\n- Press `\u003cleader\u003eyJ` to search for paths across all YAML files in your project\n- Press `\u003cleader\u003eyV` to search for values across all YAML files in your project\n- The smart parser will correctly identify array items like `containers.1.name`\n\n## Performance Notes\n\nThe plugin includes several optimizations for handling large YAML files and projects:\n\n- **Smart caching**: Results are cached to improve response time for repeated operations\n- **File size limiting**: Very large files (\u003e1MB by default) are detected and warnings are shown\n- **Automatic cache invalidation**: Cache is updated when you save files\n- **Efficient parsing**: Optimized parsing algorithms for minimal memory usage\n- **Smart YAML parsing**: With the lyaml library, complex YAML structures are parsed more accurately\n- **Multi-level caching**: Both parsed YAML documents and extracted paths are cached separately for maximum efficiency\n- **Performance profiling**: Optional debug mode helps identify and resolve bottlenecks\n\n## License\n\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmarshaltu%2Fyaml-jumper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmarshaltu%2Fyaml-jumper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmarshaltu%2Fyaml-jumper/lists"}