From 2a82a5320262357ddee5ec92afbded7a5a2e52b6 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Fri, 13 Nov 2020 16:29:35 +1300 Subject: Use hyphens instead of asterisks for lists --- IDEAS.md | 26 ++-- ISSUES.md | 28 ++-- README.md | 524 +++++++++++++++++++++++++++++++------------------------------- TABS.md | 8 +- 4 files changed, 293 insertions(+), 293 deletions(-) diff --git a/IDEAS.md b/IDEAS.md index 8bb8214c..e15d284e 100644 --- a/IDEAS.md +++ b/IDEAS.md @@ -1,31 +1,31 @@ Ideas ===== -* A wrapper `ksw(1df)` (kill-switch) that traps `SIGINT` to kill a called +- A wrapper `ksw(1df)` (kill-switch) that traps `SIGINT` to kill a called program or loop immediately, rather than aborting a loop (is this possible?) -* I can probably share my `psql()` completions/shortcuts after sanitizing them +- I can probably share my `psql()` completions/shortcuts after sanitizing them a bit -* Wouldn't be too hard to add some HTTP BASIC authentication to `ix(1df)` to +- Wouldn't be too hard to add some HTTP BASIC authentication to `ix(1df)` to make pastes manageable -* Have `eds(1df)` accept standard input with the "starting content" for the +- Have `eds(1df)` accept standard input with the "starting content" for the script -* Convert all the manual pages to Mandoc format maybe? +- Convert all the manual pages to Mandoc format maybe? -* `qmp(1df)`--quick man page -* The solution to `chn(1df)` not running in parallel is probably backgrounded +- `qmp(1df)`--quick man page +- The solution to `chn(1df)` not running in parallel is probably backgrounded processes and `mkfifo(1)`. -* Write something like `hcat(1df)` or `tcat(1df)` that includes filename +- Write something like `hcat(1df)` or `tcat(1df)` that includes filename headings for each concatenated file. -* I can probably get rid of all that nasty templated shell by writing something +- I can probably get rid of all that nasty templated shell by writing something that wraps around `mktd(1df)` and generates shell script to run, and calls that via `eval`. -* Ideally, the AWK and/or sed scripts in the bin and games directories should +- Ideally, the AWK and/or sed scripts in the bin and games directories should be syntax-checked or linted. I could at least add some patient application of appropriate `gawk --lint` calls for each of the .awk scripts. -* Write a ftplugin for Perl to switch between punctuation variable names and +- Write a ftplugin for Perl to switch between punctuation variable names and English variable names., i.e. \e on `$?` would change to `$CHILD_ERROR`, and vice-versa. -* Almost definitely going to want to try a runparts layout for Git hooks at +- Almost definitely going to want to try a runparts layout for Git hooks at some point -* I'd like a Git hook that pre-fills out "Version X.Y.Z" if making an annotated +- I'd like a Git hook that pre-fills out "Version X.Y.Z" if making an annotated tag named `vX.Y.Z`. diff --git a/ISSUES.md b/ISSUES.md index 1d4a33b9..0fd27a77 100644 --- a/ISSUES.md +++ b/ISSUES.md @@ -1,36 +1,36 @@ Known issues ============ -* `man(1)` completion doesn't work on OpenBSD as `manpath(1)` isn't a thing on +- `man(1)` completion doesn't work on OpenBSD as `manpath(1)` isn't a thing on that system; need to find some way of finding which manual directories should be searched at runtime, if there is one. -* The checks `gscr(1df)` makes to determine where it is are a bit naïve (don't +- The checks `gscr(1df)` makes to determine where it is are a bit naïve (don't work with bare repos) and could probably be improved with some appropriate `git-reflog(1)` calls -* `dr(6df)` is probably more practical in awk -* Running the block of git(1) commands in the prompt leaves five "stale" +- `dr(6df)` is probably more practical in awk +- Running the block of git(1) commands in the prompt leaves five "stale" jobspecs around that flee after a jobs builtin run; only saw this manifest after `90dcadf`; either I understand job specs really poorly or this may be a bug in bash -* I can't find a clean way of detecting a restricted shell for ksh instances to +- I can't find a clean way of detecting a restricted shell for ksh instances to prevent trying to load anything fancy (works for Bash) - * Zsh, either! $options[restricted] is "off" within the startup file -* Would be good to complete the Makefile variables for NAME, EMAIL etc with + - Zsh, either! $options[restricted] is "off" within the startup file +- Would be good to complete the Makefile variables for NAME, EMAIL etc with educated guesses (`id -u`@`cat /etc/mailname`) etc rather than hardcoding my own stuff in there -* Need to decide whether I care about XDG, and implement it if I do -* Need to decide whether I'm testing the shell snippets for MPD, Keychain etc, +- Need to decide whether I care about XDG, and implement it if I do +- Need to decide whether I'm testing the shell snippets for MPD, Keychain etc, and if so how. -* The custom shell functions really should be documented, but it's not clear to +- The custom shell functions really should be documented, but it's not clear to me exactly where this should happen, because the commands' availability depends on which shell you're using; the `sd` function isn't available when you're not using Bash. Maybe I should try to extend `help` without breaking it? -* The `b:undo\_indent` definition for the `perl` filetype can probably be +- The `b:undo\_indent` definition for the `perl` filetype can probably be pushed upstream. -* The `_text_filenames` completion handler for Bash won't work on files with +- The `_text_filenames` completion handler for Bash won't work on files with newlines in their names. Can it be made to? -* Highlighting the variable name in e.g. `unset -v VARNAME` works with `bash` +- Highlighting the variable name in e.g. `unset -v VARNAME` works with `bash` highlighting, but not with `sh` highlighting -* The Markdown underline functions should count screen columns, not characters +- The Markdown underline functions should count screen columns, not characters or bytes diff --git a/README.md b/README.md index 1a25d102..6b8a08f7 100644 --- a/README.md +++ b/README.md @@ -36,16 +36,16 @@ a temporary directory first, so you can explore: The default `install` target will install these targets and all their dependencies: -* `install-bin` -* `install-curl` -* `install-ex` -* `install-git` -* `install-gnupg` -* `install-less` -* `install-login-shell` -* `install-man` -* `install-readline` -* `install-vim` +- `install-bin` +- `install-curl` +- `install-ex` +- `install-git` +- `install-gnupg` +- `install-less` +- `install-login-shell` +- `install-man` +- `install-readline` +- `install-vim` The `install-login-shell` target looks at your `SHELL` environment variable, and tries to figure out which shell's configuration files to install, falling @@ -73,54 +73,54 @@ Tools Configuration is included for: -* Bourne-style POSIX shells, sharing a `.profile`, an `ENV` file, and some +- Bourne-style POSIX shells, sharing a `.profile`, an `ENV` file, and some helper functions: - * [GNU Bash](https://www.gnu.org/software/bash/) (v3.0 or newer) - * [Korn shell](http://www.kornshell.com/) (`ksh93`, `pdksh`, `mksh`) - * [Z shell](https://www.zsh.org/) -* [Abook](http://abook.sourceforge.net/)---curses address book program -* [cURL](https://curl.haxx.se/)---Command-line tool for transferring data with + - [GNU Bash](https://www.gnu.org/software/bash/) (v3.0 or newer) + - [Korn shell](http://www.kornshell.com/) (`ksh93`, `pdksh`, `mksh`) + - [Z shell](https://www.zsh.org/) +- [Abook](http://abook.sourceforge.net/)---curses address book program +- [cURL](https://curl.haxx.se/)---Command-line tool for transferring data with URL syntax -* [Dillo](https://www.dillo.org/)---A lightweight web browser -* [Dunst](https://dunst-project.org/)---A lightweight X11 notification daemon +- [Dillo](https://www.dillo.org/)---A lightweight web browser +- [Dunst](https://dunst-project.org/)---A lightweight X11 notification daemon that works with `libnotify` -* `finger(1)`---User information lookup program -* [Git](https://git-scm.com/)---Distributed version control system -* [GNU Emacs](https://www.gnu.org/software/emacs/)---Extensible text editor -* [GnuPG](https://www.gnupg.org/)---GNU Privacy Guard, for private +- `finger(1)`---User information lookup program +- [Git](https://git-scm.com/)---Distributed version control system +- [GNU Emacs](https://www.gnu.org/software/emacs/)---Extensible text editor +- [GnuPG](https://www.gnupg.org/)---GNU Privacy Guard, for private communication and file encryption -* [GTK+](https://www.gtk.org/)---GIMP Toolkit, for graphical user interface +- [GTK+](https://www.gtk.org/)---GIMP Toolkit, for graphical user interface elements -* [i3](https://i3wm.org/)---Tiling window manager -* [less](https://www.gnu.org/software/less/)---Terminal pager -* [mpv](https://mpv.io/)---Media player -* [Mutt](http://www.mutt.org/)---Terminal mail user agent -* [`mysql(1)`](https://linux.die.net/man/1/mysql)---Command-line MySQL client -* [Ncmpcpp](https://rybczak.net/ncmpcpp/)---ncurses music player client -* [Newsboat](https://newsboat.org/)---Terminal RSS/Atom feed reader -* [`psql(1)`](https://linux.die.net/man/1/psql)---Command-line PostgreSQL +- [i3](https://i3wm.org/)---Tiling window manager +- [less](https://www.gnu.org/software/less/)---Terminal pager +- [mpv](https://mpv.io/)---Media player +- [Mutt](http://www.mutt.org/)---Terminal mail user agent +- [`mysql(1)`](https://linux.die.net/man/1/mysql)---Command-line MySQL client +- [Ncmpcpp](https://rybczak.net/ncmpcpp/)---ncurses music player client +- [Newsboat](https://newsboat.org/)---Terminal RSS/Atom feed reader +- [`psql(1)`](https://linux.die.net/man/1/psql)---Command-line PostgreSQL client -* [Perl::Critic](http://perlcritic.com/)---static source code analysis engine +- [Perl::Critic](http://perlcritic.com/)---static source code analysis engine for Perl -* [Perl::Tidy](http://perltidy.sourceforge.net/)---reformats Perl source code -* [Readline](https://tiswww.case.edu/php/chet/readline/rltop.html)---GNU +- [Perl::Tidy](http://perltidy.sourceforge.net/)---reformats Perl source code +- [Readline](https://tiswww.case.edu/php/chet/readline/rltop.html)---GNU library for user input used by Bash, MySQL, and others -* [rxvt-unicode](http://software.schmorp.de/pkg/rxvt-unicode.html)---Fork of +- [rxvt-unicode](http://software.schmorp.de/pkg/rxvt-unicode.html)---Fork of the rxvt terminal emulator with Unicode support -* [Subversion](https://subversion.apache.org/)---Apache Subversion, a version +- [Subversion](https://subversion.apache.org/)---Apache Subversion, a version control system -* [tidy](http://www.html-tidy.org/)---HTML/XHTML linter and tidier -* [tmux](https://tmux.github.io/)---Terminal multiplexer similar to GNU Screen -* [Vim](https://www.vim.org/)---Vi IMproved, a text editor -* [X11](https://www.x.org/wiki/)---Windowing system with network transparency +- [tidy](http://www.html-tidy.org/)---HTML/XHTML linter and tidier +- [tmux](https://tmux.github.io/)---Terminal multiplexer similar to GNU Screen +- [Vim](https://www.vim.org/)---Vi IMproved, a text editor +- [X11](https://www.x.org/wiki/)---Windowing system with network transparency for Unix There is also some slightly customized support for multi-version environment management for three major scripting languages: -* [plenv](https://github.com/tokuhirom/plenv)---Perl -* [pyenv](https://github.com/pyenv/pyenv)---Python -* [rbenv](https://github.com/rbenv/rbenv)---Ruby +- [plenv](https://github.com/tokuhirom/plenv)---Perl +- [pyenv](https://github.com/pyenv/pyenv)---Python +- [rbenv](https://github.com/rbenv/rbenv)---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 @@ -183,14 +183,14 @@ The hostname is elided if not connected via SSH. The working directory with tilde abbreviation for `$HOME` is always shown. The rest of the prompt expands based on context to include these elements, in this order: -* Whether in a Git repository if applicable, +- Whether in a Git repository if applicable, -* The current version control branch, tag, or commit/revision 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 `git:` or `svn:` prefix is added appropriately for disambiguation. -* The number of running background jobs, if non-zero. -* The exit status of the last command, if non-zero. +- The number of running background jobs, if non-zero. +- The exit status of the last command, if non-zero. You can set `PROMPT_COLOR`, `PROMPT_PREFIX`, and `PROMPT_SUFFIX` too, which all do about what you'd expect. @@ -209,60 +209,60 @@ terminals. If a function can be written in POSIX `sh` without too much hackery, I put it in `sh/shrc.d` to be loaded by any POSIX interactive shell. Those include: -* Four functions for using a "marked" directory, which I find a more manageable +- Four functions for using a "marked" directory, which I find a more manageable concept than the `pushd`/`popd` directory stack: - * `md()` marks a given (or the current) directory. - * `gd()` goes to the marked directory. - * `pmd()` prints the marked directory. - * `xd()` swaps the current and marked directories. -* Ten other directory management and navigation functions: - * `bd()` changes into a named ancestor of the current directory. - * `gt()` changes into a directory or into a file's directory. - * `lgt()` runs `gt()` on the first result from a `loc(1df)` search. - * `mkcd()` creates a directory and changes into it. - * `pd()` changes to the argument's parent directory. - * `rd()` replaces the first instance of its first argument with its second + - `md()` marks a given (or the current) directory. + - `gd()` goes to the marked directory. + - `pmd()` prints the marked directory. + - `xd()` swaps the current and marked directories. +- Ten other directory management and navigation functions: + - `bd()` changes into a named ancestor of the current directory. + - `gt()` changes into a directory or into a file's directory. + - `lgt()` runs `gt()` on the first result from a `loc(1df)` search. + - `mkcd()` creates a directory and changes into it. + - `pd()` changes to the argument's parent directory. + - `rd()` replaces the first instance of its first argument with its second argument in `$PWD`, emulating a feature of the Zsh `cd` builtin that I like. - * `scr()` creates a temporary directory and changes into it. - * `sd()` changes into a sibling of the current directory. - * `ud()` changes into an indexed ancestor of a directory. - * `vr()` tries to change to the root directory of a source control + - `scr()` creates a temporary directory and changes into it. + - `sd()` changes into a sibling of the current directory. + - `ud()` changes into an indexed ancestor of a directory. + - `vr()` tries to change to the root directory of a source control repository. -* Two editor wrapper functions: - * `e()` invokes `$EDITOR`, or `ed(1)` if not set. - * `v()` invokes `$VISUAL`, or `vi(1)` if not set. -* `bc()` silences startup messages from GNU `bc(1)`. -* `ed()` tries to get verbose error messages, a prompt, and a Readline +- Two editor wrapper functions: + - `e()` invokes `$EDITOR`, or `ed(1)` if not set. + - `v()` invokes `$VISUAL`, or `vi(1)` if not set. +- `bc()` silences startup messages from GNU `bc(1)`. +- `ed()` tries to get verbose error messages, a prompt, and a Readline environment for `ed(1)`. -* `gdb()` silences startup messages from `gdb(1)`. -* `grep()` tries to apply color and other options good for interactive use if +- `gdb()` silences startup messages from `gdb(1)`. +- `grep()` tries to apply color and other options good for interactive use if available. -* `hgrep()` allows searching `$HISTFILE`. -* `keychain()` keeps `$GPG_TTY` up to date if a GnuPG agent is available. -* `ls()` tries to apply color and other options good for interactive use if +- `hgrep()` allows searching `$HISTFILE`. +- `keychain()` keeps `$GPG_TTY` up to date if a GnuPG agent is available. +- `ls()` tries to apply color and other options good for interactive use if available. - * `la()` runs `ls -A` if it can, or `ls -a` otherwise. - * `ll()` runs `ls -Al` if it can, or `ls -al` otherwise. -* `path()` manages the contents of `PATH` conveniently. -* `scp()` tries to detect forgotten hostnames in `scp(1)` command calls. -* `sudo()` forces `-H` for `sudo(8)` calls so that `$HOME` is never preserved; + - `la()` runs `ls -A` if it can, or `ls -a` otherwise. + - `ll()` runs `ls -Al` if it can, or `ls -al` otherwise. +- `path()` manages the contents of `PATH` conveniently. +- `scp()` tries to detect forgotten hostnames in `scp(1)` command calls. +- `sudo()` forces `-H` for `sudo(8)` calls so that `$HOME` is never preserved; I hate having `root`-owned files in my home directory. -* `tree()` colorizes GNU `tree(1)` output if possible (without having +- `tree()` colorizes GNU `tree(1)` output if possible (without having `LS_COLORS` set). -* `x()` is a one-key shortcut for `exec startx`. +- `x()` is a one-key shortcut for `exec startx`. There are a few other little tricks defined for other shells providing non-POSIX features, as compatibility allows: -* `keep()` stores ad-hoc shell functions and variables (Bash, Korn Shell 93, Z +- `keep()` stores ad-hoc shell functions and variables (Bash, Korn Shell 93, Z shell). -* `prompt()` sets up my interactive prompt (Bash, Korn Shell, Z shell). -* `pushd()` adds a default destination of `$HOME` to the `pushd` builtin +- `prompt()` sets up my interactive prompt (Bash, Korn Shell, Z shell). +- `pushd()` adds a default destination of `$HOME` to the `pushd` builtin (Bash). -* `vared()` allows interactively editing a variable with Readline, emulating a +- `vared()` allows interactively editing a variable with Readline, emulating a Z shell function I like by the same name (Bash). -* `ver()` prints the current shell's version information (Bash, Korn Shell, Z +- `ver()` prints the current shell's version information (Bash, Korn Shell, Z shell). #### Completion @@ -275,13 +275,13 @@ startup without a lot of junk functions in my Bash namespace. I do make some exceptions with completions defined in files in `~/.bash_completion.d` for things I really do get tired of typing repeatedly: -* Bash builtins: commands, help topics, shell options, variables, etc. -* `find(1)`'s more portable options -* `gpg(1)` long options -* `make(1)` targets read from a `Makefile` -* `man(1)` page titles -* `pass(1)` entries -* `ssh(1)` hostnames from `~/.ssh/config` +- Bash builtins: commands, help topics, shell options, variables, etc. +- `find(1)`'s more portable options +- `gpg(1)` long options +- `make(1)` targets read from a `Makefile` +- `man(1)` page titles +- `pass(1)` entries +- `ssh(1)` hostnames from `~/.ssh/config` 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 @@ -413,220 +413,220 @@ interactive shells. These scripts are installed by the `install-bin` target: -* Three SSH-related scripts: - * `sls(1df)` prints hostnames read from a `ssh_config(5)` file. It uses +- Three SSH-related scripts: + - `sls(1df)` prints hostnames read from a `ssh_config(5)` file. It uses `slsf(1df)` to read each one. - * `sra(1df)` runs a command on multiple hosts read from `sls(1df)` and + - `sra(1df)` runs a command on multiple hosts read from `sls(1df)` and prints output. - * `sta(1df)` runs a command on multiple hosts read from `sls(1df)` and + - `sta(1df)` runs a command on multiple hosts read from `sls(1df)` and prints the hostname if the command returns zero. -* Five URL-related shortcut scripts: - * `hurl(1df)` extracts values of `href` attributes of `` tags, sorts +- Five URL-related shortcut scripts: + - `hurl(1df)` extracts values of `href` attributes of `` tags, sorts them uniquely, and writes them to `stdout`; it requires [pup](https://github.com/ericchiang/pup). - * `murl(1df)` converts Markdown documents to HTML with `pandoc(1)` and runs + - `murl(1df)` converts Markdown documents to HTML with `pandoc(1)` and runs the output through `hurl(1df)`. - * `urlc(1df)` accepts a list of URLs on `stdin` and writes error messages + - `urlc(1df)` accepts a list of URLs on `stdin` and writes error messages to `stderr` if any of the URLs are broken, redirecting, or are insecure and have working secure versions; requires `curl(1)`. - * `urlh(1df)` prints the values for a given HTTP header from a HEAD + - `urlh(1df)` prints the values for a given HTTP header from a HEAD response. - * `urlmt(1df)` prints the MIME type from the `Content-Type` header as + - `urlmt(1df)` prints the MIME type from the `Content-Type` header as retrieved by `urlh(1df)`. -* Three RFC-related shortcut scripts: - * `rfcf(1df)` fetches ASCII RFCs from the IETF website. - * `rfct(1df)` formats ASCII RFCs. - * `rfcr(1df)` does both, displaying in a pager if appropriate, like a +- Three RFC-related shortcut scripts: + - `rfcf(1df)` fetches ASCII RFCs from the IETF website. + - `rfct(1df)` formats ASCII RFCs. + - `rfcr(1df)` does both, displaying in a pager if appropriate, like a `man(1)` reader for RFCs. -* Five toy random-number scripts (not for sensitive/dead-serious use): - * `rndi(1df)` gets a random integer within two bounds. - * `rnds(1df)` attempts to get an optional random seed for `rndi(1df)`. - * `rnda(1df)` uses `rndi(1df)` to choose a random argument. - * `rndf(1df)` uses `rnda(1df)` to choose a random file from a directory. - * `rndl(1df)` uses `rndi(1df)` to choose a random line from files. -* Four file formatting scripts: - * `d2u(1df)` converts DOS line endings in files to UNIX ones. - * `u2d(1df)` converts UNIX line endings in files to DOS ones. - * `stbl(1df)` strips a trailing blank line from the files in its arguments. - * `stws(1df)` strips trailing spaces from the ends of lines of the files in +- Five toy random-number scripts (not for sensitive/dead-serious use): + - `rndi(1df)` gets a random integer within two bounds. + - `rnds(1df)` attempts to get an optional random seed for `rndi(1df)`. + - `rnda(1df)` uses `rndi(1df)` to choose a random argument. + - `rndf(1df)` uses `rnda(1df)` to choose a random file from a directory. + - `rndl(1df)` uses `rndi(1df)` to choose a random line from files. +- Four file formatting scripts: + - `d2u(1df)` converts DOS line endings in files to UNIX ones. + - `u2d(1df)` converts UNIX line endings in files to DOS ones. + - `stbl(1df)` strips a trailing blank line from the files in its arguments. + - `stws(1df)` strips trailing spaces from the ends of lines of the files in its arguments. -* Seven stream formatting scripts: - * `sd2u(1df)` converts DOS line endings in streams to UNIX ones. - * `su2d(1df)` converts UNIX line endings in streams to DOS ones. - * `slow(1df)` converts uppercase to lowercase. - * `supp(1df)` converts lowercase to uppercase. - * `tl(1df)` tags input lines with a prefix or suffix, basically a `sed(1)` +- Seven stream formatting scripts: + - `sd2u(1df)` converts DOS line endings in streams to UNIX ones. + - `su2d(1df)` converts UNIX line endings in streams to DOS ones. + - `slow(1df)` converts uppercase to lowercase. + - `supp(1df)` converts lowercase to uppercase. + - `tl(1df)` tags input lines with a prefix or suffix, basically a `sed(1)` shortcut. - * `tlcs(1df)` executes a command and uses `tl(1df)` to tag standard output + - `tlcs(1df)` executes a command and uses `tl(1df)` to tag standard output and standard error lines, and color them if you want. - * `unf(1df)` joins lines with leading spaces to the previous line. + - `unf(1df)` joins lines with leading spaces to the previous line. Intended for unfolding HTTP headers, but it should work for most RFC 822 formats. -* Six simple aggregate scripts for numbers: - * `max(1df)` prints the maximum. - * `mean(1df)` prints the mean. - * `med(1df)` prints the median. - * `min(1df)` prints the minimum. - * `mode(1df)` prints the first encountered mode. - * `tot(1df)` totals the set. -* Three quick-and-dirty HTML tools: - * `htenc(1df)` encodes. - * `htdec(1df)` decodes. - * `htrec(1df)` wraps `a` tags around URLs. -* Two internet message quoting tools: - * `quo(1df)` indents with quoting right angle-brackets. - * `wro(1df)` adds a quote attribution header to its input. -* Six Git-related tools: - * `fgscr(1df)` finds Git repositories in a directory root and scrubs them +- Six simple aggregate scripts for numbers: + - `max(1df)` prints the maximum. + - `mean(1df)` prints the mean. + - `med(1df)` prints the median. + - `min(1df)` prints the minimum. + - `mode(1df)` prints the first encountered mode. + - `tot(1df)` totals the set. +- Three quick-and-dirty HTML tools: + - `htenc(1df)` encodes. + - `htdec(1df)` decodes. + - `htrec(1df)` wraps `a` tags around URLs. +- Two internet message quoting tools: + - `quo(1df)` indents with quoting right angle-brackets. + - `wro(1df)` adds a quote attribution header to its input. +- Six Git-related tools: + - `fgscr(1df)` finds Git repositories in a directory root and scrubs them with `gscr(1df)`. - * `grc(1df)` quietly tests whether the given directory appears to be a Git + - `grc(1df)` quietly tests whether the given directory appears to be a Git repository with pending changes. - * `gscr(1df)` scrubs Git repositories. - * `isgr(1df)` quietly tests whether the given directory appears to be a Git + - `gscr(1df)` scrubs Git repositories. + - `isgr(1df)` quietly tests whether the given directory appears to be a Git repository. - * `jfc(1df)` adds and commits lazily to a Git repository. - * `jfcd(1df)` watches a directory for changes and runs `jfc(1df)` if it + - `jfc(1df)` adds and commits lazily to a Git repository. + - `jfcd(1df)` watches a directory for changes and runs `jfc(1df)` if it sees any. -* Two time duration functions: - * `hms(1df)` converts seconds to `hh:mm:ss` or `mm:ss` timestamps. - * `sec(1df)` converts `hh:mm:ss` or `mm:ss` timestamps to seconds. -* Three pipe interaction tools: - * `pst(1df)` runs an interactive program on data before passing it along a +- Two time duration functions: + - `hms(1df)` converts seconds to `hh:mm:ss` or `mm:ss` timestamps. + - `sec(1df)` converts `hh:mm:ss` or `mm:ss` timestamps to seconds. +- Three pipe interaction tools: + - `pst(1df)` runs an interactive program on data before passing it along a pipeline. - * `ped(1df)` runs `pst(1df)` with `$EDITOR` or `ed(1)`. - * `pvi(1df)` runs `pvi(1df)` with `$VISUAL` or `vi(1)`. -* Two editor wrapper tools: - * `mked(1df)` creates paths to all its arguments before invoking `$EDITOR`. - * `mkvi(1df)` creates paths to all its arguments before invoking `$VISUAL`. -* `ap(1df)` reads arguments for a given command from the standard input, + - `ped(1df)` runs `pst(1df)` with `$EDITOR` or `ed(1)`. + - `pvi(1df)` runs `pvi(1df)` with `$VISUAL` or `vi(1)`. +- Two editor wrapper tools: + - `mked(1df)` creates paths to all its arguments before invoking `$EDITOR`. + - `mkvi(1df)` creates paths to all its arguments before invoking `$VISUAL`. +- `ap(1df)` reads arguments for a given command from the standard input, prompting if appropriate. -* `apf(1df)` inserts arguments to a command with ones read from a file, +- `apf(1df)` inserts arguments to a command with ones read from a file, intended as a framework for shell wrappers or functions. -* `ax(1df)` evaluates an AWK expression given on the command line; this is +- `ax(1df)` 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. -* `bcq(1df)` runs `bc(1)`, quieting it down if need be. -* `bel(1df)` prints a terminal bell character. -* `bl(1df)` generates a given number of blank lines. -* `bp(1df)` runs `br(1df)` after prompting for an URL. -* `br(1df)` launches `$BROWSER`. -* `ca(1df)` prints a count of its given arguments. -* `cf(1df)` prints a count of entries in a given directory. -* `cfr(1df)` does the same as `cf(1df)`, but recurses into subdirectories as +- `bcq(1df)` runs `bc(1)`, quieting it down if need be. +- `bel(1df)` prints a terminal bell character. +- `bl(1df)` generates a given number of blank lines. +- `bp(1df)` runs `br(1df)` after prompting for an URL. +- `br(1df)` launches `$BROWSER`. +- `ca(1df)` prints a count of its given arguments. +- `cf(1df)` prints a count of entries in a given directory. +- `cfr(1df)` does the same as `cf(1df)`, but recurses into subdirectories as well. -* `chc(1df)` caches the output of a command. -* `chn(1df)` runs a filter over its input a given number of times. -* `clog(1df)` is a tiny timestamped log system. -* `clrd(1df)` sets up a per-line file read, clearing the screen first. -* `clwr(1df)` sets up a per-line file write, clearing the screen before each +- `chc(1df)` caches the output of a command. +- `chn(1df)` runs a filter over its input a given number of times. +- `clog(1df)` is a tiny timestamped log system. +- `clrd(1df)` sets up a per-line file read, clearing the screen first. +- `clwr(1df)` sets up a per-line file write, clearing the screen before each line. -* `csmw(1df)` prints an English list of monospace-quoted words read from the +- `csmw(1df)` prints an English list of monospace-quoted words read from the input. -* `dam(1df)` buffers all its input before emitting it as output. -* `ddup(1df)` removes duplicate lines from unsorted input. -* `defang(1df)` prevents dangerous URLs from being made into clickable links. -* `dmp(1df)` copies a pass(1) entry selected by `dmenu(1)` to the X CLIPBOARD. -* `dub(1df)` lists the biggest entries in a directory. -* `edda(1df)` provides a means to run `ed(1)` over a set of files preserving +- `dam(1df)` buffers all its input before emitting it as output. +- `ddup(1df)` removes duplicate lines from unsorted input. +- `defang(1df)` prevents dangerous URLs from being made into clickable links. +- `dmp(1df)` copies a pass(1) entry selected by `dmenu(1)` to the X CLIPBOARD. +- `dub(1df)` lists the biggest entries in a directory. +- `edda(1df)` provides a means to run `ed(1)` over a set of files preserving any options, mostly useful for scripts. -* `eds(1df)` edits executable script files in `EDSPATH`, defaulting to +- `eds(1df)` edits executable script files in `EDSPATH`, defaulting to `~/.local/bin`, for personal scripting snippets. -* `exm(1df)` works around a screen-clearing quirk of Vim's `ex` mode. -* `finc(1df)` counts the number of results returned from a set of given +- `exm(1df)` works around a screen-clearing quirk of Vim's `ex` mode. +- `finc(1df)` counts the number of results returned from a set of given `find(1)` conditions. -* `fnl(1df)` runs a command and saves its output and error into temporary +- `fnl(1df)` runs a command and saves its output and error into temporary files, printing their paths and line counts. -* `fnp(1df)` prints the given files to standard output, each with a plain text +- `fnp(1df)` prints the given files to standard output, each with a plain text heading with the filename in it. -* `gms(1df)` runs a set of `getmailrc` files; does much the same thing as the +- `gms(1df)` runs a set of `getmailrc` files; does much the same thing as the script `getmails` in the `getmail` suite, but runs the requests in parallel and does up to three silent retries using `try(1df)`. -* `grec(1df)` is a more logically-named `grep -c`. -* `gred(1df)` is a more logically-named `grep -v`. -* `gwp(1df)` searches for alphanumeric words in a similar way to `grep(1)`. -* `han(1df)` provides a `keywordprg` for Vim's Bash script file type that will +- `grec(1df)` is a more logically-named `grep -c`. +- `gred(1df)` is a more logically-named `grep -v`. +- `gwp(1df)` searches for alphanumeric words in a similar way to `grep(1)`. +- `han(1df)` provides a `keywordprg` for Vim's Bash script file type that will look for `help` topics. You could use it from the shell too. -* `igex(1df)` wraps around a command to allow you to ignore error conditions +- `igex(1df)` wraps around a command to allow you to ignore error conditions that don't actually worry you, exiting with 0 anyway. -* `ix(1df)` posts its input to the `ix.io` pastebin. -* `jfp(1df)` prints its input, excluding any shebang on the first line only. -* `loc(1df)` is a quick-search wrapped around `find(1)`. -* `maybe(1df)` is like `true(1)` or `false(1)`; given a probability of success, +- `ix(1df)` posts its input to the `ix.io` pastebin. +- `jfp(1df)` prints its input, excluding any shebang on the first line only. +- `loc(1df)` is a quick-search wrapped around `find(1)`. +- `maybe(1df)` is like `true(1)` or `false(1)`; given a probability of success, it exits with success or failure. Good for quick tests. -* `mex(1df)` makes given filenames in `$PATH` executable. -* `mi5(1df)` is a crude preprocessor for `m4`. -* `mim(1df)` starts an interactive Mutt message with its input. -* `mftl(1df)` finds usable-looking targets in Makefiles. -* `mkcp(1df)` creates a directory and copies preceding arguments into it. -* `mkmv(1df)` creates a directory and moves preceding arguments into it. -* `motd(1df)` shows the system MOTD. -* `msc(1df)` crudely counts messages in an mbox. -* `mw(1df)` prints alphabetic space-delimited words from the input one per +- `mex(1df)` makes given filenames in `$PATH` executable. +- `mi5(1df)` is a crude preprocessor for `m4`. +- `mim(1df)` starts an interactive Mutt message with its input. +- `mftl(1df)` finds usable-looking targets in Makefiles. +- `mkcp(1df)` creates a directory and copies preceding arguments into it. +- `mkmv(1df)` creates a directory and moves preceding arguments into it. +- `motd(1df)` shows the system MOTD. +- `msc(1df)` crudely counts messages in an mbox. +- `mw(1df)` prints alphabetic space-delimited words from the input one per line. -* `oii(1df)` runs a command on input only if there is any. -* `onl(1df)` crunches input down to one printable line. -* `osc(1df)` implements a `netcat(1)`-like wrapper for `openssl(1)`'s +- `oii(1df)` runs a command on input only if there is any. +- `onl(1df)` crunches input down to one printable line. +- `osc(1df)` implements a `netcat(1)`-like wrapper for `openssl(1)`'s `s_client` sub-command. -* `p(1df)` prints concatenated standard input; `cat(1)` as it should always +- `p(1df)` prints concatenated standard input; `cat(1)` as it should always have been. -* `pa(1df)` prints its arguments, one per line. -* `phpcsff(1df)` wraps around +- `pa(1df)` prints its arguments, one per line. +- `phpcsff(1df)` wraps around [PHP-CS-Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) to make it a source code filter suitable for use as an `equalprg` in Vim. -* `pp(1df)` prints the full path of each argument using `$PWD`. -* `pph(1df)` runs `pp(1df)` and includes a leading `$HOSTNAME:`. -* `paz(1df)` print its arguments terminated by NULL chars. -* `pit(1df)` runs its input through a pager if its standard output looks like a +- `pp(1df)` prints the full path of each argument using `$PWD`. +- `pph(1df)` runs `pp(1df)` and includes a leading `$HOSTNAME:`. +- `paz(1df)` print its arguments terminated by NULL chars. +- `pit(1df)` runs its input through a pager if its standard output looks like a terminal. -* `pwg(1df)` generates just one decent password with `pwgen(1)`. -* `qat(1df)` disables `stty echo` for the duration of a paste. -* `rep(1df)` repeats a command a given number of times. -* `rgl(1df)` is a very crude interactive `grep(1)` loop. -* `shb(1df)` attempts to build shebang lines for scripts from the system paths. -* `sqs(1df)` chops off query strings from filenames, usually downloads. -* `sshi(1df)` prints human-readable SSH connection details. -* `stex(1df)` strips extensions from filenames. -* `sue(8df)` execs `sudoedit(8)` as the owner of all the file arguments given, +- `pwg(1df)` generates just one decent password with `pwgen(1)`. +- `qat(1df)` disables `stty echo` for the duration of a paste. +- `rep(1df)` repeats a command a given number of times. +- `rgl(1df)` is a very crude interactive `grep(1)` loop. +- `shb(1df)` attempts to build shebang lines for scripts from the system paths. +- `sqs(1df)` chops off query strings from filenames, usually downloads. +- `sshi(1df)` prints human-readable SSH connection details. +- `stex(1df)` strips extensions from filenames. +- `sue(8df)` execs `sudoedit(8)` as the owner of all the file arguments given, perhaps in cases where you may not necessarily have `root` `sudo(8)` privileges. -* `swr(1df)` allows you to run commands locally specifying remote files in +- `swr(1df)` allows you to run commands locally specifying remote files in `scp(1)`'s HOST:PATH format. -* `td(1df)` manages a to-do file for you with `$EDITOR` and `git(1)`; I used to +- `td(1df)` manages a to-do file for you with `$EDITOR` and `git(1)`; I used to use Taskwarrior, but found it too complex and buggy. -* `tm(1df)` runs `tmux(1)` with `attach-session -d` if a session exists, and +- `tm(1df)` runs `tmux(1)` with `attach-session -d` if a session exists, and `new-session` if it doesn't. -* `trs(1df)` replaces strings (not regular expression) in its input. -* `try(1df)` repeats a command up to a given number of times until it succeeds, +- `trs(1df)` replaces strings (not regular expression) in its input. +- `try(1df)` 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 `cron(8)` scripts. -* `umake(1df)` iterates upwards through the directory tree from `$PWD` until it +- `umake(1df)` iterates upwards through the directory tree from `$PWD` until it finds a Makefile for which to run `make(1)` with the given arguments. -* `uts(1df)` gets the current UNIX timestamp in an unorthodox way that should +- `uts(1df)` gets the current UNIX timestamp in an unorthodox way that should work on all POSIX-compliant operating systems. -* `vest(1df)` runs `test(1)` but fails with explicit output via `vex(1df)`. -* `vex(1df)` runs a command and prints `true` or `false` explicitly to `stdout` +- `vest(1df)` runs `test(1)` but fails with explicit output via `vex(1df)`. +- `vex(1df)` runs a command and prints `true` or `false` explicitly to `stdout` based on the exit value. -* `vic(1df)` tries to run a POSIX-compliant `vi(1)`. -* `xrbg(1df)` applies the same randomly-selected background to each X screen. -* `xrq(1df)` gets the values of specific resources out of `xrdb -query` output. +- `vic(1df)` tries to run a POSIX-compliant `vi(1)`. +- `xrbg(1df)` applies the same randomly-selected background to each X screen. +- `xrq(1df)` gets the values of specific resources out of `xrdb -query` output. There's some silly stuff in `install-games`: -* `aaf(6df)` gets a random [ASCII Art Farts](http://www.asciiartfarts.com/) +- `aaf(6df)` gets a random [ASCII Art Farts](http://www.asciiartfarts.com/) comic. -* `acq(6df)` allows you to interrogate AC, the interplanetary computer. -* `aesth(6df)` converts English letters to their full width CJK analogues, +- `acq(6df)` allows you to interrogate AC, the interplanetary computer. +- `aesth(6df)` converts English letters to their full width CJK analogues, for aesthetic purposes. -* `squ(6df)` makes a reduced Latin square out of each line of input. -* `kvlt(6df)` translates input to emulate a style of typing unique to black +- `squ(6df)` makes a reduced Latin square out of each line of input. +- `kvlt(6df)` translates input to emulate a style of typing unique to black metal communities on the internet. -* `philsay(6df)` shows a picture to accompany `pks(6df)` output. -* `pks(6df)` laughs at a randomly selected word. -* `rndn(6df)` implements an esoteric random number generation algorithm. -* `strik(6df)` outputs s̶t̶r̶i̶k̶e̶d̶ ̶o̶u̶t̶ struck out text. -* `rot13(6df)` rotates the Latin letters in its input. -* `uuu(6df)` uuuuu uuuu uu uuuuuu uuuuuuu u uuu uuuuu. -* `xyzzy(6df)` teleports to a marked location on the filesystem. -* `zs(6df)` prefixes "z" case-appropriately to every occurrence of "s" in the +- `philsay(6df)` shows a picture to accompany `pks(6df)` output. +- `pks(6df)` laughs at a randomly selected word. +- `rndn(6df)` implements an esoteric random number generation algorithm. +- `strik(6df)` outputs s̶t̶r̶i̶k̶e̶d̶ ̶o̶u̶t̶ struck out text. +- `rot13(6df)` rotates the Latin letters in its input. +- `uuu(6df)` uuuuu uuuu uu uuuuuu uuuuuuu u uuu uuuuu. +- `xyzzy(6df)` teleports to a marked location on the filesystem. +- `zs(6df)` prefixes "z" case-appropriately to every occurrence of "s" in the text on its standard input. Manuals @@ -647,17 +647,17 @@ functionality (yet). There are also optional `lint` targets, if you have the appropriate tools available to run them: -* [ShellCheck](https://www.shellcheck.net/): - * `lint-bash` - * `lint-bin` - * `lint-games` - * `lint-ksh` - * `lint-sh` - * `lint-xinit` -* Perl::Critic: - * `lint-urxvt` -* [Vint](https://github.com/Kuniwak/vint): - * `lint-vim` +- [ShellCheck](https://www.shellcheck.net/): + - `lint-bash` + - `lint-bin` + - `lint-games` + - `lint-ksh` + - `lint-sh` + - `lint-xinit` +- Perl::Critic: + - `lint-urxvt` +- [Vint](https://github.com/Kuniwak/vint): + - `lint-vim` Future development ------------------ @@ -677,7 +677,7 @@ 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: -* [Free Software Foundation](https://www.fsf.org/) -* [Software in the Public Interest](https://www.spi-inc.org/) -* [FreeBSD Foundation](https://www.freebsdfoundation.org/) -* [OpenBSD Foundation](https://www.openbsdfoundation.org/) +- [Free Software Foundation](https://www.fsf.org/) +- [Software in the Public Interest](https://www.spi-inc.org/) +- [FreeBSD Foundation](https://www.freebsdfoundation.org/) +- [OpenBSD Foundation](https://www.openbsdfoundation.org/) diff --git a/TABS.md b/TABS.md index 80c81294..4c67052b 100644 --- a/TABS.md +++ b/TABS.md @@ -20,7 +20,7 @@ calls, the results seem perfect. You can configure Vim to accommodate this by removing the settings in vim/vimrc.vim for: -* `'expandtab'` -* `'shiftwidth'` -* `'smarttab'` -* `'softtabstop'` +- `'expandtab'` +- `'shiftwidth'` +- `'smarttab'` +- `'softtabstop'` -- cgit v1.2.3 From 243030f63655780bdb484864ae25f81c3a591339 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Fri, 13 Nov 2020 16:29:48 +1300 Subject: Bump VERSION --- VERSION | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index ac1da28e..13821530 100644 --- a/VERSION +++ b/VERSION @@ -1,2 +1,2 @@ -tejr dotfiles v10.16.0 -Fri, 13 Nov 2020 03:17:38 +0000 +tejr dotfiles v10.17.0 +Fri, 13 Nov 2020 03:29:48 +0000 -- cgit v1.2.3