雑文発散

«前の日記(2016-12-25) 最新 次の日記(2016-12-27)» 編集
過去の日記

2016-12-26 [長年日記]

[Emacs] Emacs 26 で SDIC が動かなくなったのでワークアラウンドな対応をした

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 して修正するのが良さそうかな。