Emacs の正規表現による空白文字の謎。

GNU Emacs Lisp Reference Manual - 正規表現のシンタックス によると、空白文字を表すのは、\s ではなく、\s- となっています。
実際に、C-u C-s による Regex I-search を使ってみると、確かに \S- で、空白文字にマッチします。
しかし、

(defun skip-white-forward ()
  (skip-chars-forward "\s-" ))

のように、行頭から空白文字をスキップしてくれるよう関数を定義して、評価すると、

Debugger entered--Lisp error: (error "Invalid modifier in string")

の様にエラーとなってしまいます。\s- がいかんみたいです。どうしたもんかと正規表現について調べていたら、便利なツール Emacs らくらく入門 /syntax-classによると、\s の後には構文クラス(シンタックスクラス)がくっついて、小文字のs であれば、そのクラスの属する文字に一致、大文字のS であれば、そのクラスに属さない文字に一致、というわけらしいです。
このページにある、表がとても分かりやすいですね。

正規表現 構文種別 その種別に属する文字
\sc の例 c の意味 具体的文字
\s- 空白文字 スペース、タブ
\s (空白) 空白文字 スペース、タブ
\sw (英)単語を作る文字 A-Za-z0-9
\s_ シンボルを作る文字 上記 と $&*+-_<> の文字

んで、先ほどのskip-white-forward() ですが、

(defun skip-white-forward ()
  (skip-chars-forward "\s " ))

"\s "にすると、正しく評価されるようになりました。
結局、\s- だとなぜエラーなのかは分かりませんが、上手くいったので、今日は勘弁しておくことにします。
ちなみに、この関数は xyzzy の組込み関数だったりします。skip-white-forward - refwiki
xyzzy の便利関数をパッケージにした xyzzy.el とかいう cl.el みたいな奴があってもいいんじゃないかなと思ったんですが、どうなんでしょうね。