Windows 控制EMACS组织模式目录选择

Windows 控制EMACS组织模式目录选择,windows,emacs,directory,org-mode,Windows,Emacs,Directory,Org Mode,我使用的是Emacs26.3和Windows10,以及一个最新版本的组织模式。在下面的讨论中,“xxxx”是我的名字,用于目录命名 我一直在慢慢清理custom-init.el文件。我一直在明确指定文件名/位置,并希望通过使用相对名称使事情更通用 我在init文件的前面有以下几行: (setq org-directory "C:/Users/xxxx/Dropbox/emacs/Org/") (setq org-agenda-files (list org-directory)) 这将导致加载

我使用的是Emacs26.3和Windows10,以及一个最新版本的组织模式。在下面的讨论中,“xxxx”是我的名字,用于目录命名

我一直在慢慢清理custom-init.el文件。我一直在明确指定文件名/位置,并希望通过使用相对名称使事情更通用

我在init文件的前面有以下几行:

(setq org-directory "C:/Users/xxxx/Dropbox/emacs/Org/")
(setq org-agenda-files (list org-directory))
这将导致加载正确的议程文件

稍晚一点,我在一节的开头有以下代码,用于设置emacs组织模式在启动时的外观:

(add-to-list 'default-frame-alist '(fullscreen . maximized))
(setq initial-buffer-choice "~/todo.org")
...
在过去,我使用一个显式路径指定todo文件,该路径运行良好。但在清理工作中,我曾期望“~/todo.org”将其连接到org目录,这显然是我的幼稚。相反,当todo文件作为议程文件加载时,将在Windows根文件“C:\Users\xxxx\AppData\Roaming”中创建一个新文件,并将此新文件用于其他操作(使用指定~/todo.org的模板捕获)

我已经尝试了几天在网上研究这个问题,但是有太多的信息让我无法整理。设置默认目录显然是特定于缓冲区的,当我从一个缓冲区移动到另一个缓冲区时,C-xc-f会给我一个不同的结果


我确实希望在自定义init文件中解决这个问题,而不显式指定init文件中引用的每个文件的路径。我不理解/忽略的是什么?

如果您只希望它与您的
组织目录相关,请使用
(展开文件名“todo.org”组织目录)
再次点击pickle。你是个好老师。这解决了大多数问题,但对于捕获模板来说,它本身并不起作用。在模板内部,除了(file+headline expand file name“todo.org”org directory“Inbox”)或其他任何内容之外,还需要使用lamda()(扩展…)或设置org default todo file(扩展…),然后在模板中使用org default todo file变量。如果你将你的评论作为答案转载,我可以将其标记为已接受的答案。@picklerick的答案正好符合你在问题中所述的问题。对于注释中的捕获模板问题,
file+headline
方法需要两件事来指定捕获的位置:文件的路径名和节点标题。在本例中,您希望部分通过使用变量(您的议程组织文件所在的目录)指定路径名。处理此问题的标准方法是
backquote
机制。这里有一个参考:@NickD我可以看到backquote语法是如何工作的,但是我对lisp非常熟悉,如果我在完成这个清理后的几年内回来,我认为使用我在捕获模板部分开始时定义的变量对我来说将更具可读性。这也是为什么我没有使用lamda()(扩展…)的原因,因为我可以看到自己回来的时间要晚得多,并且想知道为什么我试图变得如此“聪明”,而忘记了所有的原因。关于链接中解释的日期的问题是另一件让我试图记住的事情。谢谢如果您只希望它与您的
组织目录相关
,请使用
(展开文件名“todo.org”组织目录)
再次pickle。你是个好老师。这解决了大多数问题,但对于捕获模板来说,它本身并不起作用。在模板内部,除了(file+headline expand file name“todo.org”org directory“Inbox”)或其他任何内容之外,还需要使用lamda()(扩展…)或设置org default todo file(扩展…),然后在模板中使用org default todo file变量。如果你将你的评论作为答案转载,我可以将其标记为已接受的答案。@picklerick的答案正好符合你在问题中所述的问题。对于注释中的捕获模板问题,
file+headline
方法需要两件事来指定捕获的位置:文件的路径名和节点标题。在本例中,您希望部分通过使用变量(您的议程组织文件所在的目录)指定路径名。处理此问题的标准方法是
backquote
机制。这里有一个参考:@NickD我可以看到backquote语法是如何工作的,但是我对lisp非常熟悉,如果我在完成这个清理后的几年内回来,我认为使用我在捕获模板部分开始时定义的变量对我来说将更具可读性。这也是为什么我没有使用lamda()(扩展…)的原因,因为我可以看到自己回来的时间要晚得多,并且想知道为什么我试图变得如此“聪明”,而忘记了所有的原因。关于链接中解释的日期的问题是另一件让我试图记住的事情。谢谢