우선순위/심각도:
중간
플랫폼
운영 체제
Windows 11
브라우저
Google Chrome 141.0.7390.123
Discourse
ad36231adab58a8a249bfe8139aade2bde2134d3
설명:
“정형 텍스트(preformatted text)” 서식에는 두 가지 스타일이 있습니다:
- 인라인(inline): 산문 패스지 내의 비산문(non-prose) 콘텐츠(예: “
foo함수를 호출하세요”) 또는 단일 짧은 비산문 콘텐츠 줄에 사용됩니다. - 블록(block): 여러 줄의 비산문 콘텐츠에 사용됩니다.
사용자는 작성기(composer)에서 서식을 적용할 때 다음 두 가지 접근 방식 중 하나를 취할 수 있습니다:
- 능동적(proactive): 서식화할 콘텐츠를 추가하기 전에 서식 모드를 전환합니다.
- 사후적(retroactive): 콘텐츠를 서식 없는 형태로 추가한 후, 해당 내용을 선택하고 선택된 부분에 서식을 적용합니다.
다음 조건에서 여러 줄의 선택 영역에 “정형 텍스트” 서식을 적용할 때 부적절한 “인라인” 스타일이 사용됩니다:
- 작성기가 “리치 텍스트 에디터” 모드인 경우
- 서식이 사후적으로 적용되는 경우
- 선택된 콘텐츠에 하드 라인 브레이크(강제 줄바꿈)가 없는 경우
이로 인해 게시글이 읽기 어렵고, 비산문 콘텐츠를 복사하기가 어려워집니다(공유된 코드의 일반적인 요구 사항).
재현 단계:
- 작성기를 엽니다.
- 에디터 모드 스위치를 “리치 텍스트 에디터” 위치로 설정합니다.
- 작성기에
foo를 입력합니다. - Shift+Enter 키보드 단축키를 눌러 "소프트 브레이크(soft break)"를 추가합니다.
- 작성기에
bar를 입력합니다.
줄바꿈을 추가하지 마세요. - Ctrl+Shift+Home 키보드 단축키를 눌러 2번째 줄의 끝부터 게시글의 시작까지의 모든 콘텐츠를 선택합니다.
- 작성기 도구 모음의 </> 버튼을 클릭합니다.
선택된 각 줄이 인라인 스타일로 개별적으로 서식화되었습니다:
foo
bar
올바른 동작은 콘텐츠를 단일 코드 블록에 넣는 것이어야 합니다:
foo
bar
추가 정보
데모를 위해 콘텐츠를 수동으로 입력하는 방식을 선택했습니다. 이는 복사된 출처에 따라 복사된 콘텐츠에 이미 존재할 수 있는 서식을 고려해야 하는 불필요한 복잡성을 피하기 위함입니다. 그러나 이 결함은 붙여넣은 콘텐츠에서도 발생하며, 하드 브레이크가 없는 콘텐츠 조건은 이러한 콘텐츠에서 더 자주 발생할 가능성이 높습니다(사용자가 실제로 하드 브레이크를 원하지 않았더라도 입력 중에 Enter를 누를 가능성이 높기 때문).
“모두 선택”/Ctrl+A를 사용하여 콘텐츠를 선택하는 경우 이 결함은 발생하지 않습니다.
마크다운 에디터는 “정형 텍스트” 서식이 여러 줄의 선택 영역에 사후적으로 적용될 때 항상 선택된 콘텐츠를 코드 블록에 배치하는 올바른 동작을 가지고 있습니다.
저는 try.discourse.org의 "안전 모드"에서 이 결함을 재현할 수 있습니다.
원본 보고: Why did the Forum functions change? - #37 by sterretje - Website and Forum - Arduino Forum

