提交 4f54f912 authored 作者: Travis Cross's avatar Travis Cross

Add back terminal detection for old libedits

Using the system libedit means that libedit will again make absolute
movements on certain kinds of terminals.  Older versions of libedit
without EL_PROMPT_ESC miscalculate the length of the prompt.
Combined, this results in the cursor ending up in the wrong place.

We knew this was a possibility when we moved to system libedit, and
we're OK with it.  We certainly lived without this fancy prompt
feature for a long time.

This change puts back in place detection of the terminal type when
EL_PROMPT_ESC isn't available.  On these older versions of libedit,
we'll only enable the fancy features when we know that libedit will
only make relative movements and not tickle the bug.

This partially reverts commit:
b9b77bd6
上级 dc093d17
...@@ -1352,10 +1352,22 @@ int main(int argc, char *argv[]) ...@@ -1352,10 +1352,22 @@ int main(int argc, char *argv[])
int loops = 2, reconnect = 0; int loops = 2, reconnect = 0;
char *ccheck; char *ccheck;
#ifdef WIN32 #if HAVE_DECL_EL_PROMPT_ESC
feature_level = 0; feature_level = 0;
#else #else
feature_level = 1; {
char *term = getenv("TERM");
if (term && (!strncasecmp("screen", term, 6) ||
!strncasecmp("vt100", term, 5))) {
feature_level = 1;
} else {
feature_level = 0;
}
}
#endif
#ifdef WIN32
feature_level = 0;
#endif #endif
if ((ccheck = getenv("FS_CLI_COLOR"))) { if ((ccheck = getenv("FS_CLI_COLOR"))) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论