Skip to content

feat: add visual prompt rendering for code blocks #2

Description

@keytech42

기능 제안: 코드 블록 내 프롬프트(기호) 시각화 지원

🧩 제안 배경

문서 내 쉘 명령어나 디버깅 예제를 코드 블록으로 작성할 때, 프롬프트($, #, (gdb) 등)를 시각적으로 함께 보여줄 필요가 있다.
하지만 프롬프트를 코드 블록 본문에 직접 포함하면 복사 시 불필요한 문자열이 함께 복사돼 사용성을 해친다.
프롬프트는 시각적으로는 노출되되, 실제 복사되는 텍스트에는 포함되지 않도록 분리 렌더링할 수 있어야 한다.

💡 제안 내용

프롬프트 기호를 코드 블록의 속성(prop)으로 지정하고, 렌더링 결과에만 반영되도록 처리한다.
본문에는 명령어만 작성하고, 프롬프트는 메타 정보로 분리해 전달한다.

요구 사항:

  • $, #, (gdb) 등 프롬프트 기호를 코드 블록 좌측 또는 인라인으로 시각적 표시
  • 복사 시에는 명령어 본문만 클립보드에 포함되도록 처리
  • 프롬프트 종류를 마크다운 코드 블록의 속성으로 지정 가능
  • 접근성을 고려해 aria-hidden 등 사용

예시 입력

```shell prompt="$"
echo "Hello"
apt update
```

기대 렌더링 결과

$ echo "Hello"
$ apt update

복사 시:

echo "Hello"
apt update

🔧 구현 접근

Starlight는 코드 블록 렌더링에 Expressive Code를 사용하므로, 해당 기능은 Expressive Code의 커스텀 플러그인으로 구현하는 것이 적절해 보인다.

플러그인은 다음을 수행한다:

  • 코드 블록 속성에서 프롬프트 기호를 읽어 각 줄에 시각적으로 표시
  • 렌더링 시 프롬프트를 별도 레이어로 분리
  • 복사 시 프롬프트가 제외되도록 DOM 구조 또는 클립보드 핸들링을 조작
  • 접근성과 유연성을 위해 aria-hidden, data-* 속성 등을 활용

🔠 prop 명칭에 대한 고려

현재 제안하는 속성명은 prompt이다.

  • prompt는 직관적이고 간결하지만, 일반적인 용례(예: window.prompt)와의 혼동 가능성 있음
  • 대안으로 promptSymbol, promptPrefix, shellPrompt, uiPrompt 등을 고려할 수 있음
  • 단일 타입 프롬프트 지원이 기본이라면 prompt가 적절하며, 확장이 필요할 경우 더 구체적인 이름이 바람직함

✨ 기대 효과

  • 문서 내 예제 코드의 시각적 명확성 향상
  • 사용자는 별도 편집 없이 명령어를 바로 복사해 사용할 수 있음
  • 다양한 환경(쉘, 루트, 디버거 등)에 유연하게 대응 가능
  • 유지보수 측면에서도 Expressive Code의 확장 방식과 잘 맞음

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions