I've just completed the basic features of a terminal application for programmers that includes context-aware code search. It's built in C++, and I'm now looking into ways to integrate it with shell environments and editors, particularly PowerShell since that's what I predominantly use. I'm hoping to get some insights on a few specific areas:
1. **Session State:** Can my C++ application read or set variables in the current PowerShell session? For instance, if it detects a frequently-used directory, could it assign a value to `$myTool.LastFoundPath` for easy access later in PowerShell scripts?
2. **Persistence Across Invocations:** I want my tool to keep certain session-specific data between runs without creating temporary files that clutter the file system. Is there a more PowerShell-friendly method for storing data linked to a session?
3. **Examples to Learn From:** Are there any terminal tools you use that feel well-integrated with PowerShell? I'm interested in open-source examples that showcase effective integration.
1 Answer
From what I understand, if you aim for Windows-only support and don't mind using MSVC, C++/CLI is your best bet for working with PowerShell. If you want cross-platform compatibility, you might need to create a C API from your C++ library and use p/invoke to communicate with it.
For saving session state, I'd suggest declaring a global singleton in your C++ library. This way, your library can initialize when PowerShell loads your DLL, handling state without cluttering with files. Only use files if you need data persistence between sessions.

That's true, but terminal apps can get complicated fast. The point of remembering information is to simplify usage and minimize repetitive typing, right? Maybe a user interface is necessary for more advanced functionality.