- enum { MIN_WIDTH = 6, MIN_LENGTH = 6 };
-
- if (a->auto_width)
- {
- a->params.size[H] = a->width = settings_get_viewwidth ();
- a->params.min_break[H] = a->min_break[H] = a->width / 2;
- }
-
- if (a->width < MIN_WIDTH)
- {
- if (issue_error)
- msg (ME,
- _("ascii: page must be at least %d characters wide, but "
- "as configured is only %d characters"),
- MIN_WIDTH,
- a->width);
- if (a->width < MIN_WIDTH)
- a->params.size[H] = a->width = MIN_WIDTH;
- return false;
- }
+ enum { MIN_WIDTH = 6 };
+
+ int want_width = (a->width_mode == VIEW_WIDTH ? settings_get_viewwidth ()
+ : a->width_mode == TERMINAL_WIDTH ? get_terminal_width ()
+ : a->width);
+ bool ok = want_width >= MIN_WIDTH;
+ if (!ok && issue_error)
+ msg (ME, _("ascii: page must be at least %d characters wide, but "
+ "as configured is only %d characters"),
+ MIN_WIDTH, want_width);
+
+ a->width = ok ? want_width : MIN_WIDTH;
+ a->params.size[H] = a->width;
+ a->params.min_break[H] = a->min_hbreak >= 0 ? a->min_hbreak : a->width / 2;