The shell function git-signoff was replaced with gits builtin
functionality in 09ef4d4d93 ("git: Replace git-signoff with `rebase
--signoff`").
Also adjust the example in the new commment.
When only linking the completion function, the completion works for the
shell functions, but not when using a git alias to those functions.
Fix that by defining own completion functions for each that call the
existing/copied ones.
`cut` counts bytes instead of printable character, making it truncate
colored lines too early.
Fix this by using awk and adding the length difference between a colored
and uncolored version to the allowed length.
COLUMNS is a shell variable and thus needs exporting for `ENVIRON` to
see it in awk.
List all files and directories but include the latest commits date and
subject, similar to the file browser in web-UIs of services like GitHub.
Also sort the entries by the commits date and time to see the most
recent changed files/folders at the bottom.
When typing a multi-line input (e.g. `echo foo\<CR>`) BUFFER can be
empty, even though the entire input is not.
Fix this by checking if PREBUFFER and BUFFER are empty.
Use the byte size as first filter instead of the size in 1KB blocks.
This way the filter is way more accurate and filters out more files
for which the md5sum does not need to be calculated.
Previously when filenames contained spaces, the function would break as
`awk {print $2,$1}` would only print a part of the filename.
The field swap was used as a workaround so that `uniq` only compares the
sizes, and `uniq` unfortunately only has a flag to **skip** fields.
Fix this issue by using a short awk script that mimics `uniq` but only
with the first field (i.e. the size).
My awk foo is unfortunately not very good, and that is why the one-liner
prints out the first duplicated line multiple time. The `sort -u` pipe
afterwards gets rid of those.
The `vi-` versions stop working after using `push-input` and trying to
edit the reappeared line.
This could be an upstream bug, as I can recreate it with `zsh -f`.
Introduce first mapping that follows the 'fixed keyboard input'[^1]
sequences. They allow the differentiation of all keys with each modifier
without gotchas like `tab` send the same sequence as `ctrl-i`.
[^1] - https://www.leonerd.org.uk/hacks/fixterms/
If a pattern is passed that starts with a special character, the
`[]`-"quoting" would possible lead to errors or change it's meaning.
To prevent that, pass the argument directly to grep if it looks like a
regex (i.e. contains a special character).
Instead of replacing pgrep, have this function under a slightly
different name.
Also add support for multiple arguments as the function does not aim to
be called under the same name now.
When an argument is passed that does not exist, `ls` always prints the
directory name for the existing ones, even if there is only one
remaining directory that is listed.
`ls` prints a warning if a non-flag argument is specified that does not
exist.
Previously ls-show-hidden assumed that all arguments that are neither a
directory nor an otherwise existing file are flags. As all flags are
passed to the ls call the warning still got printed, but this also lead
to the current working directory (i.e. `.`) being added to the
directories to process.
If `ls` expects an argument to a flag, it is always passed in the format
`--flag=arg` where the equal sign is mandatory. This makes it possible
to simply filter out all flags (and their arguments) from the other
arguments without needing to know which flags take an argument and which
don't.
Fix this behaviour by printing the same warning as `ls` does when an
argument is neither a flag, nor a directory nor an existing file. Also
only add `.` to the directories if *really* only flags were passed.