2013-07-18 1 views
9

私はコンスセルのためのElisp destructuring-bind?

(destructuring-bind (start end) (bounds-of-thing-at-point 'symbol)) 

をしたい。しかしbounds-of-thing-at-pointコンスセルとないリストを返すので、 destructuring-bindが動作しないと思います。 このケースではどのようなことができますか?

+2

'使用すると思います(非構造バインドを(開始。最後に)(短所 'X' y)は(メッセージ "%sの%sは"))'私のために動作します。 Emacsのどのバージョンですか? –

+0

完全に動作します。@ wvxvw。ドットを使うことを考えなかった。しかし、ドキュメンテーションはあまり有益ではなかった。私が受け入れることができるように答えを投稿できますか? –

答えて

17

destructuring-bindclパッケージからマクロなので、より多くの例については、Common Lispのドキュメントを検討する価値があるかもしれません。

This pageは、マクロの構文を示しています。 (wholevar reqvars optvars . var)に注意してください。確かに私は確信していませんclバージョンdestructuring-bindは、あまり一般的でないすべてのケースを実際にサポートしています(多くのキーワードはCommon Lispのマクロ/関数で使用すると意味がありますが、Emacs Lispではその意味はありません)。したがって

(destructuring-bind (start . end) (bounds-of-thing-at-point 'symbol) ;...) 

が動作するはずです。

2

Iは、非構造-バインドのようにエレガントなものに考えることはできませんが、これは動作します:

(let* ((b (bounds-of-thing-at-point 'symbol)) 
     (start (car b)) 
     (end (cdr b))) 
    ...) 
+0

あなたは 'b'に境界を保存してから' x'からそれらにアクセスしようとしました。 – Tyler

+1

修正済み!それを指摘してくれてありがとう(とにかく、wvxvwの答えはabo-aboがやろうとしていたことを具体的に扱うので、より良いです) – juanleon

3

私は

(pcase-let ((`(,start . ,end) (bounds-of-thing-at-point 'symbol))) 
    ...) 
関連する問題