fix: plain text render
This commit is contained in:
parent
51ca9cb289
commit
ae1960f5c6
@ -63,4 +63,7 @@ electronDownload:
|
|||||||
afterSign: scripts/notarize.js
|
afterSign: scripts/notarize.js
|
||||||
releaseInfo:
|
releaseInfo:
|
||||||
releaseNotes: |
|
releaseNotes: |
|
||||||
修复删除助手会导致应用崩溃的问题
|
修复快捷键设置错误导致的无法启动问题
|
||||||
|
修复翻译按钮无法正常输出内容问题
|
||||||
|
修复检测更新按钮逻辑错误
|
||||||
|
没有语言标识的代码块支持复制
|
||||||
|
|||||||
@ -56,7 +56,7 @@ export const SyntaxHighlighterProvider: React.FC<PropsWithChildren> = ({ childre
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
if (!highlighter.getLoadedLanguages().includes(language as BundledLanguage)) {
|
if (!highlighter.getLoadedLanguages().includes(language as BundledLanguage)) {
|
||||||
if (language in bundledLanguages) {
|
if (language in bundledLanguages || language === 'text') {
|
||||||
await highlighter.loadLanguage(language as BundledLanguage)
|
await highlighter.loadLanguage(language as BundledLanguage)
|
||||||
console.log(`Loaded language: ${language}`)
|
console.log(`Loaded language: ${language}`)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import 'katex/dist/katex.min.css'
|
|||||||
|
|
||||||
import { useSettings } from '@renderer/hooks/useSettings'
|
import { useSettings } from '@renderer/hooks/useSettings'
|
||||||
import { Message } from '@renderer/types'
|
import { Message } from '@renderer/types'
|
||||||
import { escapeBrackets } from '@renderer/utils/formula'
|
import { addPlaintextToCodeBlock, escapeBrackets } from '@renderer/utils/formula'
|
||||||
import { isEmpty } from 'lodash'
|
import { isEmpty } from 'lodash'
|
||||||
import { FC, useMemo } from 'react'
|
import { FC, useMemo } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
@ -35,7 +35,7 @@ const Markdown: FC<Props> = ({ message }) => {
|
|||||||
const empty = isEmpty(message.content)
|
const empty = isEmpty(message.content)
|
||||||
const paused = message.status === 'paused'
|
const paused = message.status === 'paused'
|
||||||
const content = empty && paused ? t('message.chat.completion.paused') : message.content
|
const content = empty && paused ? t('message.chat.completion.paused') : message.content
|
||||||
return escapeBrackets(content)
|
return escapeBrackets(addPlaintextToCodeBlock(content))
|
||||||
}, [message.content, message.status, t])
|
}, [message.content, message.status, t])
|
||||||
|
|
||||||
const rehypePlugins = useMemo(() => {
|
const rehypePlugins = useMemo(() => {
|
||||||
|
|||||||
@ -43,3 +43,17 @@ export function extractTitle(html: string): string | null {
|
|||||||
|
|
||||||
return 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
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user