Completion for kitty @ action

This commit is contained in:
Kovid Goyal 2024-02-10 14:01:45 +05:30
parent 54548931b5
commit 97e2d41233
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
3 changed files with 40 additions and 1 deletions

View File

@ -32,6 +32,7 @@
import kitty.constants as kc import kitty.constants as kc
from kittens.tui.operations import Mode from kittens.tui.operations import Mode
from kittens.tui.spinners import spinners from kittens.tui.spinners import spinners
from kitty.actions import get_all_actions
from kitty.cli import ( from kitty.cli import (
CompletionSpec, CompletionSpec,
GoOption, GoOption,
@ -688,6 +689,15 @@ def update_at_commands() -> None:
def update_completion() -> None: def update_completion() -> None:
with replace_if_needed('tools/cmd/completion/kitty_generated.go'): with replace_if_needed('tools/cmd/completion/kitty_generated.go'):
generate_completions_for_kitty() generate_completions_for_kitty()
with replace_if_needed('tools/cmd/at/kitty_actions_generated.go'):
print("package at")
print("const KittyActionNames = `", end='')
for grp, actions in get_all_actions().items():
for ac in actions:
print(ac.name)
print('`')
with replace_if_needed('tools/cmd/edit_in_kitty/launch_generated.go'): with replace_if_needed('tools/cmd/edit_in_kitty/launch_generated.go'):
print('package edit_in_kitty') print('package edit_in_kitty')
print('import "kitty/tools/cli"') print('import "kitty/tools/cli"')

View File

@ -51,7 +51,10 @@ class Action(RemoteCommand):
using this option means that you will not be notified of failures. using this option means that you will not be notified of failures.
''' + '\n\n' + MATCH_WINDOW_OPTION ''' + '\n\n' + MATCH_WINDOW_OPTION
args = RemoteCommand.Args(spec='ACTION [ARGS FOR ACTION...]', json_field='action', minimum_count=1) args = RemoteCommand.Args(
spec='ACTION [ARGS FOR ACTION...]', json_field='action', minimum_count=1,
completion=RemoteCommand.CompletionSpec.from_string('type:special group:complete_actions')
)
def message_to_kitty(self, global_opts: RCOptions, opts: 'CLIOptions', args: ArgsType) -> PayloadType: def message_to_kitty(self, global_opts: RCOptions, opts: 'CLIOptions', args: ArgsType) -> PayloadType:
return {'action': ' '.join(args), 'self': opts.self, 'match_window': opts.match} return {'action': ' '.join(args), 'self': opts.self, 'match_window': opts.match}

View File

@ -0,0 +1,26 @@
// License: GPLv3 Copyright: 2024, Kovid Goyal, <kovid at kovidgoyal.net>
package at
import (
"fmt"
"strings"
"kitty/tools/cli"
"kitty/tools/utils"
)
var _ = fmt.Print
func complete_actions(completions *cli.Completions, word string, arg_num int) {
if arg_num < 2 {
scanner := utils.NewLineScanner(KittyActionNames)
mg := completions.AddMatchGroup("Actions")
for scanner.Scan() {
line := strings.TrimSpace(scanner.Text())
if line != "" && strings.HasPrefix(line, word) {
mg.AddMatch(line)
}
}
}
}