git-jump: add an optional argument '--stdout'

It can be used with M-x grep on Emacs.

Signed-off-by: Yoichi Nakayama <yoichi.nakayama@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Yoichi Nakayama
2022-11-27 01:18:51 +00:00
committed by Junio C Hamano
parent a0789512c5
commit cfb7b3b391
2 changed files with 33 additions and 2 deletions

View File

@ -79,6 +79,14 @@ git jump grep -i foo_bar
git config jump.grepCmd "ag --column" git config jump.grepCmd "ag --column"
-------------------------------------------------- --------------------------------------------------
You can use the optional argument '--stdout' to print the listing to
standard output instead of feeding it to the editor. You can use the
argument with M-x grep on Emacs:
--------------------------------------------------
# In Emacs, M-x grep and invoke "git jump --stdout <mode>"
M-x grep<RET>git jump --stdout diff<RET>
--------------------------------------------------
Related Programs Related Programs
---------------- ----------------
@ -100,7 +108,7 @@ Limitations
----------- -----------
This script was written and tested with vim. Given that the quickfix This script was written and tested with vim. Given that the quickfix
format is the same as what gcc produces, I expect emacs users have a format is the same as what gcc produces, I expect other tools have a
similar feature for iterating through the list, but I know nothing about similar feature for iterating through the list, but I know nothing about
how to activate it. how to activate it.

View File

@ -2,7 +2,7 @@
usage() { usage() {
cat <<\EOF cat <<\EOF
usage: git jump <mode> [<args>] usage: git jump [--stdout] <mode> [<args>]
Jump to interesting elements in an editor. Jump to interesting elements in an editor.
The <mode> parameter is one of: The <mode> parameter is one of:
@ -15,6 +15,9 @@ grep: elements are grep hits. Arguments are given to git grep or, if
configured, to the command in `jump.grepCmd`. configured, to the command in `jump.grepCmd`.
ws: elements are whitespace errors. Arguments are given to diff --check. ws: elements are whitespace errors. Arguments are given to diff --check.
If the optional argument `--stdout` is given, print the quickfix
lines to standard output instead of feeding it to the editor.
EOF EOF
} }
@ -64,11 +67,31 @@ mode_ws() {
git diff --check "$@" git diff --check "$@"
} }
use_stdout=
while test $# -gt 0; do
case "$1" in
--stdout)
use_stdout=t
;;
--*)
usage >&2
exit 1
;;
*)
break
;;
esac
shift
done
if test $# -lt 1; then if test $# -lt 1; then
usage >&2 usage >&2
exit 1 exit 1
fi fi
mode=$1; shift mode=$1; shift
if test "$use_stdout" = "t"; then
"mode_$mode" "$@"
exit 0
fi
trap 'rm -f "$tmp"' 0 1 2 3 15 trap 'rm -f "$tmp"' 0 1 2 3 15
tmp=`mktemp -t git-jump.XXXXXX` || exit 1 tmp=`mktemp -t git-jump.XXXXXX` || exit 1