Adds the user's active file in the IDE to the footer (#4154)

This commit is contained in:
Shreya Keshive
2025-07-15 10:19:59 -04:00
committed by GitHub
parent 97cc1e6418
commit b09bc66560
7 changed files with 287 additions and 4 deletions

View File

@@ -4,10 +4,16 @@
* SPDX-License-Identifier: Apache-2.0
*/
import React from 'react';
import React, { useEffect, useState } from 'react';
import { Box, Text } from 'ink';
import { Colors } from '../colors.js';
import { shortenPath, tildeifyPath, tokenLimit } from '@google/gemini-cli-core';
import {
shortenPath,
tildeifyPath,
tokenLimit,
ideContext,
ActiveFile,
} from '@google/gemini-cli-core';
import { ConsoleSummaryDisplay } from './ConsoleSummaryDisplay.js';
import process from 'node:process';
import Gradient from 'ink-gradient';
@@ -43,6 +49,24 @@ export const Footer: React.FC<FooterProps> = ({
const limit = tokenLimit(model);
const percentage = promptTokenCount / limit;
const [activeFile, setActiveFile] = useState<ActiveFile | undefined>(
undefined,
);
useEffect(() => {
const updateActiveFile = () => {
const currentActiveFile = ideContext.getActiveFileContext();
setActiveFile(currentActiveFile);
};
updateActiveFile();
const unsubscribe = ideContext.subscribeToActiveFile(setActiveFile);
return () => {
unsubscribe();
};
}, []);
return (
<Box marginTop={1} justifyContent="space-between" width="100%">
<Box>
@@ -59,6 +83,19 @@ export const Footer: React.FC<FooterProps> = ({
{branchName && <Text color={Colors.Gray}> ({branchName}*)</Text>}
</Text>
)}
{activeFile && activeFile.filePath && (
<Text>
<Text color={Colors.Gray}> | </Text>
<Text color={Colors.LightBlue}>
{shortenPath(tildeifyPath(activeFile.filePath), 70)}
</Text>
{activeFile.cursor && (
<Text color={Colors.Gray}>
:{activeFile.cursor.line}:{activeFile.cursor.character}
</Text>
)}
</Text>
)}
{debugMode && (
<Text color={Colors.AccentRed}>
{' ' + (debugMessage || '--debug')}