函数名中的双减( - )约定在Emacs Lisp中意味着什么

sts*_*uad 34 lisp emacs elisp naming-conventions

我一直在阅读一些Emacs Lisp软件包,并且遇到了一些函数的约定 - 在库前缀之后,例如:

(defun eproject--combine-regexps (regexp-list)
Run Code Online (Sandbox Code Playgroud)

我想知道这是否是向图书馆声明"私人"功能的惯例,但到目前为止我还没有在Emacs编码指南中找到任何内容.

Eli*_*lay 31

Emacs对命名空间,包,库或模块没有任何支持.因此,Emacs源foo-用作foo库的前缀,在某些情况下foo--用于应该是内部的绑定.

  • 我认为可能是,但我试图找到文档来指出这样的约定. (6认同)

Dre*_*rew 7

对于Emacs来说,真的没有"内部"这样的东西.但是,是的,一些程序员已经采用这个约定来表示更内部的东西 - 这意味着实现者会更少(或没有)犹豫不决地改变它们.这是让代码用户意识到这种可能的波动性的一种方式.