Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MANPAGER won't work on Mandoc's man implementation #1145

Closed
Bumbadawg opened this issue Aug 19, 2020 · 4 comments
Closed

MANPAGER won't work on Mandoc's man implementation #1145

Bumbadawg opened this issue Aug 19, 2020 · 4 comments

Comments

@Bumbadawg
Copy link

What version of bat are you using?
0.15.4

Describe the bug you encountered:
Using export MANPAGER="sh -c 'col -bx | bat -l man -p'"
results in -bx: 1: Syntax error: Unterminated quoted string

Describe what you expected to happen?
paging with bat

How did you install bat?
Void Linux package manager

** The bug **
It was already reported here for Termux, and it coudl well be the case for Alpine and other Mandoc's man implementations cases.
See termux/termux-packages#4781 (comment)

** Lazy solution **
Instead of recompiling man from GNU (https://www.nongnu.org/man-db/development.html)
one can be using export MANPAGER='nvim +Man!'

@Bumbadawg Bumbadawg added the bug Something isn't working label Aug 19, 2020
@sharkdp sharkdp added documentation and removed bug Something isn't working labels Sep 7, 2020
@sharkdp
Copy link
Owner

sharkdp commented Sep 7, 2020

Thank you for reporting this.

This is not a bug in bat. This implementation of man is currently not supported. This should probably be documented.

sharkdp added a commit that referenced this issue Oct 1, 2020
@sharkdp sharkdp closed this as completed in 4bd1b15 Oct 2, 2020
@lahwaacz
Copy link

It does not work because mandoc does not do shell tokenization of the $MANPAGER string, it just splits it into a list of words and passes them to execvp. So the error comes from sh which complains about an unterminated quoted string from the word 'col.

bat itself does not have any problems displaying the output of mandoc's man command, you just have to configure the pager appropriately. This can be done by putting the following in a wrapper script and then export MANPAGER="your_wrapper":

#!/bin/sh
cat "$1" | col -bx | bat --language man --style plain

@eth-p
Copy link
Collaborator

eth-p commented Dec 2, 2020

#!/bin/sh
cat "$1" | col -bx | bat --language man --style plain

Not that performance matters much for a shell script like this, but you can even cut out the cat invocation:

col -bx < "$1" | bat --language man -p

@WhyNotHugo
Copy link

If you don't have col installed, it's shipped as part of heirloom-doctools.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants