看到你的 PR 了,非常感谢。
我把把代码拉下来,再补了一个函数和几个测试,然后改了两处变量命名。不知道 PR 能不能协作,还是我打一个 PATCH 文件给你?
命名的错误很大程度是因为我改了命名规则导致的,在 all-the-icons
中的 *-icon-alist
我改成了 *-icon-spec
。原本是为了区分,因为我把 nerd-icons-data.el
中的变量命名为 nerd-icons-alist{/fileicon, /faicon ...}
了,所以:
- 描述 icon 如何渲染的信息,存放在
-icon-spec
。
- 映射 icon 名称和图标的变量叫做
-alist
。
关于 font famliy,由于现在只有一个字体,总是返回 “Hack Nerd Font”(可以增设一个 nerd-icons-family 变量以应对使用其它 nerd fonts 的场景),所以相应的 family 函数的主要意义应该是为了兼容 all-the-icons
? 对于 all-the-icons
的用法我还需要多做了解。
关于 fileicon/faicon/…,由于现在只有一个字体,我更愿意称它们为集合,用 iconset 表示?iconset 跟 fontset 对应,icon-spec 跟 font-spec 概念上也正好对应。
我是用 nerd-fonts.el 来查询和插入 icon 符号的,刚才更新了,增加输出十六进制代码的功能。
UPDATE
pr 是可以协作的:Allowing changes to a pull request branch created from a fork - GitHub Docs 好像还可以由 maintainers 来追加 commit。没用过这个功能,不知道是啥体验。
今天一直在外面,没来得及回复。你可以先merge再修改。也可以追加后再merge。如果不添加family 函数,很多函数会报错,无法设置正确的face。
我前面有个地方设置错了:
(dolist (charset '(han kana symbol cjk-misc bopomofo))
- (set-fontset-font (frame-parameter nil 'font) charset "Noto Sans Mono CJK SC"))
+ (set-fontset-font t charset "Noto Sans Mono CJK SC"))
相当于把中文字体设置到了 frame,而后续符号又追加到 default (t),所以不对板。看起来,default 的优先级低于 frame,这样也比较合理。
我现在是直接写死的
(set-fontset-font t '(#x4e00 . #x9fff) "WenQuanYi Micro Hei")
。编码问题确实头大。
Faint! 发现 nerd font 居然没有 emacs, elisp和 org 的 icon!这该如何是好?
我早就想去提 ISSUE 了,这几天忙一下就忘记了。又赶上家里猫丢了一只小橘猫,昨天还去公安局看了几个小时监控,心力憔悴。
UPDATE
我这就去提 ISSUE!
好像还有不少图标缺失,我有空整理下。nerd-font 为啥不直接集成 fileicon 呢?那就省事了
老铁还是喵星人啊~~~ 宠物丢了是很麻烦
all-the-icons
目前还是 emacs 里最好的 icon 包,可惜不支持 terminal。我提交了一个 issue: Merge all fonts into one · Issue #143 · domtronn/all-the-icons.el · GitHub ,不知道作者是否能支持。
非常希望nerd-icons.el
能尽快成熟起来,能一个字体走天下。不过对于 Emacs 图标缺失还不少,这个恐怕是要些时日。
放假期间,我参考 all-the-icons
和 icons-in-terminal
也简单写了一个包icons-in-terminal.el,能同时支持 GUI 和 TUI,而且最大程度兼容了all-the-icons
接口,所有调用all-the-icons-xxx
的地方直接改成icons-in-terminal-xxx
即可。和all-the-icons
一样,除了主字体之外还需要安装图标字体,不过对系统来讲经过映射只有一个icons-in-terminal.ttf
,这样在终端里可以设置用该字体显示 Unicode 字符。
目前效果看起来还凑合,可能还有部分字体缺失或者错位,需要后续调试再看了。
2 个赞
老兄有没有发现自己定义的 face 颜色跟 all-the-icons 有差别?
比如:
左边是 all-the-icons, 右边是icons-in-terminal /nerd-icons。同样是 purple,定义也完全一样,但是调用发现颜色是另外一个值(基于 light background?)。不知道怎么回事。
不是,这是同一个 frame 两个窗口的截图,都是 GUI 下。按说定义完全一样的啊,不解。
我在 Terminal 里配置了 Nerd Font 后 lsd 能输出 icon,但是在 eshell 里装了 nerd-icons.el 和 all-the-icons 都不能输出 icon,字体也改了,能看一下你这块的配置吗?
不明白 eshell 里安装 nerd-icons.el 和 all-the-icons 是什么意思。。。
找到原因了,原来是 doom-themes
为 all-the-icons
全部自定义了颜色。。。
说错了,就是在 Emacs 里装了 这两个 package,但是 eshell 里用 lsd 不能显示图标
eshell里没有 lsd 命令。这两个包只是提供了显示图标的功能,eshell 中要显示对应图标得你自己加上。