Antsy
view release on metacpan or search on metacpan
lib/Antsy.pm view on Meta::CPAN
=item * clear_to_line_end
=item * clear_to_line_start
=item * clear_to_screen_end
=item * clear_to_screen_start
Clear the part of the screen as indicated. Each of these start at the
current cursor position.
=item * conceal
Make the text invisible (if your terminal handles that).
=item * cursor_back( N )
Move the cursor back N positions.
=item * cursor_column( N )
Move the cursor to column N.
=item * cursor_down( N )
Move the cursor down N positions.
=item * cursor_forward( N )
Move the cursor forward N positions.
=item * cursor_next_line( N )
Move the cursor down N lines, to the start of the line
=item * cursor_previous_line( N )
Move the cursor up N lines, to the start of the line
=item * cursor_row_column( N, M )
Move the cursor to row N and column M.
=item * cursor_up
TK: Fill in details
=item * dark
Make the text dark (however your terminal does that).
=item * erase_in_display( [ 0, 1, 2, 3 ] )
TK: Fill in details
=item * erase_in_line( [ 0, 1, 2, 3 ] )
TK: Fill in details
=item * hide_cursor
Hide the cursor. See also C<show_cursor>.
=item * italic
Turn on italic.
=item * reset
Turn off all attributes
=item * restore_cursor
Put the cursor back to where you saved it. See also C<save_cursor>.
=item * reverse
Use the background color for the text color, and the text color
for the background.
=item * save_cursor
Save the current location of the cursor. See also C<save_cursor>.
=item * scroll_down( N )
Scroll down N lines.
=item * scroll_up( N )
Scroll up N lines.
=item * show_cursor
Show the cursor. See also C<hide_cursor>.
=item * text_256( N )
Make the foreground the color N in the xterm 256 color chart.
This dies if N is not a positive number between 0 and 255 (inclusive).
=item * text_black
=item * text_blue
lib/Antsy.pm view on Meta::CPAN
$_;
}
sub _start () { "\x1b[" }
sub _text () { 38 } # a magic number that applies the SGR to the text
sub bg_256 ( $n ) { _256( _bg(), $n ) }
sub bg_rgb ( $r, $g, $b ) { _rgb( _bg(), $r, $g, $b ) }
sub cursor_row_column ( $n = 1, $m = 1 ) { _seq( 'H', $n, $m ) }
sub text_256 ( $n ) { _256( _text(), $n ) }
sub text_rgb ( $r, $g, $b ) { _rgb( _text(), $r, $g, $b ) }
# This section takes the subroutines that we've already defined to
# adds them to the export lists.
BEGIN {
my @subs = qw( bg_256 bg_rgb text_256 text_rgb
erase_in_display erase_in_line cursor_row_column
);
push @EXPORT_OK, @subs;
push $EXPORT_TAGS{all }->@*, @subs;
push $EXPORT_TAGS{bg }->@*, grep { /\Abg_/ } @subs;
push $EXPORT_TAGS{text }->@*, grep { /\Atext_/ } @subs;
push $EXPORT_TAGS{erase }->@*, grep { /\Aerase_/ } @subs;
push $EXPORT_TAGS{cursor}->@*, grep { /\Acursor_/ } @subs;
}
BEGIN {
my @groups = (
[ qw( J screen) ],
[ qw( K line ) ],
);
my @templates = ( 'clear_to_%s_end', 'clear_to_%s_start', 'clear_%s' );
lib/Antsy.pm view on Meta::CPAN
my $name = sprintf $templates[$i], $group->[1];
my $value = _seq( $group->[0], $i );
*{$name} = sub () { $value };
_export( $name, 'clear' );
}
}
}
BEGIN {
my @groups = (
[ qw( cursor back D ) ],
[ qw( cursor column G ) ],
[ qw( cursor down B ) ],
[ qw( cursor forward C ) ],
[ qw( cursor next_line E ) ],
[ qw( cursor previous_line F ) ],
[ qw( cursor up A ) ],
[ qw( scroll down T ) ],
[ qw( scroll up S ) ],
);
foreach my $group ( @groups ) {
no strict 'refs';
my( $export_tag, $fragment, $command ) = @$group;
my $name = join '_', $export_tag, $fragment;
lib/Antsy.pm view on Meta::CPAN
my @groups = (
# EXPORT_TAG SUB_NAME COMMAND ARGS
[ qw( control reset m 0 ) ],
[ qw( text bold m 1 ) ],
[ qw( text dark m 2 ) ],
[ qw( text italic m 3 ) ],
[ qw( text underline m 4 ) ],
[ qw( text blink m 5 ) ],
[ qw( text reverse m 7 ) ],
[ qw( text conceal m 8 ) ],
[ qw( cursor save_cursor s ) ],
[ qw( cursor restore_cursor u ) ],
[ qw( cursor hide_cursor h ?25 ) ],
[ qw( cursor show_cursor l ?25 ) ],
);
foreach my $group ( @groups ) {
no strict 'refs';
my( $export_tag, $name, $command, $n ) = @$group;
$n //= '';
my $value = _seq( $command, $n );
*{$name} = sub () { $value };
lib/Antsy.pm view on Meta::CPAN
}
sub iterm_end_link () { OSC() . 8 . ';;' . ST() }
sub iterm_linked_text ( $text, $url, $id ) {
iterm_start_link( $url, $id ) .
$text .
iterm_end_link();
}
=item * set_cursor_shape( N )
=over 4
=item * 0 Block
=item * 1 Vertical bar
=item * 2 Underline
=back
=item * iterm_set_block_cursor
=item * iterm_set_bar_cursor
=item * iterm_set_underline_cursor
=cut
sub _osc_1337 ( $content ) {
unless( _is_iterm() ) {
my $sub = ( caller(1) )[3];
carp( "$sub only works in iTerm2" );
return;
}
OSC() . 1337 . ';' . $content . ST()
}
# OSC 1337 ; CursorShape=[N] ST
sub _iterm_set_cursor ( $n ) {
unless( $n == 0 or $n == 1 or $n == 2 ) {
carp "The cursor type can be 0, 1, or 2, but you specified <$n>";
return;
}
OSC() . 1337 . ';' . "CursorShape=$n" . 'ST'
}
sub iterm_set_block_cursor () { state $s = _iterm_set_cursor(0); $s }
sub iterm_set_bar_cursor () { state $s = _iterm_set_cursor(1); $s }
sub iterm_set_underline_cursor () { state $s = _iterm_set_cursor(2); $s }
=item * set_mark
Same as Command-Shift-M. Mark the current location and jump back to it
with Command-Shift-J.
=cut
# OSC 1337 ; SetMark ST
sub set_mark () { state $s = _osc_1337( 'SetMark' ); $s }
lib/Antsy.pm view on Meta::CPAN
=item * add_annotation
OSC 1337 ; AddAnnotation=[message] ST
OSC 1337 ; AddAnnotation=[length] | [message] ST
OSC 1337 ; AddAnnotation=[message] | [length] | [x-coord] | [y-coord] ST
OSC 1337 ; AddHiddenAnnotation=[message] ST
OSC 1337 ; AddHiddenAnnotation=[length] | [message] ST
OSC 1337 ; AddHiddenAnnotation=[message] | [length] | [x-coord] | [y-coord] ST
`[message]`: The message to attach to the annotation.
`[length]`: The number of cells to annotate. Defaults to the rest of the line beginning at the start of the annotation.
`[x-coord]` and `[y-coord]`: The starting coordinate for the annotation. Defaults to the cursor's coordinate.
=cut
sub add_annotation () {}
=item * hide_cursor_guide
=item * show_cursor_guide
=cut
# OSC 1337 ; HighlightCursorLine=[boolean] ST
sub hide_cursor_guide () { state $s = _osc_1337( 'HighlightCursorLine=no' ); $s }
sub show_cursor_guide () { state $s = _osc_1337( 'HighlightCursorLine=yes' ); $s }
=item * iterm_attention
Play with the dock icon.
=over 4
=item * fireworks - animation at the cursor
=item * no - stop bouncing the dock icon
=item * once - bounce the dock icon once
=item * yes - bounce the dock indefinitely
=back
=cut
( run in 0.226 second using v1.01-cache-2.11-cpan-4d50c553e7e )