跟随 link 进入 git-repo 而无需冗长的对话
Following a link into a git-repo without lengthy dialog
在一个目录中,我将符号 links 放入 git 管理的目录中(全部在 Linux 下)。每次我想 e-dit 这样的 link 我都会收到一个对话问题:
Symbolic link to Git-controlled source file; follow link? (yes or no)
我必须输入 y e s ⏎ 获取文件。有没有更简单的方法?
理想情况下,声明目录不需要对话框。
设置vc-follow-symlinks
。您可能希望它是 nil
(打开 link),但请务必阅读文档,因为 t
(打开目标)也是明智的。
(setq vc-follow-symlinks nil)
如果你不想全局设置它,你可以将它设为 dir 局部变量。
一个有趣的问题。我将所有的点文件存储在存储库中,并且
有一堆符号链接散布在整个文件系统中,所以这是
我的一个已知问题。
一、半解:
(defalias 'yes-or-no-p 'y-or-n-p)
现在您无需输入完整的 yes
+ Enter
在所有情况下键入单个 y 或 n 字母
在 Emacs
.
中询问 yes-or-no
现在,一个真正的解决方案:
(defun vc-mode-hook ()
(message buffer-file-name)
(when
(and
(file-exists-p (buffer-file-name))
(stringp buffer-file-name)
(or (string-equal "/home/ja/.fluxbox/keys" buffer-file-name)
(string-equal "<PATH_TO_ANOTHER_FILE>" buffer-file-name))
(setq-local vc-follow-symlinks t)
)))
(add-hook 'find-file-hook 'vc-mode-hook)
这里我们创建一个新的钩子,每次find-file
被调用
调用,例如 C-x
C-f 或 e 在 Dired
中。它首先检查
如果访问的文件确实存在于文件系统上使用
file-exists-p
因为在文件上 运行 它没有意义
尚未创建。接下来它检查文件名是否已知使用
stringp
- 打开常规文件时会 return t
但 nil
例如在 Dired
缓冲区中。最后它检查文件是否
名称等于使用 string-equal
提供的字符串之一。如果它
即,它在本地将 vc-follow-symlinks
设置为 t
。你可以添加尽可能多的
string-equal
行随心所欲。在上面的例子中我添加了
/home/ja/.fluxbox/keys
和另一个文件名的占位符
在下一行。
在一个目录中,我将符号 links 放入 git 管理的目录中(全部在 Linux 下)。每次我想 e-dit 这样的 link 我都会收到一个对话问题:
Symbolic link to Git-controlled source file; follow link? (yes or no)
我必须输入 y e s ⏎ 获取文件。有没有更简单的方法?
理想情况下,声明目录不需要对话框。
设置vc-follow-symlinks
。您可能希望它是 nil
(打开 link),但请务必阅读文档,因为 t
(打开目标)也是明智的。
(setq vc-follow-symlinks nil)
如果你不想全局设置它,你可以将它设为 dir 局部变量。
一个有趣的问题。我将所有的点文件存储在存储库中,并且 有一堆符号链接散布在整个文件系统中,所以这是 我的一个已知问题。
一、半解:
(defalias 'yes-or-no-p 'y-or-n-p)
现在您无需输入完整的 yes
+ Enter
在所有情况下键入单个 y 或 n 字母
在 Emacs
.
yes-or-no
现在,一个真正的解决方案:
(defun vc-mode-hook ()
(message buffer-file-name)
(when
(and
(file-exists-p (buffer-file-name))
(stringp buffer-file-name)
(or (string-equal "/home/ja/.fluxbox/keys" buffer-file-name)
(string-equal "<PATH_TO_ANOTHER_FILE>" buffer-file-name))
(setq-local vc-follow-symlinks t)
)))
(add-hook 'find-file-hook 'vc-mode-hook)
这里我们创建一个新的钩子,每次find-file
被调用
调用,例如 C-x
C-f 或 e 在 Dired
中。它首先检查
如果访问的文件确实存在于文件系统上使用
file-exists-p
因为在文件上 运行 它没有意义
尚未创建。接下来它检查文件名是否已知使用
stringp
- 打开常规文件时会 return t
但 nil
例如在 Dired
缓冲区中。最后它检查文件是否
名称等于使用 string-equal
提供的字符串之一。如果它
即,它在本地将 vc-follow-symlinks
设置为 t
。你可以添加尽可能多的
string-equal
行随心所欲。在上面的例子中我添加了
/home/ja/.fluxbox/keys
和另一个文件名的占位符
在下一行。