gpt4 book ai didi

emacs - 使用 Emacs 文件名补全优先选择某些文件扩展名

转载 作者:行者123 更新时间:2023-12-04 23:34:12 24 4
gpt4 key购买 nike

我有很多目录,里面装满了一堆 TeX 文档。因此,有许多文件具有相同的基本文件名和不同的扩展名。但是,其中只有一个是可编辑的。我想要一种方法来说服 Emacs,如果我在一个目录中

document.tex
document.log
document.pdf
document.bbl
document.aux
...

我在迷你缓冲区中并且做
~/Documents/.../doc<TAB>

它填写“document.tex”,因为这是该目录中唯一真正可正确编辑的文档。有人知道这样做的好方法吗?

最佳答案

我已经写了一些应该做你想做的代码。基本思想是设置变量'completion-ignored-extensions匹配要跳过的扩展名,但仅当存在 .tex 时文件存在。这段代码就是这样做的。

(defadvice find-file-read-args (around find-file-read-args-limit-choices activate)
"set some stuff up for controlling extensions when tab completing"
(let ((completion-ignored-extensions completion-ignored-extensions)
(find-file-limit-choices t))
ad-do-it))

(defadvice minibuffer-complete (around minibuffer-complete-limit-choices nil activate)
"When in find-file, check for files of extension .tex, and if they're found, ignore .log .pdf .bbl .aux"
(let ((add-or-remove
(if (and (boundp 'find-file-limit-choices) find-file-limit-choices
(save-excursion
(let ((b (progn (beginning-of-line) (point)))
(e (progn (end-of-line) (point))))
(directory-files (file-name-directory (buffer-substring-no-properties b e)) nil "\\.tex$"))))
'add-to-list
'remove)))
(mapc (lambda (e) (setq completion-ignored-extensions
(funcall add-or-remove 'completion-ignored-extensions e)))
'(".log" ".pdf" ".bbl" ".aux")))
ad-do-it)

享受。

关于emacs - 使用 Emacs 文件名补全优先选择某些文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/791099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com