从 Jekyll 中排除 emacs 临时文件

Excluding emacs temporary files from Jekyll

Jekyll 似乎很乐意排除 emacs filename~filename.~n~ 备份文件,但我无法让它排除 #filename#.#filename#。虽然它们实际上并没有复制到已发布的站点,但当我在观看模式下编辑文件时,它们会不断触发文件重新生成。

我可以在 exclude 或其他设置中添加什么来阻止这种行为吗?

我试图弄清楚 # 是否是 Ruby 中的特殊字符 WRT 模式匹配,但我正在学习 Ruby,因为我学习 Jekyll 所以... ?作为一个随机的,也许它会工作尝试,\### 是没有帮助的。

因此,从 Emacs 方面,我修改了 auto-save-file-name-pmake-auto-save-file-name,在自动保存文件的末尾添加了一个 ~,所以它们现在是 #filename#~ 并且 Jekyll 愉快地忽略以 ~ 结尾的文件(参见:https://www.gnu.org/software/emacs/manual/html_node/elisp/Auto_002dSaving.html)。

最后我还关闭了创建 .#filename 文件的锁文件。

这是有效的,即使从 Jekyll 源端修复它可能会更好。

因此,如果这对您来说是个问题,请在您的 .emacs 中添加以下内容:

(defun auto-save-file-name-p (filename)
            "Return non-nil if FILENAME can be yielded by..."
            (string-match "^#.*#~$" filename))

(defun make-auto-save-file-name ()
            "Return file name to use for auto-saves \
          of current buffer.."
            (if buffer-file-name
                (concat
                 (file-name-directory buffer-file-name)
                 "#"
                 (file-name-nondirectory buffer-file-name)
                 "#~")
              (expand-file-name
               (concat "#%" (buffer-name) "#~"))))

(setq create-lockfiles nil)

我找到了一个“部分”解决方案,我遇到了类似的问题,因为我的备份文件名设置为 .~1 .~2 等(部分原因是它不适用于“include:”集中的“_redirects”等文件:我仍然在 _site

中得到一个“_redirects~”文件

尝试了 _config.yml 文件中的所有内容:

# exclude:
# - *~*
# - *.*~1
# - "_*~1"

none 有效,似乎禁止使用不受保护的通配符 * 开头,
直到我注意到“--verbose”记录中排除的文件有一个开始 / 即使对于子目录中的文件,这就是解决方案:在模式的开头使用 /。

有效的方法:

exclude:
 - /*#
 - /*~*