diff --git a/src/renderer/src/assets/styles/markdown.scss b/src/renderer/src/assets/styles/markdown.scss index 7b6e06566b..2d617adf1c 100644 --- a/src/renderer/src/assets/styles/markdown.scss +++ b/src/renderer/src/assets/styles/markdown.scss @@ -99,7 +99,6 @@ } code { - white-space: pre-wrap !important; font-family: 'Courier New', Courier, monospace; } @@ -111,7 +110,6 @@ } pre { - white-space: pre-wrap !important; border-radius: 5px; overflow-x: auto; font-family: 'Fira Code', 'Courier New', Courier, monospace; diff --git a/src/renderer/src/i18n/en-us.json b/src/renderer/src/i18n/en-us.json index b2c95a6178..e382f5272f 100644 --- a/src/renderer/src/i18n/en-us.json +++ b/src/renderer/src/i18n/en-us.json @@ -103,6 +103,7 @@ "settings.reset": "Reset", "settings.set_as_default": "Apply to default assistant", "settings.max": "Max", + "settings.show_line_numbers": "Show Line Numbers in Code", "suggestions.title": "Suggested Questions", "add.assistant.title": "Add Assistant", "message.new.context": "New Context", diff --git a/src/renderer/src/i18n/zh-cn.json b/src/renderer/src/i18n/zh-cn.json index d4b9523bea..090c7980ce 100644 --- a/src/renderer/src/i18n/zh-cn.json +++ b/src/renderer/src/i18n/zh-cn.json @@ -103,6 +103,7 @@ "settings.reset": "重置", "settings.set_as_default": "应用到默认助手", "settings.max": "不限", + "settings.show_line_numbers": "代码显示行号", "suggestions.title": "建议的问题", "add.assistant.title": "添加助手", "message.new.context": "清除上下文", diff --git a/src/renderer/src/i18n/zh-tw.json b/src/renderer/src/i18n/zh-tw.json index 866294e47c..69084a5396 100644 --- a/src/renderer/src/i18n/zh-tw.json +++ b/src/renderer/src/i18n/zh-tw.json @@ -103,6 +103,7 @@ "settings.reset": "重置", "settings.set_as_default": "設為預設助手", "settings.max": "最大", + "settings.show_line_numbers": "代码顯示行號", "suggestions.title": "建議的問題", "add.assistant.title": "添加助手", "message.new.context": "新上下文", diff --git a/src/renderer/src/pages/home/Markdown/CodeBlock.tsx b/src/renderer/src/pages/home/Markdown/CodeBlock.tsx index 838ae08d15..04de256bde 100644 --- a/src/renderer/src/pages/home/Markdown/CodeBlock.tsx +++ b/src/renderer/src/pages/home/Markdown/CodeBlock.tsx @@ -1,6 +1,7 @@ import { CheckOutlined } from '@ant-design/icons' import CopyIcon from '@renderer/components/Icons/CopyIcon' import { useTheme } from '@renderer/context/ThemeProvider' +import { useSettings } from '@renderer/hooks/useSettings' import { initMermaid } from '@renderer/init' import { ThemeMode } from '@renderer/types' import React, { memo, useState } from 'react' @@ -21,6 +22,7 @@ interface CodeBlockProps { const CodeBlock: React.FC = ({ children, className }) => { const match = /language-(\w+)/.exec(className || '') const showFooterCopyButton = children && children.length > 500 + const { codeShowLineNumbers } = useSettings() const { theme } = useTheme() const language = match?.[1] @@ -38,7 +40,8 @@ const CodeBlock: React.FC = ({ children, className }) => { = (props) => { sendMessageShortcut, setSendMessageShortcut, pasteLongTextAsFile, - renderInputMessageAsMarkdown + renderInputMessageAsMarkdown, + codeShowLineNumbers } = useSettings() const onUpdateAssistantSettings = (settings: Partial) => { @@ -204,6 +206,15 @@ const SettingsTab: FC = (props) => { /> + + {t('chat.settings.show_line_numbers')} + dispatch(setCodeShowLineNumbers(checked))} + /> + + {t('settings.font_size.title')} @@ -274,7 +285,6 @@ const Container = styled.div` display: flex; flex: 1; flex-direction: column; - overflow: hidden; padding-bottom: 10px; padding: 10px 15px; ` diff --git a/src/renderer/src/store/settings.ts b/src/renderer/src/store/settings.ts index 1720945e86..f1f53c4df9 100644 --- a/src/renderer/src/store/settings.ts +++ b/src/renderer/src/store/settings.ts @@ -21,6 +21,7 @@ export interface SettingsState { clickAssistantToShowTopic: boolean manualUpdateCheck: boolean renderInputMessageAsMarkdown: boolean + codeShowLineNumbers: boolean // webdav 配置 host, user, pass, path webdavHost: string webdavUser: string @@ -46,6 +47,7 @@ const initialState: SettingsState = { clickAssistantToShowTopic: false, manualUpdateCheck: false, renderInputMessageAsMarkdown: true, + codeShowLineNumbers: false, webdavHost: '', webdavUser: '', webdavPass: '', @@ -125,6 +127,9 @@ const settingsSlice = createSlice({ }, setRenderInputMessageAsMarkdown: (state, action: PayloadAction) => { state.renderInputMessageAsMarkdown = action.payload + }, + setCodeShowLineNumbers: (state, action: PayloadAction) => { + state.codeShowLineNumbers = action.payload } } }) @@ -152,7 +157,8 @@ export const { setWebdavHost, setWebdavUser, setWebdavPass, - setWebdavPath + setWebdavPath, + setCodeShowLineNumbers } = settingsSlice.actions export default settingsSlice.reducer