使用'cocoa emacs'更改emacs的默认目录

pro*_*eek 4 macos emacs

正如上文这里,把(setq默认目录"〜/桌面/ MAG")中的.emacs应该更改默认目录.

当我使用我的mac上的emacs执行此操作时,它不起作用.Cx Cf仍显示〜/ not~/Desktop/mag.

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

他们怎么了?

Jim*_*ndy 15

出现在Cx Cf('find-file')提示符中的目录来自default-directory的值,该目录是一个缓冲区局部变量.首次启动Emacs时,显示的初始缓冲区是GNU Emacs缓冲区.该缓冲区的default-directory是从变量command-line-default-directory设置的.

所以,试试这个:

(setq command-line-default-directory "~/Desktop/mag")
Run Code Online (Sandbox Code Playgroud)


Tre*_*son 6

您问题的直接答案是:

(setq-default default-directory "~/Desktop/mag")
Run Code Online (Sandbox Code Playgroud)

阅读变量(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)))
Run Code Online (Sandbox Code Playgroud)

此问题可能与防止默认目录的自动更改重复.虽然很难分辨.