我想检查 a 是否(forward-sexp 1)
成功,或以错误结束。问题是它返回 nil,即使它已经成功。如何进行此项检查?
问问题
319 次
3 回答
8
试试scan-sexps
吧。它是背后的主力,forward-sexp
并返回一个有意义的值。
当然,如果括号不平衡,那么你会得到一个错误 - 所以你需要ignore-errors
or condition-case
。
于 2013-02-26T00:45:24.263 回答
5
forward-sexp
如果它不能向前移动点,则发出错误信号。condition-case
如果你愿意,你可以抓住这个。这是一个测试它的示例命令:
(defun test-forward-sexp ()
"simple command testing (forward-sexp 1)"
(interactive)
(condition-case nil
(progn
(forward-sexp 1)
(message "succeeded"))
(error (message "failed"))))
您可以在信息页面Writing Code to Handle Errors上阅读有关处理错误的更多信息。
于 2013-02-26T02:53:44.273 回答
3
forward-sexp
如果出现错误,则不返回 nil (实际上在这种情况下,它不返回任何内容;而是发出错误信号)。
于 2013-02-26T02:23:20.010 回答