Support escaping spaces in file paths. (#241)

This commit is contained in:
Jacob Richman
2025-05-01 18:02:04 -07:00
committed by GitHub
parent ca53565240
commit 53ac7952c7
5 changed files with 138 additions and 25 deletions

View File

@@ -7,11 +7,13 @@
import { useState, useEffect, useCallback } from 'react';
import * as fs from 'fs/promises';
import * as path from 'path';
import { isNodeError } from '@gemini-code/server';
import { MAX_SUGGESTIONS_TO_SHOW } from '../components/SuggestionsDisplay.js';
import { isNodeError, escapePath, unescapePath } from '@gemini-code/server';
import {
MAX_SUGGESTIONS_TO_SHOW,
Suggestion,
} from '../components/SuggestionsDisplay.js';
export interface UseCompletionReturn {
suggestions: string[];
suggestions: Suggestion[];
activeSuggestionIndex: number;
visibleStartIndex: number;
showSuggestions: boolean;
@@ -28,7 +30,7 @@ export function useCompletion(
cwd: string,
isActive: boolean,
): UseCompletionReturn {
const [suggestions, setSuggestions] = useState<string[]>([]);
const [suggestions, setSuggestions] = useState<Suggestion[]>([]);
const [activeSuggestionIndex, setActiveSuggestionIndex] =
useState<number>(-1);
const [visibleStartIndex, setVisibleStartIndex] = useState<number>(0);
@@ -121,10 +123,12 @@ export function useCompletion(
lastSlashIndex === -1
? '.'
: partialPath.substring(0, lastSlashIndex + 1);
const prefix =
const prefix = unescapePath(
lastSlashIndex === -1
? partialPath
: partialPath.substring(lastSlashIndex + 1);
: partialPath.substring(lastSlashIndex + 1),
);
const baseDirAbsolute = path.resolve(cwd, baseDirRelative);
let isMounted = true;
@@ -144,7 +148,11 @@ export function useCompletion(
if (aIsDir && !bIsDir) return -1;
if (!aIsDir && bIsDir) return 1;
return a.localeCompare(b);
});
})
.map((entry) => ({
label: entry,
value: escapePath(entry),
}));
if (isMounted) {
setSuggestions(filteredSuggestions);