Emacs and symbolic links

后端 未结 4 873
忘掉有多难
忘掉有多难 2021-01-31 07:44

Say I have a symbolic link at /home/.bashrc that points to an actual .bashrc file somewhere else: /some/other/path/.bashrc that is under a git reposito

相关标签:
4条回答
  • 2021-01-31 08:04

    When it prompts with

    Symbolic link to Git-controlled source file; follow link? (y or n)
    

    type n. Instead of following the symlink and directly opening the file that the symlink points to, emacs will use the symlink itself, as you desire.

    A warning: doing this prevents emacs' version control features from detecting and interacting with the repository at the destination, if there is one.

    If you'd like to change the default behaviour, check out the documentation of the vc-follow-symlinks customization variable. (C-h v vc-follow-symlinks)

    0 讨论(0)
  • 2021-01-31 08:13

    If you don't know or care about Emacs' vc package, just do

    (setq vc-handled-backends nil)
    

    which entirely disables vc as well as this annoying message about following symbolic links.

    Then, you'll probably want to customize find-file-visit-truename depending on whether or not you want finding a file to follow symlinks or not.

    0 讨论(0)
  • 2021-01-31 08:15

    Just for completeness, for someone who has a question about

    Symbolic link to Git-controlled source file; follow link? (y or n)

    but doesn't necessarily want what the OP wants, this is the documentation from C-h v vc-follow-symlinks (as of my Emacs version — look up your own Emacs for details):

    vc-follow-symlinks is a variable defined in vc-hooks.el. Its value is ask

    Documentation: What to do if visiting a symbolic link to a file under version control. Editing such a file through the link bypasses the version control system, which is dangerous and probably not what you want.

    If this variable is t, VC follows the link and visits the real file, telling you about it in the echo area. If it is `ask', VC asks for confirmation whether it should follow the link. If nil, the link is visited and a warning displayed.

    You can customize this variable.

    The upshot is that to avoid being prompted each time, you can in your .emacs set either

    (setq vc-follow-symlinks t)
    

    to always follow the symlink (and edit the "actual" file directly), or

    (setq vc-follow-symlinks nil)
    

    to always edit the file as if it's at the symlink itself (this seems to work ok — it won't delete the symlink or anything — but it won't let you use version-control related stuff on the file). I prefer the former (unlike the OP).

    0 讨论(0)
  • 2021-01-31 08:16

    If you have a use-case like I have, where I want to access only certain files with hotkeys without asking, you can use the file-truename function which resolves all symbolic links in the file and therefor prevents the annoying question without changing the default for everything else.

    (global-set-key (kbd "<f7>") (lambda () (interactive)
      (find-file (file-truename user-init-file))))
    
    0 讨论(0)
提交回复
热议问题