Marco Roth's Avatar

Marco Roth

@marcoroth.dev

Full-Stack Web Developer • OSS Contributor • Electronic Music Addict • Ruby/Rails, JavaScript/Stimulus, Crystal • Hotwire Contributors Team • StimulusReflex Core. Website: marcoroth.dev Building: rubyevents.org | rubyconferences.org | gem.sh | hotwire.io

1,953
Followers
313
Following
862
Posts
11.11.2023
Joined
Posts Following

Latest posts by Marco Roth @marcoroth.dev

Thanks! I'm still stuck on Atom, but the good thing is that Atom was so far ahead that it has full support for the language server protocol 🙈

I also have been trying @zed.dev a lot, I like it. But it still somehow doesn't feel quite right, yet.

10.03.2026 21:19 👍 0 🔁 0 💬 1 📌 0
Post image

I guess we can also show the method signature and a link to the docs too:

10.03.2026 21:04 👍 2 🔁 0 💬 1 📌 0

Also, this understanding can be used by the `Herb::Engine` to optimize which parts of the template can be precompiled as most of it is effectively static HTML.

10.03.2026 19:17 👍 1 🔁 0 💬 0 📌 0

Isn't that confusing too, as it's not really valid HTML?

10.03.2026 19:17 👍 0 🔁 0 💬 0 📌 0
Video thumbnail

Action View tag helpers can get confusing when you're trying to figure out what the exact HTML output will look like.

The Herb Language Server can now show you what they evaluate to on hover, and convert between tag helpers and HTML in-place with a single click.

10.03.2026 19:01 👍 18 🔁 0 💬 3 📌 0

Yeah, I think I know what you mean. I think the GitLens plugin used to do something similar. I need to look into what API they are using. Good idea, thank you!

08.03.2026 16:16 👍 1 🔁 0 💬 1 📌 0
Post image

That's a good point, and I think I'd also like that more!

Sadly, there doesn't seem to be support for an option like that. At least VS Code only provides these options.

"When pressed" means you have to hold "Ctrl+Option"

08.03.2026 15:16 👍 0 🔁 0 💬 1 📌 0
Preview
Language Server: Implement Inlay Hints by marcoroth · Pull Request #1328 · marcoroth/herb Not 100% sure how I feel about this yet, that's why I'm just opening it as a draft so it doesn't get lost: But, inlay hints can be disabled in the editor: Related #1282

github.com/marcoroth/he...

08.03.2026 14:36 👍 0 🔁 0 💬 0 📌 0
Post image

How do we feel about Inlay Hints in HTML+ERB files for closing tags?

I'm torn, but the good thing is that most editors allow to disable Inlay Hints if you don't like them.

Is this something people would want to use Inlay Hints for? I'd love to hear your opinion!

08.03.2026 14:12 👍 7 🔁 1 💬 3 📌 0
Video thumbnail

Got a working version of this in my forked Zed version by implementing custom LSP requests 😅

I wonder why this hasn't been implemented in @zed.dev 🤔

08.03.2026 10:48 👍 3 🔁 0 💬 0 📌 0
Preview
Extension API: let extensions arbitrarily send and receive LSP messages · Issue #20042 · zed-industries/zed Check for existing issues Completed Describe the feature Extensions currently cannot send or receive LSP messages. This may force extension authors to exclude a number of features, workarounds ofte...

Yeah, looks like it's not possible yet: github.com/zed-industri...

That's quite a bizarre choice to not support that 🤔

07.03.2026 13:00 👍 0 🔁 0 💬 1 📌 0

I actually implemented that as well as I have been doing that too. But it's a separate custom block-comment request you can bind to a shortcut.

But I realized that I only have been doing that because my editor kept messing it up. I thought it would be sad to bake in that workaround into the LSP 😅

06.03.2026 18:52 👍 0 🔁 0 💬 1 📌 0

Hopefully it's Thyme-saving!

06.03.2026 15:36 👍 2 🔁 0 💬 1 📌 0
Video thumbnail

I got to work on another thing that has been bothering me for a long time: toggling comments in HTML+ERB files.

Sadly the Language Server Protocol doesn't support this with a dedicated request, but you can implement it using a custom request plus a small config in the editor.

05.03.2026 21:42 👍 23 🔁 2 💬 5 📌 1

Jira, so you get the full and real experience, obviously 🥸

06.03.2026 10:08 👍 2 🔁 0 💬 1 📌 0

I'm sure we could make something work, as Zed seems super configurable.

Maybe we can/need to bake it directly into the Zed Ruby Extension.

Maybe @vitallium.bsky.social has an idea on how to approach that 👀

06.03.2026 08:33 👍 0 🔁 0 💬 2 📌 0

Turns out the secret ingredient was Herb all along 🪄🌿

06.03.2026 08:31 👍 2 🔁 0 💬 1 📌 0

My current tooling can't even handle removing the trailing %> when uncommenting.

This is magical!! 🪄✨

06.03.2026 04:29 👍 5 🔁 1 💬 1 📌 0
Preview
Language Server: Implement Toggle Comment Service by marcoroth · Pull Request #1308 · marcoroth/herb CleanShot.2026-03-05.at.19.43.25.mp4 Resolves #136

At least for VS Code we can pre-configure it out of the box in the VS Code extension!

github.com/marcoroth/he...

05.03.2026 21:43 👍 2 🔁 0 💬 0 📌 0
Video thumbnail

I got to work on another thing that has been bothering me for a long time: toggling comments in HTML+ERB files.

