rouge 语法突出显示是为了突出显示 R 中的非基本函数吗?
Is rouge syntax highlighting meant to highlight non-base functions in R?
我正在尝试理解 rouge
语法高亮器,特别是用它来高亮显示 R 代码。最终它是针对使用 jekyll
构建的网站,但我已经能够将我的问题隔离到 rouge
(例如,我在示例代码上使用 rougify
来生成可检查的 HTML) .
我的问题是我的大部分代码都给出了 class = "n",我认为它代表 "name" 并且无法与任意变量区分开来。我认为大多数 CSS 的语法荧光笔都不会影响 class "n" 的代码。这是从 library(ggseas)
:
生成的示例
<span class="n">library</span><span class="p">(</span><span class="n">ggseas</span><span class="p">)</span><span class="w">
根据我对 rouge
源代码中关于 this pull request, rouge
highlighting of R only worked at all from early June. Looking at what I'm pretty sure is the key bit of code 的讨论的理解,我 认为 仅在变量 [=18= 中起作用] 将被突出显示。换句话说,通过不突出显示所有非原始函数 rouge
可以正常工作,它只是对 R 语法的理解非常有限。
我的问题是,我理解的对吗?
我需要突出显示 library()
和 ggplot()
之类的东西,即使它们不是 R 基本包中的原始函数。如果我理解正确,我要么必须破解 rouge
的源代码以包含更多功能或尝试转移到其他地方。
我使用 rouge
进行 R 语法高亮已经有一段时间了,所以我可以确认它在 rouge
中的工作时间比这个月还长,而且它的效果非常好体面的工作(个人意见)。
我有一个使用 jekyll
生成的 GitHub pages 网站,不久前我经历了同样的过程,切换到 rouge
作为荧光笔。但它现在适用于 R 代码。下面是我的网站的示例屏幕截图(我添加了一些额外的代码来使这个 post 受益)。
library(ggseas)
和 library("ggseas")
页面上的代码(我通常这样写)如您所建议:
<span class="n">library</span><span class="p">(</span><span class="n">ggseas</span><span class="p">)</span>
<span class="n">library</span><span class="p">(</span><span class="s2">"ggseas"</span><span class="p">)</span>
如你所见,PRIMITIVE_FUNCTIONS
的特殊高亮指的是我们在for循环中看到的单词for
和in
的高亮。
但是,对于 ggplot()
和 ggsea
,这与流行的 IDE Studio 中突出显示的工作方式相同。只有 library()
(以及其他一些函数,如 require()
)未包含在 PRIMITIVE_FUNCTIONS
的列表中,因此不会像它们应该的那样突出显示:
所以,我很好奇您的代码在您无法使用 rouge
之前是什么样子的。
如果您只需要修复 library()
和 require()
(可能还有其他一些)的突出显示,那么您应该能够像您推测的那样将它们添加到 PRIMITIVE_FUNCTIONS
的列表中。但是如果你想对所有非基础函数进行特殊高亮显示,那么它会变得更加复杂。
如果有帮助,我已经 post 为我的 jekyl
生成的站点编辑了 _config.yml
文件的最后一部分。
# Build settings
destination: _site
paginate: 10
permalink: /:year/:title/
markdown: kramdown #redcarpet
highlighter: rouge
#redcarpet:
# extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "tables", "strikethrough", "superscript", "with_toc_data"]
#redcarpet:
# extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "tables", "with_toc_data"]
kramdown:
# use Github Flavored Markdown
input: GFM
auto_ids: true
syntax_highlighter: rouge
# do not replace newlines by <br>s
hard_wrap: false
gems: ['jekyll-paginate']
exclude: ['README.md', 'Gemfile', 'Gemfile.lock', 'screenshot.png']
我还注意到它没有对圆括号和大括号进行颜色编码,这是可取的。
我正在尝试理解 rouge
语法高亮器,特别是用它来高亮显示 R 代码。最终它是针对使用 jekyll
构建的网站,但我已经能够将我的问题隔离到 rouge
(例如,我在示例代码上使用 rougify
来生成可检查的 HTML) .
我的问题是我的大部分代码都给出了 class = "n",我认为它代表 "name" 并且无法与任意变量区分开来。我认为大多数 CSS 的语法荧光笔都不会影响 class "n" 的代码。这是从 library(ggseas)
:
<span class="n">library</span><span class="p">(</span><span class="n">ggseas</span><span class="p">)</span><span class="w">
根据我对 rouge
源代码中关于 this pull request, rouge
highlighting of R only worked at all from early June. Looking at what I'm pretty sure is the key bit of code 的讨论的理解,我 认为 仅在变量 [=18= 中起作用] 将被突出显示。换句话说,通过不突出显示所有非原始函数 rouge
可以正常工作,它只是对 R 语法的理解非常有限。
我的问题是,我理解的对吗?
我需要突出显示 library()
和 ggplot()
之类的东西,即使它们不是 R 基本包中的原始函数。如果我理解正确,我要么必须破解 rouge
的源代码以包含更多功能或尝试转移到其他地方。
我使用 rouge
进行 R 语法高亮已经有一段时间了,所以我可以确认它在 rouge
中的工作时间比这个月还长,而且它的效果非常好体面的工作(个人意见)。
我有一个使用 jekyll
生成的 GitHub pages 网站,不久前我经历了同样的过程,切换到 rouge
作为荧光笔。但它现在适用于 R 代码。下面是我的网站的示例屏幕截图(我添加了一些额外的代码来使这个 post 受益)。
library(ggseas)
和 library("ggseas")
页面上的代码(我通常这样写)如您所建议:
<span class="n">library</span><span class="p">(</span><span class="n">ggseas</span><span class="p">)</span>
<span class="n">library</span><span class="p">(</span><span class="s2">"ggseas"</span><span class="p">)</span>
如你所见,PRIMITIVE_FUNCTIONS
的特殊高亮指的是我们在for循环中看到的单词for
和in
的高亮。
但是,对于 ggplot()
和 ggsea
,这与流行的 IDE Studio 中突出显示的工作方式相同。只有 library()
(以及其他一些函数,如 require()
)未包含在 PRIMITIVE_FUNCTIONS
的列表中,因此不会像它们应该的那样突出显示:
所以,我很好奇您的代码在您无法使用 rouge
之前是什么样子的。
如果您只需要修复 library()
和 require()
(可能还有其他一些)的突出显示,那么您应该能够像您推测的那样将它们添加到 PRIMITIVE_FUNCTIONS
的列表中。但是如果你想对所有非基础函数进行特殊高亮显示,那么它会变得更加复杂。
如果有帮助,我已经 post 为我的 jekyl
生成的站点编辑了 _config.yml
文件的最后一部分。
# Build settings
destination: _site
paginate: 10
permalink: /:year/:title/
markdown: kramdown #redcarpet
highlighter: rouge
#redcarpet:
# extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "tables", "strikethrough", "superscript", "with_toc_data"]
#redcarpet:
# extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "tables", "with_toc_data"]
kramdown:
# use Github Flavored Markdown
input: GFM
auto_ids: true
syntax_highlighter: rouge
# do not replace newlines by <br>s
hard_wrap: false
gems: ['jekyll-paginate']
exclude: ['README.md', 'Gemfile', 'Gemfile.lock', 'screenshot.png']
我还注意到它没有对圆括号和大括号进行颜色编码,这是可取的。