pgr
1
这是一个关于某功能是否存在(可能作为插件)的问题,或者在不存在时提出功能请求……
我希望能实现在 Discourse 论坛讨论中展示类似以下内容的能力:
不仅仅是展示带有特定语言语法高亮的代码片段(我们已经可以通过用 php</kbd> 开头、用 <kbd> 结尾来实现这一点)。
我想要的是能够高亮某一行,或许添加注释,并展示对该行的修改。这些功能在讨论技术内容的论坛中非常有用,例如当你建议应用某些更改或指出问题区域时。
虽然我们的项目确实使用 GitHub,但我并不是特指要展示 GitHub 中发生的变更,而是希望在 Discourse 内部能够独立输入类似的内容——上面的图片仅作为展示其可能呈现效果的示例。
david
(David Taylor)
2
您可以像这样显示差异:
普通行
- 已删除的行
+ 已添加的行
```diff
普通行
- 已删除的行
+ 已添加的行
```
6 个赞
david
(David Taylor)
4
不幸的是不行——不过我同意那样会很好。我们使用 highlight.js 进行语法高亮。看起来在 他们的 GitHub 仓库 上曾有过类似的讨论,但他们认为这超出了项目范围。
3 个赞
pgr
5
嗯嗯 
所以他们在那里有一个 gist 代码片段,他们建议人们在该高亮器(在这种情况下是 marked.js,我想 highlight.js 也可以这样做)的外部实现它。
你觉得 Discourse 能做到吗?或者,先问一个问题,从架构角度来看这合理吗?
我想一般的思路就是做一些查找和替换,移除 diff 标记,将其发送给语法高亮器,然后再进行一些后续的查找和替换。这听起来非常别扭,但事实是,这个代码片段其实并不那么复杂。
1 个赞
david
(David Taylor)
6
这当然是可能的,但我觉得不会容易。所有的语法高亮都是在 JavaScript 中进行的,因此可以通过主题组件对其进行修改。
1 个赞
david
(David Taylor)
8
Type out the code block like this:
```diff
A normal line
- removed line
+ added line
```
Specifying diff as the syntax means that you can use + and - at the beginning of lines to highlight them green and red.
3 个赞
pgr
10
我从现在开始将使用 diff 结构,它很有帮助。
我没有看到 Discourse 实现 Gist 中的那个其他建议。我越想越觉得,它应该完美地集成在语法高亮器内部,而不是外部。
基本上,随着时间推移,为语法高亮器添加一些功能是合理的。其基本任务——以易于阅读的方式展示代码——自然地延伸到展示代码的一些“动态”信息。
例如:什么发生了变化、在哪里、由谁修改;我当前指向的是哪部分代码;哪些有帮助的注释解释了代码与其发布位置之间的关系等。
感谢大家参与此次讨论。
1 个赞
或许可以考虑另一种方案?
<del>del</del>
<ins>ins</ins>
del
ins
4 个赞