Preserve readline history across sessions. Add rl_readline_name.

This commit is contained in:
Ole Jørgen Brønner 2016-02-23 23:19:49 +01:00
parent 5599665a27
commit 103c46abc2
2 changed files with 10 additions and 1 deletions

View file

@ -102,3 +102,7 @@ example:
nix-repl> config.networking.use<TAB> nix-repl> config.networking.use<TAB>
config.networking.useDHCP config.networking.usePredictableInterfaceNames config.networking.useDHCP config.networking.usePredictableInterfaceNames
Input history is preserved by readline in ~/.nix-repl-history
The readline "application name" is nix-repl. This allows for nix-repl specific
settings in ~/.inputrc

View file

@ -20,6 +20,7 @@ using namespace nix;
string programId = "nix-repl"; string programId = "nix-repl";
const string historyFile = string(getenv("HOME")) + "/.nix-repl-history";
struct NixRepl struct NixRepl
@ -91,8 +92,10 @@ void NixRepl::mainLoop(const Strings & files)
reloadFiles(); reloadFiles();
if (!loadedFiles.empty()) std::cout << std::endl; if (!loadedFiles.empty()) std::cout << std::endl;
// Allow nix-repl specific settings in .inputrc
rl_readline_name = "nix-repl";
using_history(); using_history();
read_history(0); read_history(historyFile.c_str());
string input; string input;
@ -649,5 +652,7 @@ int main(int argc, char * * argv)
store = openStore(); store = openStore();
NixRepl repl(searchPath); NixRepl repl(searchPath);
repl.mainLoop(files); repl.mainLoop(files);
write_history(historyFile.c_str());
}); });
} }