您可以在 Emacs Lisp 宏中创建交互式函数吗?

2023-11-26

我正在尝试在 emacs lisp 中编写一个宏来创建一些“辅助函数”。

最终,我的辅助函数将比我这里的更有用。我意识到可能有更好/更直观的方法来完成同样的事情(请发帖),但我的基本问题是为什么这不起作用/我做错了什么:

(defmacro deftext (functionname texttoinsert)
  `(defun ,(make-symbol (concatenate 'string "text-" functionname)) ()
     (interactive)
     (insert-string ,texttoinsert)))

(deftext "swallow" "What is the flight speed velocity of a laden swallow?")
(deftext "ni" "What is the flight speed velocity of a laden swallow?")

如果我获取宏扩展的输出并对其进行评估,我会得到我打算通过宏获得的交互式函数,但即使宏运行并且似乎在评估,我也无法调用M-x text-ni or text-swallow.


这就是你想要的:

(defmacro deftext (functionname texttoinsert)
  (let ((funsymbol (intern (concat "text-" functionname))))
`(defun ,funsymbol () (interactive) (insert-string ,texttoinsert))))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您可以在 Emacs Lisp 宏中创建交互式函数吗? 的相关文章

随机推荐

  • 如何使用 MSAL-ANGULAR 读取角色/权限

    因此 我已经按照 msal Angular 中的说明成功地将 Azure AD 身份验证集成到我的 Angular 站点中 现在我正在寻求定义和利用角色和权限来提供对用户的更精细的控制能做和不能做 据我所知 我可以按照这组说明来定义角色 h
  • MongoDB:注册编解码器 (Java)

    我已经尝试了大约一个小时来注册我为我正在开发的游戏中的一个课程制作的编解码器 该类称为Item 我尝试了这三个地方的代码和建议 https mongodb github io mongo java driver 3 0 bson codec
  • 如何只下载页面的一部分?

    我的网站上有 100 个页面 但我只想下载部分页面而不是所有页面内容 我只想每个页面下载一盒 文件大小为 10 KB 为此 我使用 WebClient 和 htmlagilitypack WebClient Client new WebCl
  • 类名和类列表的区别

    在什么情况下应优先选择以下哪一项 btnElement classList add btn btnElement className btn 使用 classList 您可以添加或删除一个类 而不会影响任何 该元素可能具有其他元素 但是如果
  • 使用索引设置 pandas DataFrame 中特定单元格的值

    我创建了一个 Pandas DataFrame df DataFrame index A B C columns x y 现在 我想为特定单元格分配一个值 例如行C和列x 换句话说 我想执行以下转换 x y x y A NaN NaN A
  • gdb 可以中断隐式类方法吗?

    编译器生成一些类方法 例如复制构造函数 析构函数等 是否可以让 gdb 对这些方法进行中断 例如观察对象被复制或销毁的位置 gdb 可以中断隐式类方法吗 是的 当然可以 gdb break MyClass MyClass const MyC
  • CSS 类名/选择器中哪些字符有效?

    允许使用哪些字符 符号CSS类选择器 我知道以下人物是invalid 但是什么字符valid gt lt 您可以直接在CSS语法 Basically1 a name must begin with an underscore a hyphe
  • 使用 Google iOS SDK 创建多个标记

    我是斯威夫特的新手 我很高兴在谷歌地图上找到两个标记 import UIKit import GoogleMaps class ViewController UIViewController You don t need to modify
  • 有适用于 .NET 的 Relaxer 吗?放松者还活着吗? RelaxNG 可行吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我读到了有关 Relaxer 的内容 它可以将 RNG 编译为 Java 类 B但是网站 http www relaxer org 死了 Q1 放松
  • ExternalInterface.call() 没有获得返回值

    我有一个 Javascript 函数 它返回 div 的innerHTML 我试图从 Actionscript 调用此函数并存储返回值 我知道正在调用 Javascript 函数 因为有一个警报显示返回数据 但是 返回到 Actionscr
  • 我们可以在
  • 内给出
  • 我们可以在 un order list 标签中给出 div 标签吗 它将采用这种格式 li div blablabla div li 是否可以 很多人说列表项内的划分是不正确的 但根据 W3C 验证器的说法 这是完全正确的 不过 你永远不会
  • 位置:相对有什么用?

    今天我在考虑 CSS 定位模式 发现我从来没有使用过position relative除了制作以外的任何事情position absolute处理子元素 我更像是一名 开发人员 而不是 设计师 但这些年来我已经完成了相当多的基于 CSS 的
  • GIT - 如何在所有分支中保持文件通用

    假设我在分支 master 中有一个文件 ChangeLog 我想记录有关此文件中任何分支中的所有更改的信息 比提交消息和其他描述性信息更详细 I git checkout b revA 执行编辑 更新ChangeLog 和git comm
  • TypeScript 中是否有类似于“keyof”的“valueof”?

    我希望能够将对象属性分配给给定键和值作为输入的值 但仍然能够确定值的类型 解释起来有点困难 所以这段代码应该可以揭示问题 type JWT id string token string expire Date const obj JWT i
  • MSSQL:选择在另一个表中出现两次以上的行

    基本上我需要获取在 StaffOnGrade 中出现次数超过 2 次的 CampaignTitles 列表 并列出 Grade 评级高于 2 的 CampaignTitle StaffNo 工作表 CampaignTitle StaffNo
  • 最新 iOS 更新 (12.2) 后,本地存储中的视频无法在 WebView (Xamarin.Forms) 中播放

    我有一个适用于 Android 和 iOS 的现有 Xamarin Forms 应用程序 它在 WebView 中显示本地存储中的一些 HTML 内容 目的是在离线时查看此内容 在最新的 iOS 更新 12 2 后 该 HTML 中的视频停
  • PHP:将curl_exec输出转换为UTF8

    我只想使用 UTF8 问题是我不知道每个网页的字符集 我怎样才能检测到它并转换为UTF8
  • 为什么Java API 使用int 而不是short 或byte?

    为什么使用Java APIint when short甚至byte就足够了吗 示例 DAY OF WEEK课堂上的田野Calendar uses int 如果差异太小 那么为什么这些数据类型 short int 到底存在吗 其中一些原因已经
  • Flask-sqlalchemy 列的最大值

    可以说我有一个这样的用户模型 from flask import Flask from flask ext sqlalchemy import SQLAlchemy app Flask name app config SQLALCHEMY
  • 您可以在 Emacs Lisp 宏中创建交互式函数吗?

    我正在尝试在 emacs lisp 中编写一个宏来创建一些 辅助函数 最终 我的辅助函数将比我这里的更有用 我意识到可能有更好 更直观的方法来完成同样的事情 请发帖 但我的基本问题是为什么这不起作用 我做错了什么 defmacro deft