영상을 불러오지 못했습니다

Copy Selection Context

프로젝트 목록으로 돌아가기
Copy Selection Context
출시됨
jetbrains-plugin/developer-tools

JetBrains IDE에서 파일 경로, 줄 번호와 코드를 함께 복사하는 플러그인. AI에 전달할 코드 문맥을 준비할 때 사용한다.

Copy Selection Context

AI에게 코드를 전달할 때는 코드 조각뿐 아니라 파일 경로와 줄 범위도 필요하다. 여러 파일이 관련된 문제라면 각 위치와 코드를 따로 복사해 하나의 설명으로 모아야 한다.

Copy Selection Context는 이 작업을 IDE 안에서 처리하는 JetBrains 플러그인이다. 선택 영역의 경로, 줄 번호, 코드를 한 번에 복사하고, 여러 파일에서 수집한 문맥을 검토한 뒤 함께 전달할 수 있도록 구현했다.

구현 범위#

Kotlin과 IntelliJ Platform을 기반으로 에디터 액션, 설정 화면, 복사 기록, 상태 표시줄과 컬렉션 도구 창을 구현했다. IntelliJ Platform 2024.3 이상을 대상으로 하며, JetBrains Marketplace와 GitHub Releases에서 배포한다.

단축키 복사는 상대 또는 절대 경로와 코드 포함 여부를 선택할 수 있다. 출력은 Claude Code 참조 형식, Path:Line, 사용자 지정 템플릿을 지원한다. 예를 들어 프로젝트 상대 경로를 사용하면 다음과 같이 코드 위치를 전달한다.

@src/main/kotlin/App.kt#L42-53

여러 파일을 다룰 때는 선택 영역을 컬렉션에 담고 도구 창에서 내용을 확인하거나 순서를 바꾼 뒤 전체를 복사한다. 단일 영역을 바로 복사하는 흐름과 문맥을 모아 검토하는 흐름을 각각 제공한다.

코드와 위치가 어긋나지 않도록#

복사된 줄 범위는 사용자가 선택한 코드와 일치해야 한다. IntelliJ의 선택 영역 끝은 마지막 문자의 다음 위치를 가리키므로 selectionEnd - 1을 기준으로 마지막 줄을 계산한다. 다음 줄의 시작점까지 선택해도 불필요한 줄이 포함되지 않도록 했으며, 여러 커서를 사용하는 경우에는 각 영역을 독립적으로 처리한다.

컬렉션에는 수집 당시의 코드와 경로, 줄 범위를 스냅샷으로 보관한다. 원본을 수정하거나 삭제해도 수집한 코드는 유지된다. 같은 위치의 코드가 바뀌면 별도 스냅샷으로 남겨 수정 전후를 함께 전달할 수 있다. 컬렉션은 프로젝트 세션 안에서만 유지하고 영구 저장하지 않는다.

수정 전 값 10과 수정 후 값 30을 별도 스냅샷으로 보관한다. 출력 미리보기에서도 수집 당시의 코드와 시각을 확인할 수 있다.
수정 전 값 10과 수정 후 값 30을 별도 스냅샷으로 보관한다. 출력 미리보기에서도 수집 당시의 코드와 시각을 확인할 수 있다.

GitHub와 GitLab permalink는 현재 문서와 HEAD의 내용이 다를 수 있다는 점을 별도로 다뤘다. Git 조회는 백그라운드에서 실행하고, 문서가 HEAD와 다르면 확인을 거쳐 해당 커밋의 링크를 복사한다. 줄 번호를 임의로 보정하거나 파일을 저장하거나 커밋하지 않는다.

검증과 배포#

테스트는 순수 로직을 다루는 단위 테스트와 실제 IntelliJ 에디터, 액션, 클립보드를 사용하는 플랫폼 테스트로 나눴다. 플랫폼 상태를 사용하는 테스트는 JVM을 분리해 실행한다. CI에서는 테스트와 플러그인 구조와 호환성 검증, 패키징을 수행한다.

릴리스에는 배포 ZIP의 체크섬과 GitHub artifact attestation을 제공한다. 내려받은 파일이 릴리스 워크플로에서 만든 산출물인지 확인할 수 있도록 했다.

소스 코드와 사용법 / 빌드와 테스트 구성 / JetBrains Marketplace

Profile Image of the Author
Jihoon Jeon
안녕하세요! 서브컬처와 자전거를 사랑하는 개발자 전지훈입니다.
공지사항
제 블로그에 오신 것을 환영합니다! 예시 공지입니다.
카테고리
태그
최신 일상
사이트 통계
게시글
73
카테고리
10
태그
143
총 단어 수
133,527
운영 일수
0일
최근 활동
0일 전
사이트 정보
빌드 플랫폼
GitHub Actions
블로그 버전
Firefly v6.16.9
라이선스
CC BY-NC-SA 4.0
목차