有几个类似的设置功能:
那么,这些功能之间的区别是什么?
如果我想将自己的首选项设置为加载项,请针对以下情况:
Nic*_*out 62
你的简短回答是:
使用setq或setq-default用于定义的变量defvar.
使用setq,setq-default或由Customize定义的变量的机制defcustom
以下是很长的答案.
您将要使用的功能如下:
set 是设置变量值的主要功能.
setq是另一个自动引用其第一个参数的版本.这很有用,因为引用第一个参数几乎是你想要做的事情.
某些变量无法全局设置.无论何时设置变量,它都只为当前缓冲区设置.如果要模拟全局设置此变量,请使用set-default或setq-default.
包编写器使用的功能是:
defvar它允许包编写器定义变量并提供一些文档.此功能不是必需的,但可以使用户的生活更轻松.
defcustom建立在defvar.它告诉emacs它是一个变量,它允许开发人员创建一个custom接口来设置值.开发人员可以说,"这个变量只能包含值'foo或'bar".
设置变量可以通过两种方式完成:
如果defvar使用了,则只能由用户在其中.emacs使用set函数(或变体)设置值
如果defcustom使用了,则可以使用set(参见1.)或使用来设置值Customize.使用自定义机制时,emacs将生成一些它将放入的代码custom-set-variables.用户不应使用此功能.
jer*_*ahd 10
他们在很大程度上都是通往同一事物的道路.但是有一些重要的区别.了解它们的最佳方法是阅读Emacs和Elisp的手册(请参阅C-h i).尽管如此:
set 是一个"低级"变量赋值(setq foo bar) 是简写 (set (quote foo) bar) (set-default foo bar)表示"除非foo在当前缓冲区中有更明确的作用域定义,请使用值栏",并应用于所有缓冲区.defcustom用于将变量标记为用户希望能够通过该customize功能安全修改的变量.custom-set-value并且customize-set-value是两个指向相同功能的名称.它们是使用customize系统的便捷方法.custom-set-variables并且customize-set-variables用于使一些定制的自定义变量激活,IIRC.一般来说,建议用它M-x customize来改变周围的事物.您可以自由设置defcustom使用set或setq在您.emacs定义的内容,如果您稍后通过自定义系统更改它,自定义系统将向您发出警告customize.
defcustom通常只有人们在编写用于分发的软件包时才会使用,我认为我没有看到任何人custom-set-*在内部使用文件进行自定义.setq在人们的初始化文件中非常常见,用于设置他们喜欢的方式,无论这些内容是否标记为使用customize.
我对这一切都没有充分了解,希望其他人可以更多地了解,但我认为这是一个相当不错的概述:P
set并且setq是用于分配任何类型变量的最低级原语.set-default并且setq-default是与缓冲区局部变量一起使用的emacs扩展,以允许设置用于新缓冲区的默认值.3-7.所有"自定义"内容都是后来添加的,旨在支持用户界面来管理旨在用作用户首选项的变量.defcustom类似于defvar,但允许您在选项层次结构中指定一个位置,以及数据类型信息,以便UI可以将值显示为菜单,或自动将用户输入转换为适当的类型.custom-set-value功能.custom-set-variables保存所有用户选项时,自定义UI使用此选项.它列出了用户从默认值更改的所有变量.6-7.custom-set-value和custom-set-variable使用通过自定义UI以提示选项变量的当前和默认值的用户,并且将它们分配.你通常不会自己打电话.