
2026/07/03 6:50
シンプルで美しい Emacs モデルライン:modusregel
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
modusregel パッケージは、GUI とターミナル環境の両方で一貫した動作を提供する、清潔でカスタマイズ可能且つエレガントな Emacs モードラインを備えています。完全に純粋な Emacs Lisp で書かれており外部依存関係を持たず、軽量かつ高速です。ミニマリストなユニコード象徴(例:バッファの開始を示す 𝝺、保存されていない変更を示す ●、読み取り専用を示す ☡)を使用してユーザインタフェースを統一しています。主要機能には、Tree-Sitter によるスマートなメジャーモードマップリングが含まれ、これはモード名を整飾します(例:rust-ts-mode → Rust)。Eglot と Flymake のノイズの少ないインジケーターを提供し、LSP サポートを含む開発ヘルパーとの深層統合も実装されています。インストールには、パッケージが MELPA や ELPA に利用可能になるまで
elpaca が必要です。著者の公開リポジトリには設定例およびフック(after-change-major-mode-hook を含む)が含まれています。また、コマンドラインにキーを追加するために keycast とのオプションな統合もサポートされています。プロジェクトはコードに対して GNU GPL v3(以降)とドキュメントに対して GNU FDL v1.3(以降)のライセンスを採用し、jointhefreeworld AI ポリシー(自律的な AI エージェントによる Pull Request の作成または提出なし)に従い、包含性を促進する行動規範を遵守しています。寄稿は電子メール(jjbigorra@gmail.com)または lucidplan.jointhefreeworld.org の Backlog/Kanban ボードを通じて歓迎されています。本文
Modusregel パッケージ
Modusregel(オランダ語:モードライン)は、Emacs のステータスバー(モードライン)に、カスタマイズ性、美しさ、パフォーマンスを最優先して設計されたクリーンでシンプルかつエレガントなインターフェースを提供するパッケージです。
- 完全互換性: Emacs グラフィカル・インターフェース(GUI)およびターミナル・ユーザ・インターフェース(TUI)の両方に対応。
- 依存関係なし: 外部ライブラリを必要とせず、純粋な Emacs Lisp で軽量かつ高速に動作します。
🚀 メイン機能
- Tree-Sitter スマート メジャー
- メジャーモード名を整列させ、
付きのバリエーション(例:-ts-mode
)を自動検出・整形します。rust-ts-mode
- メジャーモード名を整列させ、
- LSP と Flymake への対応
- Eglot および Flymake の状態を示すインジケーターを内蔵し、画面 clutter なさを維持しています。
- TUI/GUI 対応
- ターミナル上でもグラフィカル上でも、シャープで揃った外観を保つよう設計されています。
支援のお願い この作品がお好きの場合は、一杯のコーヒーを買っていただくことで支援が受けられます☕。ご支援により、より多くのご機嫌に合わせて開発を継続しやすくなります。
📸 スクリーンショットと記号体系
Modusregel は、ミニマルなユニコード記号を使用して、界面を清潔に保ちつつ深い情報を伝達します。
| 記号 | 変数名 | 説明 |
|---|---|---|
| 𝝺 | | ランダ: Emacs の系譜を称えるため、最左端に配置されます。 |
| ● | | 未保存変更: バッファが書き込まれたまま保存されていない場合にのみ表示。 |
| ☡ | | 読み取り専用: 書き込み保護バッファの場合にのみ表示。 |
| ☍ | | リモート接続: TRAMP など経由の遠隔ファイル上工作时に表示。 |
| 𝌤 | | LSP 有効化: Eglot ランゲージサーバーがセッションを管理している場合。 |
注意: Modusregel は標準的なモードラインを置換する仕様です。他モデルパッケージとの併用にはカスタム設定が必要になる場合があります。
🛠 インストールと設定
MELPA や ELPA 等には現在対応していません。Elpaca を使用したインストールが推奨されます。
基本設定例
(use-package modusregel :ensure (:host codeberg :repo "jjba23/modusregel" :branch "trunk") :demand t)
mode-line-format の設定について
mode-line-format はウィンドウ局所変数です。
- 一時的な調整(実験用):
を使用します。setq - グローバルな適用(変更維持用):
を使用します。setq-default
ウィンドウ単体での設定
(setq mode-line-format modusregel-format)
グローバルでの設定
(setq-default mode-line-format modusregel-format)
Emacs コア内部の modeline を確保する必要がある場合は、以下のようにカスタム関数を定義します。
高度な制御によるカスタマイズ
以下の例では、
my-set-custom-modeline 関数を作成し、必要に応じて各要素をリストに追加しています。
(defun my-set-custom-modeline () "modusregel を使用してモードライン形式をカスタマイズします。" (setq mode-line-format (list modusregel-leading-str modusregel-remote-expr modusregel-buffer-name-expr modusregel-buffer-modified-str modusregel-buffer-read-only-str ;; スペース modusregel-spacer-str ;; 上記で nyan-mode が有効な場合、コメントを外す ;; modusregel-nyan-expr modusregel-spacer-str modusregel-line-number-str modusregel-column-number-str modusregel-spacer-str modusregel-buffer-position-str modusregel-spacer-str modusregel-vc-expr modusregel-major-mode-expr modusregel-eglot-expr modusregel-spacer-str modusregel-flymake-expr (ignore-errors keycast-mode-line)))) (add-hook 'after-change-major-mode-hook #'my-set-custom-modeline)
重要: 上記のようなカスタムリストを作成する際、最後に
ではなく、作成したリスト関数をmodusregel-formatに渡すことを忘れないでください。setq-default
⚖️ ライセンス
- ソースコード: GNU General Public License v3.0 (または互換性のある更新版)
- ドキュメント・例示(本記事含む): GNU Free Documentation License v1.3 (または互換性のある更新版)
🤖 AI ポリシーと行動規範
本プロジェクトは jointhefreeworld のポリシーおよび行動規範に準拠しています。
核心的な原理
AI は人間の創造性と問題解決を支援するものであり、決して人間のプロセスを置き換えるものではありません。
- 適度な使用: LLM やチャットボットはレビューやリファクタリングの助成には有用ですが、過信は禁物です。
- 人間の介入必須: 全ての貢献において人間による確認が必要です。
- 禁止事項: このプロジェクトへの自動生成コードやプルリクエストの提出に対する自律的な AI エージェントの使用は厳しく禁止されています。
コミュニティへのメッセージ
私たちは包摂的で尊重し合う協力的な環境を育むことを目指します。自由、平等、コミュニティを指針として、互いに尊重し合うことで優れたフリーソフトウェアを作成することを信念としています。
💬 貢献と連絡先
フリーソフトウェアへの貢献は「寛大さ、協力、エンパワーメント」の体現であり、美しい行為です。
- 参加方法: 改善提案、ブレインストーミング、モジュール化の工夫などを歓迎します。
- 連絡先: チャット、議論、フィードバックについては
までご連絡ください。jjbigorra@gmail.com - タスク管理: Backlog と Kanban ボード を参照してください。
🔗 Keycast との連携例
Keycast モードライン機能と併用する設定例です。
(use-package keycast :ensure t :hook (after-init . keycast-mode) :config (define-minor-mode keycast-mode "モードラインに現在のコマンドとそのキーバインディングを表示します。" :global t (if keycast-mode (add-hook 'pre-command-hook 'keycast--update t) (remove-hook 'pre-command-hook 'keycast--update)))) (use-package modusregel :ensure (:host codeberg :repo "jjba23/modusregel" :branch "trunk") :after (keycast) :config ;; Keycast の表示をモードラインに追加 (add-to-list 'modusregel-format '("" keycast-mode-line)) (setq-default mode-line-format modusregel-format))
さらに Nyan Cat やその他の機能を活用した設定例については、以下のリポジトリをご覧ください。 https://codeberg.org/jjba23/heks-emacs/src/branch/trunk/src/modules/emacs-core.el