Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regexp Railroad Diagrams #38

Open
bennypowers opened this issue Feb 1, 2022 · 5 comments
Open

Regexp Railroad Diagrams #38

bennypowers opened this issue Feb 1, 2022 · 5 comments
Labels
help wanted Extra attention is needed idea

Comments

@bennypowers
Copy link

What?
I’m a refugee from Atom and I’ve been thoroughly enjoying my experience with Neovim so far. I’m down so a scant few of my favourite Atom features I’ve yet to find answers for with nvim. One of those features is atom-regex-railroad-diagrams 2. With this atom plugin installed, any time the cursor is on a regular expression, a graphical railroad diagram 4 appears at the bottom of the window.

Is there something comparable for neovim? Surely, terminal-based plugins would have to use ascii art or something like that, but perhaps something could be done anyways?

Some cursory googling didn’t turn up much, there’s too much history with vim and regexp search terms to break through the noise of ‘how to regexp in vim’ tutorials.

see also https://neovim.discourse.group/t/regexp-railroad-diagrams/1984/3

Why?
Regexp is confusing, railroad diagrams help

Potential existing implementations:

Potential pitfalls:
issue linked above - railroad-diagrams library could be adapted, but it wouldn't be trivial

@bennypowers bennypowers added help wanted Extra attention is needed idea labels Feb 1, 2022
@CKolkey
Copy link

CKolkey commented Feb 15, 2022

Just thinking, with this you could shell out to an app that will render the graphic, then display it in a float/split term buffer
https://github.com/edluffy/hologram.nvim

@bennypowers
Copy link
Author

The way I'm thinking:

  1. autocmd ON cursor move
  2. IF treesitter query for cursor is inside a regexp, THEN continue ELSE quit
  3. Get SVG by passing regexp string from ts to https://github.com/tabatkins/railroad-diagrams by basically adapting the code from the atom plugin
  4. Convert SVG to cairo via https://github.com/akrinke/svg2cairo
  5. Split the window with a new buffer, render the cairo image to the buffer with hologram

Now, I've no idea how nicely all these will play together, and suspect there will be performance pitfalls esp. if shelling out to node.js

But hey, it could just work

@CKolkey
Copy link

CKolkey commented Feb 15, 2022

Ha! Nice. That seems like a reasonable approach :)

@bennypowers
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed idea
Projects
None yet
Development

No branches or pull requests

2 participants