mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-13 05:12:55 -07:00
fix(core): resolve Windows line ending and path separation bugs across CLI (#21068)
This commit is contained in:
@@ -22,7 +22,7 @@ interface DiffLine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function parseDiffWithLineNumbers(diffContent: string): DiffLine[] {
|
function parseDiffWithLineNumbers(diffContent: string): DiffLine[] {
|
||||||
const lines = diffContent.split('\n');
|
const lines = diffContent.split(/\r?\n/);
|
||||||
const result: DiffLine[] = [];
|
const result: DiffLine[] = [];
|
||||||
let currentOldLine = 0;
|
let currentOldLine = 0;
|
||||||
let currentNewLine = 0;
|
let currentNewLine = 0;
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ export function colorizeCode({
|
|||||||
try {
|
try {
|
||||||
// Render the HAST tree using the adapted theme
|
// Render the HAST tree using the adapted theme
|
||||||
// Apply the theme's default foreground color to the top-level Text element
|
// Apply the theme's default foreground color to the top-level Text element
|
||||||
let lines = codeToHighlight.split('\n');
|
let lines = codeToHighlight.split(/\r?\n/);
|
||||||
const padWidth = String(lines.length).length; // Calculate padding width based on number of lines
|
const padWidth = String(lines.length).length; // Calculate padding width based on number of lines
|
||||||
|
|
||||||
let hiddenLinesCount = 0;
|
let hiddenLinesCount = 0;
|
||||||
@@ -225,7 +225,7 @@ export function colorizeCode({
|
|||||||
);
|
);
|
||||||
// Fall back to plain text with default color on error
|
// Fall back to plain text with default color on error
|
||||||
// Also display line numbers in fallback
|
// Also display line numbers in fallback
|
||||||
const lines = codeToHighlight.split('\n');
|
const lines = codeToHighlight.split(/\r?\n/);
|
||||||
const padWidth = String(lines.length).length; // Calculate padding width based on number of lines
|
const padWidth = String(lines.length).length; // Calculate padding width based on number of lines
|
||||||
const fallbackLines = lines.map((line, index) => (
|
const fallbackLines = lines.map((line, index) => (
|
||||||
<Box key={index} minHeight={1}>
|
<Box key={index} minHeight={1}>
|
||||||
|
|||||||
@@ -776,7 +776,7 @@ Content of file[1]
|
|||||||
|
|
||||||
// Mock to track concurrent vs sequential execution
|
// Mock to track concurrent vs sequential execution
|
||||||
detectFileTypeSpy.mockImplementation(async (filePath: string) => {
|
detectFileTypeSpy.mockImplementation(async (filePath: string) => {
|
||||||
const fileName = filePath.split('/').pop() || '';
|
const fileName = path.basename(filePath);
|
||||||
executionOrder.push(`start:${fileName}`);
|
executionOrder.push(`start:${fileName}`);
|
||||||
|
|
||||||
// Add delay to make timing differences visible
|
// Add delay to make timing differences visible
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import fs from 'node:fs';
|
|||||||
import fsPromises from 'node:fs/promises';
|
import fsPromises from 'node:fs/promises';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import type { PartUnion } from '@google/genai';
|
import type { PartUnion } from '@google/genai';
|
||||||
|
|
||||||
import mime from 'mime/lite';
|
import mime from 'mime/lite';
|
||||||
import type { FileSystemService } from '../services/fileSystemService.js';
|
import type { FileSystemService } from '../services/fileSystemService.js';
|
||||||
import { ToolErrorType } from '../tools/tool-error.js';
|
import { ToolErrorType } from '../tools/tool-error.js';
|
||||||
@@ -473,7 +472,7 @@ export async function processSingleFileContent(
|
|||||||
case 'text': {
|
case 'text': {
|
||||||
// Use BOM-aware reader to avoid leaving a BOM character in content and to support UTF-16/32 transparently
|
// Use BOM-aware reader to avoid leaving a BOM character in content and to support UTF-16/32 transparently
|
||||||
const content = await readFileWithEncoding(filePath);
|
const content = await readFileWithEncoding(filePath);
|
||||||
const lines = content.split('\n');
|
const lines = content.split(/\r?\n/);
|
||||||
const originalLineCount = lines.length;
|
const originalLineCount = lines.length;
|
||||||
|
|
||||||
let sliceStart = 0;
|
let sliceStart = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user