Checklist: [ ] I [ ] II [X] III [ ] IV I: Add a flag that allows the user to specify a tab width. At the moment tab widths are hardcoded to 8 in the center() function. Perhaps a new flag could be -t? II: Transform tabs into spaces. At the moment tabs remain as tabs when centered which causes some visual issues. For example when centering figure A you would expect to get figure B, but you currently get figure C. The underscores are a placeholder for a ‹TAB› character. The current functionality if desired could be provided via a command-line flag such as -r. Figure A: ┌──────────────────────────────────────────┐ │ 1234567890 │ │ ________12 │ └──────────────────────────────────────────┘ Figure B: ┌──────────────────────────────────────────┐ │ 1234567890 │ │ ________12 │ └──────────────────────────────────────────┘ Figure C: ┌──────────────────────────────────────────┐ │ 1234567890 │ │ ________12 │ └──────────────────────────────────────────┘ III: Add a new flag for assuming all lines are of the same length as the longest line. At the moment each line is centered individually, and this means that figure A would get transformed into figure B after being passed through center(1). We would however often times prefer to have it be transformed into figure C, such as when centering code, or a manual page. This new flag could potentially be -l. Figure A: ┌──────────────────────────────────────────┐ │ int │ │ main(int argc, char **argv) │ │ { │ │ return EXIT_SUCCESS; │ │ } │ └──────────────────────────────────────────┘ Figure B: ┌──────────────────────────────────────────┐ │ int │ │ main(int argc, char **argv) │ │ { │ │ return EXIT_SUCCESS; │ │ } │ └──────────────────────────────────────────┘ Figure C: ┌──────────────────────────────────────────┐ │ int │ │ main(int argc, char **argv) │ │ { │ │ return EXIT_SUCCESS; │ │ } │ └──────────────────────────────────────────┘ IV: Add completions for the most popular interactive shells. This includes bash, zsh, and fish.