I'd like to do
(destructuring-bind (start end) (bounds-of-thing-at-point 'symbol))
But bounds-of-thing-at-point
returns a cons cell and not a list, so
destructuring-bind
doesn't work.
What could work for this case?
由于destructuring-bind
是cl
包中的宏,因此可能值得查看 Common Lisp 文档以获取更多示例。
此页面显示宏的语法。注意(wholevar reqvars optvars . var)
. 虽然我不确定cl
版本是否destructuring-bind
真的支持所有不太常见的情况(许多关键字仅在与 Common Lisp 宏/函数一起使用时才有意义,但在 Emacs Lisp 中没有这种含义)。
因此:
(destructuring-bind (start . end) (bounds-of-thing-at-point 'symbol) ;...)
应该管用。
我会用
(pcase-let ((`(,start . ,end) (bounds-of-thing-at-point 'symbol)))
...)
我想不出像解构绑定这样优雅的东西,但这会起作用:
(let* ((b (bounds-of-thing-at-point 'symbol))
(start (car b))
(end (cdr b)))
...)
现在我们可以-let
在 dash.el中使用。就像pcase-let
,只是更干净一点:
(-let (((start . end) (bounds-of-thing-at-point 'symbol)))
...)