{"id":44642636,"url":"https://github.com/thethoughtagen/ignition-nvim","last_synced_at":"2026-02-15T20:00:48.078Z","repository":{"id":337445465,"uuid":"1153541548","full_name":"TheThoughtagen/ignition-nvim","owner":"TheThoughtagen","description":"Neovim Terminal IDE Lazy-Vim plugin for Ignition by Inductive Automation","archived":false,"fork":false,"pushed_at":"2026-02-14T20:09:22.000Z","size":556,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-15T01:28:15.592Z","etag":null,"topics":["ignition","lua","nvim-plugin","python"],"latest_commit_sha":null,"homepage":"https://thethoughtagen.github.io/ignition-nvim/","language":"Python","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/TheThoughtagen.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-09T12:22:27.000Z","updated_at":"2026-02-14T20:09:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/TheThoughtagen/ignition-nvim","commit_stats":null,"previous_names":["pmannion2/ignition-nvim","thethoughtagen/ignition-nvim"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/TheThoughtagen/ignition-nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheThoughtagen%2Fignition-nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheThoughtagen%2Fignition-nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheThoughtagen%2Fignition-nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheThoughtagen%2Fignition-nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheThoughtagen","download_url":"https://codeload.github.com/TheThoughtagen/ignition-nvim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheThoughtagen%2Fignition-nvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29487769,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T19:29:10.908Z","status":"ssl_error","status_checked_at":"2026-02-15T19:29:10.419Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["ignition","lua","nvim-plugin","python"],"created_at":"2026-02-14T19:05:19.452Z","updated_at":"2026-02-15T20:00:48.073Z","avatar_url":"https://github.com/TheThoughtagen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ignition.nvim\n\nA comprehensive Neovim plugin providing development support for **Ignition by Inductive Automation** projects.\n\n## Features\n\n- **Automatic Script Decoding/Encoding**: Seamlessly work with Python scripts embedded in JSON configurations\n- **LSP Integration**: Code intelligence with autocompletion, diagnostics, and navigation for Ignition APIs\n- **Gateway Backup Management**: Direct integration with Kindling for `.gwbk` file handling\n- **Project Navigation**: Efficient navigation through Ignition project hierarchies\n- **File Type Detection**: Automatic recognition of Ignition file formats\n\n## Architecture\n\nThis plugin uses a hybrid approach:\n- **Lua Plugin**: Core functionality, file handlers, commands, and UI integration\n- **Python LSP Server**: Advanced code intelligence and project analysis\n\n## Installation\n\n### Using [lazy.nvim](https://github.com/folke/lazy.nvim)\n\nMinimal (uses defaults from `lazy.lua` — lazy-loads on filetype + commands, auto-installs LSP):\n\n```lua\n{ 'whiskeyhouse/ignition-nvim' }\n```\n\nWith custom options:\n\n```lua\n{\n  'whiskeyhouse/ignition-nvim',\n  opts = {\n    lsp = {\n      enabled = true,\n      auto_start = true,\n      settings = {\n        ignition = {\n          version = \"8.1\", -- Your Ignition version\n        },\n      },\n    },\n    kindling = {\n      enabled = true,\n      -- path = '/path/to/kindling', -- Optional: specify Kindling path\n    },\n    decoder = {\n      auto_decode = true,\n      auto_encode = true,\n    },\n  },\n}\n```\n\n### Using [packer.nvim](https://github.com/wbthomason/packer.nvim)\n\n```lua\nuse {\n  'whiskeyhouse/ignition-nvim',\n  requires = { 'neovim/nvim-lspconfig' },\n  config = function()\n    require('ignition').setup()\n  end,\n}\n```\n\n## LSP Server Installation\n\nThe Python LSP server provides advanced code intelligence features. With lazy.nvim, it is\ninstalled automatically via the `build` step. To install manually:\n\n```bash\n# Install from PyPI (once published)\npip install ignition-lsp\n\n# Or install from source (inside the plugin directory)\ncd lsp\npip install -e .\n```\n\n## Commands\n\n### Script Management\n- `:IgnitionDecode` - Decode embedded Python scripts (interactive selection if multiple)\n- `:IgnitionDecodeAll` - Decode all scripts in current buffer\n- `:IgnitionEncode` - Encode scripts back to JSON format (from virtual buffer)\n- `:IgnitionListScripts` - Show all scripts in current buffer in floating window\n\n### Integration\n- `:IgnitionOpenKindling [file]` - Open `.gwbk` file with Kindling\n- `:IgnitionInfo` - Show plugin information and status\n\n### Default Keymaps (in Ignition files)\n- `\u003clocalleader\u003eid` - Decode scripts\n- `\u003clocalleader\u003eia` - Decode all scripts\n- `\u003clocalleader\u003eil` - List all scripts\n- `\u003clocalleader\u003eie` - Encode scripts back to JSON\n- `\u003clocalleader\u003eii` - Show plugin info\n- `\u003clocalleader\u003eik` - Open in Kindling (`.gwbk` files only)\n\n## Usage\n\n### Decoding Scripts\n\nWhen you open an Ignition JSON file containing embedded Python scripts, the plugin will automatically detect them and notify you.\n\n**Single Script:**\n```\n:IgnitionDecode\n```\nor press `\u003clocalleader\u003eid` to decode the script into a new split window with full Python syntax highlighting and editing capabilities.\n\n**Multiple Scripts:**\nIf the file contains multiple scripts, you'll be presented with an interactive selection menu showing a preview of each script.\n\n**All Scripts:**\n```\n:IgnitionDecodeAll\n```\nor press `\u003clocalleader\u003eia` to decode all scripts at once.\n\n### Editing and Saving\n\n1. Edit the decoded Python script in the virtual buffer with full LSP support\n2. Save the buffer (`:w` or `\u003cleader\u003ew`) to automatically encode and update the original JSON file\n3. The source JSON file will be marked as modified - save it to persist changes\n\n### Script Encoding Method\n\nThe plugin uses the same encoding method as Ignition Flint:\n- Standard JSON string escaping (`\\\"`, `\\\\n`, `\\\\t`, etc.)\n- Unicode escapes for special characters (`\u003c` → `\\u003c`, `\u003e` → `\\u003e`, `\u0026` → `\\u0026`, `=` → `\\u003d`, `'` → `\\u0027`)\n- **Not base64** - scripts remain partially human-readable in JSON\n\nReference: [ignition-flint encoding](https://github.com/keith-gamble/ignition-flint/blob/master/src/utils/textEncoding.ts)\n\n## Configuration\n\nDefault configuration:\n\n```lua\n{\n  lsp = {\n    enabled = true,\n    auto_start = true,\n    cmd = nil, -- Auto-detected\n    settings = {\n      ignition = {\n        version = \"8.1\",\n        sdk_path = nil,\n      },\n    },\n  },\n  kindling = {\n    enabled = true,\n    path = nil, -- Auto-detected\n  },\n  decoder = {\n    auto_decode = true,\n    auto_encode = true,\n    create_scratch_buffer = true,\n  },\n  ui = {\n    show_notifications = true,\n    show_statusline = true,\n  },\n}\n```\n\n## Supported File Types\n\n- `.gwbk` - Gateway Backup files\n- `.proj` - Ignition Project files\n- `resource.json` - Resource definitions with embedded scripts\n- `tags.json` - Tag configurations\n- `data.json` - Data structures\n\n## Requirements\n\n- Neovim \u003e= 0.8.0\n- Python \u003e= 3.8 (for LSP server)\n- [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) (optional, for LSP features)\n- [Kindling](https://github.com/ia-eknorr/kindling) (optional, for `.gwbk` support)\n\n## Development Status\n\nThis plugin is under active development. See our [Linear project](https://linear.app/whiskey-house-eandt/project/ignition-neovim-plugin-8b7522ece7b1) for current progress.\n\n### Roadmap\n\n- [x] Basic project structure\n- [x] File type detection for Ignition files\n- [x] Script decoder/encoder implementation\n- [x] Virtual document system for editing scripts\n- [x] Auto-detection of embedded scripts\n- [x] Interactive script selection\n- [x] LSP server with Ignition API completion (14 modules, 239 functions)\n- [x] Project indexing and navigation (workspace symbols, cross-file completions)\n- [x] Go-to-definition for system.* and project scripts\n- [x] Kindling integration for .gwbk files\n- [x] Comprehensive testing suite (162 Python + 107 Lua tests)\n- [ ] Full documentation and examples\n- [x] CI workflow (GitHub Actions)\n\n## Contributing\n\nContributions are welcome! Please see the Linear project for current tasks and priorities.\n\n## License\n\nMIT License - see LICENSE file for details\n\n## Acknowledgments\n\nInspired by [Ignition Flint](https://marketplace.visualstudio.com/items?itemName=Keith-gamble.ignition-flint) for VS Code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthethoughtagen%2Fignition-nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthethoughtagen%2Fignition-nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthethoughtagen%2Fignition-nvim/lists"}