feat: 帖子全局/板块置顶支持权重排序,优化列表与详情渲染
This commit is contained in:
@@ -101,28 +101,22 @@ export function enhanceCodeBlocks(root: ParentNode): void {
|
||||
const raw = code.textContent || '';
|
||||
const display = readDisplayOptions(pre);
|
||||
|
||||
// 作者写了语言标签则以标注为准,绝不被自动识别覆盖
|
||||
// 作者写了语言标签则以标注为准,绝不被自动识别覆盖;纯文本不做自动检测
|
||||
const declaredLang = detectLang(code, pre);
|
||||
let label = formatLangLabel(declaredLang || 'code');
|
||||
let label = declaredLang ? formatLangLabel(declaredLang) : '';
|
||||
|
||||
try {
|
||||
if (declaredLang && hljs.getLanguage(declaredLang)) {
|
||||
// 作者标注且 hljs 收录 → 语法高亮
|
||||
const result = hljs.highlight(raw, { language: declaredLang, ignoreIllegals: true });
|
||||
code.innerHTML = wrapCodeLines(result.value, display.lineNumbers);
|
||||
code.classList.add('hljs', `language-${declaredLang}`);
|
||||
} else if (declaredLang) {
|
||||
// 未收录语言:保留原文与标签,不做自动猜测
|
||||
// 作者标注但 hljs 未收录 → 保留原文与标签,不做自动猜测
|
||||
code.innerHTML = wrapCodeLines(escapeHtml(raw), display.lineNumbers);
|
||||
code.classList.add('hljs', `language-${declaredLang}`);
|
||||
} else if (raw.length >= 24) {
|
||||
const result = hljs.highlightAuto(raw);
|
||||
code.innerHTML = wrapCodeLines(result.value, display.lineNumbers);
|
||||
code.classList.add('hljs');
|
||||
if (result.language) {
|
||||
label = formatLangLabel(result.language);
|
||||
code.classList.add(`language-${result.language}`);
|
||||
}
|
||||
} else {
|
||||
// 纯文本(无语言标注)→ 不做自动检测,保持纯文本显示
|
||||
code.innerHTML = wrapCodeLines(escapeHtml(raw), display.lineNumbers);
|
||||
code.classList.add('hljs');
|
||||
}
|
||||
@@ -146,7 +140,7 @@ export function enhanceCodeBlocks(root: ParentNode): void {
|
||||
initiallyCollapsed ? 'md-codeblock--collapsed' : '',
|
||||
initiallyCollapsed && lineCount <= CODE_FOLD_MIN_LINES ? 'md-codeblock--short' : '',
|
||||
].filter(Boolean).join(' ');
|
||||
wrap.setAttribute('data-lang', label);
|
||||
if (label) wrap.setAttribute('data-lang', label);
|
||||
if (display.lineNumbers) wrap.setAttribute('data-line-numbers', 'true');
|
||||
if (display.collapsed) wrap.setAttribute('data-collapsed', 'true');
|
||||
wrap.setAttribute('data-line-count', String(lineCount));
|
||||
@@ -165,8 +159,9 @@ export function enhanceCodeBlocks(root: ParentNode): void {
|
||||
}
|
||||
actions.push('<button type="button" class="md-codeblock__copy" data-code-copy>复制</button>');
|
||||
|
||||
const langHtml = label ? `<span class="md-codeblock__lang">${escapeHtml(label)}</span>` : '';
|
||||
head.innerHTML = `
|
||||
<span class="md-codeblock__lang">${escapeHtml(label)}</span>
|
||||
${langHtml}
|
||||
<span class="md-codeblock__actions">${actions.join('')}</span>
|
||||
`;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user