@@ -639,6 +639,8 @@ function s:GoCompiler.compile_ternary(node)
639
639
let right = self .compile (a: node .right )
640
640
if cond = ~ ' ^node\.rlist\[\d\]' && left == ' "nil"'
641
641
return printf (' func() string { if %s {return %s} else {return %s.(string)} }()' , cond, left , right )
642
+ elseif cond = ~ ' ^viml_empty' && left == ' "(list)"'
643
+ return printf (' func() string { if %s {return %s} else {return %s} }()' , cond, left , right )
642
644
elseif cond == ' is_litdict'
643
645
return printf (' func() *VimNode { if %s {return %s} else {return %s} }()' , cond, left , right )
644
646
else
@@ -838,7 +840,6 @@ function s:GoCompiler.compile_call(node)
838
840
let rlist = map (a: node .rlist, ' self.compile(v:val)' )
839
841
let left = self .compile (a: node .left )
840
842
if left == ' map' && len (rlist) == 2 && rlist[1 ] == ' "self.compile(v:val)"'
841
- " throw 'NotImplemented: map()'
842
843
return printf (join ([
843
844
\ ' func() []string {' ,
844
845
\ ' var ss []string' ,
@@ -848,6 +849,16 @@ function s:GoCompiler.compile_call(node)
848
849
\ ' return ss' ,
849
850
\ ' }()' ,
850
851
\ ], " ;" ), rlist[0 ], substitute (rlist[1 ][1 :-2 ], ' v:val' , ' vval' , ' g' ))
852
+ elseif left == ' map' && len (rlist) == 2 && rlist[1 ] == ' "self.escape_string(v:val.value)"'
853
+ return printf (join ([
854
+ \ ' func() []string {' ,
855
+ \ ' var ss []string' ,
856
+ \ ' for _, vval := range %s {' ,
857
+ \ ' ss = append(ss, %s)' ,
858
+ \ ' }' ,
859
+ \ ' return ss' ,
860
+ \ ' }()' ,
861
+ \ ], " ;" ), rlist[0 ], substitute (rlist[1 ][1 :-2 ], ' v:val\.value' , ' vval.value.(string)' , ' g' ))
851
862
elseif left == ' call' && rlist[0 ][0 ] = ~ ' ['' "]'
852
863
return printf (' viml_%s(*%s)' , rlist[0 ][1 :-2 ], rlist[1 ])
853
864
elseif left = ~ ' ExArg'
0 commit comments