/* * Tidy up the term ready to leave Zile (temporarily or permanently!). */ void term_tidy(void) { term_move(term_height() - 1, 0); term_clrtoeol(); term_attrset(1, FONT_NORMAL); term_refresh(); }
/* * Tidy and close the terminal ready to leave Zile. */ void term_finish (void) { term_move (term_height () - 1, 0); term_clrtoeol (); term_attrset (FONT_NORMAL); term_refresh (); term_close (); }
static void draw_status_line(size_t line, Window *wp) { size_t i; char *buf, *eol_type; Point pt = window_pt(wp); astr as, bs; term_attrset(1, FONT_REVERSE); term_move(line, 0); for (i = 0; i < wp->ewidth; ++i) term_addch('-'); if (cur_bp->eol == coding_eol_cr) eol_type = "(Mac)"; else if (cur_bp->eol == coding_eol_crlf) eol_type = "(DOS)"; else eol_type = ":"; term_move(line, 0); bs = astr_afmt(astr_new(), "(%d,%d)", pt.n+1, get_goalc_wp(wp)); as = astr_afmt(astr_new(), "--%s%2s %-15s %s %-9s (Text", eol_type, make_mode_line_flags(wp), wp->bp->name, make_screen_pos(wp, &buf), astr_cstr(bs)); free(buf); astr_delete(bs); if (wp->bp->flags & BFLAG_AUTOFILL) astr_cat_cstr(as, " Fill"); if (wp->bp->flags & BFLAG_OVERWRITE) astr_cat_cstr(as, " Ovwrt"); if (thisflag & FLAG_DEFINING_MACRO) astr_cat_cstr(as, " Def"); if (wp->bp->flags & BFLAG_ISEARCH) astr_cat_cstr(as, " Isearch"); astr_cat_char(as, ')'); term_addnstr(astr_cstr(as), min(term_width(), astr_len(as))); astr_delete(as); term_attrset(1, FONT_NORMAL); }
static void draw_line (size_t line, size_t startcol, Window wp, size_t o, Region r, int highlight, size_t cur_tab_width) { term_move (line, 0); /* Draw body of line. */ size_t x, i, line_len = buffer_line_len (get_window_bp (wp), o); for (x = 0, i = startcol;; i++) { term_attrset (highlight && region_contains (r, o + i) ? FONT_REVERSE : FONT_NORMAL); if (i >= line_len || x >= get_window_ewidth (wp)) break; char c = get_buffer_char (get_window_bp (wp), o + i); if (isprint (c)) { term_addch (c); x++; } else { const char *s = make_char_printable (c, x, cur_tab_width); term_addstr (s); x += strlen (s); } } /* Draw end of line. */ if (x >= term_width ()) { term_move (line, term_width () - 1); term_attrset (FONT_NORMAL); term_addstr ("$"); } else term_addstr (xasprintf ("%*s", (int) (get_window_ewidth (wp) - x), "")); term_attrset (FONT_NORMAL); }
static void draw_status_line (size_t line, Window wp) { term_attrset (FONT_REVERSE); term_move (line, 0); for (size_t i = 0; i < get_window_ewidth (wp); ++i) term_addstr ("-"); const char *eol_type; if (get_buffer_eol (cur_bp) == coding_eol_cr) eol_type = "(Mac)"; else if (get_buffer_eol (cur_bp) == coding_eol_crlf) eol_type = "(DOS)"; else eol_type = ":"; term_move (line, 0); size_t n = offset_to_line (get_window_bp (wp), window_o (wp)); astr as = astr_fmt ("--%s%2s %-15s %s %-9s (Fundamental", eol_type, make_mode_line_flags (wp), get_buffer_name (get_window_bp (wp)), make_screen_pos (wp), astr_cstr (astr_fmt ("(%zu,%zu)", n + 1, get_goalc_bp (get_window_bp (wp), window_o (wp))))); if (get_buffer_autofill (get_window_bp (wp))) astr_cat_cstr (as, " Fill"); if (thisflag & FLAG_DEFINING_MACRO) astr_cat_cstr (as, " Def"); if (get_buffer_isearch (get_window_bp (wp))) astr_cat_cstr (as, " Isearch"); astr_cat_char (as, ')'); term_addstr (astr_cstr (as)); term_attrset (FONT_NORMAL); }
static void outch(int c, Font font, size_t *x) { int j, w; char *buf; if (*x >= term_width()) return; term_attrset(1, font); if (c == '\t') for (w = cur_tab_width - *x % cur_tab_width; w > 0 && *x < term_width(); w--) term_addch(' '), ++(*x); else if (isprint(c)) term_addch(c), ++(*x); else { j = make_char_printable(&buf, (size_t)c); for (w = 0; w < j && *x < term_width(); ++w) term_addch(buf[w]), ++(*x); free(buf); } term_attrset(1, FONT_NORMAL); }