前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何快速使用 ELisp 进行插件编写

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

作者头像
飞驰的西瓜
发布2022-07-26 16:26:24
7720
发布2022-07-26 16:26:24
举报
文章被收录于专栏:EmacsTalk

最近在给 cider 贡献一个新 feature[1],但是由于之前只是东拼西凑配置,没怎么用 ELisp 认真写过一个完整功能,还是有些挫败感的。

挫败感的主要来源是对 ELisp 里相关概念的不熟悉,比如 xref 为了能打开 symbol 定义的文件,需要提供一个 xref-location 对象,默认提供了两种实现,xref-buffer-location 与 xref-file-location。

file 这个比较直观,传入 file/line/column 即可,但是我 buffer 这个则需要传入一个 position,但没说 position 怎么构造,我就猜 position 是个 (line . column) 的 cons?后来测试了下不行,然后去看 buffer location 的定义,position 的类型是 fixnum,既然是个数字,应该表示的是 offset,那么又一个问题,是 0 开始还是 1 开始呢?

故事写到这里就差不多了,最终我 在李杀的网站上找到了答案,直接调用 (point) 即可获得当前位置的 position。

从这里例子看出,ELisp 的文档虽然做的很全,但是缺少很重要的一个环节,即 demo。要知道 Lisp 的一重要提高生产效率的工具是 REPL,没有 demo 让我复制,我怎么在 REPL 里测试?

而且程序员都很懒、很忙,去仔细看 manual 不现实,而且 Emacs 的 manual 我感觉有些“重”了,文字太多了,看的累,我需要的仅仅是个很 copy 的示例,然后再根据我的需求改改就好了,就行 clojuredocs 那样,比如 reduce[2] 页面:

幸好在 Emacs China TG 组交流“心得”后,发现了 elisp-demos[3] 插件,可以在 helpful 页面中展示函数的用法:

最后,再推荐一个教程,供有其他 Lisp 经验的程序员快速使用 ELisp。

• https://github.com/chrisdone/elisp-guide

引用链接

[1] feature: https://github.com/clojure-emacs/cider/pull/3026 [2] reduce: https://clojuredocs.org/clojure.core/reduce [3] elisp-demos: https://github.com/xuchunyang/elisp-demos

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 EmacsTalk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引用链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档