From 6ce07289b48fef8f432894baf7ddd5ba37c13268 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Fri, 13 Apr 2018 19:55:14 +0000 Subject: Use TIOCGWINSZ to reduce the default -Owidth during interactive use on terminals narrower than 79 columns and the default -Oindent on terminals narrower than 66 columns. Requested by and feedback from pirofti@; mpi@ and juanfra@ also like the general direction. --- usr.bin/mandoc/main.c | 16 ++++++++++++++-- usr.bin/mandoc/mandoc.1 | 16 ++++++++++------ 2 files changed, 24 insertions(+), 8 deletions(-) (limited to 'usr.bin') diff --git a/usr.bin/mandoc/main.c b/usr.bin/mandoc/main.c index e7b875aec04..6885e2e3269 100644 --- a/usr.bin/mandoc/main.c +++ b/usr.bin/mandoc/main.c @@ -1,7 +1,7 @@ -/* $OpenBSD: main.c,v 1.206 2018/02/08 01:36:38 tb Exp $ */ +/* $OpenBSD: main.c,v 1.207 2018/04/13 19:55:13 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons - * Copyright (c) 2010-2012, 2014-2017 Ingo Schwarze + * Copyright (c) 2010-2012, 2014-2018 Ingo Schwarze * Copyright (c) 2010 Joerg Sonnenberger * * Permission to use, copy, modify, and distribute this software for any @@ -18,7 +18,9 @@ */ #include +#include #include /* MACHINE */ +#include #include #include @@ -114,6 +116,7 @@ main(int argc, char *argv[]) struct manconf conf; struct mansearch search; struct curparse curp; + struct winsize ws; struct tag_files *tag_files; struct manpage *res, *resp; const char *progname, *sec, *thisarg; @@ -292,6 +295,15 @@ main(int argc, char *argv[]) !isatty(STDOUT_FILENO)) use_pager = 0; + if (use_pager && + (conf.output.width == 0 || conf.output.indent == 0) && + ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) != -1) { + if (conf.output.width == 0 && ws.ws_col < 79) + conf.output.width = ws.ws_col - 1; + if (conf.output.indent == 0 && ws.ws_col < 66) + conf.output.indent = 3; + } + if (!use_pager) if (pledge("stdio rpath", NULL) == -1) err((int)MANDOCLEVEL_SYSERR, "pledge"); diff --git a/usr.bin/mandoc/mandoc.1 b/usr.bin/mandoc/mandoc.1 index 39fc814ad10..b3258f514c7 100644 --- a/usr.bin/mandoc/mandoc.1 +++ b/usr.bin/mandoc/mandoc.1 @@ -1,4 +1,4 @@ -.\" $OpenBSD: mandoc.1,v 1.146 2018/03/16 15:05:33 schwarze Exp $ +.\" $OpenBSD: mandoc.1,v 1.147 2018/04/13 19:55:13 schwarze Exp $ .\" .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons .\" Copyright (c) 2012, 2014-2018 Ingo Schwarze @@ -15,7 +15,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: March 16 2018 $ +.Dd $Mdocdate: April 13 2018 $ .Dt MANDOC 1 .Os .Sh NAME @@ -299,9 +299,6 @@ The special characters documented in .Xr mandoc_char 7 are rendered best-effort in an ASCII equivalent. .Pp -Output width is limited to 78 visible columns unless literal input lines -exceed this limit. -.Pp The following .Fl O arguments are accepted: @@ -315,6 +312,8 @@ and seven for .Xr man 7 . Increasing this is not recommended; it may result in degraded formatting, for example overfull lines or ugly line breaks. +When output is to a pager on a terminal that is less than 66 columns +wide, the default is reduced to three columns. .It Cm mdoc Format .Xr man 7 @@ -331,7 +330,12 @@ output formats in the same way as the source it was generated from. .It Cm width Ns = Ns Ar width The output width is set to -.Ar width . +.Ar width +instead of the default of 78. +When output is to a pager on a terminal that is less than 79 columns +wide, the default is reduced to one less than the terminal width. +In any case, lines that are output in literal mode are never wrapped +and may exceed the output width. .El .Ss HTML Output Output produced by -- cgit v1.2.3