学习
实践
活动
工具
TVP
写文章

如何快速使用 ELisp 进行插件编写

最近在给 cider 贡献一个新 feature[1],但是由于之前只是东拼西凑配置,没怎么用 ELisp 认真写过一个完整功能,还是有些挫败感的。 挫败感的主要来源是对 ELisp 里相关概念的不熟悉,比如 xref 为了能打开 symbol 定义的文件,需要提供一个 xref-location 对象,默认提供了两种实现,xref-buffer-location 从这里例子看出,ELisp 的文档虽然做的很全,但是缺少很重要的一个环节,即 demo。 [3] 插件,可以在 helpful 页面中展示函数的用法: 最后,再推荐一个教程,供有其他 Lisp 经验的程序员快速使用 ELisp。 /elisp-demos

12320

30岁文转码:我用了三年时间从哲学家变成知名软件项目核心开发

Emacs 是由 Lisp 的一种方言编写而成,名为“Emacs Lisp”、也叫“Elisp”。因此,它的绝大多数代码库以及用户配置也是用 Elisp 写成。 Emacs 的核心就是读取和运行 Elisp 的能力,这被称为评估「evaluation」。在评估 Elisp 时,Emacs 环境可以轻松使用与之对应的返回值。 如果大家愿意稍微学学 Elisp,那 Emacs 可以说是蕴藏着无穷无尽的可能。 与此同时,Elisp 的统一特性降低了准入门槛,彻底消除了以往全方位知识库需要在缺少共通基础的前提下拼凑应用程序的困境。 在此期间,我逐渐掌握了 Elisp,并运用这些新知识得心应手地操作 Emacs。

