Debugging Emacs:如何在scratch屏幕中加载文件内容 我想在启动时将“~/todo.org”文件内容加载到scratch缓冲区中。
我试过:Debugging Emacs:如何在scratch屏幕中加载文件内容 我想在启动时将“~/todo.org”文件内容加载到scratch缓冲区中。,debugging,emacs,org-mode,Debugging,Emacs,Org Mode,我试过: (setq initial-buffer-choice "~/todo.org") 但它会在一个新的缓冲区中打开文件(而不是草稿) 我也尝试过: (setq initial-scratch-message "~/todo.org") 但是它在暂存缓冲区中打印文件路径,我想要它的内容 我还想将scratch缓冲区的模式更改为org模式。 我试过: (setq initial-major-mode org-mode) 但我有一个初始化错误 作为变量的符号值无效:组织模式 最后,我要说
(setq initial-buffer-choice "~/todo.org")
但它会在一个新的缓冲区中打开文件(而不是草稿)
我也尝试过:
(setq initial-scratch-message "~/todo.org")
但是它在暂存缓冲区中打印文件路径,我想要它的内容
我还想将scratch缓冲区的模式更改为org模式。
我试过:
(setq initial-major-mode org-mode)
但我有一个初始化错误
作为变量的符号值无效:组织模式
最后,我要说的是:
(condition-case err
(when (get-buffer "*scratch*")
(with-current-buffer "*scratch*"
(erase-buffer)
(insert-file-contents "~/todo.org")
(org-mode)
)
)
(error (message "%s" error-message-string err)))
最后,我要说的是:
(condition-case err
(when (get-buffer "*scratch*")
(with-current-buffer "*scratch*"
(erase-buffer)
(insert-file-contents "~/todo.org")
(org-mode)
)
)
(error (message "%s" error-message-string err)))
您只需将一点Lisp代码放入您的:
(条件案例错误
(带当前缓冲区“*划痕*”
(let((最小值(最小点))
(最大值(最大点))
(转到字符最大值)
(插入文件内容“~/todo.org”)
(删除区域最小最大值)
(组织模式)
(错误(消息“%s”错误消息字符串err)))
但是,当@费尔斯在对你的问题的评论中指出,
(condition-case err
(let ((buffer (get-buffer-create "*todo*")))
(with-current-buffer buffer
(insert-file-contents "~/todo.org")
(org-mode))
(setq initial-buffer-choice buffer))
(error (message "%s" error-message-string err)))
通过使用此版本,您可以不使用
*scratch*
缓冲区。您的.org
文件将以*todo*
的名称插入一个单独的缓冲区。此缓冲区与您的~/todo.org
文件没有关联,因此当您首次尝试保存它时,您必须指定一个文件名。您可以实现所需的功能使用一点Lisp代码编辑效果,并将其放入:
(条件案例错误
(带当前缓冲区“*划痕*”
(let((最小值(最小点))
(最大值(最大点))
(转到字符最大值)
(插入文件内容“~/todo.org”)
(删除区域最小最大值)
(组织模式)
(错误(消息“%s”错误消息字符串err)))
但是,当@费尔斯在对你的问题的评论中指出,
(condition-case err
(let ((buffer (get-buffer-create "*todo*")))
(with-current-buffer buffer
(insert-file-contents "~/todo.org")
(org-mode))
(setq initial-buffer-choice buffer))
(error (message "%s" error-message-string err)))
通过使用此版本,您可以不使用
*scratch*
缓冲区。您的.org
文件将以*todo*
的名称插入一个单独的缓冲区。此缓冲区与您的~/todo.org
文件不关联,因此当您首次尝试保存它时,您必须指定一个文件名。启动缓冲区不可用受初始主模式
影响。键入:M-x描述变量RET初始主模式RET
以了解更多信息。在组织模式
前面加上一个引号。您可能还想(要求“组织”)
在执行此操作之前。我不确定该库何时加载,这可能取决于您使用的Emacs版本。您可能还希望阅读m-x描述函数RET插入文件内容RET
和m-x描述函数RET与当前缓冲区RET
。您能解释一下为什么要插入todo.org文件内容I吗nto*scratch*
,而不是打开和显示todo.org本身?另外,您希望处于组织模式的是启动缓冲区还是scratch缓冲区(后者至少与您的其他请求相关联,但您编写了前者,这对我来说毫无意义)。这听起来像。您最终要解决的问题是什么?是划痕缓冲区(已修复键盘-椅子错误:)。我想在此缓冲区中加载文件内容,以便可以将文件编辑为“只读但可编辑”。“只读但可编辑”这是一个矛盾。你的意思是你想要一个与文件无关的缓冲区吗?也就是说,一个与~/todo.org
无关的缓冲区,例如,这样你就不会意外地覆盖它了?启动缓冲区不受初始主模式
的影响。键入:M-x描述变量RET initial main mode RET
>要了解更多信息,请在组织模式
前面加上一个引号。您可能还想(要求“组织”)
在执行此操作之前。我不确定该库何时加载,这可能取决于您使用的Emacs版本。您可能还希望阅读m-x描述函数RET插入文件内容RET
和m-x描述函数RET与当前缓冲区RET
。您能解释一下为什么要插入todo.org文件内容I吗nto*scratch*
,而不是打开和显示todo.org本身?另外,您希望处于组织模式的是启动缓冲区还是scratch缓冲区(后者至少与您的其他请求相关联,但您编写了前者,这对我来说毫无意义)。这听起来像一个。你最终要解决的问题是什么?是划痕缓冲区(键盘-椅子错误修复:))。我想在这个缓冲区中加载文件内容,这样我可以将文件编辑为“只读但可编辑”。“只读但可编辑”是一个矛盾。您的意思是想要一个与文件无关的缓冲区吗?也就是说,一个与~/todo.org
无关的缓冲区,例如,您不能意外地覆盖它?您的代码不正确setq
用于设置变量的值。如果在Emacs加载后检查变量的值,您会发现它是错误的--M-x descripe variable RET initial scratch message RET
发生的事情是,当Emacs计算(insert file contents“~/todo.org”)
时,您恰好访问了*scratch*
缓冲区,您的文件将被插入到*scratch*
缓冲区中。查看第2480行至第2485行,了解如何使用(使用当前缓冲区“*scratch*”…
:我不明白,它可以完成此任务。您是否有最干净的方法来完成此任务?您的代码似乎是无意中“完成[]此任务”,因为*scratch*
缓冲区恰好是se