今更 string-to-int が廃止されていた事を知った
emacsを25から26へVersion upし、起動したら、以下のエラーが出力された。
Symbol's function definition is void: string-to-int
エラーの発生箇所は自分で書いた init.el っぽい。で、エラーになった init.el を確認したところ
(>= (string-to-int emacs-version) 21)
う~む。string-to-int 関数は emacs26で廃止されたようだ。どうでも、良いけど、emacsのVersionによって処理を分岐させていたんだね。
閑話休題
emacs25で
(describe-function 'string-to-int) してみたら
string-to-int is an alias for ‘string-to-number’ in ‘subr.el’. (string-to-int STRING &optional BASE) This function is obsolete since 22.1; use ‘string-to-number’ instead.
なんと、22.1から string-to-number の alias だったらしい。そんなわけで、emacs25で確認したみたら…
(string-to-number "1.23") 1.23 (string-to-int "1.23") 1.23
なんと、全然 int になっていないし。っという事で、件のコードは単純に以下のコードに置き換える事ができる。
(>= (string-to-number emacs-version) 21)
そして、より正確に書くなら、小数点以下を切り捨てるように
(>= (floor (string-to-number emacs-version)) 21)
と書くべきか。上記の例の場合は結果は変らないけど。
(defun string-to-int (string &optional base) (floor (string-to-number string base)))
を定義しておこうかな。私は string-to-int を多用していたので。
Emacs26になって、少し速くなったような気がする。速くっていうより、固まらなくなったと言った方が正しいかな。