10730
  • 广告
    关闭

    热门业务场景教学

    个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Emacs001学用Emacs之入门:关于配置文件

    在window下的目录(我的): D:\Users\Frank\AppData\Roaming\.emacs.d D:\Users\Frank\.emacs.d emacs的配置语言elisp 配置emacs Emacs的配置文档是用elisp语言写的。elisp是lisp的一种方言。至于lisp语言,有人说它是黑客的语言。 不过,可能想多了,现在才刚开始...刚开始) 延伸阅读 Emacs's Customization Tutorial elisp快速入门:Learn X in Y minutes The Emacs Initialization

    2K40

    使用 RustC 开发 Emacs 插件

    为了简化数据类型在 C 与 ELisp 之间的转化,Emacs 提供了一系列函数,比如: Elisp–>C 更多类型转化可参考官方文档: •Conversion Between Lisp and Module Values 这里着重介绍下如何将 C 里面的函数导出到 ELisp 中: emacs_value c_add(emacs_env *env, ptrdiff_t nargs, emacs_value ret += env->extract_integer(env, args[i]); } return env->make_integer(env, ret); } void define_elisp_function 即可将 c-add 导出到 ELisp 中,使用示例: (c-add 1 2) ;; 3 (apply 'c-add (number-sequence 1 100)) ;; 5050 (c-add) , name)) } 相比 C 代码,这里的代码简洁不少,通过 #[defun] 将 say_hello 函数导出到 ELisp 中,并且函数名自动加上了前缀 greeting ,并提供了相应 feature

    11920

    007. 编辑器专家的 Emacs 世界

    由于其工作领域正好与编辑器相关,领蜂走上了一条专家型的 Emacs 学习路线,接触 Emacs 三天即开始上手 ELisp,他是怎么做的到? 开源社区内前辈们对嘉宾的影响 • 00:20:23 谈 UE/Vim/NeoVim • 00:30:05 浏览器内核发展之路与浏览器之战 • 00:38:30 在 Emacs 社区的活动 • 00:44:44 ELisp 解释器为什么选用动态作用域 • 00:52:28 学习 ELisp 的经历 • 01:00:12 Emacs 两种学习方式:专家模式与务实模式 • 01:08:57 极简风格的配置 • 01:16:36 _wv=1027&k=9tAXJ8gG [17] elisp-demos: https://emacstalk.github.io/post/002/ [18] 530146104: https://jq.qq.com

    10310

    Emacs Lisp

    == ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; 冒号在Lisp中表示注释 ;; 在Elisp ,调用函数的最简单的方式是 ;; (function arg1 arg2) ;; 这相当于通常的function(arg1,arg2),下面的表达式,对两个数字进行加法运算 (+ 2 2) ;; Elisp 你已经在Emacs中安装了这个hello函数,这个函数就成为了Emacs的一部分,知道你退出Emacs或者改变hello的定义 ;; 从下面开始,我们将不再提醒读者使用C-x C-e来定义函数和执行ELisp 指令 ;; 在Elisp中直接输入函数的名称就是调用该函数。 )))) ;; 执行greeting函数,并提供"you"字符串作为参数 (greeting "you") ;; read-from-minibuffer函数提供和用户交互的功能,这个函数可以帮助Elisp

    25230

    008. Emacs 之光的成长历程

    时间线 • 00:00:56 嘉宾自我介绍 • 00:02:20 Emacs 初相识 • 00:10:08 ELisp 学习经历 • 00:15:45 Emacs 的可发现性 Discoverability 最后有个句号,句号后两个空格 • 注释用的是 C 风格的 /* */ ,而不是 C++ 的 // • 函数名后面跟一个空格,再是括号 •读 Emacs 源码技巧 • lisp.h[12] 里面有 C 如何调用 ELisp emacstalk.github.io/post/002/ [8] 34.3 Regular Expressions: https://www.gnu.org/software/emacs/manual/html_node/elisp

    7310

    011. 与架构师 redraiment 闲聊 Emacs

    时间线 • 00:00:42 嘉宾自我介绍 • 00:04:18 为什么选择 Emacs • 00:11:11 ELisp 学习经历 • 00:21:34 Emacs 对嘉宾思维的影响 • 00:33: 56 使用 ELisp 开发微信小程序的经历 • 00:43:20 函数式编程的优势 • 00:58:06 推荐 Show Notes • 嘉宾介绍 • 姓名:张泽鹏 • 邮件:redraiment@gmail.com

    9220

    Emacs Lisp2

    变量和函数 ==;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 冒号在Lisp中表示注释;; 在Elisp 中做运算,调用函数的最简单的方式是;; (function arg1 arg2) ;; 这相当于通常的function(arg1,arg2),下面的表达式,对两个数字进行加法运算(+ 2 2);; Elisp 命令,你已经在Emacs中安装了这个hello函数,这个函数就成为了Emacs的一部分,知道你退出Emacs或者改变hello的定义;; 从下面开始,我们将不再提醒读者使用C-x C-e来定义函数和执行ELisp 指令;; 在Elisp中直接输入函数的名称就是调用该函数。 局部变量))));; 执行greeting函数,并提供"you"字符串作为参数(greeting "you");; read-from-minibuffer函数提供和用户交互的功能,这个函数可以帮助Elisp

    9840

    004. 与 stardiviner 聊 Emacs 与他与众不同的人生经历

    本期人物 • 主播:西瓜[2] • 嘉宾:stardiviner[3] 时间轴 • 00:02:09 嘉宾学习 Emacs 经历 • 00:10:35 org mode 介绍 • 00:15:15 Elisp github.com/stardiviner/org-mode •入坑经历 • vim -> org mode • 喜欢复古风 •org mode • 零配置复现问题,再去社区求助 • 自己想要的功能没人乐意实现 •Elisp

    8220

    Emacs 28 新特性介绍

    它可以把解释执行的 elisp 代码通过 gccjit 技术直接编译成二进制代码。 比如 11:00pm • 新配置 browse-url-default-handlers 根据 url 来定制不同的打开方式 • mode-line 会展示 Elisp 作用域方式 mode-line • hierarchy.el[11],用于操作具有层级关系数据结构的库 • shorthands.el[12] 一种 ELisp 命名空间的实现,社区内相关讨论[13] 平台相关变更 macOS • s emacs-mirror/emacs/blob/emacs-28/lisp/emacs-lisp/shorthands.el [13] 相关讨论: https://emacs-china.org/t/elisp-shorthands-emacs28

    19730

    005. 与 Emacs 高手陈斌闲聊 Emacs

    Emacs 最佳实践的 • 00:15:36 嘉宾列举的一些 Emacs 技巧 • 00:21:30 Emacs 的开放性,与其他编辑器的区别,“乱” VS “自由” • 00:26:31 嘉宾学习 ELisp 岁 • 吃了半年苦头后,无意间发现了 Steve Purcell[6] 的配置,才开始真正掌握其要领 •Emacs 技巧分享 • 在项目中查找文件 find-file-in-project[7] • ELisp API 多,不同插件之间可以相互调用 •Elisp 学习经历 • 潜移默化,没有特意去学 •对待开源的态度 • 佛系,软件一开始往往都是不完美的,逐渐去完善就好 • 对新手学习 Emacs 的建议 •

    13210

    002. 与 DoglooksGood 闲聊 Emacs

    :DogLooksGood[2] Show Notes •嘉宾介绍 •姓名:石天舒 •网络 ID: doglooksgood •B站: 无知的菜狗[3] •五年 Emacs 使用时长,一年后开始学习 ELisp -1 [15] native compilation: https://www.masteringemacs.org/article/speed-up-emacs-libjansson-native-elisp-compilation

    7720

    Emacs Lisp

    == ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; 冒号在Lisp中表示注释 ;; 在Elisp ,调用函数的最简单的方式是 ;; (function arg1 arg2) ;; 这相当于通常的function(arg1,arg2),下面的表达式,对两个数字进行加法运算 (+ 2 2) ;; Elisp 你已经在Emacs中安装了这个hello函数,这个函数就成为了Emacs的一部分,知道你退出Emacs或者改变hello的定义 ;; 从下面开始,我们将不再提醒读者使用C-x C-e来定义函数和执行ELisp 指令 ;; 在Elisp中直接输入函数的名称就是调用该函数。 )))) ;; 执行greeting函数,并提供"you"字符串作为参数 (greeting "you") ;; read-from-minibuffer函数提供和用户交互的功能,这个函数可以帮助Elisp

    13640

    使用 replace-regexp 在行首添加序号

    替换的内容以 \, 开始表示这是一个 ELisp 表达式,其中 \# 表示当前替换的个数,默认从 0 开始,所以这里用了 1+ 改变下需求,如果不是数字序号,而是字母表序号,可以怎么做? a.

    8520

    009. 与 tumashu 聊 Emacs 中文输入法

    时间线 • 00:00:39 嘉宾自我介绍 • 00:01:12 Emacs 初印象 • 00:06:32 Emacs 为什么能吸取各行各业的人进来 • 00:12:04 ELisp 学习经历 • 00 www.emacswiki.org/emacs/XftGnuEmacs [7] Child Frames: https://www.gnu.org/software/emacs/manual/html_node/elisp

    11920

    一名Clojurian的Emacs配置

    完成这个教程,大体不会对elisp犯怵了。接下来,只需要使用c-h v和c-h f查看elisp中定义的变量函数就能很快上手自行配置。 emacs对elisp文档的支持非常全面,只需将鼠标移到package-enable-at-startup变量上,按下c-h v (control + h, v) 组合键,就能在其它窗口(window) 这种时候,我们就要求助于elisp的文档了。在emacs中按下c-h i获取主话题(topic)的菜单,然后点击Elisp进入它的操作指南。

    1.5K20

    打开文件加强版

    此外在编辑 elisp 配置时,有时候需要打开一个变量所代表的文件,我之前一直采用在 minibuffer 中执行命令的方式来打开,比如: (find-file custom-file) 有些低效,能不能把

    7420

    如何使用 align-regexp 对齐 userscript 元信息

    violentmonkey.github.io/api/metadata-block/ [2] Regexp-Backslash: https://www.gnu.org/software/emacs/manual/html_node/elisp

    7710

    012. 前 Deepin CTO 王勇的 Emacs 传奇经历

    manateelazycat (Andy Stewart) • 个人博客:ManateeLazyCat • Emacs China 账户 • 经历总结:我人生的前28年 • 对 Emacs 新手的建议:读 ELisp

    14710

    扫码关注腾讯云开发者

    领取腾讯云代金券