전역된 따옴표가 포함된 코드 하이라이팅

코드 하이라이팅이 이스케이프된 따옴표(단일 및 이중)를 무시하는 것 같습니다. 즉, 코드 섹션 내 문자열에 이스케이프된 따옴표가 포함된 경우, 해당 문자열의 일부가 일반 코드처럼 하이라이팅됩니다. 이 포럼에서는 코드 하이라이팅이 비활성화된 것으로 보이므로, 처음 이 문제를 발견한 특정 포럼 게시물 링크를 첨부합니다.


스크린샷을 찍은 포럼 게시물 링크: https://unofficialnextion.com/t/set-vale-on-page2/1679/3

추가 세부 사항:

  • 해당 포럼은 Discourse v2.9.0.beta9를 실행 중입니다.
  • bash, cs, cpp, xml, ini, json, makefile, markdown, python, c, c-like에 대해 코드 하이라이팅이 활성화되어 있습니다. 기본값은 cpp로 설정되어 있습니다. 이러한 언어 하이라이팅 설정을 기본값으로 되돌려도 문제가 해결되지 않습니다.
  • 안전 모드에서도 문제가 발생합니다.
  • 단일 따옴표로 감싸진 문자열에서 단일 따옴표를 이스케이프할 때도 문제가 발생합니다(이중 따옴표 문자열에서 단일 따옴표를 이스케이프하거나 그 반대의 경우로는 정상 작동합니다).

감사합니다.
Max

이것은 highlightjs 라이브러리이므로 모든 버그는 업스트림에서 처리되어야 합니다.

또한 cpp 모드에서는 이 기능이 정상적으로 작동하는 것 같습니다.

const char* NXT_CMD_END = "\xff\xff\xff";
Serial.print("page2.t0.txt=\"Any text\"");
Serial.print(NXT_CMD_END);

코드 블록의 “info string” 기능을 사용하여 언어를 명시적으로 지정할 수 있습니다:

```cpp
your code here   
```

이렇게 하면 cpp 형식의 코드 블록이 생성됩니다.

빠른 답변과 정보 감사합니다!

사실, cpp를 명시적으로 설정하면 하이라이팅이 정상적으로 작동합니다. 그러나 이 문제를 좀 더 자세히 살펴보다가 또 다른… 예상치 못한 동작을 발견했습니다.
하이라이트 대상 언어 목록에서 cpp를 제외한 모든 언어를 제거하고, 기본 언어를 다시 auto로 되돌렸습니다. 그럼에도 불구하고 하이라이팅이 여전히 잘못되었습니다. Firefox의 인스펙터를 열었더니 코드가 vbnet으로 인식되는 것 같습니다. vbnet은 하이라이트 대상 언어 목록(기본 언어든, 이 문제를 위해 시도해 본 사용자 지정 언어든)에 한 번도 포함된 적 없는 언어인데, 이런 일이 일어나는 것이 정상인가요?

감사합니다.
Max

설정을 변경한 후, 코드 블록이 포함된 게시물을 다시 빌드(rebake)해 보셨나요?

페이지를 새로고침했습니다. 포스트 자체는 Firefox를 재시작하거나 CTRL+F5로 페이지를 새로고침해도 변하지 않았지만, 포스트 편집 미리보기는 페이지를 새로고침할 때 수정된 설정을 _사용_한다는 것을 알게 되었습니다.

즉, 목록에 cpp만 있는 경우(단순화를 위해) 기본 언어를 cpp로 설정하면 포스트 편집 미리보기에서 코드 하이라이팅이 올바르게 표시됩니다. 하지만 기본 언어를 auto로 설정하고 다시 페이지를 새로고침하면, 이전 게시글에서 설명한 대로 올바르게 표시되지 않습니다.

감사합니다.
Max

브라우저를 다시 시작한다고 해결되지 않습니다. Discourse에서 게시글은 서버에서 한 번만 구워지(markdown에서 HTML로 변환)며, 생성된 HTML은 데이터베이스에 캐시됩니다. 이렇게 구워진 게시글을 업데이트하려면 다시 ‘구워야(rebake)’ 합니다. 이는 스태프 사용자가 게시글의 렌치 메뉴를 통해, 또는 게시글 작성자가 해당 게시글의 내용을 편집함으로써 수행할 수 있습니다.

감사합니다. 다만 재번역(Rebaking)해도 편집 미리보기와 동일한 동작을 합니다. auto는 하이라이트 대상 언어 목록에 없는 언어(vbnet)를 선택하고 있습니다. 이전에 보고드린 대로 기본 언어를 명시적으로 cpp로 설정하면(포럼 설정에서든, 여기에서 보여주신 방식이든) 정상적으로 작동합니다.
그래서 질문이 남습니다: auto는 목록에 없는 다른 언어도 사용하도록 의도된 건가요?

감사합니다.
Max