forked from toolshed/abra
chore: make deps, go mod vendor
This commit is contained in:
473
vendor/github.com/charmbracelet/x/ansi/cursor.go
generated
vendored
473
vendor/github.com/charmbracelet/x/ansi/cursor.go
generated
vendored
@ -8,7 +8,10 @@ import "strconv"
|
||||
// ESC 7
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/DECSC.html
|
||||
const SaveCursor = "\x1b7"
|
||||
const (
|
||||
SaveCursor = "\x1b7"
|
||||
DECSC = SaveCursor
|
||||
)
|
||||
|
||||
// RestoreCursor (DECRC) is an escape sequence that restores the cursor
|
||||
// position.
|
||||
@ -16,10 +19,13 @@ const SaveCursor = "\x1b7"
|
||||
// ESC 8
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/DECRC.html
|
||||
const RestoreCursor = "\x1b8"
|
||||
const (
|
||||
RestoreCursor = "\x1b8"
|
||||
DECRC = RestoreCursor
|
||||
)
|
||||
|
||||
// RequestCursorPosition (CPR) is an escape sequence that requests the current
|
||||
// cursor position.
|
||||
// RequestCursorPosition is an escape sequence that requests the current cursor
|
||||
// position.
|
||||
//
|
||||
// CSI 6 n
|
||||
//
|
||||
@ -60,9 +66,18 @@ func CursorUp(n int) string {
|
||||
return "\x1b[" + s + "A"
|
||||
}
|
||||
|
||||
// CUU is an alias for [CursorUp].
|
||||
func CUU(n int) string {
|
||||
return CursorUp(n)
|
||||
}
|
||||
|
||||
// CUU1 is a sequence for moving the cursor up one cell.
|
||||
const CUU1 = "\x1b[A"
|
||||
|
||||
// CursorUp1 is a sequence for moving the cursor up one cell.
|
||||
//
|
||||
// This is equivalent to CursorUp(1).
|
||||
// Deprecated: use [CUU1] instead.
|
||||
const CursorUp1 = "\x1b[A"
|
||||
|
||||
// CursorDown (CUD) returns a sequence for moving the cursor down n cells.
|
||||
@ -78,17 +93,26 @@ func CursorDown(n int) string {
|
||||
return "\x1b[" + s + "B"
|
||||
}
|
||||
|
||||
// CUD is an alias for [CursorDown].
|
||||
func CUD(n int) string {
|
||||
return CursorDown(n)
|
||||
}
|
||||
|
||||
// CUD1 is a sequence for moving the cursor down one cell.
|
||||
const CUD1 = "\x1b[B"
|
||||
|
||||
// CursorDown1 is a sequence for moving the cursor down one cell.
|
||||
//
|
||||
// This is equivalent to CursorDown(1).
|
||||
// Deprecated: use [CUD1] instead.
|
||||
const CursorDown1 = "\x1b[B"
|
||||
|
||||
// CursorRight (CUF) returns a sequence for moving the cursor right n cells.
|
||||
// CursorForward (CUF) returns a sequence for moving the cursor right n cells.
|
||||
//
|
||||
// CSI n C
|
||||
// # CSI n C
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/CUF.html
|
||||
func CursorRight(n int) string {
|
||||
func CursorForward(n int) string {
|
||||
var s string
|
||||
if n > 1 {
|
||||
s = strconv.Itoa(n)
|
||||
@ -96,17 +120,36 @@ func CursorRight(n int) string {
|
||||
return "\x1b[" + s + "C"
|
||||
}
|
||||
|
||||
// CUF is an alias for [CursorForward].
|
||||
func CUF(n int) string {
|
||||
return CursorForward(n)
|
||||
}
|
||||
|
||||
// CUF1 is a sequence for moving the cursor right one cell.
|
||||
const CUF1 = "\x1b[C"
|
||||
|
||||
// CursorRight (CUF) returns a sequence for moving the cursor right n cells.
|
||||
//
|
||||
// CSI n C
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/CUF.html
|
||||
// Deprecated: use [CursorForward] instead.
|
||||
func CursorRight(n int) string {
|
||||
return CursorForward(n)
|
||||
}
|
||||
|
||||
// CursorRight1 is a sequence for moving the cursor right one cell.
|
||||
//
|
||||
// This is equivalent to CursorRight(1).
|
||||
const CursorRight1 = "\x1b[C"
|
||||
// Deprecated: use [CUF1] instead.
|
||||
const CursorRight1 = CUF1
|
||||
|
||||
// CursorLeft (CUB) returns a sequence for moving the cursor left n cells.
|
||||
// CursorBackward (CUB) returns a sequence for moving the cursor left n cells.
|
||||
//
|
||||
// CSI n D
|
||||
// # CSI n D
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/CUB.html
|
||||
func CursorLeft(n int) string {
|
||||
func CursorBackward(n int) string {
|
||||
var s string
|
||||
if n > 1 {
|
||||
s = strconv.Itoa(n)
|
||||
@ -114,10 +157,29 @@ func CursorLeft(n int) string {
|
||||
return "\x1b[" + s + "D"
|
||||
}
|
||||
|
||||
// CUB is an alias for [CursorBackward].
|
||||
func CUB(n int) string {
|
||||
return CursorBackward(n)
|
||||
}
|
||||
|
||||
// CUB1 is a sequence for moving the cursor left one cell.
|
||||
const CUB1 = "\x1b[D"
|
||||
|
||||
// CursorLeft (CUB) returns a sequence for moving the cursor left n cells.
|
||||
//
|
||||
// CSI n D
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/CUB.html
|
||||
// Deprecated: use [CursorBackward] instead.
|
||||
func CursorLeft(n int) string {
|
||||
return CursorBackward(n)
|
||||
}
|
||||
|
||||
// CursorLeft1 is a sequence for moving the cursor left one cell.
|
||||
//
|
||||
// This is equivalent to CursorLeft(1).
|
||||
const CursorLeft1 = "\x1b[D"
|
||||
// Deprecated: use [CUB1] instead.
|
||||
const CursorLeft1 = CUB1
|
||||
|
||||
// CursorNextLine (CNL) returns a sequence for moving the cursor to the
|
||||
// beginning of the next line n times.
|
||||
@ -133,6 +195,11 @@ func CursorNextLine(n int) string {
|
||||
return "\x1b[" + s + "E"
|
||||
}
|
||||
|
||||
// CNL is an alias for [CursorNextLine].
|
||||
func CNL(n int) string {
|
||||
return CursorNextLine(n)
|
||||
}
|
||||
|
||||
// CursorPreviousLine (CPL) returns a sequence for moving the cursor to the
|
||||
// beginning of the previous line n times.
|
||||
//
|
||||
@ -147,25 +214,264 @@ func CursorPreviousLine(n int) string {
|
||||
return "\x1b[" + s + "F"
|
||||
}
|
||||
|
||||
// MoveCursor (CUP) returns a sequence for moving the cursor to the given row
|
||||
// and column.
|
||||
// CPL is an alias for [CursorPreviousLine].
|
||||
func CPL(n int) string {
|
||||
return CursorPreviousLine(n)
|
||||
}
|
||||
|
||||
// CursorHorizontalAbsolute (CHA) returns a sequence for moving the cursor to
|
||||
// the given column.
|
||||
//
|
||||
// Default is 1.
|
||||
//
|
||||
// CSI n G
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/CHA.html
|
||||
func CursorHorizontalAbsolute(col int) string {
|
||||
var s string
|
||||
if col > 0 {
|
||||
s = strconv.Itoa(col)
|
||||
}
|
||||
return "\x1b[" + s + "G"
|
||||
}
|
||||
|
||||
// CHA is an alias for [CursorHorizontalAbsolute].
|
||||
func CHA(col int) string {
|
||||
return CursorHorizontalAbsolute(col)
|
||||
}
|
||||
|
||||
// CursorPosition (CUP) returns a sequence for setting the cursor to the
|
||||
// given row and column.
|
||||
//
|
||||
// Default is 1,1.
|
||||
//
|
||||
// CSI n ; m H
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/CUP.html
|
||||
func MoveCursor(row, col int) string {
|
||||
if row < 0 {
|
||||
row = 0
|
||||
func CursorPosition(col, row int) string {
|
||||
if row <= 0 && col <= 0 {
|
||||
return HomeCursorPosition
|
||||
}
|
||||
if col < 0 {
|
||||
col = 0
|
||||
|
||||
var r, c string
|
||||
if row > 0 {
|
||||
r = strconv.Itoa(row)
|
||||
}
|
||||
return "\x1b[" + strconv.Itoa(row) + ";" + strconv.Itoa(col) + "H"
|
||||
if col > 0 {
|
||||
c = strconv.Itoa(col)
|
||||
}
|
||||
return "\x1b[" + r + ";" + c + "H"
|
||||
}
|
||||
|
||||
// CUP is an alias for [CursorPosition].
|
||||
func CUP(col, row int) string {
|
||||
return CursorPosition(col, row)
|
||||
}
|
||||
|
||||
// CursorHomePosition is a sequence for moving the cursor to the upper left
|
||||
// corner of the scrolling region. This is equivalent to `CursorPosition(1, 1)`.
|
||||
const CursorHomePosition = "\x1b[H"
|
||||
|
||||
// SetCursorPosition (CUP) returns a sequence for setting the cursor to the
|
||||
// given row and column.
|
||||
//
|
||||
// CSI n ; m H
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/CUP.html
|
||||
// Deprecated: use [CursorPosition] instead.
|
||||
func SetCursorPosition(col, row int) string {
|
||||
if row <= 0 && col <= 0 {
|
||||
return HomeCursorPosition
|
||||
}
|
||||
|
||||
var r, c string
|
||||
if row > 0 {
|
||||
r = strconv.Itoa(row)
|
||||
}
|
||||
if col > 0 {
|
||||
c = strconv.Itoa(col)
|
||||
}
|
||||
return "\x1b[" + r + ";" + c + "H"
|
||||
}
|
||||
|
||||
// HomeCursorPosition is a sequence for moving the cursor to the upper left
|
||||
// corner of the scrolling region. This is equivalent to `SetCursorPosition(1, 1)`.
|
||||
// Deprecated: use [CursorHomePosition] instead.
|
||||
const HomeCursorPosition = CursorHomePosition
|
||||
|
||||
// MoveCursor (CUP) returns a sequence for setting the cursor to the
|
||||
// given row and column.
|
||||
//
|
||||
// CSI n ; m H
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/CUP.html
|
||||
//
|
||||
// Deprecated: use [CursorPosition] instead.
|
||||
func MoveCursor(col, row int) string {
|
||||
return SetCursorPosition(col, row)
|
||||
}
|
||||
|
||||
// CursorOrigin is a sequence for moving the cursor to the upper left corner of
|
||||
// the display. This is equivalent to `SetCursorPosition(1, 1)`.
|
||||
//
|
||||
// Deprecated: use [CursorHomePosition] instead.
|
||||
const CursorOrigin = "\x1b[1;1H"
|
||||
|
||||
// MoveCursorOrigin is a sequence for moving the cursor to the upper left
|
||||
// corner of the screen. This is equivalent to MoveCursor(1, 1).
|
||||
const MoveCursorOrigin = "\x1b[1;1H"
|
||||
// corner of the display. This is equivalent to `SetCursorPosition(1, 1)`.
|
||||
//
|
||||
// Deprecated: use [CursorHomePosition] instead.
|
||||
const MoveCursorOrigin = CursorOrigin
|
||||
|
||||
// CursorHorizontalForwardTab (CHT) returns a sequence for moving the cursor to
|
||||
// the next tab stop n times.
|
||||
//
|
||||
// Default is 1.
|
||||
//
|
||||
// CSI n I
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/CHT.html
|
||||
func CursorHorizontalForwardTab(n int) string {
|
||||
var s string
|
||||
if n > 1 {
|
||||
s = strconv.Itoa(n)
|
||||
}
|
||||
return "\x1b[" + s + "I"
|
||||
}
|
||||
|
||||
// CHT is an alias for [CursorHorizontalForwardTab].
|
||||
func CHT(n int) string {
|
||||
return CursorHorizontalForwardTab(n)
|
||||
}
|
||||
|
||||
// EraseCharacter (ECH) returns a sequence for erasing n characters and moving
|
||||
// the cursor to the right. This doesn't affect other cell attributes.
|
||||
//
|
||||
// Default is 1.
|
||||
//
|
||||
// CSI n X
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/ECH.html
|
||||
func EraseCharacter(n int) string {
|
||||
var s string
|
||||
if n > 1 {
|
||||
s = strconv.Itoa(n)
|
||||
}
|
||||
return "\x1b[" + s + "X"
|
||||
}
|
||||
|
||||
// ECH is an alias for [EraseCharacter].
|
||||
func ECH(n int) string {
|
||||
return EraseCharacter(n)
|
||||
}
|
||||
|
||||
// CursorBackwardTab (CBT) returns a sequence for moving the cursor to the
|
||||
// previous tab stop n times.
|
||||
//
|
||||
// Default is 1.
|
||||
//
|
||||
// CSI n Z
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/CBT.html
|
||||
func CursorBackwardTab(n int) string {
|
||||
var s string
|
||||
if n > 1 {
|
||||
s = strconv.Itoa(n)
|
||||
}
|
||||
return "\x1b[" + s + "Z"
|
||||
}
|
||||
|
||||
// CBT is an alias for [CursorBackwardTab].
|
||||
func CBT(n int) string {
|
||||
return CursorBackwardTab(n)
|
||||
}
|
||||
|
||||
// VerticalPositionAbsolute (VPA) returns a sequence for moving the cursor to
|
||||
// the given row.
|
||||
//
|
||||
// Default is 1.
|
||||
//
|
||||
// CSI n d
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/VPA.html
|
||||
func VerticalPositionAbsolute(row int) string {
|
||||
var s string
|
||||
if row > 0 {
|
||||
s = strconv.Itoa(row)
|
||||
}
|
||||
return "\x1b[" + s + "d"
|
||||
}
|
||||
|
||||
// VPA is an alias for [VerticalPositionAbsolute].
|
||||
func VPA(row int) string {
|
||||
return VerticalPositionAbsolute(row)
|
||||
}
|
||||
|
||||
// VerticalPositionRelative (VPR) returns a sequence for moving the cursor down
|
||||
// n rows relative to the current position.
|
||||
//
|
||||
// Default is 1.
|
||||
//
|
||||
// CSI n e
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/VPR.html
|
||||
func VerticalPositionRelative(n int) string {
|
||||
var s string
|
||||
if n > 1 {
|
||||
s = strconv.Itoa(n)
|
||||
}
|
||||
return "\x1b[" + s + "e"
|
||||
}
|
||||
|
||||
// VPR is an alias for [VerticalPositionRelative].
|
||||
func VPR(n int) string {
|
||||
return VerticalPositionRelative(n)
|
||||
}
|
||||
|
||||
// HorizontalVerticalPosition (HVP) returns a sequence for moving the cursor to
|
||||
// the given row and column.
|
||||
//
|
||||
// Default is 1,1.
|
||||
//
|
||||
// CSI n ; m f
|
||||
//
|
||||
// This has the same effect as [CursorPosition].
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/HVP.html
|
||||
func HorizontalVerticalPosition(col, row int) string {
|
||||
var r, c string
|
||||
if row > 0 {
|
||||
r = strconv.Itoa(row)
|
||||
}
|
||||
if col > 0 {
|
||||
c = strconv.Itoa(col)
|
||||
}
|
||||
return "\x1b[" + r + ";" + c + "f"
|
||||
}
|
||||
|
||||
// HVP is an alias for [HorizontalVerticalPosition].
|
||||
func HVP(col, row int) string {
|
||||
return HorizontalVerticalPosition(col, row)
|
||||
}
|
||||
|
||||
// HorizontalVerticalHomePosition is a sequence for moving the cursor to the
|
||||
// upper left corner of the scrolling region. This is equivalent to
|
||||
// `HorizontalVerticalPosition(1, 1)`.
|
||||
const HorizontalVerticalHomePosition = "\x1b[f"
|
||||
|
||||
// SaveCurrentCursorPosition (SCOSC) is a sequence for saving the current cursor
|
||||
// position for SCO console mode.
|
||||
//
|
||||
// CSI s
|
||||
//
|
||||
// This acts like [DECSC], except the page number where the cursor is located
|
||||
// is not saved.
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/SCOSC.html
|
||||
const (
|
||||
SaveCurrentCursorPosition = "\x1b[s"
|
||||
SCOSC = SaveCurrentCursorPosition
|
||||
)
|
||||
|
||||
// SaveCursorPosition (SCP or SCOSC) is a sequence for saving the cursor
|
||||
// position.
|
||||
@ -176,8 +482,23 @@ const MoveCursorOrigin = "\x1b[1;1H"
|
||||
// not saved.
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/SCOSC.html
|
||||
// Deprecated: use [SaveCurrentCursorPosition] instead.
|
||||
const SaveCursorPosition = "\x1b[s"
|
||||
|
||||
// RestoreCurrentCursorPosition (SCORC) is a sequence for restoring the current
|
||||
// cursor position for SCO console mode.
|
||||
//
|
||||
// CSI u
|
||||
//
|
||||
// This acts like [DECRC], except the page number where the cursor was saved is
|
||||
// not restored.
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/SCORC.html
|
||||
const (
|
||||
RestoreCurrentCursorPosition = "\x1b[u"
|
||||
SCORC = RestoreCurrentCursorPosition
|
||||
)
|
||||
|
||||
// RestoreCursorPosition (RCP or SCORC) is a sequence for restoring the cursor
|
||||
// position.
|
||||
//
|
||||
@ -187,4 +508,112 @@ const SaveCursorPosition = "\x1b[s"
|
||||
// cursor was saved.
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/SCORC.html
|
||||
// Deprecated: use [RestoreCurrentCursorPosition] instead.
|
||||
const RestoreCursorPosition = "\x1b[u"
|
||||
|
||||
// SetCursorStyle (DECSCUSR) returns a sequence for changing the cursor style.
|
||||
//
|
||||
// Default is 1.
|
||||
//
|
||||
// CSI Ps SP q
|
||||
//
|
||||
// Where Ps is the cursor style:
|
||||
//
|
||||
// 0: Blinking block
|
||||
// 1: Blinking block (default)
|
||||
// 2: Steady block
|
||||
// 3: Blinking underline
|
||||
// 4: Steady underline
|
||||
// 5: Blinking bar (xterm)
|
||||
// 6: Steady bar (xterm)
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/DECSCUSR.html
|
||||
// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h4-Functions-using-CSI-_-ordered-by-the-final-character-lparen-s-rparen:CSI-Ps-SP-q.1D81
|
||||
func SetCursorStyle(style int) string {
|
||||
if style < 0 {
|
||||
style = 0
|
||||
}
|
||||
return "\x1b[" + strconv.Itoa(style) + " q"
|
||||
}
|
||||
|
||||
// DECSCUSR is an alias for [SetCursorStyle].
|
||||
func DECSCUSR(style int) string {
|
||||
return SetCursorStyle(style)
|
||||
}
|
||||
|
||||
// SetPointerShape returns a sequence for changing the mouse pointer cursor
|
||||
// shape. Use "default" for the default pointer shape.
|
||||
//
|
||||
// OSC 22 ; Pt ST
|
||||
// OSC 22 ; Pt BEL
|
||||
//
|
||||
// Where Pt is the pointer shape name. The name can be anything that the
|
||||
// operating system can understand. Some common names are:
|
||||
//
|
||||
// - copy
|
||||
// - crosshair
|
||||
// - default
|
||||
// - ew-resize
|
||||
// - n-resize
|
||||
// - text
|
||||
// - wait
|
||||
//
|
||||
// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Commands
|
||||
func SetPointerShape(shape string) string {
|
||||
return "\x1b]22;" + shape + "\x07"
|
||||
}
|
||||
|
||||
// ReverseIndex (RI) is an escape sequence for moving the cursor up one line in
|
||||
// the same column. If the cursor is at the top margin, the screen scrolls
|
||||
// down.
|
||||
//
|
||||
// This has the same effect as [RI].
|
||||
const ReverseIndex = "\x1bM"
|
||||
|
||||
// HorizontalPositionAbsolute (HPA) returns a sequence for moving the cursor to
|
||||
// the given column. This has the same effect as [CUP].
|
||||
//
|
||||
// Default is 1.
|
||||
//
|
||||
// CSI n `
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/HPA.html
|
||||
func HorizontalPositionAbsolute(col int) string {
|
||||
var s string
|
||||
if col > 0 {
|
||||
s = strconv.Itoa(col)
|
||||
}
|
||||
return "\x1b[" + s + "`"
|
||||
}
|
||||
|
||||
// HPA is an alias for [HorizontalPositionAbsolute].
|
||||
func HPA(col int) string {
|
||||
return HorizontalPositionAbsolute(col)
|
||||
}
|
||||
|
||||
// HorizontalPositionRelative (HPR) returns a sequence for moving the cursor
|
||||
// right n columns relative to the current position. This has the same effect
|
||||
// as [CUP].
|
||||
//
|
||||
// Default is 1.
|
||||
//
|
||||
// CSI n a
|
||||
//
|
||||
// See: https://vt100.net/docs/vt510-rm/HPR.html
|
||||
func HorizontalPositionRelative(n int) string {
|
||||
var s string
|
||||
if n > 0 {
|
||||
s = strconv.Itoa(n)
|
||||
}
|
||||
return "\x1b[" + s + "a"
|
||||
}
|
||||
|
||||
// HPR is an alias for [HorizontalPositionRelative].
|
||||
func HPR(n int) string {
|
||||
return HorizontalPositionRelative(n)
|
||||
}
|
||||
|
||||
// Index (IND) is an escape sequence for moving the cursor down one line in the
|
||||
// same column. If the cursor is at the bottom margin, the screen scrolls up.
|
||||
// This has the same effect as [IND].
|
||||
const Index = "\x1bD"
|
||||
|
Reference in New Issue
Block a user