Merge pull request #7029 from taosdata/fix/TD-5533
[TD-5533]<feature>:add 'ctrl+u' and 'ctrl+k' shortcut for taosshell
This commit is contained in:
commit
96cd039f61
|
@ -35,6 +35,8 @@ struct Command {
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void backspaceChar(Command *cmd);
|
extern void backspaceChar(Command *cmd);
|
||||||
|
extern void clearLineBefore(Command *cmd);
|
||||||
|
extern void clearLineAfter(Command *cmd);
|
||||||
extern void deleteChar(Command *cmd);
|
extern void deleteChar(Command *cmd);
|
||||||
extern void moveCursorLeft(Command *cmd);
|
extern void moveCursorLeft(Command *cmd);
|
||||||
extern void moveCursorRight(Command *cmd);
|
extern void moveCursorRight(Command *cmd);
|
||||||
|
|
|
@ -102,6 +102,28 @@ void backspaceChar(Command *cmd) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void clearLineBefore(Command *cmd) {
|
||||||
|
assert(cmd->cursorOffset <= cmd->commandSize && cmd->endOffset >= cmd->screenOffset);
|
||||||
|
|
||||||
|
clearScreen(cmd->endOffset + prompt_size, cmd->screenOffset + prompt_size);
|
||||||
|
memmove(cmd->command, cmd->command + cmd->cursorOffset,
|
||||||
|
cmd->commandSize - cmd->cursorOffset);
|
||||||
|
cmd->commandSize -= cmd->cursorOffset;
|
||||||
|
cmd->cursorOffset = 0;
|
||||||
|
cmd->screenOffset = 0;
|
||||||
|
cmd->endOffset = cmd->commandSize;
|
||||||
|
showOnScreen(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
void clearLineAfter(Command *cmd) {
|
||||||
|
assert(cmd->cursorOffset <= cmd->commandSize && cmd->endOffset >= cmd->screenOffset);
|
||||||
|
|
||||||
|
clearScreen(cmd->endOffset + prompt_size, cmd->screenOffset + prompt_size);
|
||||||
|
cmd->commandSize -= cmd->endOffset - cmd->cursorOffset;
|
||||||
|
cmd->endOffset = cmd->cursorOffset;
|
||||||
|
showOnScreen(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
void deleteChar(Command *cmd) {
|
void deleteChar(Command *cmd) {
|
||||||
assert(cmd->cursorOffset <= cmd->commandSize && cmd->endOffset >= cmd->screenOffset);
|
assert(cmd->cursorOffset <= cmd->commandSize && cmd->endOffset >= cmd->screenOffset);
|
||||||
|
|
||||||
|
|
|
@ -238,10 +238,16 @@ int32_t shellReadCommand(TAOS *con, char *command) {
|
||||||
updateBuffer(&cmd);
|
updateBuffer(&cmd);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 11: // Ctrl + K;
|
||||||
|
clearLineAfter(&cmd);
|
||||||
|
break;
|
||||||
case 12: // Ctrl + L;
|
case 12: // Ctrl + L;
|
||||||
system("clear");
|
system("clear");
|
||||||
showOnScreen(&cmd);
|
showOnScreen(&cmd);
|
||||||
break;
|
break;
|
||||||
|
case 21: // Ctrl + U
|
||||||
|
clearLineBefore(&cmd);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} else if (c == '\033') {
|
} else if (c == '\033') {
|
||||||
c = getchar();
|
c = getchar();
|
||||||
|
|
|
@ -238,10 +238,16 @@ int32_t shellReadCommand(TAOS *con, char *command) {
|
||||||
updateBuffer(&cmd);
|
updateBuffer(&cmd);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 11: // Ctrl + K;
|
||||||
|
clearLineAfter(&cmd);
|
||||||
|
break;
|
||||||
case 12: // Ctrl + L;
|
case 12: // Ctrl + L;
|
||||||
system("clear");
|
system("clear");
|
||||||
showOnScreen(&cmd);
|
showOnScreen(&cmd);
|
||||||
break;
|
break;
|
||||||
|
case 21: // Ctrl + U;
|
||||||
|
clearLineBefore(&cmd);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} else if (c == '\033') {
|
} else if (c == '\033') {
|
||||||
c = (char)getchar();
|
c = (char)getchar();
|
||||||
|
|
Loading…
Reference in New Issue