Просмотр исходного кода

Revert "wip(app): line selection"

This reverts commit 1780bab1ce609d2cfcb690ba77bce420be5a94f1.
Adam 1 месяц назад
Родитель
Сommit
df7b6792cd
1 измененных файлов с 20 добавлено и 2 удалено
  1. 20 2
      packages/app/src/components/prompt-input.tsx

+ 20 - 2
packages/app/src/components/prompt-input.tsx

@@ -162,6 +162,18 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
   const tabs = createMemo(() => layout.tabs(sessionKey()))
   const view = createMemo(() => layout.view(sessionKey()))
 
+  const selectionPreview = (path: string, selection: FileSelection | undefined, preview: string | undefined) => {
+    if (preview) return preview
+    if (!selection) return undefined
+    const content = files.get(path)?.content?.content
+    if (!content) return undefined
+    const start = Math.max(1, Math.min(selection.startLine, selection.endLine))
+    const end = Math.max(selection.startLine, selection.endLine)
+    const lines = content.split("\n").slice(start - 1, end)
+    if (lines.length === 0) return undefined
+    return lines.slice(0, 2).join("\n")
+  }
+
   const recent = createMemo(() => {
     const all = tabs().all()
     const active = tabs().active()
@@ -1276,7 +1288,6 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
           id: string
           type: "text"
           text: string
-          synthetic?: boolean
         }
       | {
           id: string
@@ -1314,7 +1325,6 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
           id: Identifier.ascending("part"),
           type: "text",
           text: commentNote(input.path, input.selection, comment),
-          synthetic: true,
         })
       }
 
@@ -1562,6 +1572,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
           <div class="flex flex-nowrap items-start gap-1.5 px-3 pt-3 overflow-x-auto no-scrollbar">
             <For each={prompt.context.items()}>
               {(item) => {
+                const preview = createMemo(() => selectionPreview(item.path, item.selection, item.preview))
                 return (
                   <div
                     classList={{
@@ -1606,6 +1617,13 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
                     <Show when={item.comment}>
                       {(comment) => <div class="text-11-regular text-text-strong">{comment()}</div>}
                     </Show>
+                    <Show when={preview()}>
+                      {(content) => (
+                        <pre class="text-10-regular text-text-weak font-mono whitespace-pre-wrap leading-4">
+                          {content()}
+                        </pre>
+                      )}
+                    </Show>
                   </div>
                 )
               }}