fix: plain text render

This commit is contained in:
kangfenmao 2024-12-05 22:27:44 +08:00
parent 51ca9cb289
commit ae1960f5c6
4 changed files with 21 additions and 4 deletions

View File

@ -63,4 +63,7 @@ electronDownload:
afterSign: scripts/notarize.js
releaseInfo:
releaseNotes: |
修复删除助手会导致应用崩溃的问题
修复快捷键设置错误导致的无法启动问题
修复翻译按钮无法正常输出内容问题
修复检测更新按钮逻辑错误
没有语言标识的代码块支持复制

View File

@ -56,7 +56,7 @@ export const SyntaxHighlighterProvider: React.FC<PropsWithChildren> = ({ childre
try {
if (!highlighter.getLoadedLanguages().includes(language as BundledLanguage)) {
if (language in bundledLanguages) {
if (language in bundledLanguages || language === 'text') {
await highlighter.loadLanguage(language as BundledLanguage)
console.log(`Loaded language: ${language}`)
} else {

View File

@ -2,7 +2,7 @@ import 'katex/dist/katex.min.css'
import { useSettings } from '@renderer/hooks/useSettings'
import { Message } from '@renderer/types'
import { escapeBrackets } from '@renderer/utils/formula'
import { addPlaintextToCodeBlock, escapeBrackets } from '@renderer/utils/formula'
import { isEmpty } from 'lodash'
import { FC, useMemo } from 'react'
import { useTranslation } from 'react-i18next'
@ -35,7 +35,7 @@ const Markdown: FC<Props> = ({ message }) => {
const empty = isEmpty(message.content)
const paused = message.status === 'paused'
const content = empty && paused ? t('message.chat.completion.paused') : message.content
return escapeBrackets(content)
return escapeBrackets(addPlaintextToCodeBlock(content))
}, [message.content, message.status, t])
const rehypePlugins = useMemo(() => {

View File

@ -43,3 +43,17 @@ export function extractTitle(html: string): string | null {
return null
}
export function addPlaintextToCodeBlock(markdown: string): string {
// 修改正则表达式以匹配代码块的开始和结束,包括前后的换行符
const codeBlockRegex = /(^|\n)```([\w]*)\n([\s\S]*?)\n```/g
return markdown.replace(codeBlockRegex, (match, newline, language, code) => {
// 如果没有指定语言,使用 text
if (!language) {
return `${newline}\`\`\`text\n${code}\n\`\`\``
}
// 如果指定了语言,保持原样
return match
})
}