【问题标题】:Change the default directory of emacs with 'cocoa emacs'使用 'cocoa emacs' 更改 emacs 的默认目录
【发布时间】:2010-07-29 15:29:52
【问题描述】:

正如here 中所述,将 (setq default-directory "~/Desktop/mag" ) 放入 .emacs 应该会更改默认目录。

当我在我的 mac 上使用 emacs 时,它不起作用。 C-x C-f 仍然显示 ~/ 而不是 ~/Desktop/mag。

(cd "Users/smcho/Desktop/mag") 也给了我这个错误 - 错误:没有通过 CDPATH 环境变量找到这样的目录

他们怎么了?

【问题讨论】:

  • 您是否可能需要在(cd "/Users/smcho/Desktop/mag") 的路径前面添加/? (我的指尖没有mac可以检查)。虽然我不认为这会产生你真正想要的效果。

标签: macos emacs


【解决方案1】:

出现在 C-x C-f ('find-file') 提示符中的目录来自 default-directory 的值,它是一个缓冲区局部变量。当您第一次启动 Emacs 时,显示的初始缓冲区是 GNU Emacs 缓冲区。该缓冲区的默认目录是从变量 command-line-default-directory 设置的。

那么,试试这个:

(setq command-line-default-directory "~/Desktop/mag")

【讨论】:

  • 那行不通。但Trey's有。其实我认为有一个比他提议的更简单的版本。
  • @Jim Blandy:你的解释很完美。我想知道为什么(cd <my-path>) 不起作用。谢谢!
【解决方案2】:

您的问题的直接答案是:

(setq-default default-directory "~/Desktop/mag")

阅读变量的文档(C-h v default-directory RET)你会看到:

自动变为缓冲区本地 当以任何方式设置时。这 变量作为本地文件是安全的 变量,如果它的值满足 谓词“stringp”。

也就是说,打开文件会自动将default-directory 设置为文件的路径...

所以,如果你总是希望find-file 从那个目录开始,你可以使用这个:

(global-set-key (kbd "C-x C-f") 'my-find-file)
(defun my-find-file ()
  "force a starting path"
  (interactive)
  (let ((default-directory "~/scratch/"))
    (call-interactively 'find-file)))

此问题可能与Preventing automatic change of default-directory 重复。虽然很难说。

【讨论】:

  • 我在 .emacs 中添加了代码,但 C-c C-f 显示 ~/ 而不是 ~/Desktop/mag。
  • @prosseek 您总是希望C-c C-f~/Desktop/mag 开头?这略有不同,我想已经回答了。我会更新我的答案。
  • 对不起,我很困惑。 C-x C-f 是我打算用来打开“~/Desktop/mag”的键,但是我找到一种使用 C-c C-f 打开它的方法也没关系。
  • @prosseek - 我想知道是不是C-x C-f,我会更新我的答案。
【解决方案3】:

除了上面关于default-directory 的注释之外,我还必须阻止emacs 启动屏幕启动,以便在启动时从.emacs 调用时使dired 等后续命令实际显示其缓冲区:

   (setq inhibit-splash-screen t)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    相关资源
    最近更新 更多