} while (0)
#define OUTPUT1_IF(c, a) OUTPUTN_IF (c, a, 1)
-static void tty_output_emchar_dynarr (struct window *w,
- struct display_line *dl,
- Emchar_dynarr *buf, int xpos,
- face_index findex,
- int cursor);
+static void tty_output_charc_dynarr (struct window *w,
+ struct display_line *dl,
+ Charc_dynarr *buf, int xpos,
+ face_index findex,
+ int cursor);
static void tty_output_bufbyte_string (struct window *w,
struct display_line *dl,
Bufbyte *str, Bytecount len,
Non-Mule tty's don't have fonts (that we use at least), so everything
is considered to be fixed width -- in other words, we return LEN.
Under Mule, however, a character can still cover more than one
- column, so we use emchar_string_displayed_columns().
+ column, so we use charc_string_displayed_columns().
****************************************************************************/
static int
-tty_text_width (struct frame *f, struct face_cachel *cachel, const Emchar *str,
- Charcount len)
+tty_text_width (struct frame *f, struct face_cachel *cachel,
+ const Charc *str, Charcount len)
{
- return emchar_string_displayed_columns (str, len);
+ return charc_string_displayed_columns (str, len);
}
/*****************************************************************************
int cursor_height)
{
struct frame *f = XFRAME (w->frame);
- Emchar_dynarr *buf = Dynarr_new (Emchar);
+ Charc_dynarr *buf;
struct display_block *db = Dynarr_atp (dl->display_blocks, block);
rune_dynarr *rba = db->runes;
if (end < 0)
end = Dynarr_length (rba);
- Dynarr_reset (buf);
+ buf = Dynarr_new (Charc);
while (elt < end && Dynarr_atp (rba, elt)->xpos < start_pixpos)
{
rb = Dynarr_atp (rba, elt);
if (rb->findex == findex && rb->type == RUNE_CHAR
- && rb->object.chr.ch != '\n'
+ && (!CHARC_ASCII_EQ (rb->object.cglyph, '\n'))
&& (rb->cursor_type != CURSOR_ON
|| NILP (w->text_cursor_visible_p)))
{
- Dynarr_add (buf, rb->object.chr.ch);
+ Dynarr_add (buf, rb->object.cglyph);
elt++;
}
else
{
if (Dynarr_length (buf))
{
- tty_output_emchar_dynarr (w, dl, buf, xpos, findex, 0);
+ tty_output_charc_dynarr (w, dl, buf, xpos, findex, 0);
xpos = rb->xpos;
}
Dynarr_reset (buf);
findex = rb->findex;
xpos = rb->xpos;
- if (rb->object.chr.ch == '\n')
+ if (CHARC_ASCII_EQ (rb->object.cglyph, '\n'))
{
/* Clear in case a cursor was formerly here. */
-
- Dynarr_add (buf, ' ');
- tty_output_emchar_dynarr (w, dl, buf, rb->xpos,
- DEFAULT_INDEX, 0);
+ Dynarr_add (buf, ASCII_TO_CHARC (' '));
+ tty_output_charc_dynarr (w, dl, buf, rb->xpos,
+ DEFAULT_INDEX, 0);
Dynarr_reset (buf);
cmgoto (f, dl->ypos - 1, rb->xpos);
{
/* There is not a distinct eol cursor on tty's. */
- Dynarr_add (buf, rb->object.chr.ch);
- tty_output_emchar_dynarr (w, dl, buf, xpos, findex, 0);
+ Dynarr_add (buf, rb->object.cglyph);
+ tty_output_charc_dynarr (w, dl, buf, xpos, findex, 0);
Dynarr_reset (buf);
cmgoto (f, dl->ypos - 1, xpos);
modeline and this will suffice for that. */
else if (rb->type == RUNE_BLANK || rb->type == RUNE_HLINE)
{
- Emchar ch_to_add;
+ Charc ec_to_add;
int size = rb->width;
if (rb->type == RUNE_BLANK)
- ch_to_add = ' ';
+ ec_to_add = ASCII_TO_CHARC (' ');
else
- ch_to_add = '-';
+ ec_to_add = ASCII_TO_CHARC ('-');
while (size--)
- Dynarr_add (buf, ch_to_add);
- tty_output_emchar_dynarr (w, dl, buf, rb->xpos, findex, 0);
+ Dynarr_add (buf, ec_to_add);
+ tty_output_charc_dynarr (w, dl, buf, rb->xpos, findex, 0);
if (xpos >= cursor_start
&& cursor_start < xpos + Dynarr_length (buf))
case IMAGE_TEXT:
case IMAGE_POINTER:
default:
- abort ();
+ ABORT ();
}
IMAGE_INSTANCE_OPTIMIZE_OUTPUT
(XIMAGE_INSTANCE (instance)) = 0;
elt++;
}
else
- abort ();
+ ABORT ();
}
}
if (Dynarr_length (buf))
- tty_output_emchar_dynarr (w, dl, buf, xpos, findex, 0);
+ tty_output_charc_dynarr (w, dl, buf, xpos, findex, 0);
Dynarr_free (buf);
}
tty_turn_off_face (w, findex);
}
-static Bufbyte_dynarr *tty_output_emchar_dynarr_dynarr;
+static Bufbyte_dynarr *tty_output_charc_dynarr_dynarr;
/*****************************************************************************
- tty_output_emchar_dynarr
+ tty_output_charc_dynarr
Given a string and a starting position, output that string in the
given face. If cursor is true, draw a cursor around the string.
****************************************************************************/
static void
-tty_output_emchar_dynarr (struct window *w, struct display_line *dl,
- Emchar_dynarr *buf, int xpos, face_index findex,
- int cursor)
+tty_output_charc_dynarr (struct window *w, struct display_line *dl,
+ Charc_dynarr *buf, int xpos, face_index findex,
+ int cursor)
{
- if (!tty_output_emchar_dynarr_dynarr)
- tty_output_emchar_dynarr_dynarr = Dynarr_new (Bufbyte);
+ if (!tty_output_charc_dynarr_dynarr)
+ tty_output_charc_dynarr_dynarr = Dynarr_new (Bufbyte);
else
- Dynarr_reset (tty_output_emchar_dynarr_dynarr);
+ Dynarr_reset (tty_output_charc_dynarr_dynarr);
- convert_emchar_string_into_bufbyte_dynarr (Dynarr_atp (buf, 0),
+ convert_charc_string_into_bufbyte_dynarr (Dynarr_atp (buf, 0),
Dynarr_length (buf),
- tty_output_emchar_dynarr_dynarr);
+ tty_output_charc_dynarr_dynarr);
tty_output_bufbyte_string (w, dl,
- Dynarr_atp (tty_output_emchar_dynarr_dynarr, 0),
- Dynarr_length (tty_output_emchar_dynarr_dynarr),
+ Dynarr_atp (tty_output_charc_dynarr_dynarr, 0),
+ Dynarr_length (tty_output_charc_dynarr_dynarr),
xpos, findex, cursor);
}
OUTPUT1_IF (c, TTY_SD (c).init_motion);
OUTPUT1_IF (c, TTY_SD (c).cursor_visible);
OUTPUT1_IF (c, TTY_SD (c).keypad_on);
+
+ if (TTY_FLAGS (c).auto_margins)
+ OUTPUT1_IF (c, TTY_SD (c).disable_auto_margins);
}
/*****************************************************************************
OUTPUT1_IF (c, TTY_SD (c).cursor_normal);
OUTPUT1_IF (c, TTY_SD (c).end_motion);
+ if (TTY_FLAGS (c).auto_margins)
+ OUTPUT1_IF (c, TTY_SD (c).enable_auto_margins);
+
{
Lisp_Object frm = CONSOLE_SELECTED_FRAME (c);
up or removed. */
+#ifdef NOT_YET
/* FLAGS - these don't need to be console local since only one console
can be being updated at a time. */
static int insert_mode_on; /* nonzero if in insert mode */
static int alternate_mode_on; /* nonzero if in alternate char set */
static int attributes_on; /* nonzero if any attributes on */
-#ifdef NOT_YET
static void
turn_on_insert (struct frame *f)
{
TTY_SD (c).audio_bell = "\07";
}
- TTY_SD (c).cursor_visible = tgetstr ("ve", &bufptr);
- TTY_SD (c).cursor_normal = tgetstr ("vs", &bufptr);
+ TTY_SD (c).cursor_visible = tgetstr ("vs", &bufptr);
+ TTY_SD (c).cursor_normal = tgetstr ("ve", &bufptr);
TTY_SD (c).init_motion = tgetstr ("ti", &bufptr);
TTY_SD (c).end_motion = tgetstr ("te", &bufptr);
TTY_SD (c).keypad_on = tgetstr ("ks", &bufptr);
TTY_SD (c).keypad_off = tgetstr ("ke", &bufptr);
+ TTY_SD (c).disable_auto_margins = tgetstr ("RA", &bufptr);
+ TTY_SD (c).enable_auto_margins = tgetstr ("SA", &bufptr);
/*
TTY_FLAGS (c).memory_below_frame = tgetflag ("db");
TTY_FLAGS (c).standout_width = tgetnum ("sg");
TTY_FLAGS (c).underline_width = tgetnum ("ug");
+ TTY_FLAGS (c).auto_margins = tgetflag ("am");
if (TTY_FLAGS (c).standout_width == -1)
TTY_FLAGS (c).standout_width = 0;
*/
cm_cost_init (c);
+#ifdef NOT_YET
/*
* Initialize local flags.
*/
underline_mode_on = 0;
alternate_mode_on = 0;
attributes_on = 0;
+#endif
/*
* Attempt to initialize the function_key_map to