Emacs 26 で SDIC を使おうとしたら、Symbol's value as variable is void: default-fill-column
というエラーが出て使えなかった。Emacs 25.1 までは使えていたのに。
このパターンの場合、バージョンアップに伴って何かが変わった可能性が高いので、Emacs の etc/NEWS ファイルを眺めて見ると良い。
default-fill-column
というワードで検索してみると、すぐに見つかった。どうやら Emacs 26 では、default-fill-column
など default-*
の変数がごっそり無くなるようだ。
*** All the default-FOO variables that hold the default value of the FOO variable. Use 'default-value' and 'setq-default' to access and change FOO, respectively. The exhaustive list of removed variables is:
'default-mode-line-format', 'default-header-line-format',
'default-line-spacing', 'default-abbrev-mode', 'default-ctl-arrow',
'default-truncate-lines', 'default-left-margin', 'default-tab-width',
'default-case-fold-search', 'default-left-margin-width',
'default-right-margin-width', 'default-left-fringe-width',
'default-right-fringe-width', 'default-fringes-outside-margins',
'default-scroll-bar-width', 'default-vertical-scroll-bar',
'default-indicate-empty-lines', 'default-indicate-buffer-boundaries',
'default-fringe-indicator-alist', 'default-fringe-cursor-alist',
'default-scroll-up-aggressively', 'default-scroll-down-aggressively',
'default-fill-column', 'default-cursor-type',
'default-cursor-in-non-selected-windows',
'default-buffer-file-coding-system', 'default-major-mode', and
'default-enable-multibyte-characters'.
SDIC では、初期化部分で default-fill-column
を利用している。
(defvar sdic-fill-column default-fill-column "*Right edge of contents.
説明文を整形する幅")
ということで、Emacs 26 の場合は、自前で default-fill-column
を定義してしまうというワークアラウンドで回避してみた。
(if (string-match "26" emacs-version)
(setq default-fill-column (default-value 'fill-column)))
本当は、SDIC 側にこの修正を入れるのがスジだと思う。本家の開発は10年以上前にストップしているので、fork して修正するのが良さそうかな。