バックグラウンド:
訪問しているバッファーがインデントにタブまたはスペースを使用するかどうかについてユーザーに「ヒント」を与えるマイナーモードを作成しています(バッファー内の各行の最初の文字を調べるだけです)。追加する予定の機能には、モードラインの情報表示と、タブまたはスペース、タブ幅などの使用を切り替えるためのいくつかの機能が含まれます。
このマイナーモードの有用性についてはあまり心配していません。実際、これと同じことをする何かがまだそこにないのなら、私は驚きます。ほとんどの場合、これはマイナーモードを作成するための演習です。
質問:
マイナーモードを有効/無効にするときに、モードラインからテキストを挿入/削除するためのクリーンで邪魔にならない方法は何でしょうか?ユーザーが変更する必要はありません。mode-line-format
非破壊的にテキストを挿入および削除するだけです。現在、次のような関数を使用しています。
(defun update-indent-hints-mode-line (what-this-buffer-loves)
(let ((indent-hints-mode-line-text (concat " " "[" what-this-buffer-loves "-loving" "]"))
(my-mode-line-buffer-identification
(remq " [Tab-loving]" (remq " [Space-loving]" mode-line-buffer-identification))))
(setq mode-line-buffer-identification
(add-to-list 'my-mode-line-buffer-identification
indent-hints-mode-line-text
t))
(force-mode-line-update)))
正常に動作していますが、「[Tab-loving]」と「[Space-loving]」を検索して削除すると、かなりハックで醜いようです...よりクリーンな方法はありますか?
ボーナスポイント: 同じように謙虚なマイナーモードの謙虚な始まりについてのコメント: https ://github.com/mgalgs/indent-hints-mode/blob/master/indent-hints.el 私は明らかにelisp n00bです、しかし、私は学ぶためにここにいます。