helm を用いて 変数に値を代入するには
helm により変数 gap
に dansely
,loosely
またはブランク ""
を代入し,変数 type
に dotted
,dashed
,dash dot
または dash dot dot
を代入して,変数 gap
がブランクでないときには gap
と type
の間に半角空白 " "
を挟んで,ブランクのときには結果的に変数 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
における変数 gap
,type
はいずれもブランク ""
になっているようです.
(これは if
文の第3引数に "?"
を追加して ? が最後にバッファにインサートされることにより確認しました)
このコードを2変数 gap
,type
に helm から選択したアイテムを代入させるにはどのように修正したらよいのでしょうか?
よろしくお願いします.
helm-tikz-line-dash-gap--source
において :candidates
を '("densely " "loosely ")
に変更することによりこの場合は目的を達成できますが,helm を用いて変数に値を代入する方法が知りたいです.