LSP Explained (in 5 Minutes)

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 พ.ย. 2024

ความคิดเห็น •

  • @Sibearian_
    @Sibearian_ 8 หลายเดือนก่อน +241

    Always wondered how lsp was doing. Finally got an answer

  • @encephala
    @encephala 8 หลายเดือนก่อน +142

    The `M x N` -> `M + N` explanation is so good

  • @Kane0123
    @Kane0123 8 หลายเดือนก่อน +59

    Smashed it out of the park with this one Teej. A classic “I know vaguely what [insert thing here] does” topic.

  • @earthling_parth
    @earthling_parth 8 หลายเดือนก่อน +24

    This was amazing, please do more videos about core components of neovim and editors in general Teej. Subscribed instantly.

  • @rad6626
    @rad6626 8 หลายเดือนก่อน +10

    Just subbed, why couldn't any of the other videos I watched explain this so easily!? THANK YOU TJ

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน +1

  • @ancxanas
    @ancxanas 8 หลายเดือนก่อน +10

    A detailed version of this would be litm

  • @missingcharacter
    @missingcharacter 8 หลายเดือนก่อน +2

    Thank you, I love these "straight to the point" explanations

  • @Jakoliath
    @Jakoliath 8 หลายเดือนก่อน +3

    sick explanation, I knew what LSPs were in a broad sense but didn't understand the problem they were trying to solve

  • @NDValle
    @NDValle 8 หลายเดือนก่อน +3

    Great video! I really appreciate the concise and incredibly useful format!

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน +3

      Thanks! exactly what I was shooting for!

  • @zsmain
    @zsmain 8 หลายเดือนก่อน +4

    That was very informative and the style of the video is great, Thank you Teej.

  • @spageen
    @spageen 8 หลายเดือนก่อน +1

    finally an LSP explanation that doesn't assume you know what a language server is!

  • @ParanoidxProd
    @ParanoidxProd 8 หลายเดือนก่อน +2

    Videos like this are so valuable for the community as a whole, thanks for the content!

  • @jasonfevang9670
    @jasonfevang9670 8 หลายเดือนก่อน +13

    This was really well done, thanks for the explanation. The format is great

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน +3

      Thanks! I'm going to try and do a few more videos like this. Thanks for the feedback

  • @TheHermitProcess
    @TheHermitProcess 8 หลายเดือนก่อน

    You are a freaking wizard at explaining things. Just enough for me to go on and figure things out.

  • @juangiordana
    @juangiordana 8 หลายเดือนก่อน +5

    Beautiful! Next targets: linters, formatters :)

  • @destinlee
    @destinlee 8 หลายเดือนก่อน +2

    TJ thank you for this. Very informative. I have been on an LSP mission since the Kickstart updates. Just finished watching your and Bashes LSP video which was also very informative.

  • @Schadowofmorning
    @Schadowofmorning 8 หลายเดือนก่อน +3

    LSP's are really a great addition to development. Now we only have to get task running, building etc. standardized so every other major editor integration can be abstracted away. I have to work in both neovim and Visual Studio 2022 everyday and having stuff like task running defined once and usable accross both would be amazing.

    • @sunofabeach9424
      @sunofabeach9424 8 หลายเดือนก่อน +1

      VS 2022 💀

    • @oxidant5
      @oxidant5 8 หลายเดือนก่อน

      Makefile?

    • @Schadowofmorning
      @Schadowofmorning 8 หลายเดือนก่อน

      You have to smoke a special kinda crack to think Makefiles could do that to any degree of reproducabiility and system independent reliability. And that's not even touching on the arcane syntax, the refusal to produce any modern, readable, understandable documentation and examples, and their general incompability with NT operating systems.@@oxidant5

    • @QmVuamFtaW4
      @QmVuamFtaW4 8 หลายเดือนก่อน

      VS 2022 💀

  • @JoshuaLonsako
    @JoshuaLonsako 8 หลายเดือนก่อน +1

    Didn't even know I wanted this video, thanks a ton for the info!

  • @JeremyChone
    @JeremyChone 4 หลายเดือนก่อน

    Very nice quick overview, thanks.

  • @bitcode_
    @bitcode_ 8 หลายเดือนก่อน +1

    One of the most fun and challenging parts of using neovim is figuring out how LSPs work under the hood and how to properly configure it, which i'm still doing, this video gave me a troubleshooting aha moment of something that was very obvious regarding the client / server operations

    • @herrpez
      @herrpez 8 หลายเดือนก่อน +2

      Configuring LSPs is such a headache generator. Especially when you have to factor in a particular editor's config format... and possibly that particular editor's distribution's config format...! I'm glad way more patient people than I have released sufficiently to-my-taste configs that I can just download and use.

    • @bitcode_
      @bitcode_ 8 หลายเดือนก่อน +2

      @@herrpez haha! Fair, i'm a masochist

    • @herrpez
      @herrpez 8 หลายเดือนก่อน

      @@bitcode_ And I'm glad for it. 😂

  • @bsquidwrd
    @bsquidwrd 8 หลายเดือนก่อน

    This was awesome, thank you for the overview!

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน

      So glad you liked it!

  • @wesleyhamilton6262
    @wesleyhamilton6262 8 หลายเดือนก่อน +1

    nice introduction to lsp i would love to see some more stuff about how lsp formatters linters work

  • @MengLinMaker
    @MengLinMaker 26 วันที่ผ่านมา

    Best beginner friendly explaination

  • @Guergeiro
    @Guergeiro 8 หลายเดือนก่อน +3

    An example of the problem that LSPs solve is in the Kotlin language. Basically it was released by Jetbrains and what does Jetbrains "sell"? You got it, editors! That means their integration is awesome. But what happens if you want to use VSCode (not even talking about Vim) to code Kotlin? You can't because the language features are deeply coupled with the editor. That's what LSPs solve, they decouple the language from the editor. Thank god for the case of Kotlin there are good community alternatives and now you can install them, but hopefully they release an official one.

    • @rochakgupta6116
      @rochakgupta6116 8 หลายเดือนก่อน

      That's the only thing holding me back from learning Kotlin. Why on earth would I wanna learn a language so tightly coupled with an IDE? Not worth my time.

    • @pokefreak2112
      @pokefreak2112 8 หลายเดือนก่อน

      I'd argue the reason kotlin does not have official support outside of jetbrains IDE's is that they have no incentive to add it. Let's be honest, no one is completely rewriting their language plugin when porting it to a different editor. We had cross-editor plugins like resharper before LSP. The only thing LSP does is maybe get rid of some glue code.

    • @Guergeiro
      @Guergeiro 8 หลายเดือนก่อน

      @@pokefreak2112 I think the point here is that any language to be massively adopted today, needs to have a good lsp that is not tied into an editor. Kotlin thrives for 2 reasons: android development and the natural evolution from Java (and the latter is just for some people, others just use new versions of Java). If it didn't have this driving force, people would not lock into an editor for the sake of the language.

  • @fredbcruz
    @fredbcruz 8 หลายเดือนก่อน

    Whoa. Straight to the point, entertaining, amazing

  • @willbradfair
    @willbradfair 8 หลายเดือนก่อน

    Awesome video explaining how the communication works with my LSP. Would be also great to see a video on debugging issues with different LSP issues.

  • @calvinmakokha6990
    @calvinmakokha6990 8 หลายเดือนก่อน

    Thanks for this video. A great overview of the LSP.

  • @douglasfrb
    @douglasfrb 8 หลายเดือนก่อน

    The clearest explanation of LSP I've seen. Just thanks. :)

  • @dezzare
    @dezzare 8 หลายเดือนก่อน

    I already know most of this, but not all. This video is good in many ways: with a lot of concepts/information using clear/easy language, making it easy to understand/assimilate, and all that in a short video, directly to the point.
    Thank you for the content.

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน

      Thanks for the comment and compliments!

  • @pif5023
    @pif5023 7 หลายเดือนก่อน

    Nice! Amazing intro, ty teej

  • @Golipillas
    @Golipillas 5 หลายเดือนก่อน

    Incredibly succint explanation, thank you!

  • @jong.4864
    @jong.4864 8 หลายเดือนก่อน

    I always wondered! Thanks for the vid TJ!

  • @askholia
    @askholia 8 หลายเดือนก่อน +2

    I really like these!

  • @pmerikan
    @pmerikan 8 หลายเดือนก่อน +1

    As always great content. 👍

  • @silviogames
    @silviogames 8 หลายเดือนก่อน +1

    Nice format to explain something

  • @scutum_
    @scutum_ 8 หลายเดือนก่อน

    Thanks for the clear explanation. I finally have a clue about what LSP is for. Now I am more curious about what Treesitter is doing.

  • @Blaisem
    @Blaisem 8 หลายเดือนก่อน +1

    Thanks for telling me how it works.

  • @headlights-go-up
    @headlights-go-up 8 หลายเดือนก่อน +1

    loved this!

  • @bagfleet
    @bagfleet 8 หลายเดือนก่อน

    Yes! More of this please!

  • @tomshieff
    @tomshieff 8 หลายเดือนก่อน

    I like this format, great work!

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน

      Thanks! Hoping to do more of them!

  • @karolgutkowski4678
    @karolgutkowski4678 8 หลายเดือนก่อน

    The benefit of LSP seems similiar to what I've recently learned in compilers class where language could have its frontend translate to some intermediate representation and then there can be a backend that translates that IR to platform specific instructions.

  • @tikeswarnaik-pd5ho
    @tikeswarnaik-pd5ho 8 หลายเดือนก่อน

    This is very informative. Thank you for making these amazing videos.

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน +1

      Thank you! Hoping to make more like this!!

  • @ginger-viking
    @ginger-viking 4 หลายเดือนก่อน

    Thank you, great video

  • @petrpechkurov3095
    @petrpechkurov3095 8 หลายเดือนก่อน

    Thanks a lot, TJ! I like your videos!

  • @cyAbhishek
    @cyAbhishek 8 หลายเดือนก่อน

    Damn, quality content. Way to go teej!

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน

      Thanks!!

  • @adibhanna
    @adibhanna 8 หลายเดือนก่อน +1

    great video as usual!

  • @vojtastruhar8950
    @vojtastruhar8950 8 หลายเดือนก่อน

    The in-terminal slides are so cool

  • @oglothenerd
    @oglothenerd 8 หลายเดือนก่อน +1

    I am making a programming language, so implementing an LSP is important.

  • @gunstorm05
    @gunstorm05 8 หลายเดือนก่อน +3

    This is a super nice overview, thanks!
    What do you use for the actual presentation shown behind you? I'd imagine it's Neovim, but using what plugins and how?

  • @Zaf9670
    @Zaf9670 8 หลายเดือนก่อน

    That raw take with the cough included. But I enjoyed the summary.

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน

      hahaha i know, i could have edited out but I liked having it be one take!

  • @fricze
    @fricze 8 หลายเดือนก่อน +1

    it was really cool. cheers

  • @zim...
    @zim... 8 หลายเดือนก่อน

    awesome saucesome. this is a really cool protocol

  • @vitorbertulucci
    @vitorbertulucci 8 หลายเดือนก่อน +1

    LOVE IT!

  • @peterdenham
    @peterdenham 8 หลายเดือนก่อน

    That was really interesting!

  • @redhawk3385
    @redhawk3385 8 หลายเดือนก่อน

    im writting a IDE and this is so helpful

  • @yuxiang4218
    @yuxiang4218 8 หลายเดือนก่อน

    clear and helpful!

  • @theena
    @theena 8 หลายเดือนก่อน +1

    Thank you. Always wondered, never could get my head around it. Now please, a similar treatment to Treesitter? I can't tell where LSP ends and TS begins.

  • @ancxanas
    @ancxanas 8 หลายเดือนก่อน +1

    This is gold.

  • @HasanSIM14
    @HasanSIM14 8 หลายเดือนก่อน

    "From now on we're going to call your editor the client". Proceeds to still call it editor for the rest of the video GIGACHAD
    Excellent video :)

  • @kal.leroux
    @kal.leroux 8 หลายเดือนก่อน

    This was cool thanks !

  • @lastink444
    @lastink444 8 หลายเดือนก่อน +1

    thanks for this

  • @mash808
    @mash808 8 หลายเดือนก่อน

    Thanks for caring enough to ask how's LSP 🥰

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน

      Always important to check in and make sure LSP is feeling good

  • @koby9340
    @koby9340 8 หลายเดือนก่อน +1

    Great content

  • @iconoclastsc2
    @iconoclastsc2 8 หลายเดือนก่อน

    This was really good. Next time explain null-ls/none-ls. Also linters and formatters later.

  • @Strawberry_Htet
    @Strawberry_Htet 8 หลายเดือนก่อน +9

    Debuggers teej❤

  • @CEOofGameDev
    @CEOofGameDev 8 หลายเดือนก่อน +1

    Using an LSP really is taking so many W's...

  • @maniac5411
    @maniac5411 8 หลายเดือนก่อน

    @teej_dv awesome video. Thanks 🙏
    Video idea: Neovim LSP core usage. Insights into LSP API and stuff like that. Might even be a series of videos

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน

      I'm not sure what you mean - core usage in what way?

    • @maniac5411
      @maniac5411 8 หลายเดือนก่อน

      @@teej_dv As a beginner, we all get to use LSP features of Neovim via plugins, or some pre-defined setup. All this obviously only works because of the native LSP support that you programmed in Neovim, as in LSP is a core part of Neovim. My point about video idea is going one step ahead and maybe talking about what more can one do with LSP apart from just using plugins? Maybe even talk about some LSP API that is made use of inside these plugins? The whole point here teej is to learn more about LSP and perhaps make use of it. And it's ok if my idea doesn't resonate with your ideology of the videos you want to put out, not everyone's looking for this.
      All in all, awesome videos man. Keep up the good work :)

  • @luxxa
    @luxxa 8 หลายเดือนก่อน +1

    I guess it's late, but would have inverted where and why, and show the examples as last.
    Nice job.

  • @arsenbabaev1022
    @arsenbabaev1022 8 หลายเดือนก่อน

    Great vid, was just making the lsp for my toy language.

  • @richardgeddes630
    @richardgeddes630 8 หลายเดือนก่อน

    The concept of LSP is clear. It's a JSON-RPC communication protocol. What's a little confusing to me is who's responsibility is it to download the server? I see a long list of LSP's, which I assume are just protocols (not servers) to communicate with a server. Does the plugin download the server (that would be nice) or do I have to install it separately out in the shell?

  • @JordanShurmer
    @JordanShurmer 8 หลายเดือนก่อน +1

    Thank well done.
    I think your slides need some Berkeley Mono font btw.. :)

  • @mafanu2
    @mafanu2 8 หลายเดือนก่อน +1

    TH-cam LSP = Like, Subscribe, Post. Interesting topic.

  • @pokefreak2112
    @pokefreak2112 8 หลายเดือนก่อน +5

    Why LSP? Because it pisses off Jonathan Blow

  • @BitMonkeyJed
    @BitMonkeyJed 8 หลายเดือนก่อน +1

    This is super cool! I would be interested in seeing how to make these requests and see the different responses and requests that are possible. Where would I look at this?

    • @frydac
      @frydac 8 หลายเดือนก่อน +1

      Read the nvim docs of e.g. vim.lsp.buf_request_all (lua funtion) and probably you want to read most the document this is in, with this video as background introduction, it should make (more) sense.
      Sometimes it's not trivial to find out how to provide the input data if required, like text range, this depends on the specific request. At some point I implemented my own handler for a non-standard lsp request of a specific server, and eventually I looked at the nvim source (lua) code, and the standard requests there, to figure out how exactly to do this.

  • @KarloMartinezMartos
    @KarloMartinezMartos 8 หลายเดือนก่อน

    More nuggets like this plz

  • @VasiliSyrakis
    @VasiliSyrakis 8 หลายเดือนก่อน

    Hello algorithm gods I have smashed the like button and left a comment, please allocate more views to this video and give TJ a bigger cut of the monetization, Amen 🙏

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน

      ty ty for commenting

  • @m4rt_
    @m4rt_ 8 หลายเดือนก่อน +1

    what did you use for this presentation?
    a normal slideshow thing, or something a bit more fancy?
    Edit: nevermind, I see it linked in the description.

  • @trench6118
    @trench6118 8 หลายเดือนก่อน

    Nice video. what software did you use for the slides? Edit - just saw it in the description thanks

  • @ricardonunosr
    @ricardonunosr 8 หลายเดือนก่อน

    Awesome video, a question: The Editor communicates to the server via json? that seems inefficient...

  • @jsonkody
    @jsonkody 8 หลายเดือนก่อน

    At last I know what is Lisp. Thx 🥳🙃

  • @sawyerpowell3176
    @sawyerpowell3176 8 หลายเดือนก่อน

    TJ can you explain why LSP is a client/server protocol? I've increasingly felt that it's kind of absurd for my editor to need to make http over tcp requests on localhost, encoded in JSON, to get language information to and from my language analysis tooling. JSON parsing alone adds a ton of overhead for certain LSPs, and using tcp for local IPC just seems wasteful? In seems like the majority(?) use case is for someone editing locally, which means a standard interface for some kind of DLL might have been a better route? Unless the original idea behind LSP was for remote development? Curious to hear your thoughts.

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน +1

      Well it doesn't do http over tcp, they usually communicate over stdin/stdout. It *can* use TCP but I have almost never seen it done in practice.

  • @coffeeowl86
    @coffeeowl86 8 หลายเดือนก่อน

    Awesome content~!

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน +1

      Thanks!!

  • @roryhendrickson
    @roryhendrickson 8 หลายเดือนก่อน

    TIL, love it

  • @bhaveshverma8629
    @bhaveshverma8629 8 หลายเดือนก่อน

    Awesome 👍

  • @guitaripod
    @guitaripod 8 หลายเดือนก่อน

    More videos like this. Thanks

    • @teej_dv
      @teej_dv  8 หลายเดือนก่อน

      Will do!!

  • @oubracode
    @oubracode 8 หลายเดือนก่อน +2

    Does anyone know what program he's using for the presentation?

  • @tangxian3575
    @tangxian3575 8 หลายเดือนก่อน +2

    🎉

  • @SalvaToroTorus
    @SalvaToroTorus 8 หลายเดือนก่อน

    Fantastic

  • @lancemarchetti8673
    @lancemarchetti8673 8 หลายเดือนก่อน

    Brilliant

  • @jamieroyer8796
    @jamieroyer8796 8 หลายเดือนก่อน

    Could LSP be used to generate call sequence diagrams? I work with large C++ projects and it would be really helpful to understand where objects get created. Do you think it is possible?

  • @radustoleru9109
    @radustoleru9109 8 หลายเดือนก่อน

    Everything was really cool

  • @akshatkotpalliwar
    @akshatkotpalliwar 3 หลายเดือนก่อน

    well done video

  • @asg8813
    @asg8813 8 หลายเดือนก่อน +2

    How did you make these slides?

  • @amzabdrahim3350
    @amzabdrahim3350 7 หลายเดือนก่อน

    i like the slides. how did you achieve that ?

  • @heller166
    @heller166 8 หลายเดือนก่อน

    Cool video!

  • @dgleitaocontratos
    @dgleitaocontratos 8 หลายเดือนก่อน

    Good good!

  • @asg8813
    @asg8813 8 หลายเดือนก่อน

    Can someone tell me how to make such slides, and which presenter software he is using?

  • @-Simon_Petrikov
    @-Simon_Petrikov 4 หลายเดือนก่อน

    I was looking up the character from Adventure time lmao

  • @zacharymiller7573
    @zacharymiller7573 8 หลายเดือนก่อน

    W Oregon shirt

  • @thesaintseiya
    @thesaintseiya 8 หลายเดือนก่อน

    hmm, everyone keeps saying that lsp is hard to configure with nvim, but I don't think it really matches my experience
    I just download them with Mason, write down the names in a table, and loop over each of them

    • @thesaintseiya
      @thesaintseiya 8 หลายเดือนก่อน

      this works perfectly, would be even easier with mason-lspconfig:
      local lsp = require 'lspconfig'
      for client in pairs(servers) do
      lsp[client].setup {
      on_attach = on_attach,
      capabilities = capabilities,
      settings = servers[client],
      }
      end