13

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?

4

4 回答 4

25

由于destructuring-bindcl包中的宏,因此可能值得查看 Common Lisp 文档以获取更多示例。

此页面显示宏的语法。注意(wholevar reqvars optvars . var). 虽然我不确定cl版本是否destructuring-bind真的支持所有不太常见的情况(许多关键字仅在与 Common Lisp 宏/函数一起使用时才有意义,但在 Emacs Lisp 中没有这种含义)。

因此:

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

应该管用。

于 2013-07-18T11:20:40.353 回答
8

我会用

(pcase-let ((`(,start . ,end) (bounds-of-thing-at-point 'symbol)))
  ...)
于 2013-07-22T14:45:12.603 回答
3

我想不出像解构绑定这样优雅的东西,但这会起作用:

(let* ((b (bounds-of-thing-at-point 'symbol))
       (start (car b))
       (end   (cdr b)))
  ...)
于 2013-07-18T09:49:19.843 回答
0

现在我们可以-let在 dash.el中使用。就像pcase-let,只是更干净一点:

(-let (((start . end) (bounds-of-thing-at-point 'symbol)))
  ...)
于 2020-09-11T09:22:12.590 回答