gopls의 대화형 리팩터링
요약
본 글은 LSP(Language Server Protocol)에 대화형 리팩터링 기능을 추가하는 것에 대한 논의를 다룹니다. 이 기능은 코드 선택을 기반으로 함수/메서드를 추출하거나 기본 메서드를 자동으로 구현하여 개발 생산성을 높이는 것을 목표로 합니다. 작성자는 이 기능이 모든 언어의 공통 도구 모음이 될 수 있다고 기대하며, Neovim 등 편집기에서의 지원 여부와 개선 방향에 대한 의견을 제시합니다.
핵심 포인트
- LSP 명세에 대화형 리팩터링 기능을 추가하려는 시도입니다.
- 코드 추출 및 기본 메서드 자동 구현 기능의 유용성을 강조합니다.
- 작성자는 이 기능이 모든 언어 개발 환경의 공통 도구가 되기를 기대합니다.
Go를 쓰지는 않지만 다른 언어에서도 이런 기능을 볼 수 있으면 좋겠음! 확정되면 내가 쓰는 Helix 같은 편집기에서도 지원하길 바람. 지원을 추가하는 데 얼마나 많은 작업이 필요할지 궁금함.
LSP 명세에 포함된다면 Helix와 다른 편집기들도 지원하게 될 것임. LSP 관리자들은 지난 6년간 이 기능에 부정적이었지만, 이번 Google의 제안으로 달라질 가능성이 보임.
처음부터 LSP에 없던 기능이라니 믿기 어려움. 이름 바꾸기만 별도로 특별 취급했다는 것도 놀라움. 내부적으로 함수 이름 같은 매개변수를 전달하는 줄 알았는데, 대부분의 용도에서는 커서 위치를 기준으로 삼는 편이 더 정확하고 편집기가 코드를 파싱할 필요도 없어 보임.
그래도 자동 리팩터링 같은 작업에서 어느 정도 맥락을 전달하고 싶다는 건 당연한 요구처럼 느껴짐.
직접 시험해 보기를 기대하고 있음! 특히 인터페이스를 구현하는 메서드 추가 기능이 내게 아주 유용해 보임.
지금도 Neovim에서 사용할 수 있는지 아는 분이 있는지? Neovim의 LSP 구현에서 이 기능을 지원하는지?
실험적인 구현을 써보고 싶다면, 연결된 LSP 이슈에 이 기능을 구현한 fork of neovim 링크가 있음.
코드를 선택해 함수·메서드로 추출하거나 필요한 기본 메서드를 자동으로 구현하는 기능은 늘 멋졌음. 처음 본 곳이 Eclipse나 IntelliJ였던 것 같음.
미사용 코드 찾기, 대규모 심벌 이름 변경, 파일 경로 변경에 맞춘 가져오기 구문과 빌드 도구 갱신, 맥락을 고려한 이름 변경 등 여러 편의 기능을 떠올릴 수 있고, 일부는 이미 구현되어 있음.
이런 기능들이 모든 언어의 공통 도구 모음이 될 수도 있다니 반가움!
나와 Gleam 팀은 오래전부터 이 기능이 LSP 명세에 들어가길 원했지만, 6년 전 처음 제안된 이후 안타깝게도 진전이 없었음. 이번 Google의 관심이 Microsoft의 명세 반영을 이끌어낼 만큼 충분하길 바람.
IDEA의 일부 코드 액션처럼 매개변수를 인라인으로 입력하며 실시간 미리보기를 볼 수 있으면 사용성이 더 좋아질 것임. 대화상자를 띄우면 작업 맥락이 흐트러지고 조작을 직관적으로 파악할 단서도 사라짐.
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기