helm により変数 gapdanselyloosely またはブランク "" を代入し,変数 typedotteddasheddash dot または dash dot dot を代入して,変数 gap がブランクでないときには gaptype の間に半角空白 " " を挟んで,ブランクのときには結果的に変数 type だけバッファにインサートする関数 helm-tikz-line-dash を作りたく思い次のようにしてみました.

(defun helm-tikz-line-dash ()
  (interactive)
  (let ((gap (helm :sources '(helm-tikz-line-dash-gap--source)
                   :buffer "*helm TikZ Dashline Gap*"))
        (type (helm :sources '(helm-tikz-line-dash-type--source)
                   :buffer "*helm TikZ Dashline Type*")))
       (insert (concat gap (if (> (length gap) 0) " ") type))))

(defvar helm-tikz-line-dash-gap--source
  (helm-build-sync-source "TikZ Dash Line Gap"
    :candidates '("densely" "loosely")
    :migemo t))

(defvar helm-tikz-line-dash-type--source
  (helm-build-sync-source "TikZ Dash Line Type"
    :candidates '("dotted" "dashed" "dash dot" "dash dot dot")
    :migemo t))

そしてこれらを評価し helm-tikz-line-dash を実行してみると,確かに Gap と Type は helm により聞いてくるのですがその選択結果は直接バッファに書き込まれ let における変数 gaptype はいずれもブランク "" になっているようです.
(これは if 文の第3引数に "?" を追加して ? が最後にバッファにインサートされることにより確認しました)

このコードを2変数 gaptype に helm から選択したアイテムを代入させるにはどのように修正したらよいのでしょうか?
よろしくお願いします.

helm-tikz-line-dash-gap--source において :candidates'("densely " "loosely ") に変更することによりこの場合は目的を達成できますが,helm を用いて変数に値を代入する方法が知りたいです.