فهرست منبع

tui: render reasoning parts with syntax highlighting instead of plain text

Dax Raad 3 ماه پیش
والد
کامیت
2fbb49ac30
1فایلهای تغییر یافته به همراه11 افزوده شده و 2 حذف شده
  1. 11 2
      packages/opencode/src/cli/cmd/tui/routes/session/index.tsx

+ 11 - 2
packages/opencode/src/cli/cmd/tui/routes/session/index.tsx

@@ -945,7 +945,8 @@ const PART_MAPPING = {
 }
 }
 
 
 function ReasoningPart(props: { part: ReasoningPart; message: AssistantMessage }) {
 function ReasoningPart(props: { part: ReasoningPart; message: AssistantMessage }) {
-  const { theme } = useTheme()
+  const { theme, syntax } = useTheme()
+  const ctx = use()
   return (
   return (
     <Show when={props.part.text.trim()}>
     <Show when={props.part.text.trim()}>
       <box
       <box
@@ -957,7 +958,15 @@ function ReasoningPart(props: { part: ReasoningPart; message: AssistantMessage }
         borderColor={theme.backgroundPanel}
         borderColor={theme.backgroundPanel}
       >
       >
         <box paddingTop={1} paddingBottom={1} paddingLeft={2} backgroundColor={theme.backgroundPanel}>
         <box paddingTop={1} paddingBottom={1} paddingLeft={2} backgroundColor={theme.backgroundPanel}>
-          <text fg={theme.text}>{props.part.text.trim()}</text>
+          <code
+            filetype="markdown"
+            drawUnstyledText={false}
+            streaming={true}
+            syntaxStyle={syntax()}
+            content={props.part.text.trim()}
+            conceal={ctx.conceal()}
+            fg={theme.text}
+          />
         </box>
         </box>
       </box>
       </box>
     </Show>
     </Show>