8월 중순에 올라온 소식인데 VS Code에서는 마크다운 편집을 하려면 서버가 필요한 건가라고 생각하고 지나갔다가 내용을 다시 살펴보았습니다.
VS Code 블로그에 올라온 글은 개발자 Matt Bierner의 개발 후기 같은 것이었네요. Matt Bierner는 2014년 케이스웨스턴리저브대학교를 졸업하고 Microsoft 정규직이 됩니다. 학교에 다니면서 Amazon, Microsoft 인턴 경력이 있구요. 하여간 내용을 정리해보면 2016년 VS Code 팀에 합류해서 마크다운 지원 기능을 개발했다고 합니다(아마도 확장 기능으로 만든 것이었던 것 같네요). 확장 기능도 쓰기에는 큰 문제가 없었는데 대규모 문서의 링크 수정 같은 문제를 다루기에는 한계가 있다는 것을 느꼈습니다. 그 전에는 마크다운을 프로그래밍 언어로 생각하지 않았는데 생각을 바꾸니 프로그래밍 언어와 마찬가지로 다룰 수 있다는 것을 깨달았다고 합니다(음. 좀 이상한 부분이긴 한데 지나고 보니 그렇게 생각할 수도 있죠).
하여간 그래서 기존 확장 기능을 언어 서버로 옮기는 작업을 점진적으로 진행했고 이제 그 작업을 끝내면서 오픈소스로 공개한다는 것이었습니다.
https://code.visualstudio.com/blogs/2022/08/16/markdown-language-server
그럼 언어 서버라는 것이 무엇인지 알아야하는데요. 언어 서버라는 것이 해당 언어 기능을 사용하기 위해 뭐 서버를 구축해야 하는 건 아니고(아예 하지 않는 건 아니지만 일반적으로 생각하는 서버가 아닌 로컬에 설치되는 서버입니다) 개발도구와 통신하면서 정보를 제공하는 서버입니다. 그림으로 보면 좀 더 쉽게 이해가 될 텐데요.
이전에는 각 개발도구에서 언어에 대한 지원을 따로 했지만 LSP(언어 서버 프로토콜)을 사용하면 언어에 대한 공통의 지원을 각 개발도구에서 추가 개발 없이 사용할 수 있다는 겁니다. LSP 개발 히스토리에 대해서는 이클립스 사이트에 잘 정리가 되어 있네요.
https://www.eclipse.org/community/eclipse_newsletter/2017/may/article1.php
음. 그래서 결론은 VS Code에 뭔가 새로운 기능이 추가된 건 아니고 마크다운에 대한 언어 서버를 오픈 소스로 공개했다는 겁니다. 공개된 LSP 서버 목록은 아래 링크에서 확인할 수 있습니다.
https://microsoft.github.io/language-server-protocol/implementors/servers/
대부분 프로그래밍 언어에 대한 언어 서버가 공개되어 있기 때문에 새로 만들지 않고 협업을 하면 됩니다. 혹 자신만의 언어를 만든 경우에는 직접 언어 서버를 만들어 공개해야겠죠.
https://www.slideshare.net/devcatpublications/visual-studio-code-2-ndc2017