Fix nftables completion: when object name contains its type name, the completion may mass up

E.g.
```
table inet foo {
        chain my_chain {
                jump my_chain2
        }
        chain my_chain2 {
        }
}
```

`nft delete chain inet foo <tab>`
get
```
handle                          -- address chain by handle
my_chain2                       -- (handle 31)
my_chain                        -- (handle 30)
\t\tjump my_chain2 # handle 33
```
the last line in the completion output is not wanted.
This commit is contained in:
Mumumu 2024-06-25 21:34:06 +08:00 committed by GitHub
parent 978e79e12c
commit 0bd94fb993
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 2 additions and 2 deletions

View File

@ -468,7 +468,7 @@ _nft_object(){
#$3:object type (chain/set/map/flowtable/ct helper/counter/quota/meter)
#$4:include 'handle'?
local objects=( ${(f)"$(_call_program -p objects nft -a list table $1 $2 2>/dev/null\
| grep ""\\s\*$3"" | sed 's/\s*'"$3"' // ;s/ { # \(.*\)/:(\1)/' )"} )
| grep ""\^\\s\*$3"" | sed 's/\s*'"$3"' // ;s/ { # \(.*\)/:(\1)/' )"} )
if $4 ;then
objects+=( "handle:address $3 by handle")
fi
@ -481,7 +481,7 @@ _nft_object_handle(){
#$2:table
#$3:object type (chain/set/ct helper/counter/quota)
local handles=( ${(f)"$(_call_program -p handles nft -a list table $1 $2 2>/dev/null\
| grep ""\\s\*$3"" | sed 's/\s*'"$3"' // ;s/ { # handle// ;s/\(\S*\) \(\S*\)/\2:\1/' )"} )
| grep ""\^\\s\*$3"" | sed 's/\s*'"$3"' // ;s/ { # handle// ;s/\(\S*\) \(\S*\)/\2:\1/' )"} )
_describe -t handles "$3-handle" handles
}