mirror of
https://github.com/tmate-io/tmate.git
synced 2024-11-27 02:23:15 +01:00
Work around lack of dch.
This commit is contained in:
parent
de0a3a0840
commit
75f043fedb
9
CHANGES
9
CHANGES
@ -1,3 +1,10 @@
|
|||||||
|
13 December 2008
|
||||||
|
|
||||||
|
* Work around lack of dch. On Linux, the rxvt termcap doesn't have it (it is
|
||||||
|
lying, but we can't really start disbelieving termcaps...). This is a bit
|
||||||
|
horrible - I can see no way to do it without pretty much redrawing the whole
|
||||||
|
line, but it works...
|
||||||
|
|
||||||
10 December 2008
|
10 December 2008
|
||||||
|
|
||||||
* glibc's getopt(3) is useless: it is not POSIX compliant without jumping
|
* glibc's getopt(3) is useless: it is not POSIX compliant without jumping
|
||||||
@ -772,7 +779,7 @@
|
|||||||
(including mutt, emacs). No status bar yet and no key remapping or other
|
(including mutt, emacs). No status bar yet and no key remapping or other
|
||||||
customisation.
|
customisation.
|
||||||
|
|
||||||
$Id: CHANGES,v 1.172 2008-12-10 20:26:41 nicm Exp $
|
$Id: CHANGES,v 1.173 2008-12-13 17:41:49 nicm Exp $
|
||||||
|
|
||||||
LocalWords: showw utf UTF fulvio ciriaco joshe OSC APC gettime abc DEF OA clr
|
LocalWords: showw utf UTF fulvio ciriaco joshe OSC APC gettime abc DEF OA clr
|
||||||
LocalWords: rivo nurges lscm Erdely eol smysession mysession ek dstname RB
|
LocalWords: rivo nurges lscm Erdely eol smysession mysession ek dstname RB
|
||||||
|
3
tmux.h
3
tmux.h
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tmux.h,v 1.202 2008-12-10 20:25:41 nicm Exp $ */
|
/* $Id: tmux.h,v 1.203 2008-12-13 17:41:49 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -953,6 +953,7 @@ void tty_set_title(struct tty *, const char *);
|
|||||||
int tty_open(struct tty *, char **);
|
int tty_open(struct tty *, char **);
|
||||||
void tty_close(struct tty *);
|
void tty_close(struct tty *);
|
||||||
void tty_free(struct tty *);
|
void tty_free(struct tty *);
|
||||||
|
void tty_write(struct tty *, struct screen *, int, ...);
|
||||||
void tty_vwrite(struct tty *, struct screen *s, int, va_list);
|
void tty_vwrite(struct tty *, struct screen *s, int, va_list);
|
||||||
|
|
||||||
/* tty-keys.c */
|
/* tty-keys.c */
|
||||||
|
43
tty.c
43
tty.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tty.c,v 1.53 2008-12-06 09:30:25 nicm Exp $ */
|
/* $Id: tty.c,v 1.54 2008-12-13 17:41:49 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -34,6 +34,8 @@ void tty_free_term(struct tty_term *);
|
|||||||
void tty_fill_acs(struct tty *);
|
void tty_fill_acs(struct tty *);
|
||||||
u_char tty_get_acs(struct tty *, u_char);
|
u_char tty_get_acs(struct tty *, u_char);
|
||||||
|
|
||||||
|
void tty_put_line(struct tty *, struct screen *, u_int, u_int, u_int);
|
||||||
|
|
||||||
const char *tty_strip(const char *);
|
const char *tty_strip(const char *);
|
||||||
void tty_raw(struct tty *, const char *);
|
void tty_raw(struct tty *, const char *);
|
||||||
void tty_puts(struct tty *, const char *);
|
void tty_puts(struct tty *, const char *);
|
||||||
@ -484,6 +486,16 @@ tty_set_title(struct tty *tty, const char *title)
|
|||||||
tty_putc(tty, '\007');
|
tty_putc(tty, '\007');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tty_write(struct tty *tty, struct screen *s, int cmd, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, cmd);
|
||||||
|
tty_vwrite(tty, s, cmd, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
tty_vwrite(struct tty *tty, struct screen *s, int cmd, va_list ap)
|
tty_vwrite(struct tty *tty, struct screen *s, int cmd, va_list ap)
|
||||||
{
|
{
|
||||||
@ -498,6 +510,24 @@ tty_vwrite(struct tty *tty, struct screen *s, int cmd, va_list ap)
|
|||||||
tty_cmds[cmd](tty, s, ap);
|
tty_cmds[cmd](tty, s, ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tty_put_line(struct tty *tty, struct screen *s, u_int px, u_int py, u_int nx)
|
||||||
|
{
|
||||||
|
const struct grid_cell *gc;
|
||||||
|
struct grid_cell tc;
|
||||||
|
u_int xx;
|
||||||
|
|
||||||
|
for (xx = px; xx < px + nx; xx++) {
|
||||||
|
gc = grid_view_peek_cell(s->grid, xx, py);
|
||||||
|
if (screen_check_selection(s, xx, py)) {
|
||||||
|
memcpy(&tc, &s->sel.cell, sizeof tc);
|
||||||
|
tc.data = gc->data;
|
||||||
|
tty_write(tty, s, TTY_CELL, &tc);
|
||||||
|
} else
|
||||||
|
tty_write(tty, s, TTY_CELL, gc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
tty_cmd_cursorup(struct tty *tty, unused struct screen *s, va_list ap)
|
tty_cmd_cursorup(struct tty *tty, unused struct screen *s, va_list ap)
|
||||||
{
|
{
|
||||||
@ -596,8 +626,15 @@ tty_cmd_deletecharacter(struct tty *tty, unused struct screen *s, va_list ap)
|
|||||||
while (ua-- > 0)
|
while (ua-- > 0)
|
||||||
tty_puts(tty, delete_character);
|
tty_puts(tty, delete_character);
|
||||||
} else {
|
} else {
|
||||||
while (ua-- > 0)
|
/*
|
||||||
tty_putc(tty, '\010');
|
* XXX assumes screen already updated! I hate this... stupid
|
||||||
|
* terms without dch...
|
||||||
|
*/
|
||||||
|
if (s->cx != screen_size_x(s) - 1) {
|
||||||
|
tty_put_line(tty, s,
|
||||||
|
s->cx, s->cy, screen_size_x(s) - s->cx);
|
||||||
|
}
|
||||||
|
tty_puts(tty, tparm(cursor_address, s->cy, s->cx));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user