mirror of
https://github.com/voideditor/void
synced 2026-05-24 09:58:23 +00:00
fix codespan links
This commit is contained in:
parent
97b44a94e4
commit
a3cfd0d023
3 changed files with 25 additions and 9 deletions
|
|
@ -27,6 +27,7 @@ import { ChatMessage, CodespanLocationLink, StagingSelectionItem, ToolMessage, T
|
|||
import { Position } from '../../../../editor/common/core/position.js';
|
||||
import { ITerminalToolService } from './terminalToolService.js';
|
||||
import { IMetricsService } from '../common/metricsService.js';
|
||||
import { shorten } from '../../../../base/common/labels.js';
|
||||
|
||||
const findLastIndex = <T>(arr: T[], condition: (t: T) => boolean): number => {
|
||||
for (let i = arr.length - 1; i >= 0; i--) {
|
||||
|
|
@ -910,15 +911,30 @@ class ChatThreadService extends Disposable implements IChatThreadService {
|
|||
const doesUriMatchTarget = (uri: URI) => uri.path.includes(target)
|
||||
|
||||
// check if any prevFiles are the `codespanSearch`
|
||||
for (const uri of prevUris) {
|
||||
if (doesUriMatchTarget(uri)) return { uri }
|
||||
for (const [idx, uri] of prevUris.entries()) {
|
||||
if (doesUriMatchTarget(uri)) {
|
||||
|
||||
// shorten it
|
||||
const prevUriStrs = prevUris.map(uri => uri.toString())
|
||||
const shortenedUriStrs = shorten(prevUriStrs)
|
||||
const displayText = shortenedUriStrs[idx]
|
||||
|
||||
return { uri, displayText }
|
||||
}
|
||||
}
|
||||
|
||||
// else search codebase for file
|
||||
const { uris } = await this._toolsService.callTool['pathname_search']({ queryStr: target, pageNumber: 0 })
|
||||
|
||||
for (const uri of uris) {
|
||||
if (doesUriMatchTarget(uri)) return { uri }
|
||||
for (const [idx, uri] of uris.entries()) {
|
||||
if (doesUriMatchTarget(uri)) {
|
||||
|
||||
const prevUriStrs = prevUris.map(uri => uri.toString())
|
||||
const shortenedUriStrs = shorten(prevUriStrs)
|
||||
const displayText = shortenedUriStrs[idx]
|
||||
|
||||
return { uri, displayText }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -967,7 +983,8 @@ class ChatThreadService extends Disposable implements IChatThreadService {
|
|||
startColumn: definition.range.startColumn,
|
||||
endLineNumber: definition.range.endLineNumber,
|
||||
endColumn: definition.range.endColumn,
|
||||
}
|
||||
},
|
||||
displayText: _codespanStr,
|
||||
};
|
||||
|
||||
// const defModelRef = await this._textModelService.createModelReference(definition.uri);
|
||||
|
|
|
|||
|
|
@ -34,13 +34,11 @@ const Codespan = ({ text, className, onClick }: { text: string, className?: stri
|
|||
|
||||
// TODO compute this once for efficiency. we should use `labels.ts/shorten` to display duplicates properly
|
||||
|
||||
const filename = useMemo(() => getBasename(text), [text])
|
||||
|
||||
return <code
|
||||
className={`font-mono font-medium rounded-sm bg-void-bg-1 px-1 ${className}`}
|
||||
onClick={onClick}
|
||||
>
|
||||
{filename}
|
||||
{text}
|
||||
</code>
|
||||
|
||||
}
|
||||
|
|
@ -101,7 +99,7 @@ const CodespanWithLink = ({ text, rawText, chatMessageLocation }: { text: string
|
|||
}
|
||||
|
||||
return <Codespan
|
||||
text={text}
|
||||
text={link?.displayText || text}
|
||||
onClick={onClick}
|
||||
className={link ? 'underline hover:brightness-90 transition-all duration-200 cursor-pointer' : ''}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ export type StagingSelectionItem = CodeSelection | FileSelection
|
|||
|
||||
export type CodespanLocationLink = {
|
||||
uri: URI, // we handle serialization for this
|
||||
displayText: string,
|
||||
selection?: { // store as JSON so dont have to worry about serialization
|
||||
startLineNumber: number
|
||||
startColumn: number,
|
||||
|
|
|
|||
Loading…
Reference in a new issue