aboutsummaryrefslogtreecommitdiff
path: root/goldfishterm/simple.cc
diff options
context:
space:
mode:
Diffstat (limited to 'goldfishterm/simple.cc')
-rw-r--r--goldfishterm/simple.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/goldfishterm/simple.cc b/goldfishterm/simple.cc
index 9c4c9a9..88ceef0 100644
--- a/goldfishterm/simple.cc
+++ b/goldfishterm/simple.cc
@@ -23,6 +23,7 @@
#include "goldfishterm/internal/emit.h"
#include "goldfishterm/terminfo.h"
+#include "third_party/abseil/absl/strings/str_cat.h"
#include "third_party/abseil/absl/strings/string_view.h"
namespace goldfishterm {
@@ -48,6 +49,19 @@ absl::string_view TerminalNameFromEnvironment() {
return name;
}
+StringCapability CursorVisibilityCapability(CursorVisibility v) {
+ switch (v) {
+ case CursorVisibility::kInvisible:
+ return StringCapability::kCursorInvisible;
+ case CursorVisibility::kNormal:
+ return StringCapability::kCursorNormal;
+ case CursorVisibility::kVeryVisible:
+ return StringCapability::kCursorVisible;
+ default:
+ throw std::invalid_argument(absl::StrCat("invalid CursorVisibility ", v));
+ }
+}
+
} // namespace
SimpleTerminalOutput::SimpleTerminalOutput()
@@ -59,6 +73,10 @@ SimpleTerminalOutput::SimpleTerminalOutput(const termios& tty)
baud_ = cfgetospeed(&tty);
}
+void SimpleTerminalOutput::SetCursorVisibility(CursorVisibility v) {
+ return Emit(CursorVisibilityCapability(v));
+}
+
void SimpleTerminalOutput::Emit(
StringCapability cap,
std::vector<goldfishterm_internal::StringCapabilityParameter> parameters) {