如何在 elisp 中将列表作为宏的参数?

2024-05-05

我想实现这样的目标:

(setq my-global-keybindings
      '(([?\C-x ?\C-d] . dired)
        ([?\C-x ?\C-b] . ibuffer)
        ([?\C-x b] . ivy-switch-buffer)))

(apply #'bind-keys* my-global-keybindings)

但bind-keys*在这里是一个宏。


在绑定键的特定情况下,我认为更好的选择是寻找替代该功能的函数bind-keys*宏(我没有看到任何理由为什么它应该是宏而不是函数)。

但至于更普遍的问题,我会这样做:

(defmacro my-multi-bind-keys (bindings)
  (macroexp-progn
    (mapcar (lambda (binding)
             `(bind-keys* ,@binding))
            bindings)))
(my-multi-bind-keys (([?\C-x ?\C-d] dired)
                     ([?\C-x ?\C-b] ibuffer)
                     ([?\C-x b] ivy-switch-buffer)))

请注意,使用setq就像你所做的那样是有问题的:宏需要在编译期间扩展,但是setq不应该由编译器执行(它应该是compiled由编译器在稍后执行代码时运行),因此宏没有健全的方法来访问 var 的值(至少在时间旅行生效之前)。

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

如何在 elisp 中将列表作为宏的参数? 的相关文章

  • 如何让 Emacs 在保存文件时创建中间目录?

    有没有办法在 emacs 中创建文件夹树 类似于 mkdir p in bash 基本上 我希望 emacs 创建所有中间模具 如果它们不存在 当我保存文件时 功能make directory这样做 您的具体问题可能会这样解决 add ho
  • 如何让 js2-mode 在 Emacs 中使用空格而不是制表符?

    我在用js2 mode http code google com p js2 mode 在 Emacs 中编辑 Javascript 但我似乎无法让它停止使用制表符而不是空格进行缩进 我的其他模式工作正常 只是遇到 js2 问题 你有 se
  • 如何去掉 CR (^M) 并保留 LF (^J) 字符?

    我正在尝试使用 Hexl 模式手动从文本文件中删除一些特殊字符 但不知道如何在 Hexl 模式下删除任何内容 我真正想要的是删除回车符并保留换行符 Hexl 模式是执行此操作的正确方法吗 无需寻找替代 就用吧 M x delete trai
  • 更改组织模式新一天开始的时间

    我使用组织模式来计时我的工作 有时我会工作几个小时到午夜 例如 我记录的时间从 2013 年 6 月 3 日晚上 10 点开始 到 2013 年 6 月 4 日凌晨 2 点结束 组织模式在凌晨 0 点进行划分 开始新的一天 但如果将 0am
  • clojure 的 emacs slime-connect 版本不会查找 $CLASSPATH

    我需要将 clojure 函数与 slime connect 一起使用 我将所有库都放在 CLASSPATH 中 据我了解这个问题 https stackoverflow com questions 3376840 clojure clas
  • Home / end 控制字符在 Mac OS X 终端下的 emacs 中不起作用

    我在 Mac OS X 上的终端窗口中运行 emacs 在同一终端的 bash shell 中 我可以使用Shift
  • Emacs Windows 拼写检查 - aspell 或 hunspell

    我在Windows XP操作系统上使用emacs 23 1 50版本 我无法使用 emacs wiki 提供的示例将 hunspell 或 aspell 设置为 emacs 的一部分 任何人都有 Windows XP 的工作配置 请帮助我
  • 在 post-command-hook 中,这个用于kill-word的命令已经以某种方式变成了kill-region

    In my post command hook回调 当我这样做时kill word the this command var is kill region 并不是kill word正如预期的那样 我想那是因为kill word uses k
  • Emacs 关于 python 模式函数的默认提示

    在 python 模式下 有一个名为 py execute region 的函数 它将突出显示的代码区域发送到 Python 缓冲区进行评估 评估后 光标位于 Python 缓冲区中 但我希望它保留在脚本缓冲区中 以便我可以继续生成更多代码
  • 如果文件有自动保存数据,emacs-daemon 启动会冻结

    我设置了桌面 el这样 emacs 在启动时会自动重新打开上次我杀死 emacs 时保持打开状态的所有文件 现在 当我将 emacs 作为守护进程启动并且重新打开的文件之一具有自动保存数据时 守护进程会显示通常的自动保存数据消息 file
  • 在 emacs 主要模式下正确突出显示

    我正在为一种语言开发 emacs 主要模式 又名mydsl 然而 由于某种原因 使用 xahlee 网站上的技术似乎不起作用 可能是较旧的 emacs 方言 我正在解决的关键问题是 1 突出显示评论不起作用以及 2 使用regexp opt
  • 如何配置 Firefox 在某些链接上运行 emacsclientw?

    我有一个 Perl 脚本 它会在一堆日志文件中查找 有趣 的行 以获取一些有趣的定义 它生成一个 HTML 文件 其中包含一个表 该表的列是时间戳 文件名 行号引用和 有趣 位 我想做的是让文件名 行号成为一个实际的链接 它将在 emacs
  • emacs 启动后更改 X11 窗口标题

    当我启动 emacs 时 我可以使用 title 选项来控制保存 emacs 应用程序的 x 窗口的标题 emacs从elisp启动后可以更改标题吗 M x set frame name NewName RET 和来自 elisp set
  • 并排镜像两个打开的缓冲区中的文件位置

    我试图在 emacs 中找到一个包 函数 它可以并排打开两个文件 使其位于同一行位置 镜像正在移动的缓冲区的移动 这意味着 对于并排打开的两个缓冲区 在其中一个缓冲区中移动 向上 向下翻页 移动光标等 将在另一个缓冲区中进行相同的移动 更具
  • Emacs:结合 isearch-forward 和 center-top-bottom

    预先非常感谢您的帮助 在 Emacs 中 我喜欢使用 iseach forward C s 但如果突出显示的字体单词位于屏幕中间而不是最底部的中心 我会更喜欢它 我发现自己不断地这样做 C s foo C s C s C s 哦 这就是我一
  • emacs 的最佳 java 工具 [关闭]

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

    我已经定义了 字符在乳胶模式下充当单词组成部分 我对结果非常满意 唯一困扰我的是像这样的序列 alpha beta被视为单个单词 当然 这是预期的行为 有没有办法让 emacs 将特定字符解释为单词 starter 这样 它将始终被视为其后
  • 如何使用 Emacs 通过 HTTP 打开远程文件?

    大多数开源软件都通过某些 HTTP 服务公开其代码 我想从 Emacs 打开并浏览此类代码 但 AFAICS trapmp 只允许ssh and ftp 因此 我的第一个问题是如何打开 HTTP URL 以便在 Emacs 中进行读取 然后
  • 将剪贴板上的图像粘贴到 Emacs Org 模式文件而不保存它

    由于我使用 Emacs Org 模式作为研究日志 有时我想通过屏幕截图来跟踪某些内容 但我绝对不想保存它们 所以我想知道是否有任何方法可以将这些数字插入到我的组织模式文件中 就像使用 word 从剪贴板复制它们一样 您想要的确切功能目前尚未
  • 从一个文件重新归档到另一文件

    我正在尝试基于 emacs 实现 GTDhttp members optusnet com au charles57 GTD gtd workflow html http members optusnet com au charles57

随机推荐

  • VBA:使用求解器时出现运行时错误 1004

    我是 VBA 新手 在宏中使用求解器时遇到一些问题 我将一个宏分配给 Excel 中的命令按钮 它们完美地计算了所有内容 但最后也出现了一个丑陋的错误 运行时错误 1004 对象 application 的方法计算失败 Sub serieu
  • 如何缩小从 Dart 编辑器编译的 JavaScript 代码?

    我正在使用 Dart Editor 构建 Dart 应用程序 我正在编译为 JavaScript 以在所有浏览器上运行 我想缩小输出 JavaScript 如何在不进入命令行的情况下执行此操作 我知道在命令行上 我可以使用dart2js m
  • 列表中的连续元素

    我正在阻止一个谓词来编码Prolog 我需要对两个谓词进行编码 如果我打电话 u a b c d e f X 它会给X a b X b c X c d 如果我打电话 v a b c d e f X 它会给X a b X c d X e f
  • 在运行时选择模板参数时如何避免代码呈指数级增长

    考虑一堆基本类型 Foo 所有这些都具有通用方法的独特实现 Bar 我可以结合Foo1 Foo2 Foo5像这样 CombinedFoo
  • 通过提供邮政编码获取城市名称的网络服务[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要一个可靠的网络服务 它通过传递邮政编码给出相应的城市名称 该网络服务应该随时可用 该网络服务也将在生产中使用 我发现了几种使用基于
  • 更改 EF Power Tools Beta 3 中生成的文件名

    我已经搜索过但无法找到这个问题的答案 目前我们的数据库用户表的前缀 例如tblUsers 我已更新 EF 模板以从生成的类名称中删除 tbl 但是我仍然不知道如何更改输出文件名以匹配 有可能吗 还是我在向月亮祈求 我正在 VS 2012 中
  • 为什么 T-SQL 块即使不应该执行也会给出错误?

    我正在编写一个 看似 直接的 SQL 片段 它在确保列存在后删除该列 问题 如果该列不存在 则代码insideIF 子句抱怨它找不到该列 出色地 doh 这就是为什么它位于 IF 子句内 所以我的问题是 为什么一段不应该执行的代码会出错 这
  • 如何不自动取消引用 Google App Engine 中的 db.ReferenceProperty?

    假设我有 class Foo db Model bar db ReferenceProperty Bar foo Foo all get 有没有办法让我在不向数据存储区进行查询的情况下执行 foo bar 操作 文档说foo bar将是一个
  • 如何将 Font Awesome 4.3.0 与 JSF 集成?

    我已经尝试过这个方法 如何将 webjars org 中的 Font Awesome 与 JSF 结合使用 https stackoverflow com questions 18891768 how to use font awesome
  • Spark:如何从spark shell运行spark文件

    我正在使用CDH 5 2 我能够使用火花外壳运行命令 如何运行包含 Spark 命令的文件 file spark 有没有办法在没有 sbt 的情况下在 CDH 5 2 中运行 编译 scala 程序 在命令行中 您可以使用 spark sh
  • 如何覆盖 attr_protected?

    我的 STI 实施如下 class Automobile lt ActiveRecord Base end class Car lt Automobile end class Truck lt Automobile end class Us
  • 如何将不同层的核心动画一个接一个地链接起来?

    我有一个启用分页的scrollView和N个页面 它们是作为scrollView的子视图的UIView 我正在尝试执行以下操作 用户滚动到第 n 页 此时 之前添加到第 n 页的 7 个 CALayers 即 到页面 scrollView
  • C# 中加密的数据太长,无法在 Java 中解密

    我有一个用 Java 编写的服务器 它在将其发送到客户端之前将其 RSA 密钥转换为 NET 使用的 XML 格式 public String getPublicKeyXML try KeyFactory factory KeyFactor
  • MERGE 命令导致序列号出现间隙

    我试图利用 MERGE 命令来填充 Snowflake 中的维度 为了实现代理键 我创建了一个默认为序列号的列 每当插入新行时该序列号就会自动递增 我在其他数据仓库平台上尝试了类似的方法 但从未引起任何问题 但是 我注意到 每当我在 Sno
  • 是否可以使用 LINQ 检查列表中的所有数字是否单调递增?

    我感兴趣的是 在 LINQ 中是否有一种方法可以检查列表中的所有数字是否单调递增 Example List
  • 如何在 Vaadin 中禁用浏览器缓存

    我的问题很短 希望很容易解决 我怎样才能完全禁用我的浏览器缓存用vaadin实现的webservice 我想完全禁用缓存 因为当我尝试进行一些 PDF 流式传输并在浏览器中显示它们时遇到问题 我已经阅读了有关我的问题的解决方案 例如这里 使
  • Android 密钥库停止工作

    就在最近 我在密钥存储方面遇到了问题 我知道已经有很多关于这个问题的问题了 我已经阅读了所有这些内容并疯狂地用谷歌搜索 Error keytool error java io IOException Keystore was tampere
  • 将外部 jar 放在 JAVA_HOME/lib/ext 目录中是一件坏事吗?

    我们有一个在 JRE 环境中运行的应用程序 该应用程序使用了一些外部 jar 我们已将它们放在 JAVA HOME lib ext 文件夹中 这对我们来说已经工作了很多年 但最近一位新程序员加入了我们的团队 他似乎强调这是一件多么糟糕的事情
  • `knitr` 可以抑制 sql 块中的执行或输出吗?

    下面的文档运行 sql 并显示结果 我不希望显示任何输出 要么不运行该块 要么隐藏输出 有没有办法做到这一点 output html document Hide SQL Output First set up a temporary dat
  • 如何在 elisp 中将列表作为宏的参数?

    我想实现这样的目标 setq my global keybindings C x C d dired C x C b ibuffer C x b ivy switch buffer apply bind keys my global key