Thread (2 messages) 2 messages, 2 authors, 2017-11-08

Re: [PATCH] completion: add missing completions for log, diff, show

flat view

From: Max Rothman <hidden>
Date: 2017-11-08 03:30:31

quoted
Teach git-log tab completion about the --no-* options for ease of use
at the command line.

Similarly, teach git-show tab completion about the --no-abbrev-commit,
--expand-tabs, and --no-expand-tabs options.

Also, teach git-diff (and all commands that use its options) tab
completion about the --textconv and --indent-heuristic families of
options. --indent-heuristic is no longer experimental, so there's no
reason it should be left out of tab completion any more, and textconv
seems to have simply been missed.
A couple of things that I found questionable in the above
descriptions are:

 * We do not write git subcommand names like git-foo these days, as
   nobody type them like so.
My bad, that's still how they're named when using manpages, so that's
what my muscle memory did.
 * The patch is not teaching git-foo about completing its options.
   It teaches the bash completion about options for git subcommands
   it did not know about.

So perhaps

        The bash completion script knows some options to the "git
        log" only in the positive form (e.g. "--abbrev-commit") but
        not in their negated form (e.g. "--no-abbrev-commit").  Add
        them.

and similar?
How about this:

The bash completion script knows some options to "git log" and
"git show" only in the positive form, (e.g. "--abbrev-commit"), but not
in their negative form (e.g. "--no-abbrev-commit"). Adds them.

Also, the bash completion script is missing some other options to
"git diff", and "git show" (and thus, all other commands that take
"git diff"'s options). Adds them. Of note, since "--indent-heuristic" is
no longer experimental, adds that too.
quoted
---
Missed sign-off?
Whoops, there doesn't seem to be a way to add that separately from the
commit message in the submitGit interface. I'll try adding it, but
gmail might turn all the tabs into spaces, so if it does, I'll try to
figure out how to resubmit.
quoted
@@ -1759,16 +1765,19 @@ _git_log ()
...
-                     --decorate --decorate=
+                     --decorate --decorate= --no-decorate
...
@@ -2816,8 +2825,9 @@ _git_show ()
              return
              ;;
      --*)
-             __gitcomp "--pretty= --format= --abbrev-commit --oneline
-                     --show-signature
+             __gitcomp "--pretty= --format= --abbrev-commit --no-abbrev-commit
+                     --oneline --show-signature --patch
+                     --expand-tabs --expand-tabs= --no-expand-tabs
                      $__git_diff_common_options
                      "
              return
It's a bit sad that the completion support does not know that "git
show" belongs to the "git log" family of commands.  A consequence of
this is that "git show --no-decorate" is perfectly acceptable but
needs to be taught separately to _git_show if we wanted to.

Perhaps some selected options _git_log understands may need to be
split $__git_log_ui_common_options [*1*], like we do for "git diff"
family with $__git_diff_common_options, and shared between _git_log
and _git_show.

I am mentioning this primarily as #leftoverbits and I do not want to
see such a change mixed into this patch, as it is totally outside
the scope of it.  It is (if you are inclined to do so) OK to make
this into two patch series, with 1/2 doing such a refactoring
without changing any externally visible functionality (i.e. just
move the ones _git_show knows about to $__git_log_ui_common_options,
and have _git_show and _git_log use it), and 2/2 adding more options
to that list to achieve what you wanted to do with this patch, though.
I think I'll stick with this patch for now (it's my first!), but I
might come around and do refactoring in a second pass.

Thanks,
Max
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help