diff --git a/tmux.h b/tmux.h
index fa11708c..0681100f 100644
--- a/tmux.h
+++ b/tmux.h
@@ -257,6 +257,7 @@ enum {
 /* Termcap codes. */
 enum tty_code_code {
 	TTYC_ACSC,
+	TTYC_AM,
 	TTYC_AX,
 	TTYC_BCE,
 	TTYC_BEL,
@@ -477,7 +478,6 @@ enum tty_code_code {
 	TTYC_TSL,
 	TTYC_U8,
 	TTYC_VPA,
-	TTYC_XENL,
 	TTYC_XT
 };
 
@@ -1256,7 +1256,7 @@ struct tty_term {
 	struct tty_code	*codes;
 
 #define TERM_256COLOURS 0x1
-#define TERM_NOXENL 0x2
+#define TERM_NOAM 0x2
 #define TERM_DECSLRM 0x4
 #define TERM_DECFRA 0x8
 #define TERM_RGBCOLOURS 0x10
diff --git a/tty-term.c b/tty-term.c
index 76c4fb57..3ccff2ff 100644
--- a/tty-term.c
+++ b/tty-term.c
@@ -54,6 +54,7 @@ struct tty_term_code_entry {
 
 static const struct tty_term_code_entry tty_term_codes[] = {
 	[TTYC_ACSC] = { TTYCODE_STRING, "acsc" },
+	[TTYC_AM] = { TTYCODE_FLAG, "am" },
 	[TTYC_AX] = { TTYCODE_FLAG, "AX" },
 	[TTYC_BCE] = { TTYCODE_FLAG, "bce" },
 	[TTYC_BEL] = { TTYCODE_STRING, "bel" },
@@ -274,7 +275,6 @@ static const struct tty_term_code_entry tty_term_codes[] = {
 	[TTYC_TSL] = { TTYCODE_STRING, "tsl" },
 	[TTYC_U8] = { TTYCODE_NUMBER, "U8" },
 	[TTYC_VPA] = { TTYCODE_STRING, "vpa" },
-	[TTYC_XENL] = { TTYCODE_FLAG, "xenl" },
 	[TTYC_XT] = { TTYCODE_FLAG, "XT" }
 };
 
@@ -580,17 +580,22 @@ tty_term_create(struct tty *tty, char *name, int *feat, int fd, char **cause)
 	tty_term_apply_overrides(term);
 
 	/*
-	 * Terminals without xenl (eat newline glitch) wrap at at $COLUMNS - 1
+	 * Terminals without am (auto right margin) wrap at at $COLUMNS - 1
 	 * rather than $COLUMNS (the cursor can never be beyond $COLUMNS - 1).
 	 *
-	 * This is irritating, most notably because it is impossible to write
-	 * to the very bottom-right of the screen without scrolling.
+	 * Terminals without xenl (eat newline glitch) ignore a newline beyond
+	 * the right edge of the terminal, but tmux doesn't care about this -
+	 * it always uses absolute only moves the cursor with a newline when
+	 * also sending a linefeed.
+	 *
+	 * This is irritating, most notably because it is painful to write to
+	 * the very bottom-right of the screen without scrolling.
 	 *
 	 * Flag the terminal here and apply some workarounds in other places to
 	 * do the best possible.
 	 */
-	if (!tty_term_flag(term, TTYC_XENL))
-		term->flags |= TERM_NOXENL;
+	if (!tty_term_flag(term, TTYC_AM))
+		term->flags |= TERM_NOAM;
 
 	/* Generate ACS table. If none is present, use nearest ASCII. */
 	memset(term->acs, 0, sizeof term->acs);
diff --git a/tty.c b/tty.c
index 77eb90be..14b770e2 100644
--- a/tty.c
+++ b/tty.c
@@ -564,7 +564,7 @@ tty_putc(struct tty *tty, u_char ch)
 {
 	const char	*acs;
 
-	if ((tty->term->flags & TERM_NOXENL) &&
+	if ((tty->term->flags & TERM_NOAM) &&
 	    ch >= 0x20 && ch != 0x7f &&
 	    tty->cy == tty->sy - 1 &&
 	    tty->cx + 1 >= tty->sx)
@@ -586,11 +586,11 @@ tty_putc(struct tty *tty, u_char ch)
 				tty->cy++;
 
 			/*
-			 * On !xenl terminals, force the cursor position to
-			 * where we think it should be after a line wrap - this
-			 * means it works on sensible terminals as well.
+			 * On !am terminals, force the cursor position to where
+			 * we think it should be after a line wrap - this means
+			 * it works on sensible terminals as well.
 			 */
-			if (tty->term->flags & TERM_NOXENL)
+			if (tty->term->flags & TERM_NOAM)
 				tty_putcode2(tty, TTYC_CUP, tty->cy, tty->cx);
 		} else
 			tty->cx++;
@@ -600,7 +600,7 @@ tty_putc(struct tty *tty, u_char ch)
 void
 tty_putn(struct tty *tty, const void *buf, size_t len, u_int width)
 {
-	if ((tty->term->flags & TERM_NOXENL) &&
+	if ((tty->term->flags & TERM_NOAM) &&
 	    tty->cy == tty->sy - 1 &&
 	    tty->cx + len >= tty->sx)
 		len = tty->sx - tty->cx - 1;
@@ -1875,7 +1875,7 @@ tty_cmd_cells(struct tty *tty, const struct tty_ctx *ctx)
 	    ctx->xoff + ctx->ocx + ctx->num > ctx->wox + ctx->wsx)) {
 		if (!ctx->wrapped ||
 		    !tty_full_width(tty, ctx) ||
-		    (tty->term->flags & TERM_NOXENL) ||
+		    (tty->term->flags & TERM_NOAM) ||
 		    ctx->xoff + ctx->ocx != 0 ||
 		    ctx->yoff + ctx->ocy != tty->cy + 1 ||
 		    tty->cx < tty->sx ||
@@ -1931,7 +1931,7 @@ tty_cell(struct tty *tty, const struct grid_cell *gc,
 	const struct grid_cell	*gcp;
 
 	/* Skip last character if terminal is stupid. */
-	if ((tty->term->flags & TERM_NOXENL) &&
+	if ((tty->term->flags & TERM_NOAM) &&
 	    tty->cy == tty->sy - 1 &&
 	    tty->cx == tty->sx - 1)
 		return;
@@ -2087,7 +2087,7 @@ tty_cursor_pane_unless_wrap(struct tty *tty, const struct tty_ctx *ctx,
 {
 	if (!ctx->wrapped ||
 	    !tty_full_width(tty, ctx) ||
-	    (tty->term->flags & TERM_NOXENL) ||
+	    (tty->term->flags & TERM_NOAM) ||
 	    ctx->xoff + cx != 0 ||
 	    ctx->yoff + cy != tty->cy + 1 ||
 	    tty->cx < tty->sx ||