unsigned PrevCount;
std::string ContinuationOutput;
+
+ FILE *Out;
};
static const char *ElGetPromptFn(EditLine *EL) {
if (el_get(EL, EL_CLIENTDATA, &Data) == 0) {
if (!Data->ContinuationOutput.empty()) {
// This is the continuation of the AK_ShowCompletions branch below.
- FILE *Out;
- if (::el_get(EL, EL_GETFP, 1, &Out) != 0)
- return CC_ERROR;
+ FILE *Out = Data->Out;
// Print the required output (see below).
::fwrite(Data->ContinuationOutput.c_str(),
// Push a sequence of Ctrl-B characters to move the cursor back to its
// original position.
std::string Prevs(Data->PrevCount, '\02');
- ::el_push(EL, (char *)Prevs.c_str());
+ ::el_push(EL, const_cast<char *>(Prevs.c_str()));
Data->ContinuationOutput.clear();
// from here to cause libedit to move the cursor immediately. This will
// break horribly if the user has rebound their keys, so for now we do
// not permit user rebinding.
- ::el_push(EL, (char *)"\05\t");
+ ::el_push(EL, const_cast<char *>("\05\t"));
// This assembles the output for the continuation block above.
raw_string_ostream OS(Data->ContinuationOutput);
return CC_REFRESH;
}
}
- } else {
- return CC_ERROR;
}
+ return CC_ERROR;
}
LineEditor::LineEditor(StringRef ProgName, StringRef HistoryPath, FILE *In,
this->HistoryPath = getDefaultHistoryPath(ProgName);
Data->LE = this;
+ Data->Out = Out;
Data->Hist = ::history_init();
assert(Data->Hist);
LineEditor::~LineEditor() {
saveHistory();
- FILE *Out;
- if (::el_get(Data->EL, EL_GETFP, 1, &Out) != 0)
- Out = 0;
-
::history_end(Data->Hist);
::el_end(Data->EL);
-
- if (Out)
- ::fwrite("\n", 1, 1, Out);
+ ::fwrite("\n", 1, 1, Data->Out);
}
void LineEditor::saveHistory() {