Benny Powers 🇮🇱🦁<p>🚀<span> The CEM Language Server is here!<br><br>Remember the frustration of working with custom elements in your editor? No auto-complete for </span><code></code><span>, no hover docs for attributes, go-to-definition that just... doesn't?<br><br>Those dark ages are over. </span>✨<span><br><br>I built a complete toolchain from scratch in Go that changes everything:<br><br></span>🔬<span> </span><b><span>Analyzes your TypeScript/JavaScript</span></b><span> to understand your custom elements<br></span>📋<span> </span><b><span>Generates Custom Element Manifest files</span></b><span> from your source code <br></span>🧠<span> </span><b><span>Provides Language Server Protocol support</span></b><span> for amazing editor integration<br><br>You get:<br></span>🎯<span> Smart completions for element names, attributes, slots<br></span>📚<span> Hover documentation pulled directly from your code<br></span>🔍<span> Go-to-definition that actually works<br></span>⚡<span> Real-time validation and error checking<br></span>🛠️<span> Works with VS Code, Zed, Neovim, Emacs<br><br>The beautiful part? It's a complete end-to-end solution. One tool that both understands your code AND provides the editor experience. Zero serialization overhead, perfect consistency.<br><br>Built on the shoulders of </span><span>@Matsuuu</span><span>'s pioneering work with custom-elements-language-server. This explores a different architectural approach while building on his insights about what features matter most.<br><br>Finally - TypeScript-level tooling for our </span><code></code><span>! </span>🎉<span><br><br></span>📖<span> </span><a href="https://bennypowers.dev/cem/docs/lsp/" rel="nofollow noopener" target="_blank">bennypowers.dev/cem/docs/lsp/</a><span><br></span>💬<span> </span><a href="https://github.com/bennypowers/cem/discussions" rel="nofollow noopener" target="_blank">github.com/bennypowers/cem/discussions</a><span><br><br></span><a href="https://social.bennypowers.com/tags/WebComponents" rel="nofollow noopener" target="_blank">#WebComponents</a><span> </span><a href="https://social.bennypowers.com/tags/LSP" rel="nofollow noopener" target="_blank">#LSP</a><span> </span><a href="https://social.bennypowers.com/tags/DeveloperTools" rel="nofollow noopener" target="_blank">#DeveloperTools</a><span> </span><a href="https://social.bennypowers.com/tags/Lit" rel="nofollow noopener" target="_blank">#Lit</a><span> </span><a href="https://social.bennypowers.com/tags/CustomElements" rel="nofollow noopener" target="_blank">#CustomElements</a><span> </span><a href="https://social.bennypowers.com/tags/OpenSource" rel="nofollow noopener" target="_blank">#OpenSource</a><span> </span><a href="https://social.bennypowers.com/tags/Go" rel="nofollow noopener" target="_blank">#Go</a><span> </span><a href="https://social.bennypowers.com/tags/TypeScript" rel="nofollow noopener" target="_blank">#TypeScript</a></p>