ECFG:植栽〜/ .emacsダイエット

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



画像



もう一度設定しますか?



パニックなしで、すべてがうまく機能していれば、何も変更する必要はありません。 以下のリストから何かがほこりっぽいtudu-listで長い間苦しんでいるが、いつものように袖をまく十分な時間がないなら、あなたは見てみることに興味があるでしょう。 ECFGが提供するもの:





ソースコードは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に次の行を置くだけです

 ;; in case you use windows, teach it the utf8 (prefer-coding-system 'utf-8) (load-file "~/.emacs.config/init.el")
      
      





そしてそれだけです。 最初の起動時に、ネットワークからダウンロードし、構成で使用されるすべてのプラグインを構成するのに時間がかかる場合があります。



仕組み



〜/ .emacsに示されているように、 ECFGのエントリポイントはinit.elファイルで、他のすべてのモジュールのロードシーケンスを制御します。



構成ファイル(それが何であったか)は、2つのディレクトリにグループ化されます。





init.d /ディレクトリからの基本設定は、エディターの起動中に同期してロードされます。このため、このコードの実行速度の最適化に特別な注意が払われました(プラグインの最適化に関する詳細情報はこちらにあります )。



モジュールディレクトリからのメインモードの構成は、自動ロードメカニズムを使用したモジュールの遅延ロードを準備します 。 これを行うには、モジュールファイルで初期化関数をecfg-NAME-module-initという名前で定義し、 ecfg-auto-moduleマクロを使用して登録します 。 たとえば、 cmakeモードを構成するための新しいモジュールの接続は次のとおりです。

 ;;;###autoload (ecfg-auto-module "CMakeLists\\.txt$" cmake)
      
      





この場合、モジュールのロードと初期化は、 CMakeListsという名前のファイルを開くときにのみ実行されます。その他の場合、このファイルのコードはロードされません。





プロジェクトリポジトリページで、より詳細で常に最新の情報を見つけることができます。また、コメントで質問に対する回答を喜んで提供します。



All Articles