用Emacs Lisp动态生成abbrev

原来还有这些符号


① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳
㉑ ㉒ ㉓ ㉔ ㉕ ㉖ ㉗ ㉘ ㉙ ㉚ ㉛ ㉜ ㉝ ㉞ ㉟
㊱ ㊲ ㊳ ㊴ ㊵ ㊶ ㊷ ㊸ ㊹ ㊺ ㊻ ㊼ ㊽ ㊾ ㊿

⓪–⑨是CIRCLED DIGIT开头的 后面的是CIRCLED NUMBER开头的

我想让它们可以用abbrev打出来

当然了 一个个定义是可以的 但为啥我们不自动生成呢?

麻烦的是 这些符号不是连续的 具体自己查查罢 稍微麻烦一点 用下面的代码

1
2
3
4
5
6
7
8
9
10
(let* ((l))
(dotimes (i 51 l)
(add-to-list l
`(,(format "c%d" i)
,(string
(cond
((= i 0) ?⓪)
((< i 21) (+ (1- i) ?①))
((< i 36) (+ (- i 21) ?㉑))
(t (+ (- i 36) ?㊱)))) nil 0) t)))

但好像最后Emacs还是给我展开了 但代码还是很有意思的嘛

用cl-loop试试

1
2
3
4
5
6
7
8
(loop for i from 0 to 50
collect `(,(format "c%d" i)
,(string
(cond
((= i 0) ?⓪)
((< i 21) (+ (1- i) ?①))
((< i 36) (+ (- i 21) ?㉑))
(t (+ (- i 36) ?㊱)))) nil 0))