package edit

import (
	
	
	
	
)

func ( *Editor,  eval.NsBuilder) {
	.AddGoFns("<edit>:", map[string]interface{}{
		"add-var":  addVar,
		"add-vars": addVars,
	})
}

//elvdoc:fn add-var
//
// ```elvish
// edit:add-var $name $value
// ```
//
// Declares a new variable in the REPL. The new variable becomes available
// during the next REPL cycle.
//
// Equivalent to running `var $name = $value` at the REPL, but `$name` can be
// dynamic.
//
// Example:
//
// ```elvish-transcript
// ~> edit:add-var foo bar
// ~> put $foo
// ▶ bar
// ```

func ( *eval.Frame,  string,  interface{}) error {
	if !eval.IsUnqualified() {
		return errs.BadValue{
			What:  "name argument to edit:add-var",
			Valid: "unqualified variable name", Actual: }
	}
	 := eval.MakeVarFromName()
	 := .Set()
	if  != nil {
		return 
	}
	.Evaler.AddGlobal(eval.NsBuilder{: vars.FromInit()}.Ns())
	return nil
}

//elvdoc:fn add-vars
//
// ```elvish
// edit:add-vars $map
// ```
//
// Takes a map from strings to arbitrary values. Equivalent to calling
// `edit:add-var` for each key-value pair in the map.

func ( *eval.Frame,  vals.Map) error {
	 := eval.NsBuilder{}
	for  := .Iterator(); .HasElem(); .Next() {
		,  := .Elem()
		,  := .(string)
		if ! {
			return errs.BadValue{
				What:  "key of argument to edit:add-vars",
				Valid: "string", Actual: vals.Kind()}
		}
		if !eval.IsUnqualified() {
			return errs.BadValue{
				What:  "key of argument to edit:add-vars",
				Valid: "unqualified variable name", Actual: }
		}
		 := eval.MakeVarFromName()
		 := .Set()
		if  != nil {
			return 
		}
		[] = 
	}
	.Evaler.AddGlobal(.Ns())
	return nil
}