显示代码更改和评论

这是一个关于某功能是否存在(可能作为插件)的问题,或者在不存在时提出功能请求……

我希望能实现在 Discourse 论坛讨论中展示类似以下内容的能力:

不仅仅是展示带有特定语言语法高亮的代码片段(我们已经可以通过用 php</kbd> 开头、用 <kbd> 结尾来实现这一点)。

我想要的是能够高亮某一行,或许添加注释,并展示对该行的修改。这些功能在讨论技术内容的论坛中非常有用,例如当你建议应用某些更改或指出问题区域时。

虽然我们的项目确实使用 GitHub,但我并不是特指要展示 GitHub 中发生的变更,而是希望在 Discourse 内部能够独立输入类似的内容——上面的图片仅作为展示其可能呈现效果的示例。

您可以像这样显示差异:

普通行
- 已删除的行
+ 已添加的行

```diff
普通行
- 已删除的行
+ 已添加的行
```
6 个赞

好的……这看起来挺酷的

有没有办法把它和特定语言的语法高亮结合起来?

没有语法高亮时代码显得很平淡,有了它就显得很棒。

不幸的是不行——不过我同意那样会很好。我们使用 highlight.js 进行语法高亮。看起来在 他们的 GitHub 仓库 上曾有过类似的讨论,但他们认为这超出了项目范围。

3 个赞

嗯嗯 :thinking:

所以他们在那里有一个 gist 代码片段,他们建议人们在该高亮器(在这种情况下是 marked.js,我想 highlight.js 也可以这样做)的外部实现它。

你觉得 Discourse 能做到吗?或者,先问一个问题,从架构角度来看这合理吗?

我想一般的思路就是做一些查找和替换,移除 diff 标记,将其发送给语法高亮器,然后再进行一些后续的查找和替换。这听起来非常别扭,但事实是,这个代码片段其实并那么复杂。

1 个赞

这当然是可能的,但我觉得不会容易。所有的语法高亮都是在 JavaScript 中进行的,因此可以通过主题组件对其进行修改。

1 个赞

你是怎么让它们变色的?

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 个赞
正常行
- 已删除行
+ 已添加行

我做到了!感谢 @david

2 个赞

我从现在开始将使用 diff 结构,它很有帮助。

我没有看到 Discourse 实现 Gist 中的那个其他建议。我越想越觉得,它应该完美地集成在语法高亮器内部,而不是外部。

基本上,随着时间推移,为语法高亮器添加一些功能是合理的。其基本任务——以易于阅读的方式展示代码——自然地延伸到展示代码的一些“动态”信息。

例如:什么发生了变化、在哪里、由谁修改;我当前指向的是哪部分代码;哪些有帮助的注释解释了代码与其发布位置之间的关系等。

感谢大家参与此次讨论。

1 个赞

或许可以考虑另一种方案?

<del>del</del>
<ins>ins</ins>

del
ins

4 个赞