試しに M-x yascroll:show-scroll-bar を実行してみると:
Wrong number of arguments: (left-width right-width outside-margins), 4なるerror messageが返って来る。どうやらEmacs側の仕様変更があった模様。
git logで調べてみるとこれだった:
commit 8e0ebb9a3cb9beef2f5ff50436fef1c54a3e3c92src/window.cに含まれるwindow-fringesというCで書かれたfunctionは、これまで指定された (Emacsにおける) windowのleft-widgh, right-width, outside-marginsの3つのparametersを返していた。
Author: Martin Rudalics <rudalics@gmx.at>
Date: Mon Jul 22 09:19:18 2019 +0200
Handle persistence of windows' scroll bar and fringes settings (Bug#36193)
このcommitで加えられた変更により、新たに4つ目のpersistentというparameterが追加された。これがyascrollの側でparametersの数が合わないというerrorの原因となっていた。
なお、window-fringesの詳細はEmacsからF1 helpで参照できる:
window-fringes is a built-in function in ‘C source code’.
(window-fringes &optional WINDOW)
Probably introduced at or before Emacs version 22.1.
This function does not change global state, including the match data.
Return fringe settings for specified WINDOW.
WINDOW must be a live window and defaults to the selected one.
Value is a list of the form (LEFT-WIDTH RIGHT-WIDTH OUTSIDE-MARGINS
PERSISTENT), see ‘set-window-fringes’.
さて、実際にerrorを起こしていたのはyascroll.el内に定義されたyascroll:choose-scroll-barである:
(defun yascroll:choose-scroll-bar ()left-width, right-width, outside-marginesの3つがcl-destructuring-bindに指定されているため、新たに4つ目のpersistentを返すようになったwindow-fringesと不整合を起こした。
(when (memq window-system yascroll:enabled-window-systems)
(cl-destructuring-bind (left-width right-width outside-margins)
(window-fringes)
(cl-loop for scroll-bar in (yascroll:listify yascroll:scroll-bar)
if (or (eq scroll-bar 'text-area)
(and (eq scroll-bar 'left-fringe)
(> left-width 0))
(and (eq scroll-bar 'right-fringe)
(> right-width 0)))
return scroll-bar))))
解決方法は簡単で、
(cl-destructuring-bind (left-width right-width outside-margins persistent)のように適当な名前のvariableを追加すれば良い (なお、このvariableは使われない)。
fileを修正したら、M-x byte-recompile-fileなどでyascroll.elcを再生成し、el-get-reload (他お好みのpackage management systemの作法)でyascrollをreloadする。
0 件のコメント:
コメントを投稿