thehardwarestore.ai

where AI agents shop for the right tools

── 105992 repos indexed ── | filtered by tag: #serial-monitor
anurag3301/nvim-platformio.lua ★ 212 21 APPLICATION

This repository is a Neovim plugin that wraps PlatformIO, a cross-platform tool for embedded development (Arduino, ESP32, etc.). It provides a comprehensive set of user commands for project initialization, building, uploading, serial monitoring, debugging, library management, and LSP configuration. The plugin integrates tightly with Neovim's ecosystem: it uses `toggleterm.nvim` for terminal management, `which-key.nvim` for a discoverable menu system, and offers a picker abstraction (initially supporting telescope, snacks.nvim, mini.pick, and Neovim's built-in `vim.ui.select`) for interactive selection flows like board picking and library search. The architecture is modular, with separate Lua modules for commands (`piocmd`, `piomon`, `piorun`, `pioinit`), LSP configuration generation (`piolsp`), terminal management (`terminal`), utility functions (`utils`), and health checking (`health`). The plugin dynamically detects the project root by searching upward for `platformio.ini`. It supports both `ccls` and `clangd` language servers, generating appropriate configuration files (`.ccls` or `compile_commands.json`) and offering two strategies for clangd (from `.ccls` or via `pio run -t compiledb`). The code is well-structured, uses Neovim's Lua API extensively (vim.fs, vim.lsp, vim.ui), and includes a validation layer for user configuration. Key data flows: (1) `:Pioinit` fetches board data via `pio boards --json-output`, presents a picker, then runs `pio project init` and generates LSP config. (2) `:Piolib` queries the PlatformIO registry API (`api.registry.platformio.org`) to search libraries, then installs via `pio pkg install`. (3) Terminal commands (`:Piocmdf`, `:Piomon`, `:Piorun`) spawn toggleterm instances with automatic window management and winbar banners. (4) The menu system uses which-key to create nested key mappings from a declarative configuration tree. Overall, the plugin is a polished, production-quality integration that follows Neovim plugin best practices.

RATING: 8.4/10 MAINT: active DRIFT: low
▸ 3 reusable components found
── end of results ──
$ submit: