forked from lix-project/lix
Remove readline support
Lix cannot be built with GNU readline, and we would "rather not" be GPL.
Change-Id: I0e86f0f10dab966ab1d1d467fb61fd2de50c00de
This commit is contained in:
parent
e9505dcc5a
commit
7ae0409989
17
doc/manual/rl-next/readline-support-removed.md
Normal file
17
doc/manual/rl-next/readline-support-removed.md
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
---
|
||||||
|
synopsis: readline support removed
|
||||||
|
cls: [1885]
|
||||||
|
category: Packaging
|
||||||
|
credits: [9999years]
|
||||||
|
---
|
||||||
|
|
||||||
|
Support for building Lix with [`readline`][readline] instead of
|
||||||
|
[`editline`][editline] has been removed. `readline` support hasn't worked for a
|
||||||
|
long time (attempting to use it would lead to build errors) and would make Lix
|
||||||
|
subject to the GPL if it did work. In the future, we're hoping to replace
|
||||||
|
`editline` with [`rustyline`][rustyline] for improved ergonomics in the `nix
|
||||||
|
repl`.
|
||||||
|
|
||||||
|
[readline]: https://en.wikipedia.org/wiki/GNU_Readline
|
||||||
|
[editline]: https://github.com/troglobit/editline
|
||||||
|
[rustyline]: https://github.com/kkawakam/rustyline
|
|
@ -8,10 +8,6 @@
|
||||||
#include <string_view>
|
#include <string_view>
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
|
|
||||||
#ifdef READLINE
|
|
||||||
#include <readline/history.h>
|
|
||||||
#include <readline/readline.h>
|
|
||||||
#else
|
|
||||||
// editline < 1.15.2 don't wrap their API for C++ usage
|
// editline < 1.15.2 don't wrap their API for C++ usage
|
||||||
// (added in https://github.com/troglobit/editline/commit/91398ceb3427b730995357e9d120539fb9bb7461).
|
// (added in https://github.com/troglobit/editline/commit/91398ceb3427b730995357e9d120539fb9bb7461).
|
||||||
// This results in linker errors due to to name-mangling of editline C symbols.
|
// This results in linker errors due to to name-mangling of editline C symbols.
|
||||||
|
@ -20,7 +16,6 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include <editline.h>
|
#include <editline.h>
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "finally.hh"
|
#include "finally.hh"
|
||||||
#include "repl-interacter.hh"
|
#include "repl-interacter.hh"
|
||||||
|
@ -115,17 +110,13 @@ ReadlineLikeInteracter::Guard ReadlineLikeInteracter::init(detail::ReplCompleter
|
||||||
} catch (SysError & e) {
|
} catch (SysError & e) {
|
||||||
logWarning(e.info());
|
logWarning(e.info());
|
||||||
}
|
}
|
||||||
#ifndef READLINE
|
|
||||||
el_hist_size = 1000;
|
el_hist_size = 1000;
|
||||||
#endif
|
|
||||||
read_history(historyFile.c_str());
|
read_history(historyFile.c_str());
|
||||||
auto oldRepl = curRepl;
|
auto oldRepl = curRepl;
|
||||||
curRepl = repl;
|
curRepl = repl;
|
||||||
Guard restoreRepl([oldRepl] { curRepl = oldRepl; });
|
Guard restoreRepl([oldRepl] { curRepl = oldRepl; });
|
||||||
#ifndef READLINE
|
|
||||||
rl_set_complete_func(completionCallback);
|
rl_set_complete_func(completionCallback);
|
||||||
rl_set_list_possib_func(listPossibleCallback);
|
rl_set_list_possib_func(listPossibleCallback);
|
||||||
#endif
|
|
||||||
return restoreRepl;
|
return restoreRepl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -247,7 +247,7 @@ constexpr std::array<ExperimentalFeatureDetails, numXpFeatures> xpFeatureDetails
|
||||||
.tag = Xp::ReplAutomation,
|
.tag = Xp::ReplAutomation,
|
||||||
.name = "repl-automation",
|
.name = "repl-automation",
|
||||||
.description = R"(
|
.description = R"(
|
||||||
Makes the repl not use readline/editline, print ENQ (U+0005) when ready for a command, and take commands followed by newline.
|
Makes the repl not use editline, print ENQ (U+0005) when ready for a command, and take commands followed by newline.
|
||||||
)",
|
)",
|
||||||
},
|
},
|
||||||
}};
|
}};
|
||||||
|
|
Loading…
Reference in a new issue