友だち、今日は、お気に入りのテキストエディタ用にモジュール式でポータブルでスケーラブルな構成を作成するというアイデアの実装を皆さんと共有したいと思います。

もう一度設定しますか?
パニックなしで、すべてがうまく機能していれば、何も変更する必要はありません。 以下のリストから何かがほこりっぽいtudu-listで長い間苦しんでいるが、いつものように袖をまく十分な時間がないなら、あなたは見てみることに興味があるでしょう。
ECFGが提供するもの:
- gitリポジトリー内の構成全体のストレージ。
- 最初の起動時に、ネットワーク経由ですべてのサードパーティパッケージの最新バージョンを自動的にダウンロードします。
- エディターのダウンロード速度の最適化:プラグインは、使用時にのみ自動的にロードされます。
- 軽量フレームワークは、実際には構成コードに干渉しないため、ネットワークで見つかったスニペットを含めることができ、上記のすべての利点を活用できます。
- 構成の追加または変更は簡単で直感的です-elisp-kung-fuのすべてを忘れる時間があったとしても(著者は繰り返し確認しました)
ソースコードはgithub:
github.com/maslennikov/emacs-configで公開されています。
Emacsの構成。 開始する
約7年前にEmacsテキストエディターの使用を開始しました。 初め
は、設定によってネットワーク上で見つかったすべてのレシピが
〜/ .emacsにまとめられている
という言葉でした 。
経験とさまざまなウィッシュリストの蓄積により、ますます多くのプラグインが
〜/ .emacs.d /に移動し始めました。 ただし、これはすべて、より多くのボンディングロジックと依存関係管理を必要とし、1つの
〜/ .emacsでは明らかに不十分でした。
時間が経つにつれて、初期化コードは別々のモジュールに分割され、かなり長い間
〜/ .emacs.d /これらのモジュールとプラグインがインターネットから手動で組み立てられ、Dropboxを介してすべてのワークステーションと同期されました。
この期間中、プラグインのバージョン管理の問題を強く感じ始めました。 同じ頃、
package.elの人気が高まり始め、パッケージのインストールを自動的に制御するという考えはもはや理想的ではないように思われました。 プラグインのインストールを自動化するもう1つの理由は、Dropboxを介した単純な同期からGitHubの完全なリポジトリに切り替えることでした。私のドロップボックス。 原則として、ダウンロードされ管理されていないソースとバイナリプラグインファイルをgithubに保存したくありませんでした。
転換点は、
Oh My Emacs構成フレームワークを発見したときでした。これは、私のすべてのニーズにほぼ完璧なソリューションでした。 一点を除いて:彼は遅かった。 とても。 これが
ECFGプロジェクトの作成の推進力でした。
設置
現在、
ECFGは 〜/ .emacsまたは
〜/ .emacs.d /を使用して
いません。 これは、エディタまたは接続されたプラグインによるライブラリの自動変更の可能性を排除するために意図的に行われました。 一方、さまざまなモジュールのすべてのアーティファクト(recentf履歴ファイルなど)は
〜/ .emacs.dで元の場所を見つけ、各ユーザーに固有の設定(custom-set-variablesなど)を自由に配置できます。
〜/ .emacsで 。
user-emacs-directory変数と
custom-file変数のヘルプで、このプロセスをより細かく制御するための情報を見つけることができます。
ECFGをインストールするには、リポジトリのコピーをワークステーションの任意のディレクトリに保存します。
git clone https://github.com/maslennikov/emacs-config.git ~/.emacs.config
EFGにECFGをロードする方法を教えるには、
〜/ .emacsに次の行を置くだけです
そしてそれだけです。 最初の起動時に、ネットワークからダウンロードし、構成で使用されるすべてのプラグインを構成するのに時間がかかる場合があります。
仕組み
〜/ .emacsに示されているように、
ECFGのエントリポイントは
init.elファイルで、他のすべてのモジュールのロードシーケンスを制御します。
構成ファイル(それが何であったか)は、2つのディレクトリにグループ化されます。
- init.d:ファイルのタイプや現在のバッファーのモードに関係なく、エディターの基本構成が含まれています。
- モジュール:特定のタイプのファイルまたはモードに適用可能な構成が含まれています。
init.d /ディレクトリからの基本設定は、エディターの起動中に同期してロードされます。このため、このコードの実行速度の最適化に特別な注意が払われました(プラグインの最適化に関する詳細情報は
こちらにあります )。
モジュールディレクトリからのメインモードの構成は、自動ロードメカニズムを使用したモジュールの遅延ロードを準備し
ます 。 これを行うには、モジュールファイルで初期化関数を
ecfg-NAME-module-initという名前で
定義し、
ecfg-auto-moduleマクロを使用して登録し
ます 。 たとえば、
cmakeモードを構成するための新しいモジュールの接続は次のとおりです。
この場合、モジュールのロードと初期化は、
CMakeListsという名前のファイルを開くときにのみ実行されます。その他の場合、このファイルのコードはロードされません。
プロジェクトリポジトリページで、より詳細で常に最新の情報を見つけることができます。また、コメントで質問に対する回答を喜んで提供します。