从rstudioapi包理解getActiveDocumentContext()函数

从rstudioapi包理解getActiveDocumentContext()函数,r,rstudio,R,Rstudio,我试图理解函数getActiveDocumentContext()应该做什么。当我在控制台中运行它时,我获得以下输出 > getActiveDocumentContext() Document Context: - id: '#console' - path: '' - contents: <1 rows> Document Selection: - [1, 1] -- [1, 1]: '' >getActiveDocumentContext()

我试图理解函数getActiveDocumentContext()应该做什么。当我在控制台中运行它时,我获得以下输出

> getActiveDocumentContext()
Document Context: 
- id:        '#console'
- path:      ''
- contents:  <1 rows>
Document Selection:
- [1, 1] -- [1, 1]: ''
>getActiveDocumentContext()
文档上下文:
-id:“#控制台”
-路径:“”
-内容:
文件选择:
- [1, 1] -- [1, 1]: ''
当我阅读与函数相关的文档时

详细信息

返回的选择字段是文档选择对象的列表。 文档选择只是文档范围和 该范围内的文本

包含以下元素的列表:

id文档id。路径磁盘上文档的路径。 内容文档的内容。选择一个选择列表。 有关更多信息,请参阅详细信息

这让我推断返回是指向控制台的,路径是一个空格,文档中有某种文档和文本

但是,当我在函数内部以调试模式运行此函数时,返回的结果是不同的。


这是因为范围不同吗?

您可以将
getActiveDocumentContext
视为提供有关用户光标所在位置的信息(即带焦点的窗格)

如果用户碰巧将光标放在R控制台而不是源代码编辑器中,那么您将获得有关R控制台的信息。这就是为什么在控制台上运行时总是看到“console”

它主要用于帮助加载项,加载项通常在当前编辑选项卡和/或其中所做的选择上操作。请参见此示例,它使用
getActiveDocumentContext
帮助您编写标记:


如果在调试时或在R控制台上运行
getActiveDocumentContext
,将不会得到有用的结果。在查询文档上下文后,可能会考虑中断调试器,这样调试器不会将焦点放在控制台而丢失上下文。

谢谢您的洞察力!这很有帮助。我确实在我试图理解的一个加载项中找到了代码!