From d02e1d6a0c574cea27f81c234ec285b683bd445e Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Mon, 22 Mar 2021 12:04:22 +1300 Subject: Update URL in pks(6df) man page --- man/man6/pks.6df | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/man6/pks.6df b/man/man6/pks.6df index 8de04491..b0f15d24 100644 --- a/man/man6/pks.6df +++ b/man/man6/pks.6df @@ -1,4 +1,4 @@ -.TH PKS 6df "July 2017" "Manual page for pks" +.TH PKS 6df "March 2021" "Manual page for pks" .SH NAME .B pks \- select and laugh at a random word from a system dictionary or fileset @@ -24,6 +24,6 @@ A hyphen character "-" can be given as an argument to select standard input. .SH SEE ALSO philsay(6df) .br - + .SH AUTHOR Tom Ryder -- cgit v1.2.3 From 2e093c7b2f9af0afcda4cb90897c14bd57306436 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Fri, 23 Apr 2021 21:24:39 +1200 Subject: Bump VERSION --- VERSION | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 73b01c96..531c73f7 100644 --- a/VERSION +++ b/VERSION @@ -1,2 +1,2 @@ -tejr dotfiles v11.2.0 -Sat, 20 Mar 2021 10:23:52 +0000 +tejr dotfiles v11.3.0 +Fri, 23 Apr 2021 09:24:39 +0000 -- cgit v1.2.3 From 8dffc6ec78c18f010380a143f569c464ee8b5548 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Fri, 23 Apr 2021 21:24:43 +1200 Subject: Update dotfiles(7) manual page --- man/man7/dotfiles.7df | 918 +++++++++++++++++++++++++------------------------- 1 file changed, 464 insertions(+), 454 deletions(-) diff --git a/man/man7/dotfiles.7df b/man/man7/dotfiles.7df index c230806e..c48fbdac 100644 --- a/man/man7/dotfiles.7df +++ b/man/man7/dotfiles.7df @@ -1,12 +1,12 @@ -.\" Automatically generated by Pandoc 2.2.1 +.\" Automatically generated by Pandoc 2.9.2.1 .\" -.TH "DOTFILES" "7" "October 2017" "Tom Ryder's personal scripts and configuration" "" +.TH "DOTFILES" "7" "October 2017" "Tom Ryder\[cq]s personal scripts and configuration" "" .hy .SH Dotfiles (Tom Ryder) .PP This is my personal repository of configuration files and scripts for -\f[C]$HOME\f[], including most of the settings that migrate well between -machines. +\f[C]$HOME\f[R], including most of the settings that migrate well +between machines. .PP This repository began as a simple way to share Vim and tmux configuration, but a lot of scripts and shell configuration have been @@ -15,111 +15,112 @@ added over time, making it into a personal suite of custom Unix tools. .IP .nf \f[C] -$\ mkdir\ \-p\ ~/.local/share -$\ git\ clone\ https://sanctum.geek.nz/code/dotfiles.git\ ~/.local/share/dotfiles -$\ cd\ ~/.local/share/dotfiles -$\ git\ submodule\ init -$\ git\ submodule\ update -$\ make -$\ make\ \-n\ install\ \ #\ Check\ output\ carefully -$\ make\ install -\f[] +$ mkdir -p \[ti]/.local/share +$ git clone https://sanctum.geek.nz/code/dotfiles.git \[ti]/.local/share/dotfiles +$ cd \[ti]/.local/share/dotfiles +$ git submodule init +$ git submodule update +$ make +$ make -n install # Check output carefully +$ make install +\f[R] .fi .PP -For the default \f[C]all\f[] target, you'll need a POSIX\-fearing -userland, including \f[C]make(1)\f[] and \f[C]m4(1)\f[]. +For the default \f[C]all\f[R] target, you\[cq]ll need a POSIX-fearing +userland, including \f[C]make(1)\f[R] and \f[C]m4(1)\f[R]. .PP -The installation \f[C]Makefile\f[] overwrites things standing in the way -of its installed files without backing them up, so read the output of -\f[C]make\ \-n\ install\f[] before running \f[C]make\ install\f[] -carefully, to make sure you aren't going to lose anything unexpected. -If you're still not sure, install it in a temporary directory first, so -you can explore: +The installation \f[C]Makefile\f[R] overwrites things standing in the +way of its installed files without backing them up, so read the output +of \f[C]make -n install\f[R] before running \f[C]make install\f[R] +carefully, to make sure you aren\[cq]t going to lose anything +unexpected. +If you\[cq]re still not sure, install it in a temporary directory first, +so you can explore: .IP .nf \f[C] -$\ tmpdir=$(mktemp\ \-d) -$\ make\ install\ HOME="$tmpdir" -$\ env\ \-i\ HOME="$tmpdir"\ TERM="$TERM"\ "$SHELL"\ \-l -\f[] +$ tmpdir=$(mktemp -d) +$ make install HOME=\[dq]$tmpdir\[dq] +$ env -i HOME=\[dq]$tmpdir\[dq] TERM=\[dq]$TERM\[dq] \[dq]$SHELL\[dq] -l +\f[R] .fi .PP -The default \f[C]install\f[] target will install these targets and all +The default \f[C]install\f[R] target will install these targets and all their dependencies: .IP \[bu] 2 -\f[C]install\-bin\f[] +\f[C]install-bin\f[R] .IP \[bu] 2 -\f[C]install\-curl\f[] +\f[C]install-curl\f[R] .IP \[bu] 2 -\f[C]install\-ex\f[] +\f[C]install-ex\f[R] .IP \[bu] 2 -\f[C]install\-git\f[] +\f[C]install-git\f[R] .IP \[bu] 2 -\f[C]install\-gnupg\f[] +\f[C]install-gnupg\f[R] .IP \[bu] 2 -\f[C]install\-less\f[] +\f[C]install-less\f[R] .IP \[bu] 2 -\f[C]install\-login\-shell\f[] +\f[C]install-login-shell\f[R] .IP \[bu] 2 -\f[C]install\-man\f[] +\f[C]install-man\f[R] .IP \[bu] 2 -\f[C]install\-readline\f[] +\f[C]install-readline\f[R] .IP \[bu] 2 -\f[C]install\-vim\f[] +\f[C]install-vim\f[R] .PP -The \f[C]install\-login\-shell\f[] target looks at your \f[C]SHELL\f[] -environment variable, and tries to figure out which shell's -configuration files to install, falling back on \f[C]install\-sh\f[]. +The \f[C]install-login-shell\f[R] target looks at your \f[C]SHELL\f[R] +environment variable, and tries to figure out which shell\[cq]s +configuration files to install, falling back on \f[C]install-sh\f[R]. .PP -The remaining files can be installed with the other \f[C]install\-*\f[] +The remaining files can be installed with the other \f[C]install-*\f[R] targets. -Try \f[C]awk\ \-f\ bin/mftl.awk\ Makefile\f[] in the project's root +Try \f[C]awk -f bin/mftl.awk Makefile\f[R] in the project\[cq]s root directory to see a list. .SS Configuration .PP -To keep a set of \f[C]make\f[] targets useful for a specific user or -host, you can list them in a newline\-separated file -\f[C]~/.config/dotfiles/config\f[], and install using that with the -special \f[C]install\-conf\f[] target. -This can include macro settings for the \f[C]Makefile\f[], too: +To keep a set of \f[C]make\f[R] targets useful for a specific user or +host, you can list them in a newline-separated file +\f[C]\[ti]/.config/dotfiles/config\f[R], and install using that with the +special \f[C]install-conf\f[R] target. +This can include macro settings for the \f[C]Makefile\f[R], too: .IP .nf \f[C] -$\ cd -$\ cat\ .config/dotfiles/config -install\-bash -install\-bin -EMAIL=you\@example.com -$\ make\ \-C\ .local/share/dotfiles\ install\-conf -\f[] +$ cd +$ cat .config/dotfiles/config +install-bash +install-bin +EMAIL=you\[at]example.com +$ make -C .local/share/dotfiles install-conf +\f[R] .fi .SS Tools .PP Configuration is included for: .IP \[bu] 2 -Bourne\-style POSIX shells, sharing a \f[C]\&.profile\f[], an -\f[C]ENV\f[] file, and some helper functions: +Bourne-style POSIX shells, sharing a \f[C].profile\f[R], an +\f[C]ENV\f[R] file, and some helper functions: .RS 2 .IP \[bu] 2 GNU Bash (https://www.gnu.org/software/bash/) (v3.0 or newer) .IP \[bu] 2 -Korn shell (http://www.kornshell.com/) (\f[C]ksh93\f[], \f[C]pdksh\f[], -\f[C]mksh\f[]) +Korn shell (http://www.kornshell.com/) (\f[C]ksh93\f[R], +\f[C]pdksh\f[R], \f[C]mksh\f[R]) .IP \[bu] 2 Z shell (https://www.zsh.org/) .RE .IP \[bu] 2 Abook (http://abook.sourceforge.net/)\[em]curses address book program .IP \[bu] 2 -cURL (https://curl.haxx.se/)\[em]Command\-line tool for transferring -data with URL syntax +cURL (https://curl.haxx.se/)\[em]Command-line tool for transferring data +with URL syntax .IP \[bu] 2 Dillo (https://www.dillo.org/)\[em]A lightweight web browser .IP \[bu] 2 Dunst (https://dunst-project.org/)\[em]A lightweight X11 notification -daemon that works with \f[C]libnotify\f[] +daemon that works with \f[C]libnotify\f[R] .IP \[bu] 2 -\f[C]finger(1)\f[]\[em]User information lookup program +\f[C]finger(1)\f[R]\[em]User information lookup program .IP \[bu] 2 Git (https://git-scm.com/)\[em]Distributed version control system .IP \[bu] 2 @@ -140,12 +141,12 @@ mpv (https://mpv.io/)\[em]Media player .IP \[bu] 2 Mutt (http://www.mutt.org/)\[em]Terminal mail user agent .IP \[bu] 2 -\f[C]mysql(1)\f[] (https://linux.die.net/man/1/mysql)\[em]Command\-line +\f[C]mysql(1)\f[R] (https://linux.die.net/man/1/mysql)\[em]Command-line MySQL client .IP \[bu] 2 Newsboat (https://newsboat.org/)\[em]Terminal RSS/Atom feed reader .IP \[bu] 2 -\f[C]psql(1)\f[] (https://linux.die.net/man/1/psql)\[em]Command\-line +\f[C]psql(1)\f[R] (https://linux.die.net/man/1/psql)\[em]Command-line PostgreSQL client .IP \[bu] 2 Perl::Critic (http://perlcritic.com/)\[em]static source code analysis @@ -157,7 +158,7 @@ code Readline (https://tiswww.case.edu/php/chet/readline/rltop.html)\[em]GNU library for user input used by Bash, MySQL, and others .IP \[bu] 2 -rxvt\-unicode (http://software.schmorp.de/pkg/rxvt-unicode.html)\[em]Fork +rxvt-unicode (http://software.schmorp.de/pkg/rxvt-unicode.html)\[em]Fork of the rxvt terminal emulator with Unicode support .IP \[bu] 2 Subversion (https://subversion.apache.org/)\[em]Apache Subversion, a @@ -173,7 +174,7 @@ Vim (https://www.vim.org/)\[em]Vi IMproved, a text editor X11 (https://www.x.org/wiki/)\[em]Windowing system with network transparency for Unix .PP -There is also some slightly customized support for multi\-version +There is also some slightly customized support for multi-version environment management for three major scripting languages: .IP \[bu] 2 plenv (https://github.com/tokuhirom/plenv)\[em]Perl @@ -185,28 +186,28 @@ rbenv (https://github.com/rbenv/rbenv)\[em]Ruby The configurations for shells, Mutt, tmux, and Vim are the most likely to be of interest. The i3 configuration is limited mainly to changing window switching key -bindings to match Vim's. -There are a fair few resources defined for rxvt\-unicode. +bindings to match Vim\[cq]s. +There are a fair few resources defined for rxvt-unicode. .SS Shell .PP On GNU/Linux, I use Bash; on *BSD, I use some variant of Korn Shell, -preferably \f[C]ksh93\f[] if it's available. +preferably \f[C]ksh93\f[R] if it\[cq]s available. .SS POSIX core .PP -My \f[C]~/.profile\f[] and other files in \f[C]sh\f[] are written in -POSIX shell script, so they \f[I]should\f[] work in most -POSIX\-conforming \f[C]sh(1)\f[] implementations. -Please email me if you find a case where they don't! +My \f[C]\[ti]/.profile\f[R] and other files in \f[C]sh\f[R] are written +in POSIX shell script, so they \f[I]should\f[R] work in most +POSIX-conforming \f[C]sh(1)\f[R] implementations. +Please email me if you find a case where they don\[cq]t! .PP Further shell snippets to run on login are sourced from -\f[C]~/.profile.d\f[] by \f[C]~/.profile\f[]. +\f[C]\[ti]/.profile.d\f[R] by \f[C]\[ti]/.profile\f[R]. Most of these boil down to exporting variables appropriate to the system and the software it has available. .PP Configuration that should be sourced for all conforming -\f[I]interactive\f[] shells is kept in \f[C]~/.shrc\f[], with subscripts -read from \f[C]~/.shrc.d\f[]. -There's a \f[C]~/.shinit\f[] shim to act as \f[C]ENV\f[]. +\f[I]interactive\f[R] shells is kept in \f[C]\[ti]/.shrc\f[R], with +subscripts read from \f[C]\[ti]/.shrc.d\f[R]. +There\[cq]s a \f[C]\[ti]/.shinit\f[R] shim to act as \f[C]ENV\f[R]. .SS GNU Bash .PP My Bash scripts are written to work with GNU Bash v3.0 or @@ -216,45 +217,45 @@ items to arrays: .IP .nf \f[C] -array[${#array[\@]}]=$item -\f[] +array[${#array[\[at]]}]=$item +\f[R] .fi .PP -This doesn't work for arrays with sparse indices; compare this to the -much nicer syntax available since 3.1\-alpha1, which does: +This doesn\[cq]t work for arrays with sparse indices; compare this to +the much nicer syntax available since 3.1-alpha1, which does: .IP .nf \f[C] -array+=("$item") -\f[] +array+=(\[dq]$item\[dq]) +\f[R] .fi .PP I do use some features that are only available in versions after v3.0, -such as newer \f[C]shopt\f[] options like \f[C]dirspell\f[], or -variables like \f[C]PROMPT_DIRTRIM\f[]. -These are set only after testing \f[C]BASH_VERSINFO\f[] appropriately. +such as newer \f[C]shopt\f[R] options like \f[C]dirspell\f[R], or +variables like \f[C]PROMPT_DIRTRIM\f[R]. +These are set only after testing \f[C]BASH_VERSINFO\f[R] appropriately. .SS Prompt .PP A terminal session with my prompt looks something like this: .IP .nf \f[C] -~$\ ssh\ remote -remote:~$\ cd\ .local/share/dotfiles -remote:~/.local/share/dotfiles(master+!)$\ git\ status -\ M\ README.md -M\ \ bash/bashrc.d/prompt.bash -A\ \ init -remote:~/.local/share/dotfiles(master+!)$\ foobar -foobar:\ command\ not\ found -remote:~/.local/share/dotfiles(master+!)<127>$\ sleep\ 5\ & -[1]\ 28937 -remote:~/.local/share/dotfiles(master+!){1}$ -\f[] +\[ti]$ ssh remote +remote:\[ti]$ cd .local/share/dotfiles +remote:\[ti]/.local/share/dotfiles(master+!)$ git status + M README.md +M bash/bashrc.d/prompt.bash +A init +remote:\[ti]/.local/share/dotfiles(master+!)$ foobar +foobar: command not found +remote:\[ti]/.local/share/dotfiles(master+!)<127>$ sleep 5 & +[1] 28937 +remote:\[ti]/.local/share/dotfiles(master+!){1}$ +\f[R] .fi .PP The hostname is elided if not connected via SSH. -The working directory with tilde abbreviation for \f[C]$HOME\f[] is +The working directory with tilde abbreviation for \f[C]$HOME\f[R] is always shown. The rest of the prompt expands based on context to include these elements, in this order: @@ -264,191 +265,192 @@ Whether in a Git repository if applicable, The current version control branch, tag, or commit/revision if applicable, and punctuation to show repository status including reference to upstreams at a glance. -Subversion support can also be enabled, in which case a \f[C]git:\f[] or -\f[C]svn:\f[] prefix is added appropriately for disambiguation. +Subversion support can also be enabled, in which case a \f[C]git:\f[R] +or \f[C]svn:\f[R] prefix is added appropriately for disambiguation. .IP \[bu] 2 -The number of running background jobs, if non\-zero. +The number of running background jobs, if non-zero. .IP \[bu] 2 -The exit status of the last command, if non\-zero. +The exit status of the last command, if non-zero. .PP -You can set \f[C]PROMPT_COLOR\f[], \f[C]PROMPT_PREFIX\f[], and -\f[C]PROMPT_SUFFIX\f[] too, which all do about what you'd expect. +You can set \f[C]PROMPT_COLOR\f[R], \f[C]PROMPT_PREFIX\f[R], and +\f[C]PROMPT_SUFFIX\f[R] too, which all do about what you\[cq]d expect. .PP -If you start up GNU Bash, Korn shell, or Z shell, and that doesn't match -your login shell, the prompt should display an appropriate prefix. +If you start up GNU Bash, Korn shell, or Z shell, and that doesn\[cq]t +match your login shell, the prompt should display an appropriate prefix. .PP -This is all managed within the \f[C]prompt\f[] function. -There's some mildly hacky logic on \f[C]tput\f[] codes included such -that it should work correctly for most common terminals using both -\f[C]termcap(5)\f[] and \f[C]terminfo(5)\f[], including *BSD systems. -It's also designed to degrade gracefully for eight\-color and no\-color -terminals. +This is all managed within the \f[C]prompt\f[R] function. +There\[cq]s some mildly hacky logic on \f[C]tput\f[R] codes included +such that it should work correctly for most common terminals using both +\f[C]termcap(5)\f[R] and \f[C]terminfo(5)\f[R], including *BSD systems. +It\[cq]s also designed to degrade gracefully for eight-color and +no-color terminals. .SS Functions .PP -If a function can be written in POSIX \f[C]sh\f[] without too much -hackery, I put it in \f[C]sh/shrc.d\f[] to be loaded by any POSIX +If a function can be written in POSIX \f[C]sh\f[R] without too much +hackery, I put it in \f[C]sh/shrc.d\f[R] to be loaded by any POSIX interactive shell. Those include: .IP \[bu] 2 Four functions for using a \[lq]marked\[rq] directory, which I find a -more manageable concept than the \f[C]pushd\f[]/\f[C]popd\f[] directory -stack: +more manageable concept than the \f[C]pushd\f[R]/\f[C]popd\f[R] +directory stack: .RS 2 .IP \[bu] 2 -\f[C]md()\f[] marks a given (or the current) directory. +\f[C]md()\f[R] marks a given (or the current) directory. .IP \[bu] 2 -\f[C]gd()\f[] goes to the marked directory. +\f[C]gd()\f[R] goes to the marked directory. .IP \[bu] 2 -\f[C]pmd()\f[] prints the marked directory. +\f[C]pmd()\f[R] prints the marked directory. .IP \[bu] 2 -\f[C]xd()\f[] swaps the current and marked directories. +\f[C]xd()\f[R] swaps the current and marked directories. .RE .IP \[bu] 2 Ten other directory management and navigation functions: .RS 2 .IP \[bu] 2 -\f[C]bd()\f[] changes into a named ancestor of the current directory. +\f[C]bd()\f[R] changes into a named ancestor of the current directory. .IP \[bu] 2 -\f[C]gt()\f[] changes into a directory or into a file's directory. +\f[C]gt()\f[R] changes into a directory or into a file\[cq]s directory. .IP \[bu] 2 -\f[C]lgt()\f[] runs \f[C]gt()\f[] on the first result from a -\f[C]loc(1df)\f[] search. +\f[C]lgt()\f[R] runs \f[C]gt()\f[R] on the first result from a +\f[C]loc(1df)\f[R] search. .IP \[bu] 2 -\f[C]mkcd()\f[] creates a directory and changes into it. +\f[C]mkcd()\f[R] creates a directory and changes into it. .IP \[bu] 2 -\f[C]pd()\f[] changes to the argument's parent directory. +\f[C]pd()\f[R] changes to the argument\[cq]s parent directory. .IP \[bu] 2 -\f[C]rd()\f[] replaces the first instance of its first argument with its -second argument in \f[C]$PWD\f[], emulating a feature of the Zsh -\f[C]cd\f[] builtin that I like. +\f[C]rd()\f[R] replaces the first instance of its first argument with +its second argument in \f[C]$PWD\f[R], emulating a feature of the Zsh +\f[C]cd\f[R] builtin that I like. .IP \[bu] 2 -\f[C]scr()\f[] creates a temporary directory and changes into it. +\f[C]scr()\f[R] creates a temporary directory and changes into it. .IP \[bu] 2 -\f[C]sd()\f[] changes into a sibling of the current directory. +\f[C]sd()\f[R] changes into a sibling of the current directory. .IP \[bu] 2 -\f[C]ud()\f[] changes into an indexed ancestor of a directory. +\f[C]ud()\f[R] changes into an indexed ancestor of a directory. .IP \[bu] 2 -\f[C]vr()\f[] tries to change to the root directory of a source control +\f[C]vr()\f[R] tries to change to the root directory of a source control repository. .RE .IP \[bu] 2 Two editor wrapper functions: .RS 2 .IP \[bu] 2 -\f[C]e()\f[] invokes \f[C]$EDITOR\f[], or \f[C]ed(1)\f[] if not set. +\f[C]e()\f[R] invokes \f[C]$EDITOR\f[R], or \f[C]ed(1)\f[R] if not set. .IP \[bu] 2 -\f[C]v()\f[] invokes \f[C]$VISUAL\f[], or \f[C]vi(1)\f[] if not set. +\f[C]v()\f[R] invokes \f[C]$VISUAL\f[R], or \f[C]vi(1)\f[R] if not set. .RE .IP \[bu] 2 -\f[C]bc()\f[] silences startup messages from GNU \f[C]bc(1)\f[]. +\f[C]bc()\f[R] silences startup messages from GNU \f[C]bc(1)\f[R]. .IP \[bu] 2 -\f[C]ed()\f[] tries to get verbose error messages, a prompt, and a -Readline environment for \f[C]ed(1)\f[]. +\f[C]ed()\f[R] tries to get verbose error messages, a prompt, and a +Readline environment for \f[C]ed(1)\f[R]. .IP \[bu] 2 -\f[C]gdb()\f[] silences startup messages from \f[C]gdb(1)\f[]. +\f[C]gdb()\f[R] silences startup messages from \f[C]gdb(1)\f[R]. .IP \[bu] 2 -\f[C]grep()\f[] tries to apply color and other options good for +\f[C]grep()\f[R] tries to apply color and other options good for interactive use if available. .IP \[bu] 2 -\f[C]hgrep()\f[] allows searching \f[C]$HISTFILE\f[]. +\f[C]hgrep()\f[R] allows searching \f[C]$HISTFILE\f[R]. .IP \[bu] 2 -\f[C]keychain()\f[] keeps \f[C]$GPG_TTY\f[] up to date if a GnuPG agent -is available. +\f[C]keychain()\f[R] keeps \f[C]$GPG_TTY\f[R] up to date if a GnuPG +agent is available. .IP \[bu] 2 -\f[C]ls()\f[] tries to apply color and other options good for +\f[C]ls()\f[R] tries to apply color and other options good for interactive use if available. .RS 2 .IP \[bu] 2 -\f[C]la()\f[] runs \f[C]ls\ \-A\f[] if it can, or \f[C]ls\ \-a\f[] +\f[C]la()\f[R] runs \f[C]ls -A\f[R] if it can, or \f[C]ls -a\f[R] otherwise. .IP \[bu] 2 -\f[C]ll()\f[] runs \f[C]ls\ \-Al\f[] if it can, or \f[C]ls\ \-al\f[] +\f[C]ll()\f[R] runs \f[C]ls -Al\f[R] if it can, or \f[C]ls -al\f[R] otherwise. .RE .IP \[bu] 2 -\f[C]path()\f[] manages the contents of \f[C]PATH\f[] conveniently. +\f[C]path()\f[R] manages the contents of \f[C]PATH\f[R] conveniently. .IP \[bu] 2 -\f[C]scp()\f[] tries to detect forgotten hostnames in \f[C]scp(1)\f[] +\f[C]scp()\f[R] tries to detect forgotten hostnames in \f[C]scp(1)\f[R] command calls. .IP \[bu] 2 -\f[C]sudo()\f[] forces \f[C]\-H\f[] for \f[C]sudo(8)\f[] calls so that -\f[C]$HOME\f[] is never preserved; I hate having \f[C]root\f[]\-owned +\f[C]sudo()\f[R] forces \f[C]-H\f[R] for \f[C]sudo(8)\f[R] calls so that +\f[C]$HOME\f[R] is never preserved; I hate having \f[C]root\f[R]-owned files in my home directory. .IP \[bu] 2 -\f[C]tree()\f[] colorizes GNU \f[C]tree(1)\f[] output if possible -(without having \f[C]LS_COLORS\f[] set). +\f[C]tree()\f[R] colorizes GNU \f[C]tree(1)\f[R] output if possible +(without having \f[C]LS_COLORS\f[R] set). .IP \[bu] 2 -\f[C]x()\f[] is a one\-key shortcut for \f[C]exec\ startx\f[]. +\f[C]x()\f[R] is a one-key shortcut for \f[C]exec startx\f[R]. .PP There are a few other little tricks defined for other shells providing -non\-POSIX features, as compatibility allows: +non-POSIX features, as compatibility allows: .IP \[bu] 2 -\f[C]keep()\f[] stores ad\-hoc shell functions and variables (Bash, Korn +\f[C]keep()\f[R] stores ad-hoc shell functions and variables (Bash, Korn Shell 93, Z shell). .IP \[bu] 2 -\f[C]prompt()\f[] sets up my interactive prompt (Bash, Korn Shell, Z +\f[C]prompt()\f[R] sets up my interactive prompt (Bash, Korn Shell, Z shell). .IP \[bu] 2 -\f[C]pushd()\f[] adds a default destination of \f[C]$HOME\f[] to the -\f[C]pushd\f[] builtin (Bash). +\f[C]pushd()\f[R] adds a default destination of \f[C]$HOME\f[R] to the +\f[C]pushd\f[R] builtin (Bash). .IP \[bu] 2 -\f[C]vared()\f[] allows interactively editing a variable with Readline, +\f[C]vared()\f[R] allows interactively editing a variable with Readline, emulating a Z shell function I like by the same name (Bash). .IP \[bu] 2 -\f[C]ver()\f[] prints the current shell's version information (Bash, -Korn Shell, Z shell). +\f[C]ver()\f[R] prints the current shell\[cq]s version information +(Bash, Korn Shell, Z shell). .SS Completion .PP -I find the \f[C]bash\-completion\f[] package a bit too heavy for my +I find the \f[C]bash-completion\f[R] package a bit too heavy for my tastes, and turn it off using a stub file installed in -\f[C]~/.config/bash_completion\f[]. +\f[C]\[ti]/.config/bash_completion\f[R]. The majority of the time I just want to complete paths anyway, and this makes for a quicker startup without a lot of junk functions in my Bash namespace. .PP I do make some exceptions with completions defined in files in -\f[C]~/.bash_completion.d\f[] for things I really do get tired of typing -repeatedly: +\f[C]\[ti]/.bash_completion.d\f[R] for things I really do get tired of +typing repeatedly: .IP \[bu] 2 Bash builtins: commands, help topics, shell options, variables, etc. .IP \[bu] 2 -\f[C]find(1)\f[]'s more portable options +\f[C]find(1)\f[R]\[cq]s more portable options .IP \[bu] 2 -\f[C]gpg(1)\f[] long options +\f[C]gpg(1)\f[R] long options .IP \[bu] 2 -\f[C]make(1)\f[] targets read from a \f[C]Makefile\f[] +\f[C]make(1)\f[R] targets read from a \f[C]Makefile\f[R] .IP \[bu] 2 -\f[C]man(1)\f[] page titles +\f[C]man(1)\f[R] page titles .IP \[bu] 2 -\f[C]pass(1)\f[] entries +\f[C]pass(1)\f[R] entries .IP \[bu] 2 -\f[C]ssh(1)\f[] hostnames from \f[C]~/.ssh/config\f[] +\f[C]ssh(1)\f[R] hostnames from \f[C]\[ti]/.ssh/config\f[R] .PP For commands that pretty much always want to operate on text, such as text file or stream editors, I exclude special file types and extensions I know are binary. -I don't actually read the file, so this is more of a heuristic thing, -and sometimes it will get things wrong. +I don\[cq]t actually read the file, so this is more of a heuristic +thing, and sometimes it will get things wrong. .PP I also add completions for my own scripts and functions where useful. The completions are dynamically loaded if Bash is version 4.0 or greater. -Otherwise, they're all loaded on startup. +Otherwise, they\[cq]re all loaded on startup. .SS Korn shell .PP These are experimental; they are mostly used to tinker with MirBSD -\f[C]mksh\f[], AT&T \f[C]ksh93\f[], and OpenBSD \f[C]pdksh\f[]. +\f[C]mksh\f[R], AT&T \f[C]ksh93\f[R], and OpenBSD \f[C]pdksh\f[R]. All shells in this family default to a yellow prompt if detected. .SS Z shell .PP These are experimental; I do not like Z shell much at the moment. -The files started as a joke (\f[C]exec\ bash\f[]). -\f[C]zsh\f[] shells default to having a prompt colored cyan. +The files started as a joke (\f[C]exec bash\f[R]). +\f[C]zsh\f[R] shells default to having a prompt colored cyan. .SS Mutt .PP -My mail is kept in individual Maildir\-format directories under -\f[C]~/mail\f[], with the system mail spool in e.g. -\f[C]/var/mail/tejr\f[] being where most unfiltered new mail is spooled. +My mail is kept in individual Maildir-format directories under +\f[C]\[ti]/mail\f[R], with the system mail spool in +e.g.\ \f[C]/var/mail/tejr\f[R] being where most unfiltered new mail is +spooled. I use Getmail (http://pyropus.ca/software/getmail/), maildrop (https://www.courier-mta.org/maildrop/), and msmtp (https://marlam.de/msmtp/); the configurations for these are not @@ -463,200 +465,202 @@ I wrote an article about this setup (https://sanctum.geek.nz/arabesque/gnu-linux-crypto-email/) if it sounds appealing. .PP -You'll need Abook installed if you want to use the -\f[C]query_command\f[] I have defined, and msmtp for the -\f[C]sendmail\f[] command. -.SS rxvt\-unicode +You\[cq]ll need Abook installed if you want to use the +\f[C]query_command\f[R] I have defined, and msmtp for the +\f[C]sendmail\f[R] command. +.SS rxvt-unicode .PP -I've butchered the URxvt Perl extensions -\f[C]selection\-to\-clipboard\f[] and \f[C]selection\f[] into a single -\f[C]select\f[] extension in \f[C]~/.urxvt/ext\f[], which is the only -extension I define in \f[C]~/.Xresources\f[]. +I\[cq]ve butchered the URxvt Perl extensions +\f[C]selection-to-clipboard\f[R] and \f[C]selection\f[R] into a single +\f[C]select\f[R] extension in \f[C]\[ti]/.urxvt/ext\f[R], which is the +only extension I define in \f[C]\[ti]/.Xresources\f[R]. .PP -The included \f[C]\&.Xresources\f[] file assumes that \f[C]urxvt\f[] can +The included \f[C].Xresources\f[R] file assumes that \f[C]urxvt\f[R] can use 256 colors and Perl extensions. -If you're missing functionality, try changing \f[C]perl\-ext\-common\f[] -to \f[C]default\f[]. +If you\[cq]re missing functionality, try changing +\f[C]perl-ext-common\f[R] to \f[C]default\f[R]. .SS tmux .PP -These are just generally vi\-friendly settings, and there isn't much out -of the ordinary. -Note that the configuration presently uses a hard\-coded 256\-color -color scheme, and uses non\-login shells, with an attempt to control the +These are just generally vi-friendly settings, and there isn\[cq]t much +out of the ordinary. +Note that the configuration presently uses a hard-coded 256-color color +scheme, and uses non-login shells, with an attempt to control the environment to stop shells thinking they have access to an X display. .PP -The shell scripts in \f[C]bin\f[] include \f[C]tm(1df)\f[], a shortcut -to make \f[C]attach\f[] into the default command if no arguments are +The shell scripts in \f[C]bin\f[R] include \f[C]tm(1df)\f[R], a shortcut +to make \f[C]attach\f[R] into the default command if no arguments are given and sessions do already exist. -My \f[C]~/.inputrc\f[] file binds Alt+M to run that, and Tmux in turn -binds the same key combination to detach. +My \f[C]\[ti]/.inputrc\f[R] file binds Alt+M to run that, and Tmux in +turn binds the same key combination to detach. .SS Vim .PP The majority of the Vim configuration is just setting options, with a -fair few mappings and remappings, both global and buffer\-local. -It's extensively commented. +fair few mappings and remappings, both global and buffer-local. +It\[cq]s extensively commented. .SS XDG Basedirs .PP The XDG Base Directory -Specification (https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)'s +Specification (https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)\[cq]s environment variables are checked on startup, and appropriate directories are added to the start and end of -\f[C]\[aq]runtimepath\[aq]\f[]. -I use these separate directories for machine\-local configuration, -usually in \f[C]~/.config/vim\f[], while all the files that this suite -installs land in \f[C]~/.vim\f[]. +\f[C]\[aq]runtimepath\[aq]\f[R]. +I use these separate directories for machine-local configuration, +usually in \f[C]\[ti]/.config/vim\f[R], while all the files that this +suite installs land in \f[C]\[ti]/.vim\f[R]. Backups, swap files, persistent undo data, saved views, and the -\f[C]viminfo\f[] file all live under \f[C]XDG_CACHE_HOME\f[], normally -\f[C]~/.cache/vim\f[]. +\f[C]viminfo\f[R] file all live under \f[C]XDG_CACHE_HOME\f[R], normally +\f[C]\[ti]/.cache/vim\f[R]. .SS Filetypes .PP -I define my own \f[C]filetype.vim\f[] and \f[C]scripts.vim\f[], so that -filetype detection works in a way I like, and loads quickly. +I define my own \f[C]filetype.vim\f[R] and \f[C]scripts.vim\f[R], so +that filetype detection works in a way I like, and loads quickly. They are unlikely to suit you as they are, but if you want to use it, you can extend them with your favorite filetypes in custom -\f[C]ftdetect\f[] rules. +\f[C]ftdetect\f[R] rules. .SS Plugins .PP If the logic for doing something involves more than a few lines or any -structures like functions that can be decoupled from \f[C]$MYVIMRC\f[], -I like to implement it as a plugin in \f[C]~/.vim/plugin\f[] and/or -\f[C]~/.vim/autoload\f[], with documentation for each in -\f[C]~/.vim/doc\f[]. +structures like functions that can be decoupled from \f[C]$MYVIMRC\f[R], +I like to implement it as a plugin in \f[C]\[ti]/.vim/plugin\f[R] and/or +\f[C]\[ti]/.vim/autoload\f[R], with documentation for each in +\f[C]\[ti]/.vim/doc\f[R]. .PP They eventually get either discarded if I stop using them, or spun off into their own repositories and added to this repository as submodules -under \f[C]vim/bundle\f[] if I don't. +under \f[C]vim/bundle\f[R] if I don\[cq]t. Some of them I upload to vim.org (https://www.vim.org/account/profile.php?user_id=73687). .SS Filetype plugins .PP I apply some replacement or supplementary configuration specific to file -types I often edit in \f[C]~/.vim\f[] and \f[C]~/.vim/after\f[], in the -\f[C]ftplugin\f[], \f[C]indent\f[], and \f[C]syntax\f[] subdirectories. +types I often edit in \f[C]\[ti]/.vim\f[R] and +\f[C]\[ti]/.vim/after\f[R], in the \f[C]ftplugin\f[R], \f[C]indent\f[R], +and \f[C]syntax\f[R] subdirectories. Some of these filetype plugins or extensions may also eventually be removed to be separately distributed, and installed via submodules instead. .SS Compilers .PP -I define a few of my own \f[C]:compiler\f[] scripts for -\f[C]~/.vim/compiler\f[] to check and lint appropriate filetypes. +I define a few of my own \f[C]:compiler\f[R] scripts for +\f[C]\[ti]/.vim/compiler\f[R] to check and lint appropriate filetypes. I bind checking\[em]\[lq]does it run?\[rq]\[em]and linting\[em]\[lq]is it good?\[rq]\[em]with separate local leader maps; for example, for -\f[C]perl\f[] filetypes, \f[C]c\f[] switches -\f[C]makeprg\f[] to \f[C]perl\ \-c\f[] for checking, and -\f[C]l\f[] to \f[C]perlcritic\f[] for linting. +\f[C]perl\f[R] filetypes, \f[C]c\f[R] switches +\f[C]makeprg\f[R] to \f[C]perl -c\f[R] for checking, and +\f[C]l\f[R] to \f[C]perlcritic\f[R] for linting. .SS No Neovim support .PP -The configuration doesn't explicitly support Neovim, although most of it -will probably work; you would probably just comment out the settings for -a few of the removed options. +The configuration doesn\[cq]t explicitly support Neovim, although most +of it will probably work; you would probably just comment out the +settings for a few of the removed options. .SS Scripts .PP Where practical, I make short scripts into POSIX (but not Bourne) -\f[C]sh(1)\f[], \f[C]awk(1)\f[], or \f[C]sed(1)\f[] scripts in -\f[C]~/.local/bin\f[]. +\f[C]sh(1)\f[R], \f[C]awk(1)\f[R], or \f[C]sed(1)\f[R] scripts in +\f[C]\[ti]/.local/bin\f[R]. I try to use shell functions only when I actually need to, which tends -to be when I need to change the state of the user's current shell, or to -limit a change in behavior only to interactive shells. +to be when I need to change the state of the user\[cq]s current shell, +or to limit a change in behavior only to interactive shells. .PP -These scripts are installed by the \f[C]install\-bin\f[] target: +These scripts are installed by the \f[C]install-bin\f[R] target: .IP \[bu] 2 -Three SSH\-related scripts: +Three SSH-related scripts: .RS 2 .IP \[bu] 2 -\f[C]sls(1df)\f[] prints hostnames read from a \f[C]ssh_config(5)\f[] +\f[C]sls(1df)\f[R] prints hostnames read from a \f[C]ssh_config(5)\f[R] file. -It uses \f[C]slsf(1df)\f[] to read each one. +It uses \f[C]slsf(1df)\f[R] to read each one. .IP \[bu] 2 -\f[C]sra(1df)\f[] runs a command on multiple hosts read from -\f[C]sls(1df)\f[] and prints output. +\f[C]sra(1df)\f[R] runs a command on multiple hosts read from +\f[C]sls(1df)\f[R] and prints output. .IP \[bu] 2 -\f[C]sta(1df)\f[] runs a command on multiple hosts read from -\f[C]sls(1df)\f[] and prints the hostname if the command returns zero. +\f[C]sta(1df)\f[R] runs a command on multiple hosts read from +\f[C]sls(1df)\f[R] and prints the hostname if the command returns zero. .RE .IP \[bu] 2 -Five URL\-related shortcut scripts: +Five URL-related shortcut scripts: .RS 2 .IP \[bu] 2 -\f[C]hurl(1df)\f[] extracts values of \f[C]href\f[] attributes of -\f[C]\f[] tags, sorts them uniquely, and writes them to -\f[C]stdout\f[]; it requires pup (https://github.com/ericchiang/pup). +\f[C]hurl(1df)\f[R] extracts values of \f[C]href\f[R] attributes of +\f[C]\f[R] tags, sorts them uniquely, and writes them to +\f[C]stdout\f[R]; it requires pup (https://github.com/ericchiang/pup). .IP \[bu] 2 -\f[C]murl(1df)\f[] converts Markdown documents to HTML with -\f[C]pandoc(1)\f[] and runs the output through \f[C]hurl(1df)\f[]. +\f[C]murl(1df)\f[R] converts Markdown documents to HTML with +\f[C]pandoc(1)\f[R] and runs the output through \f[C]hurl(1df)\f[R]. .IP \[bu] 2 -\f[C]urlc(1df)\f[] accepts a list of URLs on \f[C]stdin\f[] and writes -error messages to \f[C]stderr\f[] if any of the URLs are broken, +\f[C]urlc(1df)\f[R] accepts a list of URLs on \f[C]stdin\f[R] and writes +error messages to \f[C]stderr\f[R] if any of the URLs are broken, redirecting, or are insecure and have working secure versions; requires -\f[C]curl(1)\f[]. +\f[C]curl(1)\f[R]. .IP \[bu] 2 -\f[C]urlh(1df)\f[] prints the values for a given HTTP header from a HEAD -response. +\f[C]urlh(1df)\f[R] prints the values for a given HTTP header from a +HEAD response. .IP \[bu] 2 -\f[C]urlmt(1df)\f[] prints the MIME type from the \f[C]Content\-Type\f[] -header as retrieved by \f[C]urlh(1df)\f[]. +\f[C]urlmt(1df)\f[R] prints the MIME type from the +\f[C]Content-Type\f[R] header as retrieved by \f[C]urlh(1df)\f[R]. .RE .IP \[bu] 2 -Three RFC\-related shortcut scripts: +Three RFC-related shortcut scripts: .RS 2 .IP \[bu] 2 -\f[C]rfcf(1df)\f[] fetches ASCII RFCs from the IETF website. +\f[C]rfcf(1df)\f[R] fetches ASCII RFCs from the IETF website. .IP \[bu] 2 -\f[C]rfct(1df)\f[] formats ASCII RFCs. +\f[C]rfct(1df)\f[R] formats ASCII RFCs. .IP \[bu] 2 -\f[C]rfcr(1df)\f[] does both, displaying in a pager if appropriate, like -a \f[C]man(1)\f[] reader for RFCs. +\f[C]rfcr(1df)\f[R] does both, displaying in a pager if appropriate, +like a \f[C]man(1)\f[R] reader for RFCs. .RE .IP \[bu] 2 -Five toy random\-number scripts (not for sensitive/dead\-serious use): +Five toy random-number scripts (not for sensitive/dead-serious use): .RS 2 .IP \[bu] 2 -\f[C]rndi(1df)\f[] gets a random integer within two bounds. +\f[C]rndi(1df)\f[R] gets a random integer within two bounds. .IP \[bu] 2 -\f[C]rnds(1df)\f[] attempts to get an optional random seed for -\f[C]rndi(1df)\f[]. +\f[C]rnds(1df)\f[R] attempts to get an optional random seed for +\f[C]rndi(1df)\f[R]. .IP \[bu] 2 -\f[C]rnda(1df)\f[] uses \f[C]rndi(1df)\f[] to choose a random argument. +\f[C]rnda(1df)\f[R] uses \f[C]rndi(1df)\f[R] to choose a random +argument. .IP \[bu] 2 -\f[C]rndf(1df)\f[] uses \f[C]rnda(1df)\f[] to choose a random file from -a directory. +\f[C]rndf(1df)\f[R] uses \f[C]rnda(1df)\f[R] to choose a random file +from a directory. .IP \[bu] 2 -\f[C]rndl(1df)\f[] uses \f[C]rndi(1df)\f[] to choose a random line from -files. +\f[C]rndl(1df)\f[R] uses \f[C]rndi(1df)\f[R] to choose a random line +from files. .RE .IP \[bu] 2 Four file formatting scripts: .RS 2 .IP \[bu] 2 -\f[C]d2u(1df)\f[] converts DOS line endings in files to UNIX ones. +\f[C]d2u(1df)\f[R] converts DOS line endings in files to UNIX ones. .IP \[bu] 2 -\f[C]u2d(1df)\f[] converts UNIX line endings in files to DOS ones. +\f[C]u2d(1df)\f[R] converts UNIX line endings in files to DOS ones. .IP \[bu] 2 -\f[C]stbl(1df)\f[] strips a trailing blank line from the files in its +\f[C]stbl(1df)\f[R] strips a trailing blank line from the files in its arguments. .IP \[bu] 2 -\f[C]stws(1df)\f[] strips trailing spaces from the ends of lines of the +\f[C]stws(1df)\f[R] strips trailing spaces from the ends of lines of the files in its arguments. .RE .IP \[bu] 2 Seven stream formatting scripts: .RS 2 .IP \[bu] 2 -\f[C]sd2u(1df)\f[] converts DOS line endings in streams to UNIX ones. +\f[C]sd2u(1df)\f[R] converts DOS line endings in streams to UNIX ones. .IP \[bu] 2 -\f[C]su2d(1df)\f[] converts UNIX line endings in streams to DOS ones. +\f[C]su2d(1df)\f[R] converts UNIX line endings in streams to DOS ones. .IP \[bu] 2 -\f[C]slow(1df)\f[] converts uppercase to lowercase. +\f[C]slow(1df)\f[R] converts uppercase to lowercase. .IP \[bu] 2 -\f[C]supp(1df)\f[] converts lowercase to uppercase. +\f[C]supp(1df)\f[R] converts lowercase to uppercase. .IP \[bu] 2 -\f[C]tl(1df)\f[] tags input lines with a prefix or suffix, basically a -\f[C]sed(1)\f[] shortcut. +\f[C]tl(1df)\f[R] tags input lines with a prefix or suffix, basically a +\f[C]sed(1)\f[R] shortcut. .IP \[bu] 2 -\f[C]tlcs(1df)\f[] executes a command and uses \f[C]tl(1df)\f[] to tag +\f[C]tlcs(1df)\f[R] executes a command and uses \f[C]tl(1df)\f[R] to tag standard output and standard error lines, and color them if you want. .IP \[bu] 2 -\f[C]unf(1df)\f[] joins lines with leading spaces to the previous line. +\f[C]unf(1df)\f[R] joins lines with leading spaces to the previous line. Intended for unfolding HTTP headers, but it should work for most RFC 822 formats. .RE @@ -664,383 +668,388 @@ formats. Six simple aggregate scripts for numbers: .RS 2 .IP \[bu] 2 -\f[C]max(1df)\f[] prints the maximum. +\f[C]max(1df)\f[R] prints the maximum. .IP \[bu] 2 -\f[C]mean(1df)\f[] prints the mean. +\f[C]mean(1df)\f[R] prints the mean. .IP \[bu] 2 -\f[C]med(1df)\f[] prints the median. +\f[C]med(1df)\f[R] prints the median. .IP \[bu] 2 -\f[C]min(1df)\f[] prints the minimum. +\f[C]min(1df)\f[R] prints the minimum. .IP \[bu] 2 -\f[C]mode(1df)\f[] prints the first encountered mode. +\f[C]mode(1df)\f[R] prints the first encountered mode. .IP \[bu] 2 -\f[C]tot(1df)\f[] totals the set. +\f[C]tot(1df)\f[R] totals the set. .RE .IP \[bu] 2 -Three quick\-and\-dirty HTML tools: +Three quick-and-dirty HTML tools: .RS 2 .IP \[bu] 2 -\f[C]htenc(1df)\f[] encodes. +\f[C]htenc(1df)\f[R] encodes. .IP \[bu] 2 -\f[C]htdec(1df)\f[] decodes. +\f[C]htdec(1df)\f[R] decodes. .IP \[bu] 2 -\f[C]htrec(1df)\f[] wraps \f[C]a\f[] tags around URLs. +\f[C]htrec(1df)\f[R] wraps \f[C]a\f[R] tags around URLs. .RE .IP \[bu] 2 Two internet message quoting tools: .RS 2 .IP \[bu] 2 -\f[C]quo(1df)\f[] indents with quoting right angle\-brackets. +\f[C]quo(1df)\f[R] indents with quoting right angle-brackets. .IP \[bu] 2 -\f[C]wro(1df)\f[] adds a quote attribution header to its input. +\f[C]wro(1df)\f[R] adds a quote attribution header to its input. .RE .IP \[bu] 2 -Six Git\-related tools: +Six Git-related tools: .RS 2 .IP \[bu] 2 -\f[C]fgscr(1df)\f[] finds Git repositories in a directory root and -scrubs them with \f[C]gscr(1df)\f[]. +\f[C]fgscr(1df)\f[R] finds Git repositories in a directory root and +scrubs them with \f[C]gscr(1df)\f[R]. .IP \[bu] 2 -\f[C]grc(1df)\f[] quietly tests whether the given directory appears to +\f[C]grc(1df)\f[R] quietly tests whether the given directory appears to be a Git repository with pending changes. .IP \[bu] 2 -\f[C]gscr(1df)\f[] scrubs Git repositories. +\f[C]gscr(1df)\f[R] scrubs Git repositories. .IP \[bu] 2 -\f[C]isgr(1df)\f[] quietly tests whether the given directory appears to +\f[C]isgr(1df)\f[R] quietly tests whether the given directory appears to be a Git repository. .IP \[bu] 2 -\f[C]jfc(1df)\f[] adds and commits lazily to a Git repository. +\f[C]jfc(1df)\f[R] adds and commits lazily to a Git repository. .IP \[bu] 2 -\f[C]jfcd(1df)\f[] watches a directory for changes and runs -\f[C]jfc(1df)\f[] if it sees any. +\f[C]jfcd(1df)\f[R] watches a directory for changes and runs +\f[C]jfc(1df)\f[R] if it sees any. .RE .IP \[bu] 2 Two time duration functions: .RS 2 .IP \[bu] 2 -\f[C]hms(1df)\f[] converts seconds to \f[C]hh:mm:ss\f[] or -\f[C]mm:ss\f[] timestamps. +\f[C]hms(1df)\f[R] converts seconds to \f[C]hh:mm:ss\f[R] or +\f[C]mm:ss\f[R] timestamps. .IP \[bu] 2 -\f[C]sec(1df)\f[] converts \f[C]hh:mm:ss\f[] or \f[C]mm:ss\f[] +\f[C]sec(1df)\f[R] converts \f[C]hh:mm:ss\f[R] or \f[C]mm:ss\f[R] timestamps to seconds. .RE .IP \[bu] 2 Three pipe interaction tools: .RS 2 .IP \[bu] 2 -\f[C]pst(1df)\f[] runs an interactive program on data before passing it +\f[C]pst(1df)\f[R] runs an interactive program on data before passing it along a pipeline. .IP \[bu] 2 -\f[C]ped(1df)\f[] runs \f[C]pst(1df)\f[] with \f[C]$EDITOR\f[] or -\f[C]ed(1)\f[]. +\f[C]ped(1df)\f[R] runs \f[C]pst(1df)\f[R] with \f[C]$EDITOR\f[R] or +\f[C]ed(1)\f[R]. .IP \[bu] 2 -\f[C]pvi(1df)\f[] runs \f[C]pvi(1df)\f[] with \f[C]$VISUAL\f[] or -\f[C]vi(1)\f[]. +\f[C]pvi(1df)\f[R] runs \f[C]pvi(1df)\f[R] with \f[C]$VISUAL\f[R] or +\f[C]vi(1)\f[R]. .RE .IP \[bu] 2 Two editor wrapper tools: .RS 2 .IP \[bu] 2 -\f[C]mked(1df)\f[] creates paths to all its arguments before invoking -\f[C]$EDITOR\f[]. +\f[C]mked(1df)\f[R] creates paths to all its arguments before invoking +\f[C]$EDITOR\f[R]. .IP \[bu] 2 -\f[C]mkvi(1df)\f[] creates paths to all its arguments before invoking -\f[C]$VISUAL\f[]. +\f[C]mkvi(1df)\f[R] creates paths to all its arguments before invoking +\f[C]$VISUAL\f[R]. .RE .IP \[bu] 2 -\f[C]ap(1df)\f[] reads arguments for a given command from the standard +\f[C]ap(1df)\f[R] reads arguments for a given command from the standard input, prompting if appropriate. .IP \[bu] 2 -\f[C]apf(1df)\f[] inserts arguments to a command with ones read from a +\f[C]apf(1df)\f[R] inserts arguments to a command with ones read from a file, intended as a framework for shell wrappers or functions. .IP \[bu] 2 -\f[C]ax(1df)\f[] evaluates an AWK expression given on the command line; +\f[C]ax(1df)\f[R] evaluates an AWK expression given on the command line; this is intended as a quick way to test how AWK would interpret a given expression. .IP \[bu] 2 -\f[C]bcq(1df)\f[] runs \f[C]bc(1)\f[], quieting it down if need be. +\f[C]bcq(1df)\f[R] runs \f[C]bc(1)\f[R], quieting it down if need be. .IP \[bu] 2 -\f[C]bel(1df)\f[] prints a terminal bell character. +\f[C]bel(1df)\f[R] prints a terminal bell character. .IP \[bu] 2 -\f[C]bl(1df)\f[] generates a given number of blank lines. +\f[C]bl(1df)\f[R] generates a given number of blank lines. .IP \[bu] 2 -\f[C]bp(1df)\f[] runs \f[C]br(1df)\f[] after prompting for an URL. +\f[C]bp(1df)\f[R] runs \f[C]br(1df)\f[R] after prompting for an URL. .IP \[bu] 2 -\f[C]br(1df)\f[] launches \f[C]$BROWSER\f[]. +\f[C]br(1df)\f[R] launches \f[C]$BROWSER\f[R]. .IP \[bu] 2 -\f[C]ca(1df)\f[] prints a count of its given arguments. +\f[C]ca(1df)\f[R] prints a count of its given arguments. .IP \[bu] 2 -\f[C]cf(1df)\f[] prints a count of entries in a given directory. +\f[C]cf(1df)\f[R] prints a count of entries in a given directory. .IP \[bu] 2 -\f[C]cfr(1df)\f[] does the same as \f[C]cf(1df)\f[], but recurses into +\f[C]cfr(1df)\f[R] does the same as \f[C]cf(1df)\f[R], but recurses into subdirectories as well. .IP \[bu] 2 -\f[C]chc(1df)\f[] caches the output of a command. +\f[C]chc(1df)\f[R] caches the output of a command. .IP \[bu] 2 -\f[C]chn(1df)\f[] runs a filter over its input a given number of times. +\f[C]chn(1df)\f[R] runs a filter over its input a given number of times. .IP \[bu] 2 -\f[C]clog(1df)\f[] is a tiny timestamped log system. +\f[C]clog(1df)\f[R] is a tiny timestamped log system. .IP \[bu] 2 -\f[C]clrd(1df)\f[] sets up a per\-line file read, clearing the screen +\f[C]clrd(1df)\f[R] sets up a per-line file read, clearing the screen first. .IP \[bu] 2 -\f[C]clwr(1df)\f[] sets up a per\-line file write, clearing the screen +\f[C]clwr(1df)\f[R] sets up a per-line file write, clearing the screen before each line. .IP \[bu] 2 -\f[C]csmw(1df)\f[] prints an English list of monospace\-quoted words +\f[C]csmw(1df)\f[R] prints an English list of monospace-quoted words read from the input. .IP \[bu] 2 -\f[C]dam(1df)\f[] buffers all its input before emitting it as output. +\f[C]dam(1df)\f[R] buffers all its input before emitting it as output. .IP \[bu] 2 -\f[C]ddup(1df)\f[] removes duplicate lines from unsorted input. +\f[C]ddup(1df)\f[R] removes duplicate lines from unsorted input. .IP \[bu] 2 -\f[C]defang(1df)\f[] prevents dangerous URLs from being made into +\f[C]defang(1df)\f[R] prevents dangerous URLs from being made into clickable links. .IP \[bu] 2 -\f[C]dmp(1df)\f[] copies a pass(1) entry selected by \f[C]dmenu(1)\f[] +\f[C]dmp(1df)\f[R] copies a pass(1) entry selected by \f[C]dmenu(1)\f[R] to the X CLIPBOARD. .IP \[bu] 2 -\f[C]dub(1df)\f[] lists the biggest entries in a directory. +\f[C]dub(1df)\f[R] lists the biggest entries in a directory. .IP \[bu] 2 -\f[C]edda(1df)\f[] provides a means to run \f[C]ed(1)\f[] over a set of -files preserving any options, mostly useful for scripts. +\f[C]edda(1df)\f[R] provides a means to run \f[C]ed(1)\f[R] over a set +of files preserving any options, mostly useful for scripts. .IP \[bu] 2 -\f[C]eds(1df)\f[] edits executable script files in \f[C]EDSPATH\f[], -defaulting to \f[C]~/.local/bin\f[], for personal scripting snippets. +\f[C]eds(1df)\f[R] edits executable script files in \f[C]EDSPATH\f[R], +defaulting to \f[C]\[ti]/.local/bin\f[R], for personal scripting +snippets. .IP \[bu] 2 -\f[C]exm(1df)\f[] works around a screen\-clearing quirk of Vim's -\f[C]ex\f[] mode. +\f[C]exm(1df)\f[R] works around a screen-clearing quirk of Vim\[cq]s +\f[C]ex\f[R] mode. .IP \[bu] 2 -\f[C]finc(1df)\f[] counts the number of results returned from a set of -given \f[C]find(1)\f[] conditions. +\f[C]finc(1df)\f[R] counts the number of results returned from a set of +given \f[C]find(1)\f[R] conditions. .IP \[bu] 2 -\f[C]fnl(1df)\f[] runs a command and saves its output and error into +\f[C]fnl(1df)\f[R] runs a command and saves its output and error into temporary files, printing their paths and line counts. .IP \[bu] 2 -\f[C]fnp(1df)\f[] prints the given files to standard output, each with a -plain text heading with the filename in it. +\f[C]fnp(1df)\f[R] prints the given files to standard output, each with +a plain text heading with the filename in it. .IP \[bu] 2 -\f[C]gms(1df)\f[] runs a set of \f[C]getmailrc\f[] files; does much the -same thing as the script \f[C]getmails\f[] in the \f[C]getmail\f[] +\f[C]gms(1df)\f[R] runs a set of \f[C]getmailrc\f[R] files; does much +the same thing as the script \f[C]getmails\f[R] in the \f[C]getmail\f[R] suite, but runs the requests in parallel and does up to three silent -retries using \f[C]try(1df)\f[]. +retries using \f[C]try(1df)\f[R]. .IP \[bu] 2 -\f[C]grec(1df)\f[] is a more logically\-named \f[C]grep\ \-c\f[]. +\f[C]grec(1df)\f[R] is a more logically-named \f[C]grep -c\f[R]. .IP \[bu] 2 -\f[C]gred(1df)\f[] is a more logically\-named \f[C]grep\ \-v\f[]. +\f[C]gred(1df)\f[R] is a more logically-named \f[C]grep -v\f[R]. .IP \[bu] 2 -\f[C]gwp(1df)\f[] searches for alphanumeric words in a similar way to -\f[C]grep(1)\f[]. +\f[C]gwp(1df)\f[R] searches for alphanumeric words in a similar way to +\f[C]grep(1)\f[R]. .IP \[bu] 2 -\f[C]han(1df)\f[] provides a \f[C]keywordprg\f[] for Vim's Bash script -file type that will look for \f[C]help\f[] topics. +\f[C]han(1df)\f[R] provides a \f[C]keywordprg\f[R] for Vim\[cq]s Bash +script file type that will look for \f[C]help\f[R] topics. You could use it from the shell too. .IP \[bu] 2 -\f[C]igex(1df)\f[] wraps around a command to allow you to ignore error -conditions that don't actually worry you, exiting with 0 anyway. +\f[C]igex(1df)\f[R] wraps around a command to allow you to ignore error +conditions that don\[cq]t actually worry you, exiting with 0 anyway. .IP \[bu] 2 -\f[C]ix(1df)\f[] posts its input to the \f[C]ix.io\f[] pastebin. +\f[C]ix(1df)\f[R] posts its input to the \f[C]ix.io\f[R] pastebin. .IP \[bu] 2 -\f[C]jfp(1df)\f[] prints its input, excluding any shebang on the first +\f[C]jfp(1df)\f[R] prints its input, excluding any shebang on the first line only. .IP \[bu] 2 -\f[C]loc(1df)\f[] is a quick\-search wrapped around \f[C]find(1)\f[]. +\f[C]loc(1df)\f[R] is a quick-search wrapped around \f[C]find(1)\f[R]. .IP \[bu] 2 -\f[C]maybe(1df)\f[] is like \f[C]true(1)\f[] or \f[C]false(1)\f[]; given -a probability of success, it exits with success or failure. +\f[C]maybe(1df)\f[R] is like \f[C]true(1)\f[R] or \f[C]false(1)\f[R]; +given a probability of success, it exits with success or failure. Good for quick tests. .IP \[bu] 2 -\f[C]mex(1df)\f[] makes given filenames in \f[C]$PATH\f[] executable. +\f[C]mex(1df)\f[R] makes given filenames in \f[C]$PATH\f[R] executable. .IP \[bu] 2 -\f[C]mi5(1df)\f[] is a crude preprocessor for \f[C]m4\f[]. +\f[C]mi5(1df)\f[R] is a crude preprocessor for \f[C]m4\f[R]. .IP \[bu] 2 -\f[C]mim(1df)\f[] starts an interactive Mutt message with its input. +\f[C]mim(1df)\f[R] starts an interactive Mutt message with its input. .IP \[bu] 2 -\f[C]mftl(1df)\f[] finds usable\-looking targets in Makefiles. +\f[C]mftl(1df)\f[R] finds usable-looking targets in Makefiles. .IP \[bu] 2 -\f[C]mkcp(1df)\f[] creates a directory and copies preceding arguments +\f[C]mkcp(1df)\f[R] creates a directory and copies preceding arguments into it. .IP \[bu] 2 -\f[C]mkmv(1df)\f[] creates a directory and moves preceding arguments +\f[C]mkmv(1df)\f[R] creates a directory and moves preceding arguments into it. .IP \[bu] 2 -\f[C]motd(1df)\f[] shows the system MOTD. +\f[C]motd(1df)\f[R] shows the system MOTD. .IP \[bu] 2 -\f[C]msc(1df)\f[] crudely counts messages in an mbox. +\f[C]msc(1df)\f[R] crudely counts messages in an mbox. .IP \[bu] 2 -\f[C]mw(1df)\f[] prints alphabetic space\-delimited words from the input +\f[C]mw(1df)\f[R] prints alphabetic space-delimited words from the input one per line. .IP \[bu] 2 -\f[C]oii(1df)\f[] runs a command on input only if there is any. +\f[C]oii(1df)\f[R] runs a command on input only if there is any. .IP \[bu] 2 -\f[C]onl(1df)\f[] crunches input down to one printable line. +\f[C]onl(1df)\f[R] crunches input down to one printable line. .IP \[bu] 2 -\f[C]osc(1df)\f[] implements a \f[C]netcat(1)\f[]\-like wrapper for -\f[C]openssl(1)\f[]'s \f[C]s_client\f[] sub\-command. +\f[C]osc(1df)\f[R] implements a \f[C]netcat(1)\f[R]-like wrapper for +\f[C]openssl(1)\f[R]\[cq]s \f[C]s_client\f[R] sub-command. .IP \[bu] 2 -\f[C]p(1df)\f[] prints concatenated standard input; \f[C]cat(1)\f[] as +\f[C]p(1df)\f[R] prints concatenated standard input; \f[C]cat(1)\f[R] as it should always have been. .IP \[bu] 2 -\f[C]pa(1df)\f[] prints its arguments, one per line. +\f[C]pa(1df)\f[R] prints its arguments, one per line. .IP \[bu] 2 -\f[C]phpcsff(1df)\f[] wraps around -PHP\-CS\-Fixer (https://github.com/FriendsOfPHP/PHP-CS-Fixer) to make it -a source code filter suitable for use as an \f[C]equalprg\f[] in Vim. +\f[C]phpcsff(1df)\f[R] wraps around +PHP-CS-Fixer (https://github.com/FriendsOfPHP/PHP-CS-Fixer) to make it a +source code filter suitable for use as an \f[C]equalprg\f[R] in Vim. .IP \[bu] 2 -\f[C]pp(1df)\f[] prints the full path of each argument using -\f[C]$PWD\f[]. +\f[C]pp(1df)\f[R] prints the full path of each argument using +\f[C]$PWD\f[R]. .IP \[bu] 2 -\f[C]pph(1df)\f[] runs \f[C]pp(1df)\f[] and includes a leading -\f[C]$HOSTNAME:\f[]. +\f[C]pph(1df)\f[R] runs \f[C]pp(1df)\f[R] and includes a leading +\f[C]$HOSTNAME:\f[R]. .IP \[bu] 2 -\f[C]paz(1df)\f[] print its arguments terminated by NULL chars. +\f[C]paz(1df)\f[R] print its arguments terminated by NULL chars. .IP \[bu] 2 -\f[C]pit(1df)\f[] runs its input through a pager if its standard output +\f[C]pit(1df)\f[R] runs its input through a pager if its standard output looks like a terminal. .IP \[bu] 2 -\f[C]pwg(1df)\f[] generates just one decent password with -\f[C]pwgen(1)\f[]. +\f[C]pwg(1df)\f[R] generates just one decent password with +\f[C]pwgen(1)\f[R]. .IP \[bu] 2 -\f[C]qat(1df)\f[] disables \f[C]stty\ echo\f[] for the duration of a +\f[C]qat(1df)\f[R] disables \f[C]stty echo\f[R] for the duration of a paste. .IP \[bu] 2 -\f[C]rep(1df)\f[] repeats a command a given number of times. +\f[C]rep(1df)\f[R] repeats a command a given number of times. .IP \[bu] 2 -\f[C]rgl(1df)\f[] is a very crude interactive \f[C]grep(1)\f[] loop. +\f[C]rgl(1df)\f[R] is a very crude interactive \f[C]grep(1)\f[R] loop. .IP \[bu] 2 -\f[C]shb(1df)\f[] attempts to build shebang lines for scripts from the +\f[C]shb(1df)\f[R] attempts to build shebang lines for scripts from the system paths. .IP \[bu] 2 -\f[C]sqs(1df)\f[] chops off query strings from filenames, usually +\f[C]sqs(1df)\f[R] chops off query strings from filenames, usually downloads. .IP \[bu] 2 -\f[C]sshi(1df)\f[] prints human\-readable SSH connection details. +\f[C]sshi(1df)\f[R] prints human-readable SSH connection details. .IP \[bu] 2 -\f[C]stex(1df)\f[] strips extensions from filenames. +\f[C]stex(1df)\f[R] strips extensions from filenames. .IP \[bu] 2 -\f[C]sue(8df)\f[] execs \f[C]sudoedit(8)\f[] as the owner of all the +\f[C]sue(8df)\f[R] execs \f[C]sudoedit(8)\f[R] as the owner of all the file arguments given, perhaps in cases where you may not necessarily -have \f[C]root\f[] \f[C]sudo(8)\f[] privileges. +have \f[C]root\f[R] \f[C]sudo(8)\f[R] privileges. .IP \[bu] 2 -\f[C]swr(1df)\f[] allows you to run commands locally specifying remote -files in \f[C]scp(1)\f[]'s HOST:PATH format. +\f[C]swr(1df)\f[R] allows you to run commands locally specifying remote +files in \f[C]scp(1)\f[R]\[cq]s HOST:PATH format. .IP \[bu] 2 -\f[C]td(1df)\f[] manages a to\-do file for you with \f[C]$EDITOR\f[] and -\f[C]git(1)\f[]; I used to use Taskwarrior, but found it too complex and -buggy. +\f[C]td(1df)\f[R] manages a to-do file for you with \f[C]$EDITOR\f[R] +and \f[C]git(1)\f[R]; I used to use Taskwarrior, but found it too +complex and buggy. .IP \[bu] 2 -\f[C]tm(1df)\f[] runs \f[C]tmux(1)\f[] with -\f[C]attach\-session\ \-d\f[] if a session exists, and -\f[C]new\-session\f[] if it doesn't. +\f[C]tm(1df)\f[R] runs \f[C]tmux(1)\f[R] with +\f[C]attach-session -d\f[R] if a session exists, and +\f[C]new-session\f[R] if it doesn\[cq]t. .IP \[bu] 2 -\f[C]trs(1df)\f[] replaces strings (not regular expression) in its +\f[C]trs(1df)\f[R] replaces strings (not regular expression) in its input. .IP \[bu] 2 -\f[C]try(1df)\f[] repeats a command up to a given number of times until +\f[C]try(1df)\f[R] repeats a command up to a given number of times until it succeeds, only printing error output if all three attempts failed. -Good for tolerating blips or temporary failures in \f[C]cron(8)\f[] +Good for tolerating blips or temporary failures in \f[C]cron(8)\f[R] scripts. .IP \[bu] 2 -\f[C]umake(1df)\f[] iterates upwards through the directory tree from -\f[C]$PWD\f[] until it finds a Makefile for which to run -\f[C]make(1)\f[] with the given arguments. +\f[C]umake(1df)\f[R] iterates upwards through the directory tree from +\f[C]$PWD\f[R] until it finds a Makefile for which to run +\f[C]make(1)\f[R] with the given arguments. .IP \[bu] 2 -\f[C]uts(1df)\f[] gets the current UNIX timestamp in an unorthodox way -that should work on all POSIX\-compliant operating systems. +\f[C]uts(1df)\f[R] gets the current UNIX timestamp in an unorthodox way +that should work on all POSIX-compliant operating systems. .IP \[bu] 2 -\f[C]vest(1df)\f[] runs \f[C]test(1)\f[] but fails with explicit output -via \f[C]vex(1df)\f[]. +\f[C]vest(1df)\f[R] runs \f[C]test(1)\f[R] but fails with explicit +output via \f[C]vex(1df)\f[R]. .IP \[bu] 2 -\f[C]vex(1df)\f[] runs a command and prints \f[C]true\f[] or -\f[C]false\f[] explicitly to \f[C]stdout\f[] based on the exit value. +\f[C]vex(1df)\f[R] runs a command and prints \f[C]true\f[R] or +\f[C]false\f[R] explicitly to \f[C]stdout\f[R] based on the exit value. .IP \[bu] 2 -\f[C]vic(1df)\f[] tries to run a POSIX\-compliant \f[C]vi(1)\f[]. +\f[C]vic(1df)\f[R] tries to run a POSIX-compliant \f[C]vi(1)\f[R]. .IP \[bu] 2 -\f[C]xrbg(1df)\f[] applies the same randomly\-selected background to +\f[C]xrbg(1df)\f[R] applies the same randomly-selected background to each X screen. .IP \[bu] 2 -\f[C]xrq(1df)\f[] gets the values of specific resources out of -\f[C]xrdb\ \-query\f[] output. +\f[C]xrq(1df)\f[R] gets the values of specific resources out of +\f[C]xrdb -query\f[R] output. .PP -There's some silly stuff in \f[C]install\-games\f[]: +There\[cq]s some silly stuff in \f[C]install-games\f[R]: .IP \[bu] 2 -\f[C]aaf(6df)\f[] gets a random ASCII Art +\f[C]aaf(6df)\f[R] gets a random ASCII Art Farts (http://www.asciiartfarts.com/) comic. .IP \[bu] 2 -\f[C]acq(6df)\f[] allows you to interrogate AC, the interplanetary +\f[C]acq(6df)\f[R] allows you to interrogate AC, the interplanetary computer. .IP \[bu] 2 -\f[C]aesth(6df)\f[] converts English letters to their full width CJK -analogues, for aesthetic purposes. +\f[C]aesth(6df)\f[R] converts English letters to their full width CJK +analogues, for +\[uFF41]\[uFF45]\[uFF53]\[uFF54]\[uFF48]\[uFF45]\[uFF54]\[uFF49]\[uFF43] +purposes. .IP \[bu] 2 -\f[C]squ(6df)\f[] makes a reduced Latin square out of each line of +\f[C]squ(6df)\f[R] makes a reduced Latin square out of each line of input. .IP \[bu] 2 -\f[C]kvlt(6df)\f[] translates input to emulate a style of typing unique +\f[C]kvlt(6df)\f[R] translates input to emulate a style of typing unique to black metal communities on the internet. .IP \[bu] 2 -\f[C]philsay(6df)\f[] shows a picture to accompany \f[C]pks(6df)\f[] +\f[C]philsay(6df)\f[R] shows a picture to accompany \f[C]pks(6df)\f[R] output. .IP \[bu] 2 -\f[C]pks(6df)\f[] laughs at a randomly selected word. +\f[C]pks(6df)\f[R] laughs at a randomly selected word. .IP \[bu] 2 -\f[C]rndn(6df)\f[] implements an esoteric random number generation +\f[C]rndn(6df)\f[R] implements an esoteric random number generation algorithm. .IP \[bu] 2 -\f[C]strik(6df)\f[] outputs s̶t̶r̶i̶k̶e̶d̶ ̶o̶u̶t̶ struck out text. +\f[C]strik(6df)\f[R] outputs +s\[u0336]t\[u0336]r\[u0336]i\[u0336]k\[u0336]e\[u0336]d\[u0336] +\[u0336]o\[u0336]u\[u0336]t\[u0336] struck out text. .IP \[bu] 2 -\f[C]rot13(6df)\f[] rotates the Latin letters in its input. +\f[C]rot13(6df)\f[R] rotates the Latin letters in its input. .IP \[bu] 2 -\f[C]uuu(6df)\f[] uuuuu uuuu uu uuuuuu uuuuuuu u uuu uuuuu. +\f[C]uuu(6df)\f[R] uuuuu uuuu uu uuuuuu uuuuuuu u uuu uuuuu. .IP \[bu] 2 -\f[C]xyzzy(6df)\f[] teleports to a marked location on the filesystem. +\f[C]xyzzy(6df)\f[R] teleports to a marked location on the filesystem. .IP \[bu] 2 -\f[C]zs(6df)\f[] prefixes \[lq]z\[rq] case\-appropriately to every +\f[C]zs(6df)\f[R] prefixes \[lq]z\[rq] case-appropriately to every occurrence of \[lq]s\[rq] in the text on its standard input. .SS Manuals .PP -The \f[C]install\-bin\f[] and \f[C]install\-games\f[] targets install +The \f[C]install-bin\f[R] and \f[C]install-games\f[R] targets install manuals for each script. If you want to read the manuals, you may need to add -\f[C]~/.local/share/man\f[] to your \f[C]~/.manpath\f[] or -\f[C]/etc/manpath\f[] configuration, depending on your system. +\f[C]\[ti]/.local/share/man\f[R] to your \f[C]\[ti]/.manpath\f[R] or +\f[C]/etc/manpath\f[R] configuration, depending on your system. .SS Testing .PP You can check that both sets of shell scripts are syntactically correct -with \f[C]make\ check\-bash\f[] or \f[C]make\ check\-sh\f[], or -\f[C]make\ check\f[] for everything including the scripts in -\f[C]bin\f[] and \f[C]games\f[]. -There's no proper test suite for the actual functionality (yet). +with \f[C]make check-bash\f[R] or \f[C]make check-sh\f[R], or +\f[C]make check\f[R] for everything including the scripts in +\f[C]bin\f[R] and \f[C]games\f[R]. +There\[cq]s no proper test suite for the actual functionality (yet). .PP -There are also optional \f[C]lint\f[] targets, if you have the +There are also optional \f[C]lint\f[R] targets, if you have the appropriate tools available to run them: .IP \[bu] 2 ShellCheck (https://www.shellcheck.net/): .RS 2 .IP \[bu] 2 -\f[C]lint\-bash\f[] +\f[C]lint-bash\f[R] .IP \[bu] 2 -\f[C]lint\-bin\f[] +\f[C]lint-bin\f[R] .IP \[bu] 2 -\f[C]lint\-games\f[] +\f[C]lint-games\f[R] .IP \[bu] 2 -\f[C]lint\-ksh\f[] +\f[C]lint-ksh\f[R] .IP \[bu] 2 -\f[C]lint\-sh\f[] +\f[C]lint-sh\f[R] .IP \[bu] 2 -\f[C]lint\-xinit\f[] +\f[C]lint-xinit\f[R] .RE .IP \[bu] 2 Perl::Critic: .RS 2 .IP \[bu] 2 -\f[C]lint\-urxvt\f[] +\f[C]lint-urxvt\f[R] .RE .IP \[bu] 2 Vint (https://github.com/Kuniwak/vint): .RS 2 .IP \[bu] 2 -\f[C]lint\-vim\f[] +\f[C]lint-vim\f[R] .RE .SS Future development .PP @@ -1050,11 +1059,12 @@ See IDEAS.md. See ISSUES.md. .SS License .PP -Public domain; see the included \f[C]UNLICENSE\f[] file. -It's just configuration and simple scripts, so do whatever you like with -it if any of it's useful to you. -If you're feeling generous, please join and/or donate to a free software -advocacy group, and let me know you did it because of this project: +Public domain; see the included \f[C]UNLICENSE\f[R] file. +It\[cq]s just configuration and simple scripts, so do whatever you like +with it if any of it\[cq]s useful to you. +If you\[cq]re feeling generous, please join and/or donate to a free +software advocacy group, and let me know you did it because of this +project: .IP \[bu] 2 Free Software Foundation (https://www.fsf.org/) .IP \[bu] 2 -- cgit v1.2.3