From 294bf0d97ffd5053293f0c3e943ebae4d815b2a5 Mon Sep 17 00:00:00 2001 From: Hernawan Faiz Abdillah Date: Mon, 27 Apr 2026 12:52:07 +0700 Subject: [PATCH] completion/git: diff completion list modified files --- custom-completions/git/git-completions.nu | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/custom-completions/git/git-completions.nu b/custom-completions/git/git-completions.nu index 15566a5f..fefeb909 100644 --- a/custom-completions/git/git-completions.nu +++ b/custom-completions/git/git-completions.nu @@ -231,10 +231,11 @@ const short_status_descriptions = { "UU": "Both modified (in merge conflict)" } -def "nu-complete git files" [] { +def "nu-complete git files" [path?: string] { let relevant_statuses = ["?",".M", "MM", "MD", ".D", "UU"] - ^git status -uall --porcelain=2 + ^git status -uall --porcelain=2 (if ($path | describe) == 'string' and ($path | str length) != 0 { $"($path)" } else { "." } ) | lines + | first 300 # limit the number of data for performance | each { |$it| if $it starts-with "1 " { $it | parse --regex "1 (?P\\S+) (?:\\S+\\s?){6} (?P\\S+)" @@ -261,17 +262,22 @@ def "nu-complete git refs" [] { nu-complete git local branches | parse "{value}" | insert description Branch + | append (nu-complete git remotes | parse '{value}' | insert description 'Remote branch') | append (nu-complete git tags | parse "{value}" | insert description Tag) | append (nu-complete git built-in-refs) } def "nu-complete git files-or-refs" [] { - nu-complete git local branches - | parse "{value}" - | insert description Branch - | append (nu-complete git files | where description == "Modified" | select value) - | append (nu-complete git tags | parse "{value}" | insert description Tag) - | append (nu-complete git built-in-refs) + { + options: { sort: false }, + completions: ( + nu-complete git files | where description == "Modified" | select value description + | append (nu-complete git local branches | parse '{value}' | insert description 'Local branch') + | append (nu-complete git built-in-refs | parse '{value}' | insert description 'Built-in Refs') + | append (nu-complete git tags | parse '{value}' | insert description Tag) + | append (nu-complete git remotes | get 'value' | parse '{value}' | insert description 'Remote branch') + ) + } } def "nu-complete git aliases" [] {