jingham added a comment. In D137000#3902217 <https://reviews.llvm.org/D137000#3902217>, @labath wrote:
> In D137000#3897878 <https://reviews.llvm.org/D137000#3897878>, @jgorbe wrote: > >> I'm looking at the option of using a non-printable character for the short >> flag, and at the same time make `--regex` and `--recognizer-function` >> mutually exclusive using option groups. One problem I see is that the >> command help gets pretty confusing. Using a non-printable character as the >> short option name makes the option completely disappear from the "Command >> Options Usage" summary part of the help. >> >> For example, for `disassemble` the `--force` option is defined with >> `Groups[2,3,4,5,7]` but there's no indication in the usage summary that >> `--force` is only usable in some of the groups: > > Hmm.. you're right, I didn't know that. I'll leave it up to you, but > personally I wouldn't consider it a blocker, as I think that the way we print > our option group help needs an overhaul anyway. I mean, the idea is kinda > nice, but after a certain number of options (and groups) it just becomes > ridiculous. For example, I'd like to meet the person who can make sense of > this: > > Command Options Usage: > breakpoint set [-DHd] -l <linenum> [-G <boolean>] [-C <command>] [-c > <expr>] [-i <count>] [-o <boolean>] [-q <queue-name>] [-t <thread-id>] [-x > <thread-index>] [-T <thread-name>] [-R <address>] [-N <breakpoint-name>] [-u > <column>] [-f <filename>] [-m <boolean>] [-s <shlib-name>] [-K <boolean>] > breakpoint set [-DHd] -a <address-expression> [-G <boolean>] [-C > <command>] [-c <expr>] [-i <count>] [-o <boolean>] [-q <queue-name>] [-t > <thread-id>] [-x <thread-index>] [-T <thread-name>] [-N <breakpoint-name>] > [-s <shlib-name>] > breakpoint set [-DHd] -n <function-name> [-G <boolean>] [-C <command>] > [-c <expr>] [-i <count>] [-o <boolean>] [-q <queue-name>] [-t <thread-id>] > [-x <thread-index>] [-T <thread-name>] [-R <address>] [-N <breakpoint-name>] > [-f <filename>] [-L <source-language>] [-s <shlib-name>] [-K <boolean>] > breakpoint set [-DHd] -F <fullname> [-G <boolean>] [-C <command>] [-c > <expr>] [-i <count>] [-o <boolean>] [-q <queue-name>] [-t <thread-id>] [-x > <thread-index>] [-T <thread-name>] [-R <address>] [-N <breakpoint-name>] [-f > <filename>] [-L <source-language>] [-s <shlib-name>] [-K <boolean>] > breakpoint set [-DHd] -S <selector> [-G <boolean>] [-C <command>] [-c > <expr>] [-i <count>] [-o <boolean>] [-q <queue-name>] [-t <thread-id>] [-x > <thread-index>] [-T <thread-name>] [-R <address>] [-N <breakpoint-name>] [-f > <filename>] [-L <source-language>] [-s <shlib-name>] [-K <boolean>] > breakpoint set [-DHd] -M <method> [-G <boolean>] [-C <command>] [-c > <expr>] [-i <count>] [-o <boolean>] [-q <queue-name>] [-t <thread-id>] [-x > <thread-index>] [-T <thread-name>] [-R <address>] [-N <breakpoint-name>] [-f > <filename>] [-L <source-language>] [-s <shlib-name>] [-K <boolean>] > breakpoint set [-DHd] -r <regular-expression> [-G <boolean>] [-C > <command>] [-c <expr>] [-i <count>] [-o <boolean>] [-q <queue-name>] [-t > <thread-id>] [-x <thread-index>] [-T <thread-name>] [-R <address>] [-N > <breakpoint-name>] [-f <filename>] [-L <source-language>] [-s <shlib-name>] > [-K <boolean>] > breakpoint set [-DHd] -b <function-name> [-G <boolean>] [-C <command>] > [-c <expr>] [-i <count>] [-o <boolean>] [-q <queue-name>] [-t <thread-id>] > [-x <thread-index>] [-T <thread-name>] [-R <address>] [-N <breakpoint-name>] > [-f <filename>] [-L <source-language>] [-s <shlib-name>] [-K <boolean>] > breakpoint set [-ADHd] -p <regular-expression> [-G <boolean>] [-C > <command>] [-c <expr>] [-i <count>] [-o <boolean>] [-q <queue-name>] [-t > <thread-id>] [-x <thread-index>] [-T <thread-name>] [-N <breakpoint-name>] > [-f <filename>] [-m <boolean>] [-s <shlib-name>] [-X <function-name>] > breakpoint set [-DHd] -E <source-language> [-G <boolean>] [-C <command>] > [-c <expr>] [-i <count>] [-o <boolean>] [-q <queue-name>] [-t <thread-id>] > [-x <thread-index>] [-T <thread-name>] [-N <breakpoint-name>] [-h <boolean>] > [-w <boolean>] > breakpoint set [-DHd] -P <python-class> [-k <none>] [-v <none>] [-G > <boolean>] [-C <command>] [-c <expr>] [-i <count>] [-o <boolean>] [-q > <queue-name>] [-t <thread-id>] [-x <thread-index>] [-T <thread-name>] [-N > <breakpoint-name>] [-f <filename>] [-s <shlib-name>] > breakpoint set [-DHd] -y <linespec> [-G <boolean>] [-C <command>] [-c > <expr>] [-i <count>] [-o <boolean>] [-q <queue-name>] [-t <thread-id>] [-x > <thread-index>] [-T <thread-name>] [-R <address>] [-N <breakpoint-name>] [-m > <boolean>] [-s <shlib-name>] [-K <boolean>] If I were starting over, I would make "break set" be a multiword command with sub-commands for all the primary specification operations (`break set file`, `break set name` etc.) We could use unique first letters for all the actual operations, so this would actually be LESS typing by one dash, and would allow for better documentation of the shared options. But I don't think we can get away with that at this point. This display while noisy is the only way you can see all the kinds of breakpoint setting operations, so we really have to have something like this, and it should be fairly reliable... It would also be nice if help also understood options, so for instance:`help break set -a` should only show you the variants that include that option. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D137000/new/ https://reviews.llvm.org/D137000 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits