vcomplete: improve flag completion, add missdoc (#14415)

master
Larpon 2022-05-18 07:50:32 +02:00 committed by GitHub
parent ed17779434
commit 8eea861c93
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 59 additions and 25 deletions

View File

@ -114,7 +114,6 @@ const (
'help', 'help',
'new', 'new',
'init', 'init',
'complete',
'translate', 'translate',
'self', 'self',
'search', 'search',
@ -130,7 +129,12 @@ const (
'run', 'run',
'build', 'build',
'build-module', 'build-module',
'missdoc',
] ]
// Entries in the flag arrays below should be entered as is:
// * Short flags, e.g.: "-v", should be entered: '-v'
// * Long flags, e.g.: "--version", should be entered: '--version'
// * Single-dash flags, e.g.: "-version", should be entered: '-version'
auto_complete_flags = [ auto_complete_flags = [
'-apk', '-apk',
'-show-timings', '-show-timings',
@ -228,16 +232,33 @@ const (
'--write', '--write',
] ]
auto_complete_flags_shader = [ auto_complete_flags_shader = [
'help', '--help',
'h', '-h',
'force-update', '--force-update',
'u', '-u',
'verbose', '--verbose',
'v', '-v',
'slang', '--slang',
'l', '-l',
'output', '--output',
'o', '-o',
]
auto_complete_flags_missdoc = [
'--help',
'-h',
'--tags',
'-t',
'--deprecated',
'-d',
'--private',
'-p',
'--no-line-numbers',
'-n',
'--exclude',
'-e',
'--relative-paths',
'-r',
'--js',
] ]
auto_complete_flags_self = [ auto_complete_flags_self = [
'-prod', '-prod',
@ -372,12 +393,17 @@ fn auto_complete_request(args []string) []string {
parent_command = parts[i] parent_command = parts[i]
break break
} }
if part.starts_with('-') { // 'v [subcmd] -<tab>' or 'v [subcmd] --<tab>'-> flags.
get_flags := fn (base []string, flag string) []string { get_flags := fn (base []string, flag string) []string {
if flag.len == 1 { return base mut results := []string{}
} else { return base.filter(it.starts_with(flag)) for entry in base {
if entry.starts_with(flag) {
results << entry
} }
} }
if part.starts_with('-') { // 'v -<tab>' -> flags. return results
}
match parent_command { match parent_command {
'bin2v' { // 'v bin2v -<tab>' 'bin2v' { // 'v bin2v -<tab>'
list = get_flags(auto_complete_flags_bin2v, part) list = get_flags(auto_complete_flags_bin2v, part)
@ -397,6 +423,9 @@ fn auto_complete_request(args []string) []string {
'shader' { // 'v shader -<tab>' -> flags. 'shader' { // 'v shader -<tab>' -> flags.
list = get_flags(auto_complete_flags_shader, part) list = get_flags(auto_complete_flags_shader, part)
} }
'missdoc' { // 'v missdoc -<tab>' -> flags.
list = get_flags(auto_complete_flags_missdoc, part)
}
else { else {
for flag in auto_complete_flags { for flag in auto_complete_flags {
if flag == part { if flag == part {
@ -414,6 +443,11 @@ fn auto_complete_request(args []string) []string {
} }
} }
} }
// Clear the list if the result is identical to the part examined
// (the flag must have already been completed)
if list.len == 1 && part == list[0] {
list.clear()
}
} else { } else {
match part { match part {
'help' { // 'v help <tab>' -> top level commands except "help". 'help' { // 'v help <tab>' -> top level commands except "help".