Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pkg/edit/complete/complete_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func TestComplete(t *testing.T) {
return items
},
ArgGenerator: func(args []string) ([]RawItem, error) {
item := noQuoteItem(fmt.Sprintf("%#v", args))
item := NoQuoteItem(fmt.Sprintf("%#v", args))
return []RawItem{item}, nil
},
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/edit/complete/completers.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,10 +159,10 @@ func completeVariable(p np.Path, ev *eval.Evaler, cfg Config) (*context, []RawIt

var items []RawItem
eachVariableInNs(ev, p, ns, func(varname string) {
items = append(items, noQuoteItem(parse.QuoteVariableName(varname)))
items = append(items, NoQuoteItem(parse.QuoteVariableName(varname)))
})
if ns == "" {
items = append(items, noQuoteItem("e:"), noQuoteItem("E:"))
items = append(items, NoQuoteItem("e:"), NoQuoteItem("E:"))
}

return ctx, items, nil
Expand Down
4 changes: 2 additions & 2 deletions pkg/edit/complete/generators.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,15 @@ func generateArgs(args []string, ev *eval.Evaler, p np.Path, cfg Config) ([]RawI
ns, _ := eval.SplitIncompleteQNameNs(qname)
var items []RawItem
eachVariableInNs(ev, p, ns, func(varname string) {
items = append(items, noQuoteItem(sigil+parse.QuoteVariableName(ns+varname)))
items = append(items, NoQuoteItem(sigil+parse.QuoteVariableName(ns+varname)))
})
return items, nil
case "del":
// This partially duplicates eachVariableInNs with ns = "", but we don't
// offer builtin variables.
var items []RawItem
addItem := func(varname string) {
items = append(items, noQuoteItem(parse.QuoteVariableName(varname)))
items = append(items, NoQuoteItem(parse.QuoteVariableName(varname)))
}
ev.Global().IterateKeysString(addItem)
eachDefinedVariable(p[len(p)-1], p[0].Range().From, addItem)
Expand Down
12 changes: 7 additions & 5 deletions pkg/edit/complete/raw_item.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@ func (p PlainItem) Cook(q parse.PrimaryType) modes.CompletionItem {
return modes.CompletionItem{ToInsert: quoted, ToShow: ui.T(s)}
}

// noQuoteItem is a RawItem implementation that does not quote when cooked. This
// type is not exposed, since argument generators never need this.
type noQuoteItem string
// NoQuoteItem is a RawItem implementation that does not quote when cooked. The
// caller is responsible for pre-quoting the string (e.g. with
// parse.QuoteVariableName) so that it is valid in the context where it will be
// inserted.
type NoQuoteItem string

func (nq noQuoteItem) String() string { return string(nq) }
func (nq NoQuoteItem) String() string { return string(nq) }

func (nq noQuoteItem) Cook(parse.PrimaryType) modes.CompletionItem {
func (nq NoQuoteItem) Cook(parse.PrimaryType) modes.CompletionItem {
s := string(nq)
return modes.CompletionItem{ToInsert: s, ToShow: ui.T(s)}
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/edit/completion.go
Original file line number Diff line number Diff line change
Expand Up @@ -552,11 +552,11 @@ func adaptVariableGenerator(ev *eval.Evaler, v any) complete.VariableGenerator {
for v := range ch {
switch v := v.(type) {
case string:
collect(complete.PlainItem(v))
collect(complete.NoQuoteItem(parse.QuoteVariableName(v)))
case complexItem:
collect(complete.ComplexItem(v))
default:
collect(complete.PlainItem(vals.ToString(v)))
collect(complete.NoQuoteItem(parse.QuoteVariableName(vals.ToString(v))))
}
}
}
Expand All @@ -565,7 +565,7 @@ func adaptVariableGenerator(ev *eval.Evaler, v any) complete.VariableGenerator {
for {
line, err := buffered.ReadString('\n')
if line != "" {
collect(complete.PlainItem(strutil.ChopLineEnding(line)))
collect(complete.NoQuoteItem(parse.QuoteVariableName(strutil.ChopLineEnding(line))))
}
if err != nil {
break
Expand Down