next-theme / hexo-theme-next

🎉 Elegant and powerful theme for Hexo.
https://theme-next.js.org
Other
2.48k stars 438 forks source link

新增代码块显示编程语言的功能 #780

Open pxBang opened 8 months ago

pxBang commented 8 months ago

Issue Checklist

Expected behavior

截屏2024-04-01 16 56 27

图中为butterfly主题某一博客下,代码块显示出YAML编程语言

Actual behavior

截屏2024-04-01 17 00 18

在markdown文本编辑如上图所示

截屏2024-04-01 16 58 31

而在网页中显示如上图,无法显示cpp语言类型。

Steps to reproduce the behavior

既然butterfly主题有该功能,next凭什么没有呢?🐶,希望能增加新功能,将指定编程语言显示在代码块上,从而便于读者第一时间确认代码块的语言类型

Other Information

No response

welcome[bot] commented 8 months ago

Thanks for opening this issue, maintainers will get back to you as soon as possible!

stevenjoezhang commented 8 months ago

butterfly主题有该功能,next凭什么没有呢?❌ next特立独行,不盲从✅

主要是如果你指定了代码块的文件名,例如

```yml _config.yml

那么代码块上方会显示`_config.yml`而不是代码块的语言。把它放在哪还需要进一步研究。
pxBang commented 8 months ago

butterfly主题有该功能,next凭什么没有呢?❌ next特立独行,不盲从✅

主要是如果你指定了代码块的文件名,例如

```yml _config.yml


那么代码块上方会显示`_config.yml`而不是代码块的语言。把它放在哪还需要进一步研究。

我平时在markdown格式下使用```代码块时,习惯于只标明代码语言(并不会额外指定代码块文件名等),这可能和我的使用习惯有关,所以我并没有注意到这个问题:多个参数时,如何识别显示正确的参数。 但我想,简单粗暴就都显示或者干脆不显示;希望正确显示代码语言,那就建立一个代码语言库,显示的时候搜索一下有没有参数属于这个库,确认属于这个库就显示这个代码语言。

总而言之,这只是我的简单思考后的想法,可能并不实用,我只是希望next不要落后于butterfly🐶希望读者在阅读代码块时能第一时间确认代码语言

stevenjoezhang commented 8 months ago

不是这个意思,Hexo当然是知道代码语言的,不然都没法进行高亮。主要是这个位置已经另作他用了,如果要显示语言的话放在哪里是个问题。

pxBang commented 8 months ago

不是这个意思,Hexo当然是知道代码语言的,不然都没法进行高亮。主要是这个位置已经另作他用了,如果要显示语言的话放在哪里是个问题。

哦哦,之前我理解错误了。

我觉得这个左上角的位置显示代码块的文件名并不常用吧?至少在我使用的时候是这样,并不知道大家的使用习惯。

如果有空位能加上代码语言就够了,对我来说,放在哪里都一样,都足够我确认代码语言。放在哪里只是美观问题。如果一个空位也没有,那确实没办法了

stevenjoezhang commented 8 months ago
截屏2024-04-01 21 31 47

类似这个样子可以不?不过prismjs主题比较杂,不是很好适配,我先在highlight.js上试一试

pxBang commented 8 months ago

截屏2024-04-01 21 31 47 类似这个样子可以不?不过prismjs主题比较杂,不是很好适配,我先在highlight.js上试一试

这挺cool的!至少我愿意接受这个样式!

sghuang19 commented 3 months ago

同意题主的观点,个人认为这个位置要么什么都不显示,要么显示语言名称更合理。

如果作者真的有意强调一串代码所属的文件,往往是在代码块开头通过注释列出。

可以考虑再增加一个显示语言名称的选项:

这个功能如果要做的话该怎么实现?通过一个 filter 来操作生成的 HTML 吗?