在 Elisp 中如何获取变量的初始值?

2024-06-19

在Emacs Lisp中,是否有一个函数可以获取由以下方式初始化的符号的初始值defvar?像some-function如下图所示:

(defvar var "initial value")
(setq var "changed value")
(some-function 'var)
=> "inital value"

这通常是不可能的(Emacs 不记得原始值),但也有一些例外。

defcustom变量

定义的变量defcustom并使用自定义系统进行修改,获取原始值、保存的值和自定义但尚未保存的值作为属性:

(defcustom foo 0 "testing")
(custom-set-variables '(foo 1))
(setq foo 2)
(customize-mark-as-set 'foo)
(setq foo 3)

(car (get 'foo 'standard-value))   ;; evaluates to 0
(car (get 'foo 'saved-value))      ;; evaluates to 1
(car (get 'foo 'customized-value)) ;; evaluates to 2
foo                                ;; evaluates to 3

See the 定义自定义变量 https://www.gnu.org/software/emacs/manual/html_node/elisp/Variable-Definitions.htmlelisp 手册中的部分,特别是文档上方的讨论custom-reevaluate-setting功能。

缓冲区局部变量

缓冲区局部变量具有默认(全局)值和可能与全局值不同的缓冲区局部值。您可以使用default-value获取默认值的函数:

(setq indent-tabs-mode nil)
(default-value 'indent-tabs-mode)  ;; evaluates to t

但是,可以更改默认值,并且 Emacs 不会记住原始默认值:

(set-default 'indent-tabs-mode nil)
(default-value 'indent-tabs-mode)  ;; evaluates to nil

See the 缓冲区局部变量简介 https://www.gnu.org/software/emacs/manual/html_node/elisp/Intro-to-Buffer_002dLocal.html有关更多详细信息,请参阅 elisp 手册中的部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Elisp 中如何获取变量的初始值? 的相关文章

随机推荐

  • 在 CURL 中设置多部分/混合请求的部分内容类型

    我想在一个 http 请求中发送 json 请求和多个文件 我在用着multipart mixed要求那个 curl H Content Type multipart mixed F email protected cdn cgi l em
  • 离子旋转器未显示

    我用 http 请求填充 Ionic 集合重复列表 但我不想将所有内容直接加载到 DOM 中 因此 我只显示其中一些项目 并在您向下滚动时添加其余项目 为此我实现了无限滚动功能 当我到达页面底部时 它应该显示一个旋转器 但它没有 这些物品至
  • 将 [字节数组] 分配给没有 Unicode 转换的 Variant

    考虑以下代码片段 在 Delphi XE2 中 function PrepData StrVal string Base64Val AnsiString OleVariant begin Result VarArrayCreate 0 1
  • 无法调用类型“UnsafeMutablePointer”的初始值设定项

    我正在尝试将 Reachability swift 更新为 swift 3 0 但在将 Reachability 实例传递给回调函数时遇到问题 这是我的片段 请注意 self 可达性等级 var context SCNetworkReach
  • 没有为名称定义标签:viewAction

    我刚刚将 JSF 2 2 2 合并到我现有的项目中 我想使用f viewAction但我收到以下错误
  • 哪种方式最适合Python工厂注册?

    这是一个关于这些方法中哪一种被认为是最有效的问题 Pythonic 我不是在寻找个人意见 而是在寻找惯用的观点 我的背景不是Python 所以这会对我有帮助 我正在开发一个可扩展的 Python 3 项目 这个想法类似于工厂模式 只不过它是
  • 如果您使用 CocoaPods,您的 .gitignore 中会包含什么内容?

    我从事 iOS 开发已经几个月了 刚刚了解到有前途的可可豆荚 http cocoapods org 用于依赖管理的库 我在个人项目上尝试过 添加了依赖项Kiwi https github com allending Kiwi到我的 Podf
  • rand() 播种与 time() 问题

    我很难弄清楚如何使用 rand 并使用 Xcode 用 time 为其播种 我想生成 0 到 1 之间的随机十进制数 该代码为我提供了元素 1 和 2 看似随机的数字 但元素 0 始终在 0 077 左右 有什么想法吗 我的代码是 incl
  • JavaScript:从 JavaScript 调用锚标记的点击事件

    我有一个带有锚标记的页面 在我的 JavaScript 中 我设置HREF锚标记的属性基于一些 if else 条件动态变化 现在我想以编程方式调用锚标记的单击事件 我使用了下面的代码 但没有成功 var proxyImgSrc CostM
  • 如何使用 Jenkins 声明性语法登录 docker?

    我的目标是使用声明性语法从 DockerHub 上的私有存储库中拉取 推送图像 我已经用 id 配置了我的凭据xxxxxxxxxxx 我知道我可以使用编程语法来做到这一点如图所示 https jenkins io doc book pipe
  • 使用 XPath 获取属性

    给定一个像这样的 XML 结构
  • 如何在 Windows 窗体中运行屏幕保护程序作为其背景?

    如何在 Windows 窗体中运行屏幕保护程序作为其背景 用户还可以在屏幕保护程序运行时与表单控件进行交互 为什么这个 我们有一个案例 需要在用户时运行 Windows Bubbles 屏幕保护程序 可以继续与表单控件交互吗 您可以使用以下
  • 开始使用 Honeycomb 进行 Android 开发 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Delphi 将面板流传输至文件

    今天我有一个关于将表单的一部分流式传输到文件的问题 在此示例中 我使用 Tmemo 而不是文件来查看流 这是我的表格 表单右上角的面板有一些控件 如标签 编辑等 使用 保存面板 按钮将面板保存在 TStream 上 这里是代码 proced
  • 从代码动态更改多个文本视图的大小(没有“磁盘上”xml 主题)?

    我有 10 个文本视图在我的代码中 我想更改所有代码的字体大小 在我的布局中我使用了 style定义通用属性 但是我不知道一旦布局出现在屏幕上如何从代码中更改它们 我不想做的是更新 AND 对象 但只写在一处 我知道我可以使用应用主题但这假
  • Python:导入模块一次然后与多个文件共享

    我有如下文件 file1 py file2 py file3 py 假设这三个都使用 lib7 py lib8 py lib9 py 目前 这三个文件中的每一个都有以下行 import lib7 import lib8 import lib
  • 将 C# 反射代码移植到 Metro-Ui

    我正在尝试移植使用反射的现有 C 类 通用工厂 但我无法编译这段代码 Type types Assembly GetAssembly typeof TProduct GetTypes foreach Type type in types i
  • GWT MenuItem 选择后失去焦点

    我有一个简单的垂直一维菜单 菜单项不是固定的 它们根据从服务器接收的数据动态变化 所以我无法为它们编写修复代码 在 css 中 我声明选定的 MenuItem 为粗体 我的愿望只是让选定的菜单项在选择后保持粗体 但是当我单击它时 它失去焦点
  • 更新 Google 地图流量层而无需重新加载页面

    我的页面中嵌入了 Google 地图 我使用 initMap js 函数来初始化地图 function initMap var map new google maps Map document getElementById t map zo
  • 在 Elisp 中如何获取变量的初始值?

    在Emacs Lisp中 是否有一个函数可以获取由以下方式初始化的符号的初始值defvar 像some function如下图所示 defvar var initial value setq var changed value some f