首页 > 解决方案 > 如何设置 byte-recompile-directory 使用缓存目录?

问题描述

我使用 (byte-recompile-directory (expand-file-name "~/.emacs.d") 0) 生成 .elc 文件,它改善了 emacs 启动,但我想设置 byte-recompile-directory 使用一个缓存文件夹不会在同一个文件夹中生成.elc文件。我想知道我需要声明emacs使用缓存文件夹而不是el文件吗?emacs会自动加载这些·.elc·文件吗?像这样

├── core
│   ├── core-keybinds.el
│   ├── core-provider.el
│   └── core.el
├── early-init.el
├── init.el

但是当我使用 (byte-recompile-directory (expand-file-name "~/.emacs.d") 0)

├── core
│   ├── core-keybinds.el
│   ├── core-keybinds.elc
│   ├── core-provider.el
│   ├── core-provider.elc
│   └── core.el
│   ├── core.elc
├── early-init.el
|── early-init.elc
├── init.el
├── init.elc

也许最好的方式是这样

├── .cache
│   ├── core-keybinds.elc
│   ├── core-provider.elc
│   ├── core.elc
│   └── init.elc
│   └── early-init.elc
├── core
│   ├── core-keybinds.el
│   ├── core-provider.el
│   └── core.el
├── early-init.el
├── init.el

那么如何让emacs加载这些.elc文件......我是emacs的新手。所以需要帮助。

标签: emacscompilation

解决方案


您可以设置byte-compile-dest-file-function一个将文件放入缓存目录的函数:

(defun my-bytecomp-dest-file (source)
  (expand-file-name (file-name-nondirectory source) "~/.cache/"))

(setq byte-compile-dest-file-function 'my-bytecomp-dest-file)

您需要将缓存目录显式添加到加载路径.elc才能找到文件:

(add-to-list 'load-path "~/.cache/")

(require 'core)然后您可以使用例如或加载文件(load "core")


推荐阅读