你如何在elisp中找到所有可用的缩写?

时间:2017-06-22 13:48:02

标签: emacs

出于有点愚蠢的原因,我想写一个完整阅读功能来阅读Emacs的缩写。

(defun ivy-abbrev (abbrev-name)
  (interactive
  (list
    (ivy-completing-read "Insert abbrev: " (...get abbrev names here...))))
  (progn
    (abbrev-insert (abbrev-symbol abbrev-name ..appropriate abbrev-table...))))

遗憾的是,文档中没有任何内容可以...获取缩写名称...看起来可行:

https://www.gnu.org/software/emacs/manual/html_node/elisp/Abbrevs.html#Abbrevs

查看abbrev--before-point的来源,看起来每次调用时都会通过abbrev--active-tables进行递归搜索。

这个缩写API中是否有辅助方法可以使这更容易?

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容,

(cl-loop for table in (abbrev--active-tables)
   unless (abbrev-table-empty-p table)
   append (append (delete 0 table) ()))

请注意,将nil附加到矢量是创建列表的技巧。