【问题标题】:Preventing automatic change of default-directory防止自动更改默认目录
【发布时间】:2008-12-09 22:31:15
【问题描述】:

根据the Emacs docs,每次打开文件时,Emacs 都会将default-directory 更改为包含该文件的目录。

然后,如果光标在该缓冲区中并且您(例如)启动了 SLIME,它将使用default-directory 作为 SLIME 的当前工作目录。如果您尝试打开一个新文件,它会以default-directory 为起点打开该文件。

我希望能够 M-x cdcd 到一个目录,然后永远不要让 Emacs 将我当前的工作目录更改为除该目录之外的任何内容,直到我另有说明。我希望这在所有缓冲区中都是全局的,这样每当我在做涉及当前工作目录的事情时,无论我的光标现在在哪里,我都知道它的设置。有没有办法做到这一点?

【问题讨论】:

    标签: emacs


    【解决方案1】:

    你可以试试这样的:

    (add-hook 'find-file-hook
              (lambda ()
                (setq default-directory command-line-default-directory)))
    

    【讨论】:

      【解决方案2】:

      另一个变体是将 default-directory 绑定到目录局部变量中的必要目录,例如在您的父目录之一的 .dir-locals.el 文件中,类似于:

      ((nil . ((default-directory . "~/.emacs.d/"))))
      

      【讨论】:

        【解决方案3】:

        这是迄今为止我想出的最好的,可悲的是:

        (defun find-file-save-directory ()
            (interactive)
            (setq saved-default-directory default-directory)
            (ido-find-file)
            (setq default-directory saved-default-directory))
        (global-set-key "\C-x\C-f" 'find-file-save-directory)
        

        只要在C-x C-f 之前正确设置了default-directory,它就可以工作。我将接受 jurta 的回答,因为它为我指明了一个有用的方向。

        【讨论】:

          猜你喜欢
          • 2012-06-09
          • 2014-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-22
          相关资源
          最近更新 更多