负责扩展~
文件名的 Emacs 组件是expand-file-name
. 不幸的是,它是用 C 编写的,并且在其内部深处是假定后面~
是用户名的代码。幸运的是,Emacs 有一种为函数添加包装器的通用方法,因此如果您不介意重复内置函数中的某些逻辑,您可以随心所欲。
下面是一些完全未经测试的代码,应该可以帮助您前进。查阅 Emacs Lisp 手册中的“Advising Emacs Lisp Functions”以获取更多信息;基本思想是defadvice
在expand-file-name
. 请指出我在评论中不可避免地犯的错误(无论您是否知道如何修复它们)。
(defvar expand-file-name-custom-tilde-alist
'(("foo" . "/home/Documents/foo")))
(defadvice expand-file-name (before expand-file-name-custom-tilde
(name &optional default-directory)
activate compile)
"User-defined expansions for ~NAME in file names."
(save-match-data
(when (string-match "\\`\\(\\(.*/\\)?~\\([^:/]+\\)\\)/" name)
(let ((replacement (assoc (match-string 3 name) expand-file-name-custom-tilde-alist)))
(when replacement
(setq name (replace-match (cdr replacement) t t name 1)))))))
Run Code Online (Sandbox Code Playgroud)
我将解析快捷方式.zshrc
以填充expand-file-name-custom-tilde-alist
(或您选择的任何技术以保持别名同步)作为练习。
归档时间: |
|
查看次数: |
857 次 |
最近记录: |