Contributing to Neovim | NeovimConf 2023

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] hello I am Maria Jose Solano um or Maria solos as my GitHub and ready to username is um so today I will be just like sharing my story about like how I got started contributing to NM um I can see from the chat that people are healing me and yes I'm from Colombia so um if anyone here is Latin American I guess that you can join the team I guess um but oh well back to the story um it all started as like how many things stting them it started with my config um I was like getting started with NM installing all of the plugins that I thought that I needed um and I mean I still use them most of them um but it started with copilot um you know like um I was like writing something compile it um let's okay and so I got like that suggestion right and so um you can see from my copilot config that I had mapped slash to dismissing the suggestion um and then I noticed that when I typed um slash in insert mode I wouldn't be able to um insert an actual slash because it would try to like trigger the copilot dismissal instead of like actually letting the character go through and so um when I was configuring this I I made a simple like fix of having a key map that if copilot was visible then I would like invoke copilot dismiss otherwise it would inser a character um and this was like four lines of code right um but then I noticed like wait this is actually like this is not part of my config this is an actual bug and so um what happened there is that I went ahead and created my first PR to uh my first no related PR I guess I had done like GitHub stuff before um disclaimer um and so I created a GitHub issue I said I explained the problem and then it said like oh never mind I fixed it but then I was like wait is it okay if I actually contribute this to the plugin because this is a bug and I did and so around June 28th um I just like copy pasted the thing from my config um and this is actually not part of my of the pr was probably just stua making like something um and that was it and that was my first PR to know of him um and that's how it got started um I started like realizing that a lot of the stuff that I was configuring were actually like bugs in the plugins that I loved and um I started just like creating these PRS um a way that I oops sorry a way that I um that I like debug this through is like I don't know if everyone knows this um maybe you don't but if say let's look at another plug-in like mini files which is like one of my favorites um which is like this amazing like tree explorer that you have um I don't know if anyone can see that but um I realized that I could actually use like the debugger to step through the code of the plugin and so um say that I'm like I don't know um I want to debug like part of my config that I created I had created a custom mapping and so I would just be able to set up a breakpoint then open another instance of NM do whatever I wanted to do and then debug my config and like if you go to definition on this thing then you will go to wherever your plug-in manager put stuff and then I would be able like to debug the code and once I would like understand the problem if there was a problem I would contribute the pr and so um this is actually how I ended up um contributing according to GitHub more than 20 PRS to FY um related plugins and by the way I need to know like how do you pronounce his name is it like folk folky fol um I need to figure this out um but anyway um you can see from my GitHub history I I created a bunch for trouble um also noise is definitely like one of the most ambitious and complex and amazing plugins that I've ever seen um and it's also like a bunch of hacks put together in a very elegant way um but yes this is how I like I had a bunch of folky plugins and I just started like contributing folky super nice and it was like oh yet another PR um and let's see one of them um let's see which one it's an interesting one I guess let's look at the first one um it is for trouble there was like previously you would only see the first line of that of a diagnostic message even if um the diagnostic had like multiple lines and so um I just added some stuff of like adding some extra new lines you know white Spacey side candy and um I added that um it was not too hard um I want to to say that like I'm not a smart person I just spent too much time staring at code um it took me like a very long time to understand this and this is why like I say that I just like use the Lua debugger to step through the code and understand what was going on um and at this point that I had like created so many GitHub PRS and um using like so many plugins that I that I loved I started having this idea that I wanted to like create my own plugin but I didn't know what and so um I I don't know if it was already mentioned before but I work for typescript and I was like writing this new feature um forly hints of making them clickable in editors where the mouse matters um and so in other editors unmentionable um inlay hints are clickable um and so I was like creating this feature and that involved um writing this monster of a switch statement and I was like going through each case considering each type of types script as node and at some point I got distracted and I thought it would be nice if I would be able to sort the case statements of these switch statements alphabetically and I cannot do that by just like selecting a visual range and like doing sort because like that wouldn't consider like that would sort all of the lines but I wanted to preserve the internal structure of the case statements and sort them alphabetically from like whatever label I was using in the case statement and I thought this feels like something that treater would be able to do um and that was all that I thought I had no idea of how that would be done um but I thought like it would be so cool to have like a three Seer based sorder and so I I started thinking about this idea and um I thought like well this is amazing but I also know nothing about Tre seater or like the be treater module API that naam exposes and so what I decided to do instead was trying to tackle an existing issue in NM that was treer related just to have like my first experience with treer and learn more about the AP the apis before creating my own plugin and so um this is how I contributed my first PR to um NM which was creating the um the query editor um the reason I I chose this one it's because it actually had like the label of complexity low and it felt like oh very good good first issue and I thought like oh this will be easy this won't be like um this won't be like hard to tackle and I mean it wasn't like extremely hard but it was not trivial um and so I remember that the first commit that I made was just like updating the documentation and it was like okay I have no idea how this codebase works um but you can see from the pr description that I I made so many questions I like created the pr um the draft PR at that point and I was like can someone Point me like what do I de to do I was so lost and the Neen maintainers were so nice of just guiding me and telling me like oh yes that's a bug that's a feature um and just like um guiding me through these process that it really made it it wasn't like oh you just need to figure out everything by yourself it was like I was leading this feature um but I was also getting the guidance from like all of these super nice people um and so yeah and I keep doing that um and so this is how the the query editor was born um if you go here and um first inspect tree and then open the and I'll use the mouse pardon me um and if you go here and type O when you're in inspect tree you'll open the the query editor and um yeah I think that I I learned a lot I still haven't written the treer um plugging that I had in mind um but I think that this is um I learned a lot and at that point I thought well this is a really fun project and um I kind of want to do more stuff and um going back to how everything got started in my config again I was configuring my my nail beam setup and again mentioning noise I was I had decided to not use noise anymore because I actually enjoyed the default like command line experience and I didn't want to have like as many notifications so I was fine with just using like the building message system and um but the only reason I couldn't leave noise it was because of the hover um I was like the building hover looks so ugly I really don't like it um I really like how noises tree seater hover just like looks prettier and he a street seater and it looks better with my color theme and so I thought like okay I'm going to like contribute this feature just because I want to remove noise from my config and this is how the other PR that um you probably know me for in in NM it is um used recer for styz markdown um and waiting GitHub to load um this was a very um hard one as well because there were a lot of um this involved deprecating some of the previous approach um and there were there was a lot of discussion um you can see from the 88 comments in this conversation um but this is actually something that I really like about no them is um how every contributor it's very passionate and very opinionated in a good way like you will never see this kind of discussion in like a vs code issue um I feel that just having like people being so passionate about the conceal level it is I find it truly hilarious and but like it really makes it a very fun um experience and um yeah I think that for now this is all that I had um I'll stop for now and if anyone has any questions I wanted to leave some time for Q&A so I'll go back and stop sharing and yeah
Info
Channel: Maria Solano
Views: 1,979
Rating: undefined out of 5
Keywords:
Id: GSjTiRlnUek
Channel Id: undefined
Length: 13min 29sec (809 seconds)
Published: Sat Dec 23 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.