Jis*_*Yoo 6 emacs elisp naming-conventions
有些人使用双短划线表示函数可能会发生变化: 函数名中的双减号( - )约定在Emacs Lisp中是什么意思
internal功能名称中包含的含义是否相似?
两个例子
where-is-internal
internal-make-var-non-special
Run Code Online (Sandbox Code Playgroud)
该函数where-is-internal具有详细的文档字符串,并在手册中也有提及.是where-is-internal一个例外吗?
-internal作为后缀和internal-作为前缀之间有区别吗?
更令人困惑的是,还有一些函数名称internal--(带有双短划线)作为前缀.
混淆不仅仅在于命名惯例(由历史引起的变化,有时可能是随心所欲).混淆是自由软件中"内部"的概念,源代码可供所有人随意使用或修改(甚至分叉).
从(我认为)Emacs Dev的观点回答你的问题,从而在潜在意图方面回答:"内部"意味着使用这种功能的人可能更有可能在Emacs中遇到未来的变化 - 开发实现和使用该功能可能不是非"内部"功能的情况.IOW,你可能不想指望它现在仍然存在.就这样.
但那里有很多"也许","更有可能"和"可能".在实践中,一些非"内部"功能比一些"内部"功能更彻底地或更快地改变.可能的情况是,对于前者,将存在弃用宽限期,在此期间可以容忍改变前的情况,即仍然有效.这可能不是"内部"的情况.但同样,在实践中,"内部"的黑色与非"内部"的白色之间存在一些灰色.
来自Emacs Dev(例如@Stefan)的人可能会以不同的方式或纠正我的解释.
我自己的看法:有时候(通常)是作者并不期望用户直接使用的功能和变量,因此自然被认为是"内部",但用户仍然善用,甚至"有" "使用(模数重写大量代码).有些人已经删除了"内部"状态(不,我没有记住的例子).或者有时会添加一个新的非"内部"函数来使行为可用 - 例如,添加了包装器或函数值参数(同样,我没有随意的示例).
IOW,对于Emacs Dev来说,并不总是清楚什么应该被视为"内部".只需将标签作为标志,您可能不希望在该函数或变量上计算太多.
各种符号:我的印象是--最近似乎更多地使用了约定(尽管还有一些使用它的旧代码); internal在大多数情况下,使用是一种较旧的惯例.
"内部"和" - "约定类似.基本上"内部"是在没有前缀后使用双重破折号(通常是在C中实现的函数的情况).
是的,正如德鲁所解释的那样,"内部"这一概念背后的意图只是建议人们不要直接使用它.如果他们需要相应的功能,他们应该报告一个错误请求将其状态提升为"非内部".