Markdown를 붙여넣을 때 목록 항목 사이에 CR이 추가됩니다

지난 몇 달 사이에 Discourse에서 새 게시글 창에 마크다운을 붙여넣으면 목록 항목 사이에 캐리지 리턴이 추가되기 시작했습니다.

예를 들어, 텍스트 편집기에서 간단한 목록을 복사하면:

* foo
* bar
* baz

…그 후 새 주제에 붙여넣으면 다음과 같은 결과가 나옵니다:

이것이 이 Discourse에, 심지어 바로 여기, 이 텍스트 입력 상자에 붙여넣을 때도 발생하는지 확인했습니다. 다음과 같이요:

  • foo

  • bar

  • baz

참고로, 위에서 예시 텍스트를 위해 이미 상단에 시작한 ``` 섹션에 붙여넣었을 때는 올바르게 붙여넣어졌습니다(물론 목록 항목으로 서식이 적용되지는 않았습니다).

아, 뭔가 생각났습니다. 번호가 매겨진 목록에서도 이런 일이 일어나는 걸까요?

  1. foo

  2. bar

  3. baz

…네, 그렇습니다.

방금 텍스트 3줄만 붙여넣어 보았는데, 이것도 같은 방식으로 동작하는 것 같습니다. 모든 항목에 캐리지 리턴을 추가하고 있네요:

foo
bar
baz

…이것이 3개의 별도 "단락"이 됩니다:

foo

bar

baz

수정:

(강조는 제가 추가했습니다). 어, 제가 충분히 꼼꼼히 읽지 못했습니다. 제목에도 이미 나와 있었네요. 죄송합니다.

원래 답변

"discourse"라고 하셨을 때 이 사이트를 말씀하시는 건가요, 아니면 다른 사이트를 말씀하시는 건가요?

만약 당신이 Discourse 사이트의 관리자라면 이 사이트 설정에 관심이 있을 수 있습니다:

전통적 마크다운 줄바꿈

줄바꿈을 위해 줄 끝에 두 개의 공백이 필요한 전통적 마크다운 줄바꿈을 사용합니다.

글쎄요, 여기에서도 그리고 우리 인스턴스에서도 발생합니다: https://opennms.discourse.group

이 설정을 변경해 보았지만, 붙여 넣기 시 결과 입력값에 추가 줄바꿈이 추가되는 문제에는 효과가 없는 것 같습니다.

검색을 하다가 “리치 텍스트 붙여 넣기 활성화” 옵션을 발견했는데, 이 옵션을 끄면 문제가 해결된다는 것을 확인했습니다. 그렇다면 이 옵션을 활성화하면 마크다운이 손상되는 것 같은데, 원래 HTML만 처리해야 하는 것 아닌가요?

머릿속에 가장 먼저 떠오른 생각은: 정말로 HTML이 아닌지 확인해 보셨나요? 어디서 버퍼로 복사할 때, 여전히 마크다운 상태인지, 아니면 마크다운을 HTML로 변환한 후 다시 되돌리려고 하고 있는 건지요.

순전히 추측일 뿐이고, 아마 버그일 가능성이 높습니다. 하지만 사실 브라우저 창을 기반으로 한 IDE와 텍스트 에디터가 정말 많거든요… :thinking:

Mac에서 Markdown All In One 플러그인을 활성화한 VSCode를 사용 중입니다. 몇 개월 전까지는 잘 작동했는데, 코드나 디스커스 인스턴스에서 무언가가 변경된 것 같습니다. 다만 정확히 언제 변경되었는지는 알 수 없어요. 그 이후로 VSCode도 수많은 업데이트가 이루어졌고요. 복사해 보면 그냥 “일반” 텍스트로 보입니다. 어떻게 디버깅해야 할지 모르겠네요…

다른 에디터에서 마크다운 텍스트를 복사하여 붙여넣은 후, Discourse에서 동일한 결과가 나오는지 확인해 보세요. :sunglasses:

이건 지원 요청처럼 느껴져요.

제 추측으로는 Markdown All in One 플러그인이 클립보드에 여러 항목을 넣고, 우리는 그중 HTML을 선택한 뒤 마크다운으로 변환하는 것 같습니다.

정확한 해결 방법은 모르겠고, VS Code 플러그인의 버그인 것 같아요. 클립보드에 생성되는 HTML을 디버깅해 봐야 할 것 같습니다.

Textmate 같은 프로그램에서 복사한 경우에도 같은 결과가 나오나요?