2

(forward-sexp 1)aが成功したか、エラーで終了したかを確認したいと思います。問題は、成功した場合でも nil を返すことです。このチェックを行う方法は?

4

3 に答える 3

8

scan-sexps代わりに試してください。これは主力製品でforward-sexpあり、意味のある値を返します。

もちろん、括弧のバランスが取れていないと、エラーが発生するため、ignore-errorsorが必要になります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"))))

エラー処理の詳細については、情報ページ エラーを処理するためのコードの記述 を参照してください。

于 2013-02-26T02:53:44.273 に答える
3

forward-sexpエラーが発生しても nil を返しません (実際には何も返さず、代わりにエラーを通知します)。

于 2013-02-26T02:23:20.010 に答える