-
Notifications
You must be signed in to change notification settings - Fork 299
Integrate Yode into Oni #894
Comments
I looked into the Code I found but there wasn't much. As I understand it an I think, in Oni terms, Yode would use a normal Additional things the referencen implementation misses and would be needed in Oni:
|
Will this be provided as an optional plugin for Oni? I am not most people would like this be enabled by default. |
I took a look on Yode's into video and got really excited - It looks AWESOME! I hope to have a chance helping with it (right after #49). |
Thanks for moving this to another issue, @hoschi ! Yes, Yode looks really cool! The intro video was very well done - I need to do something like that for Oni 😄
I realized this is something that has changed a bit so I wanted to give some ideas here. There's really two levels - the concept of an The The idea is you can create a split very easily with the Oni API, like:
That kind of split would be super boring though and not too useful. We can implement a few things with the split though:
Even the status bar could be refactored to a fixed height 'split' at the bottom. These ones wouldn't necessarily need to even be integrated with Neovim, although for stuff like the file explorer it would make sense to do this, because we want to have a consistent navigation and input model. And beyond that, the core of Oni is the The model we have at the moment is somewhat busted in that What I'd like to do is basically have some special splits for working with editors - an The nice thing about this abstraction is that the yode model fits in pretty easily - it would still manage a collection of There's still some work left to get there:
Here's some ideas for getting started prototyping:
It might be jarring when people come into Oni having an expectation of a Neovim or VSCode experience. Having it is a plugin seems reasonable - I can see some really cool cases for bringing it in by default for a few cases, like for Sorry for the wall of text, I hope that made sense! On my end, I'm starting to look at the file explorer + integrated browser window, so I hope as I drill into those it might help clarify some of the unknowns (and have more examples in place). |
I agree in general. I also really think we need to use this in day to day editing in a "beta phase" and see how things work, because I think it feel really different in some places. One example I already thought of is editing functional React components where I think want to focus on the render function instantly. Not
Which no one does then, because the outcome for the three additional steps are not worth in every situation. Instead an action for "open render function of that component" make 100% more sense here. There are problems like "how to generalize this logic and not focus on React", but I just wanted to give an example of that new use cases arise when it is there. On the other side "Go to definition" is a "no brainer" for me, opens a function buffer here saves you a good amount of space. If we don't want this as default, there can still be two binding for the "open file and jump to position" and the "open function which contains this definition, or if this thing is a function just open it" without much additional logic I think. With the command palette it is now even easier to recognize these things for new users as both commands show when you type "Go to def" 😁 I repeat some things in my words to make sure I got it right, tell me if I don't @bryphe 😉
At the moment there is one
Tabs are rendered by Oni, but the state is still in that one NeoVim instance, here
Here we have more
At this point even the splits are managed by Oni, not by NeoVim anymore? For me
That would be great, just wanted to ask some big questions to get a picture of that future in my head 😉 |
(FYI I started to put the stuff from my notes to issues, here is the project which tracks the tasks I work on next https://github.com/hoschi/yode/projects/2) |
@bryphe Can you have a look at my questions above? I hope I can finish the last tasks in the GH project linked above and/or start on the Oni integration in my upcoming holidays 😁 |
Hi @hoschi ! Sorry I missed your questions, taking a look now.
Sounds awesome! 😄
Definitely. We've been pushing on getting features in early, backed by an
For sure. It's easy to have multiple commands exposed in the command palette. Ideally, we'd have better discoverability here too by showing when a command is bound to a key.
This is exactly right! Although we're making progress on decoupling this... If you enable the sidebar via There is still only one
I would actually like to do more split management in Oni, and have the splits fully managed by Oni. Right now, in the file explorer picture, Oni manages the splits between the sidebar/file explorer/
The The
The Neovim splits are managed internally by the The Some ideas:
Just some thoughts off the top of my head... Let me know if you have any other questions 😄 |
@bryphe "here"? Probably forget to upload a screenshot?
Like Atoms tab-split logic? Never understood what the benefit is compared to vims tab-split logic where tabs act as container and splits used for window management.
For the integration prototype I would go with the first one and create a bunch of The overall picture is clearer now, thanks for the explanations. I think I have enough to start it. I finish the tests for Yode and then tackle the integration. If I get stuck I can work on some Yode tasks. |
Yode allows you to edit parts of a JS file, at the moment functions. It allows the user to stay focused on the important parts of a task. Past discussion started here
There is a guide to integrate Yode in an editor with a reference implementation: https://github.com/hoschi/yode/blob/master/docs/integration.md
Current tasks on Yode side: https://github.com/hoschi/yode/projects/2
Last comment is here
The text was updated successfully, but these errors were encountered: