diff --git a/CHANGELOG b/CHANGELOG index 94c02393..412d12f9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -14,6 +14,8 @@ Version 2.9 If file descriptor 3 is definied when ponysay is executed, extra information is printed to it. + Arguments starting with n or i is allowed for -W. + Version 2.8 diff --git a/completion/bash-completion.sh b/completion/bash-completion.sh index e9c284c1..ae6a7441 100644 --- a/completion/bash-completion.sh +++ b/completion/bash-completion.sh @@ -27,7 +27,7 @@ _ponysay() elif [ $prev = "-W" ] || [ $prev = "--wrap" ]; then cols=$(( `stty size | cut -d ' ' -f 2` - 10 )) - COMPREPLY=( $cols $(( $cols / 2 )) 100 60 ) + COMPREPLY=( $cols $(( $cols / 2 )) 100 60 none inherit ) fi } diff --git a/completion/fish-completion.fish b/completion/fish-completion.fish index 044dd784..24e9b050 100644 --- a/completion/fish-completion.fish +++ b/completion/fish-completion.fish @@ -1,6 +1,4 @@ -# FISH completions for ponysay -# https://github.com/erkin/ponysay/ -# +# fish completion for ponysay -*- shell-script -*- # Author: Elis Axelsson set -g ponies ('/usr/bin/ponysay' --onelist) @@ -19,7 +17,7 @@ complete --command ponysay --short-option f --long-option pony --argument complete --command ponysay --short-option F --arguments "$xponies" --description 'extra pony' complete --command ponysay --short-option q --long-option quote --arguments "$quoters" --no-files --description 'pony' complete --command ponysay --short-option b --long-option balloon --arguments "$balloons" --no-files --description 'balloon style' -complete --command ponysay --short-option W --long-option wrap --arguments 'Integer' --description 'specify the column when the message should be wrapped' +complete --command ponysay --short-option W --long-option wrap --arguments 'Integer' --description 'specify the column when the message should be wrapped' ## TODO arguments `none` and `inherit` should be suggested complete --command ponysay --arguments 'MESSAGE' diff --git a/completion/zsh-completion.zsh b/completion/zsh-completion.zsh index 68487bd8..ec005943 100644 --- a/completion/zsh-completion.zsh +++ b/completion/zsh-completion.zsh @@ -1,3 +1,4 @@ +# zsh completion for ponysay -*- shell-script -*- #compdef ponysay ponythink _opts=( '(--version -v)'{-v,--version}'[Show version and exit]' @@ -9,7 +10,7 @@ _opts=( '(-B --balloonlist)'{-B,--balloonlist}'[list balloon style names]' '(-b --ballon)'{-b,--balloon}'[Selecy a balloon style]: :_path_files -W '/usr/share/ponysay/balloons' -g "*(\:r)"' '(-c --compact)'{-c,--compat}'[Compress messages.]' - '(-W --wrap)'{-W,--wrap}'[The screen column where the message should be wrapped]' + '(-W --wrap)'{-W,--wrap}'[The screen column where the message should be wrapped]' # TODO arguments `none` and `inherit` should be suggested ) _tty_select=( '(-q --quite)'{-q,--quote}'[Select ponies for MLP:FiM quotes]: :_path_files -W '/usr/share/ponysay/ttyponies' -g "*(\:r)"' diff --git a/manuals/manpage.0 b/manuals/manpage.0 index 5407e2c8..62fc9eb8 100644 --- a/manuals/manpage.0 +++ b/manuals/manpage.0 @@ -80,7 +80,9 @@ is added as an argument to \fI-q\fP. If one or more ponies are added as an argum to \fI-q\fP the pony will be selected randomly from that set of ponies. .TP .B \-W, \-\-wrap \fIcolumn\fP -The screen column where the message should be wrapped. +The screen column where the message should be wrapped, the balloons extra width is taken +into consideration. If the argument is not an integer, but starts instead with \fIn\fP, +no wrapping is done, and if it starts with \fIi\fP the width of the terminal is used. .TP .B \-A, \-\-all List all pony files, MLP-FiM and non-MLP-FiM, in this case the first list are MLP:FiM diff --git a/manuals/ponysay.texinfo b/manuals/ponysay.texinfo index 1fa708f1..a5585752 100644 --- a/manuals/ponysay.texinfo +++ b/manuals/ponysay.texinfo @@ -248,7 +248,14 @@ balloon style is specified a fallback style will be used. @opindex @option{-W} @opindex @option{--wrap} Specify the screen column where the message should be wrapped, this is by default 40, -as with @command{cowsay}. +as with @command{cowsay}. If the argument is not an integer, but starts instead with +@code{n} (for ‘none’ or ‘no’), no wrapping is done, and if it starts with @code{i} +(for ‘inherit’) the width of the terminal is used. + +@code{n} and @code{i} is case insensitive, so you may use @code{N} and @code{I} +instead. Additionally, typo correction is for QWERTY and Dvorak is built in to +@command{ponysay}; the nearest key, either to the left or to the right, depending +on which hand is used to press the key, is also allowed. @item -c @itemx --compress @@ -2054,6 +2061,8 @@ than unlimited. Currently this cannot be modified (without editing the source co @item If file descriptor 3 is definied when @command{ponysay} is executed, extra information is printed to it. +@item +Arguments starting with @code{n} or @code{i} is allowed for @option{-W}. @end itemize diff --git a/ponysay.py b/ponysay.py index 51f8c72c..64b835c0 100755 --- a/ponysay.py +++ b/ponysay.py @@ -806,11 +806,19 @@ class Ponysay(): if linuxvt: print('\033[H\033[2J', end='') - ## Width Get truncation and wrapping + ## Get width truncation and wrapping env_width = os.environ['PONYSAY_FULL_WIDTH'] if 'PONYSAY_FULL_WIDTH' in os.environ else None if env_width is None: env_width = '' widthtruncation = self.__gettermsize()[1] if env_width not in ('yes', 'y', '1') else None - messagewrap = int(args.opts['-W'][0]) if args.opts['-W'] is not None else None + messagewrap = 40 + if (args.opts['-W'] is not None) and (len(args.opts['-W'][0]) > 0): + messagewrap = args.opts['-W'][0] + if messagewrap[0] in 'nmsNMS': # m is left to n on QWERTY and s is left to n on Dvorak + messagewrap = None + elif messagewrap[0] in 'iouIOU': # o is left to i on QWERTY and u is right to i on Dvorak + messagewrap = self.__gettermsize()[1] + else: + messagewrap = int(args.opts['-W'][0]) ## Get balloon object balloonfile = self.__getballoonpath(args.opts['-b']) @@ -833,8 +841,8 @@ class Ponysay(): ## Run cowsay replacement - backend = Backend(message = msg, ponyfile = pony, wrapcolumn = messagewrap if messagewrap is not None else 40, - width = widthtruncation, balloon = balloon, hyphen = hyphen, linkcolour = linkcolour, ballooncolour = ballooncolour) + backend = Backend(message = msg, ponyfile = pony, wrapcolumn = messagewrap, width = widthtruncation, + balloon = balloon, hyphen = hyphen, linkcolour = linkcolour, ballooncolour = ballooncolour) backend.parse() output = backend.output if output.endswith('\n'):