aboutsummaryrefslogtreecommitdiff
path: root/screen-write.c
diff options
context:
space:
mode:
Diffstat (limited to 'screen-write.c')
-rw-r--r--screen-write.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/screen-write.c b/screen-write.c
index 0de1df40..e38c9f53 100644
--- a/screen-write.c
+++ b/screen-write.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $OpenBSD$ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -25,13 +25,13 @@
void screen_write_initctx(struct screen_write_ctx *, struct tty_ctx *, int);
void screen_write_overwrite(struct screen_write_ctx *, u_int);
-int screen_write_combine(
- struct screen_write_ctx *, const struct utf8_data *);
+int screen_write_combine(struct screen_write_ctx *,
+ const struct utf8_data *);
/* Initialise writing with a window. */
void
-screen_write_start(
- struct screen_write_ctx *ctx, struct window_pane *wp, struct screen *s)
+screen_write_start(struct screen_write_ctx *ctx, struct window_pane *wp,
+ struct screen *s)
{
ctx->wp = wp;
if (wp != NULL && s == NULL)
@@ -65,14 +65,15 @@ screen_write_reset(struct screen_write_ctx *ctx)
/* Write character. */
void
-screen_write_putc(struct screen_write_ctx *ctx, struct grid_cell *gc, u_char ch)
+screen_write_putc(struct screen_write_ctx *ctx, struct grid_cell *gc,
+ u_char ch)
{
grid_cell_one(gc, ch);
screen_write_cell(ctx, gc);
}
/* Calculate string length, with embedded formatting. */
-size_t printflike2
+size_t
screen_write_cstrlen(int utf8flag, const char *fmt, ...)
{
va_list ap;
@@ -107,7 +108,7 @@ screen_write_cstrlen(int utf8flag, const char *fmt, ...)
}
/* Calculate string length. */
-size_t printflike2
+size_t
screen_write_strlen(int utf8flag, const char *fmt, ...)
{
va_list ap;
@@ -144,9 +145,9 @@ screen_write_strlen(int utf8flag, const char *fmt, ...)
}
/* Write simple string (no UTF-8 or maximum length). */
-void printflike3
-screen_write_puts(
- struct screen_write_ctx *ctx, struct grid_cell *gc, const char *fmt, ...)
+void
+screen_write_puts(struct screen_write_ctx *ctx, struct grid_cell *gc,
+ const char *fmt, ...)
{
va_list ap;
@@ -156,9 +157,9 @@ screen_write_puts(
}
/* Write string with length limit (-1 for unlimited). */
-void printflike5
-screen_write_nputs(struct screen_write_ctx *ctx,
- ssize_t maxlen, struct grid_cell *gc, int utf8flag, const char *fmt, ...)
+void
+screen_write_nputs(struct screen_write_ctx *ctx, ssize_t maxlen,
+ struct grid_cell *gc, int utf8flag, const char *fmt, ...)
{
va_list ap;
@@ -220,7 +221,7 @@ screen_write_vnputs(struct screen_write_ctx *ctx, ssize_t maxlen,
}
/* Write string, similar to nputs, but with embedded formatting (#[]). */
-void printflike5
+void
screen_write_cnputs(struct screen_write_ctx *ctx,
ssize_t maxlen, struct grid_cell *gc, int utf8flag, const char *fmt, ...)
{
@@ -794,8 +795,6 @@ screen_write_linefeed(struct screen_write_ctx *ctx, int wrapped)
gl = &s->grid->linedata[s->grid->hsize + s->cy];
if (wrapped)
gl->flags |= GRID_LINE_WRAPPED;
- else
- gl->flags &= ~GRID_LINE_WRAPPED;
if (s->cy == s->rlower)
grid_view_scroll_region_up(s->grid, s->rupper, s->rlower);
@@ -989,6 +988,8 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc)
memcpy(&tmp_gc, &s->sel.cell, sizeof tmp_gc);
grid_cell_get(gc, &ud);
grid_cell_set(&tmp_gc, &ud);
+ tmp_gc.attr = tmp_gc.attr & ~GRID_ATTR_CHARSET;
+ tmp_gc.attr |= gc->attr & GRID_ATTR_CHARSET;
tmp_gc.flags = gc->flags & ~(GRID_FLAG_FG256|GRID_FLAG_BG256);
tmp_gc.flags |= s->sel.cell.flags &
(GRID_FLAG_FG256|GRID_FLAG_BG256);