Emacsのdocker.elでイメージ名が見切れてしまうのを解決
問題
EmacsのDocker関連パッケージまとめ - ncaq で書いたように、 Emacsには良いDockerクライアントがあるのですが、問題があります。
その問題はイメージ名の表示が短いため、 AWSにpushしたイメージなどが全く見分けられないことです。

他の設定を参考にして解決はしますが
レイアウトを定義しているのはtabulated-list
なので他で弄ってる所を参考にすれば問題なさそうですね。
(leaf tabulated-list
:config
;; パッケージの名前などの幅を大きくとる
(define-derived-mode package-menu-mode tabulated-list-mode "Package Menu"
"Major mode for browsing a list of packages.
Letters do not insert themselves; instead, they are commands.
\\<package-menu-mode-map>
\\{package-menu-mode-map}"
(setq tabulated-list-format
[("Package" 35 package-menu--name-predicate)
("Version" 15 package-menu--version-predicate)
("Status" 10 package-menu--status-predicate)
("Description" 10 package-menu--description-predicate)])
(setq tabulated-list-padding 1)
(setq tabulated-list-sort-key (cons "Status" nil))
(tabulated-list-init-header)))
モンキーパッチやめよう
待てよこれよく見たらモンキーパッチでは?
私のEmacsに起きてた怪現象であるパッケージリストを2回開かないとパッケージ更新が受け取れない問題って、このモンキーパッチが原因なのでは?
削除してみよう。解決しました。
hookで変更して解決
元の変数がカスタム不能になっているのでモンキーパッチをやめて解決する方法はhookでいじることですね。
しかし、
tabulated-list-format
は
[("Package" 20 package-menu--name-predicate)
("Version" 13 package-menu--version-predicate)
("Status" 10 package-menu--status-predicate)
("Archive" 10 package-menu--archive-predicate)
("Description" 0 package-menu--description-predicate)]
のようなデータ構造になっていますが適当に弄って良いものなのでしょうか。
専用の変更する関数がありそう? なかったっぽいです。
既存の変更しているコードを参考にしてみましょう。
(defun tabulated-list-widen-current-column (&optional n)
"Widen the current tabulated-list column by N chars.
Interactively, N is the prefix numeric argument, and defaults to
1."
(interactive "p")
(let ((start (current-column))
(nb-cols (length tabulated-list-format))
(col-nb 0)
(total-width 0)
(found nil)
col-width)
(while (and (not found)
(< col-nb nb-cols))
(if (> start
(setq total-width
(+ total-width
(setq col-width
(cadr (aref tabulated-list-format
col-nb))))))
(setq col-nb (1+ col-nb))
(setq found t)
(setf (cadr (aref tabulated-list-format col-nb))
(max 1 (+ col-width n)))
(tabulated-list-print t)
(tabulated-list-init-header)))))
うおお何だこの超手続き的なコードは。
重要な部分だけ取り出すと、
(setf (cadr (aref tabulated-list-format col-nb))
(max 1 (+ col-width n)))
ですね。
なので、
(leaf docker
:ensure t
:custom (docker-container-shell-file-name . "/bin/bash")
:init
(defun docker-image-mode-setup ()
"イメージ名の幅を広く取ります。"
(setf (cadr (aref tabulated-list-format 0)) 100))
:hook
(docker-image-mode-hook . docker-image-mode-setup))
で解決しました。実行中ならリフレッシュとかが必要なのかもしれませんが、描画前なので雑代入でも問題ないのでしょう。
ついでにpackage.elで起きてた問題も解決。