289
}
290
291
>
export async function fetchZshHistory(accessor: ServicesAccessor): Promise<IShellFileHistoryEntry | undefined> {
history.ts
292
>
const fileService = accessor.get(IFileService);
293
>
const remoteAgentService = accessor.get(IRemoteAgentService);
294
>
const remoteEnvironment = await remoteAgentService.getEnvironment();
295
>
if (remoteEnvironment?.os === OperatingSystem.Windows || !remoteEnvironment && isWindows) {
296
return undefined;
297
}
298
299
const sourceLabel = '~/.zsh_history';
300
>
const home = remoteEnvironment?.userHome?.fsPath ?? env['HOME'];
history.ts
301
>
const resolvedFile = await fetchFileContents(home, '.zsh_history', false, fileService, remoteAgentService);
302
if (resolvedFile === undefined) {
303
return undefined;
304
}
305
const isExtendedHistory = /^:\s\d+:\d+;/.test(resolvedFile.content);
306
>
const fileLines = resolvedFile.content.split(isExtendedHistory ? /\:\s\d+\:\d+;/ : /(?<!\\)\n/);
history.ts
307
>
const result: Set<string> = new Set();
308
>
for (let i = 0; i < fileLines.length; i++) {
309
const sanitized = fileLines[i].replace(/\\\n/g, '\n').trim();
310
if (sanitized.length > 0) {