mirror of
https://github.com/tmate-io/tmate.git
synced 2024-12-24 07:38:53 +01:00
Use ACS for line drawing characters.
This commit is contained in:
parent
9164dd63e7
commit
fb543c7707
6
CHANGES
6
CHANGES
@ -1,3 +1,7 @@
|
|||||||
|
04 May 2009
|
||||||
|
|
||||||
|
* Use ACS line drawing characters for pane separator lines.
|
||||||
|
|
||||||
30 April 2009
|
30 April 2009
|
||||||
|
|
||||||
* Support command sequences without a space before the semicolon, for example
|
* Support command sequences without a space before the semicolon, for example
|
||||||
@ -1239,7 +1243,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.282 2009-04-30 21:53:32 nicm Exp $
|
$Id: CHANGES,v 1.283 2009-05-04 13:20:01 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 ms
|
LocalWords: rivo nurges lscm Erdely eol smysession mysession ek dstname RB ms
|
||||||
|
5
TODO
5
TODO
@ -63,6 +63,8 @@
|
|||||||
- refer to windows by name etc (duplicates? fnmatch?)
|
- refer to windows by name etc (duplicates? fnmatch?)
|
||||||
- the output code (tty.c) could do with optimisation depending on term
|
- the output code (tty.c) could do with optimisation depending on term
|
||||||
capibilities
|
capibilities
|
||||||
|
- would be nice to be able to use "--" to mark start of command w/ neww etc
|
||||||
|
to avoid quoting
|
||||||
|
|
||||||
(hopefully) for 0.9, in no particular order:
|
(hopefully) for 0.9, in no particular order:
|
||||||
- a command to display the status line briefly when it is turned off
|
- a command to display the status line briefly when it is turned off
|
||||||
@ -88,3 +90,6 @@
|
|||||||
hardcoded 81 for left-vertical is nasty
|
hardcoded 81 for left-vertical is nasty
|
||||||
- test bug sshing from freebsd console (tom iirc?)
|
- test bug sshing from freebsd console (tom iirc?)
|
||||||
- rotate-window has redraw bugs... :-/
|
- rotate-window has redraw bugs... :-/
|
||||||
|
- binding a neww ... while read i or for i in to a key doesn't work...
|
||||||
|
something to do with pty/tty handling?
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: screen-redraw.c,v 1.34 2009-04-02 21:08:13 nicm Exp $ */
|
/* $Id: screen-redraw.c,v 1.35 2009-05-04 13:20:02 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -69,21 +69,39 @@ screen_redraw_screen(struct client *c)
|
|||||||
struct window_pane *wp;
|
struct window_pane *wp;
|
||||||
struct screen *s;
|
struct screen *s;
|
||||||
u_int i, j, sx, sy;
|
u_int i, j, sx, sy;
|
||||||
int status;
|
int status, has_acs;
|
||||||
|
u_char choriz, cvert, cbackg;
|
||||||
|
|
||||||
/* Get status line, er, status. */
|
/* Get status line, er, status. */
|
||||||
status = options_get_number(&c->session->options, "status");
|
status = options_get_number(&c->session->options, "status");
|
||||||
|
|
||||||
|
/* Work out ACS characters. */
|
||||||
|
if (tty_term_has(tty->term, TTYC_ACSC)) {
|
||||||
|
has_acs = 1;
|
||||||
|
choriz = tty_get_acs(tty, 'q');
|
||||||
|
cvert = tty_get_acs(tty, 'x');
|
||||||
|
cbackg = tty_get_acs(tty, '~');
|
||||||
|
} else {
|
||||||
|
has_acs = 0;
|
||||||
|
choriz = '-';
|
||||||
|
cvert = '|';
|
||||||
|
cbackg = '.';
|
||||||
|
}
|
||||||
|
|
||||||
/* Clear the screen. */
|
/* Clear the screen. */
|
||||||
tty_reset(tty);
|
tty_reset(tty);
|
||||||
|
if (has_acs)
|
||||||
|
tty_putcode(tty, TTYC_SMACS);
|
||||||
for (j = 0; j < tty->sy - status; j++) {
|
for (j = 0; j < tty->sy - status; j++) {
|
||||||
for (i = 0; i < tty->sx; i++) {
|
for (i = 0; i < tty->sx; i++) {
|
||||||
if (!screen_redraw_check_cell(c, i, j)) {
|
if (!screen_redraw_check_cell(c, i, j)) {
|
||||||
tty_cursor(tty, i, j, 0, 0);
|
tty_cursor(tty, i, j, 0, 0);
|
||||||
tty_putc(tty, '.');
|
tty_putc(tty, cbackg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (has_acs)
|
||||||
|
tty_putcode(tty, TTYC_RMACS);
|
||||||
|
|
||||||
/* Draw the panes. */
|
/* Draw the panes. */
|
||||||
TAILQ_FOREACH(wp, &w->panes, entry) {
|
TAILQ_FOREACH(wp, &w->panes, entry) {
|
||||||
@ -97,16 +115,18 @@ screen_redraw_screen(struct client *c)
|
|||||||
sy = wp->sy;
|
sy = wp->sy;
|
||||||
|
|
||||||
/* Draw left and right borders. */
|
/* Draw left and right borders. */
|
||||||
|
if (has_acs)
|
||||||
|
tty_putcode(tty, TTYC_SMACS);
|
||||||
if (wp->xoff > 0) {
|
if (wp->xoff > 0) {
|
||||||
for (i = wp->yoff; i < wp->yoff + sy; i++) {
|
for (i = wp->yoff; i < wp->yoff + sy; i++) {
|
||||||
tty_cursor(tty, wp->xoff - 1, i, 0, 0);
|
tty_cursor(tty, wp->xoff - 1, i, 0, 0);
|
||||||
tty_putc(tty, '|');
|
tty_putc(tty, cvert);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (wp->xoff + sx < tty->sx) {
|
if (wp->xoff + sx < tty->sx) {
|
||||||
for (i = wp->yoff; i < wp->yoff + sy; i++) {
|
for (i = wp->yoff; i < wp->yoff + sy; i++) {
|
||||||
tty_cursor(tty, wp->xoff + sx, i, 0, 0);
|
tty_cursor(tty, wp->xoff + sx, i, 0, 0);
|
||||||
tty_putc(&c->tty, '|');
|
tty_putc(&c->tty, cvert);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,13 +134,15 @@ screen_redraw_screen(struct client *c)
|
|||||||
if (wp->yoff > 0) {
|
if (wp->yoff > 0) {
|
||||||
tty_cursor(tty, wp->xoff, wp->yoff - 1, 0, 0);
|
tty_cursor(tty, wp->xoff, wp->yoff - 1, 0, 0);
|
||||||
for (i = 0; i < sx; i++)
|
for (i = 0; i < sx; i++)
|
||||||
tty_putc(tty, '-');
|
tty_putc(tty, choriz);
|
||||||
}
|
}
|
||||||
if (wp->yoff + sy < tty->sy - status) {
|
if (wp->yoff + sy < tty->sy - status) {
|
||||||
tty_cursor(tty, wp->xoff, wp->yoff + sy, 0, 0);
|
tty_cursor(tty, wp->xoff, wp->yoff + sy, 0, 0);
|
||||||
for (i = 0; i < sx; i++)
|
for (i = 0; i < sx; i++)
|
||||||
tty_putc(tty, '-');
|
tty_putc(tty, choriz);
|
||||||
}
|
}
|
||||||
|
if (has_acs)
|
||||||
|
tty_putcode(tty, TTYC_RMACS);
|
||||||
|
|
||||||
/* Draw the pane. */
|
/* Draw the pane. */
|
||||||
screen_redraw_pane(c, wp);
|
screen_redraw_pane(c, wp);
|
||||||
|
3
tmux.h
3
tmux.h
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tmux.h,v 1.310 2009-05-02 08:34:39 nicm Exp $ */
|
/* $Id: tmux.h,v 1.311 2009-05-04 13:20:02 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -1082,6 +1082,7 @@ void options_set_number(struct options *, const char *, long long);
|
|||||||
long long options_get_number(struct options *, const char *);
|
long long options_get_number(struct options *, const char *);
|
||||||
|
|
||||||
/* tty.c */
|
/* tty.c */
|
||||||
|
u_char tty_get_acs(struct tty *, u_char);
|
||||||
void tty_emulate_repeat(struct tty *,
|
void tty_emulate_repeat(struct tty *,
|
||||||
enum tty_code_code, enum tty_code_code, u_int);
|
enum tty_code_code, enum tty_code_code, u_int);
|
||||||
void tty_reset(struct tty *);
|
void tty_reset(struct tty *);
|
||||||
|
3
tty.c
3
tty.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tty.c,v 1.94 2009-04-29 17:50:52 nicm Exp $ */
|
/* $Id: tty.c,v 1.95 2009-05-04 13:20:02 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -28,7 +28,6 @@
|
|||||||
#include "tmux.h"
|
#include "tmux.h"
|
||||||
|
|
||||||
void tty_fill_acs(struct tty *);
|
void tty_fill_acs(struct tty *);
|
||||||
u_char tty_get_acs(struct tty *, u_char);
|
|
||||||
|
|
||||||
void tty_raw(struct tty *, const char *);
|
void tty_raw(struct tty *, const char *);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user