.emacsを整理しておくようにしています。構成は常に進行中ですが、全体的な構造に満足し始めています。
すべてのものは~/.elisp、バージョン管理下にあるディレクトリの下にあります(興味がある場合は、gitを使用します)。 ~/.emacs単に~/.elisp/dotemacsそれ自体がロードするポイントを指します~/.elisp/cfg/init。そのファイルは、を介してさまざまな構成ファイルをインポートしますrequire。これは、構成ファイルがモードのように動作する必要があることを意味します。構成ファイルは、依存するものをインポートしprovide、ファイルの最後にそれ自体をインポートします(provide 'my-ibuffer-cfg)。構成で定義されているすべての識別子の前に。を付けmy-ます。
私は、技術的な意味ではなく、モード/サブジェクト/タスクに関して構成を整理します。たとえば、すべてのキーバインディングまたは面が定義されている個別の構成ファイルはありません。
私init.elは次のフックを定義して、保存するたびにEmacsが構成ファイルを再コンパイルするようにします(コンパイルされたElispの読み込みははるかに高速ですが、この手順を手動で実行したくありません)。
;; byte compile config file if changed
(add-hook 'after-save-hook
'(lambda ()
(when (string-match
(concat (expand-file-name "~/.elisp/cfg/") ".*\.el$")
buffer-file-name)
(byte-compile-file buffer-file-name))))
これは、次のディレクトリ構造です~/.elisp。
~/.elisp/todo.org:まだ実行する必要があることを追跡するOrg-modeファイル(+ウィッシュリストアイテム)。
~/.elisp/dotemacs:のシンボリックリンクターゲット~/.emacs、ロード~/.elisp/cfg/init。
~/.elisp/cfg:私自身の設定ファイル。
~/.elisp/modes:単一のファイルのみで構成されるモード。
~/.elisp/packages:Lisp、ドキュメント、そしておそらくリソースファイルを備えた洗練されたモード。
私はGNUEmacsを使用していますが、そのバージョンはパッケージを実際にはサポートしていません。したがって、私はそれらを手動で整理します。通常は次のよう
~/.elisp/packages/foobar-0.1.3になります。はパッケージのルートディレクトリです。サブディレクトリlispはすべてのlispファイルを保持しinfo、ドキュメントが置かれる場所です。 ~/.elisp/packages/foobarは、現在使用されているバージョンのパッケージを指すシンボリックリンクであるため、何かを更新するときに構成ファイルを変更する必要はありません。一部のパッケージでは~/.elisp/packages/foobar.installation、インストールプロセスに関するメモを保持するファイルを保持しています。パフォーマンス上の理由から、新しくインストールされたパッケージですべてのelispファイルをコンパイルしますが、デフォルトではそうではありません。