다중 선택 영역에 하드 브레이크가 없는 경우 인라인 "정형 텍스트" 서식 사용

우선순위/심각도:

중간

플랫폼

운영 체제

Windows 11

브라우저

Google Chrome 141.0.7390.123

Discourse

ad36231adab58a8a249bfe8139aade2bde2134d3

설명:

“정형 텍스트(preformatted text)” 서식에는 두 가지 스타일이 있습니다:

  • 인라인(inline): 산문 패스지 내의 비산문(non-prose) 콘텐츠(예: “foo 함수를 호출하세요”) 또는 단일 짧은 비산문 콘텐츠 줄에 사용됩니다.
  • 블록(block): 여러 줄의 비산문 콘텐츠에 사용됩니다.

사용자는 작성기(composer)에서 서식을 적용할 때 다음 두 가지 접근 방식 중 하나를 취할 수 있습니다:

  • 능동적(proactive): 서식화할 콘텐츠를 추가하기 전에 서식 모드를 전환합니다.
  • 사후적(retroactive): 콘텐츠를 서식 없는 형태로 추가한 후, 해당 내용을 선택하고 선택된 부분에 서식을 적용합니다.

:bug: 다음 조건에서 여러 줄의 선택 영역에 “정형 텍스트” 서식을 적용할 때 부적절한 “인라인” 스타일이 사용됩니다:

  • 작성기가 “리치 텍스트 에디터” 모드인 경우
  • 서식이 사후적으로 적용되는 경우
  • 선택된 콘텐츠에 하드 라인 브레이크(강제 줄바꿈)가 없는 경우

이로 인해 게시글이 읽기 어렵고, 비산문 콘텐츠를 복사하기가 어려워집니다(공유된 코드의 일반적인 요구 사항).

재현 단계:

  1. 작성기를 엽니다.
  2. 에디터 모드 스위치를 “리치 텍스트 에디터” 위치로 설정합니다.
  3. 작성기에 foo를 입력합니다.
  4. Shift+Enter 키보드 단축키를 눌러 "소프트 브레이크(soft break)"를 추가합니다.
  5. 작성기에 bar를 입력합니다.
    :red_exclamation_mark: 줄바꿈을 추가하지 마세요.
  6. Ctrl+Shift+Home 키보드 단축키를 눌러 2번째 줄의 끝부터 게시글의 시작까지의 모든 콘텐츠를 선택합니다.
  7. 작성기 도구 모음의 </> 버튼을 클릭합니다.

:bug: 선택된 각 줄이 인라인 스타일로 개별적으로 서식화되었습니다:

foo
bar

올바른 동작은 콘텐츠를 단일 코드 블록에 넣는 것이어야 합니다:

foo
bar

추가 정보

데모를 위해 콘텐츠를 수동으로 입력하는 방식을 선택했습니다. 이는 복사된 출처에 따라 복사된 콘텐츠에 이미 존재할 수 있는 서식을 고려해야 하는 불필요한 복잡성을 피하기 위함입니다. 그러나 이 결함은 붙여넣은 콘텐츠에서도 발생하며, 하드 브레이크가 없는 콘텐츠 조건은 이러한 콘텐츠에서 더 자주 발생할 가능성이 높습니다(사용자가 실제로 하드 브레이크를 원하지 않았더라도 입력 중에 Enter를 누를 가능성이 높기 때문).


“모두 선택”/Ctrl+A를 사용하여 콘텐츠를 선택하는 경우 이 결함은 발생하지 않습니다.


마크다운 에디터는 “정형 텍스트” 서식이 여러 줄의 선택 영역에 사후적으로 적용될 때 항상 선택된 콘텐츠를 코드 블록에 배치하는 올바른 동작을 가지고 있습니다.


저는 try.discourse.org의 "안전 모드"에서 이 결함을 재현할 수 있습니다.


원본 보고: Why did the Forum functions change? - #37 by sterretje - Website and Forum - Arduino Forum

수동으로 선택할 때도 그런 현상이 발생하지 않는 것 같습니다.

Hi @NateDhaliwal. "수동 선택"이라는 표현은 무엇을 의미하시나요?

마우스로 드래그하여 선택하는 것을 말씀하시는 건가요? 그렇다면 해당 선택 방식에서도 여전히 오류가 발생합니다:

manual-select

아니면 Shift 키와 화살표 키를 조합해 선택하는 것을 말씀하시는 건가요? 그렇다면 해당 선택 방식에서도 여전히 오류가 발생합니다:

manual-select2

이 부분은 확실하지 않습니다. 이는 의도된 예외였습니다. 이 경우에도 줄바꿈이 있는 단일 단락이므로, 이 상황에서 인라인 코드 마커를 추가할 수 있어야 하기 때문입니다.

이 동작을 변경하는 것도 고려해 볼 수 있지만, 실제로는 버그가 아닙니다. /cc @lindsey

네, 죄송합니다. 이 점을 놓치고 있었습니다. 실제로 두 동작을 일관되게 유지하는 것이 합리적이라고 생각합니다.

1개의 좋아요

네, 리치 텍스트 모드와 마크다운 모드에서 일관성을 유지하는 것이 맞는 것 같습니다.

1개의 좋아요