Sadly the Language Server Protocol doesn't support this with a dedicated request, but you can implement it using a custom request plus a small config in the editor.

05.03.2026 21:42 👍 23 🔁 2 💬 5 📌 1
Video thumbnail

I really like how this new `erb-no-duplicate-branch-elements` linter rule and its autofix are shaping up!

This level of understanding, awareness, and integration still feels purely magical.

05.03.2026 06:35 👍 15 🔁 1 💬 0 📌 0

We've had a lot of issues and PRs around updates - events, new videos, changelog, and more. I tried to bring all that together in the newsletter. ♥️

Let me know what you think and if you have ideas for March! ✨

05.03.2026 11:58 👍 6 🔁 2 💬 0 📌 0
Preview
RubyEvents.org February 2026 Newsletter In February, RubyEvents had 12 contributors and 55 PRs merged! This month, we had RubyForGood - Belgium, Belfast RubyFest, and Fukuoka RubyistKaigi 05. We're looking forward to Ruby Community Conferen...

Hello friends! This is our first edition of the Ruby Events Newsletter!

Find recent events, released videos, and a changelog within. Let us know if there's anything you want to see in March's edition? 🤩

www.rubyevents.org/announcement...

05.03.2026 08:41 👍 8 🔁 6 💬 0 📌 1
Video thumbnail

I really like how this new `erb-no-duplicate-branch-elements` linter rule and its autofix are shaping up!

This level of understanding, awareness, and integration still feels purely magical.

05.03.2026 06:35 👍 15 🔁 1 💬 0 📌 0
Video thumbnail

The `textDocument/documentHighlight` request in the Language Server Protocol is kinda neat!

The Herb Language Server will use it to highlight matching ERB control flow keywords and HTML tag pairs when you place your cursor on them.

03.03.2026 19:48 👍 18 🔁 1 💬 0 📌 0
Preview
Week 07/08 - Video recorder UI, Dynamic Partial Rendering, and more! Discover the latest Hotwire insights, tutorials, and releases in this week edition of Hotwire Weekly!

Week 07/08 - Video recorder UI, Dynamic Partial Rendering, and more!

23.02.2026 01:00 👍 2 🔁 2 💬 0 📌 0
This pull request improves the parser's error reporting for HTML close tags that are missing their closing `>` by introducing a new `UnclosedCloseTagError`.

Given this input:

```html+erb
<% case Date.today.cwday %>
<% when 6 %>
  <p>Today is Saturday</p
<% else %>
  <p>Today is not a day of the week</p>
<% end %>
```
Previously, when parsing `</p` (missing closing `>`), the error was reported on the next tag (e.g., `<% else %>`) instead of on the `</p` itself. Additionally, the next token (e.g., `<%`) would get incorrectly consumed as the `tag_closing` of the `HTMLCloseTagNode`.

This pull request improves the parser's error reporting for HTML close tags that are missing their closing `>` by introducing a new `UnclosedCloseTagError`. Given this input: ```html+erb <% case Date.today.cwday %> <% when 6 %> <p>Today is Saturday</p <% else %> <p>Today is not a day of the week</p> <% end %> ``` Previously, when parsing `</p` (missing closing `>`), the error was reported on the next tag (e.g., `<% else %>`) instead of on the `</p` itself. Additionally, the next token (e.g., `<%`) would get incorrectly consumed as the `tag_closing` of the `HTMLCloseTagNode`.

These kinds of small fixes are oddly satisfying to get right. This ships in the next version of Herb! 🙌

20.02.2026 01:31 👍 26 🔁 4 💬 1 📌 0
Preview
Parser: Introduce `UnclosedCloseTagError` by marcoroth · Pull Request #1216 · marcoroth/herb This pull request improves the parser&#39;s error reporting for HTML close tags that are missing their closing &gt; by introducing a new UnclosedCloseTagError. Given this input: &lt;% case Date.tod...

Link to the pull request:

github.com/marcoroth/he...

20.02.2026 01:32 👍 2 🔁 0 💬 0 📌 0
This pull request improves the parser's error reporting for HTML close tags that are missing their closing `>` by introducing a new `UnclosedCloseTagError`.

Given this input:

```html+erb
<% case Date.today.cwday %>
<% when 6 %>
  <p>Today is Saturday</p
<% else %>
  <p>Today is not a day of the week</p>
<% end %>
```
Previously, when parsing `</p` (missing closing `>`), the error was reported on the next tag (e.g., `<% else %>`) instead of on the `</p` itself. Additionally, the next token (e.g., `<%`) would get incorrectly consumed as the `tag_closing` of the `HTMLCloseTagNode`.

This pull request improves the parser's error reporting for HTML close tags that are missing their closing `>` by introducing a new `UnclosedCloseTagError`. Given this input: ```html+erb <% case Date.today.cwday %> <% when 6 %> <p>Today is Saturday</p <% else %> <p>Today is not a day of the week</p> <% end %> ``` Previously, when parsing `</p` (missing closing `>`), the error was reported on the next tag (e.g., `<% else %>`) instead of on the `</p` itself. Additionally, the next token (e.g., `<%`) would get incorrectly consumed as the `tag_closing` of the `HTMLCloseTagNode`.

These kinds of small fixes are oddly satisfying to get right. This ships in the next version of Herb! 🙌

20.02.2026 01:31 👍 26 🔁 4 💬 1 📌 0

Awesome, thanks for giving it a go! 🙏

19.02.2026 16:41 👍 1 🔁 0 💬 0 📌 0