Multinline comments in the start break syntax highlighting #2907

Closed
opened 2025-11-02 04:53:22 -06:00 by GiteaMirror · 20 comments
Owner

Originally created by @oscarlofwenhamn on GitHub (Feb 13, 2019).

Description

When starting a file with a multiline comment or sometimes multiple lines of comments, syntax highlighting breaks (at least for .ps1 files).

For example, starting a file with one of the following works fine:

# Foo
---
<# Bar #>
---
# Bleh
#

This, however, breaks it:

<# Foo
#>
---
## Bar
##

Sample files in repo

Screenshots

image

image

image

Originally created by @oscarlofwenhamn on GitHub (Feb 13, 2019). <!-- 1. Please speak English, this is the language all of us can speak and write. 2. Please ask questions or configuration/deploy problems on our Discord server (https://discord.gg/NsatcWJ) or forum (https://discourse.gitea.io). 3. Please take a moment to check that your issue doesn't already exist. 4. Please give all relevant information below for bug reports, because incomplete details will be handled as an invalid report. --> - Gitea version (or commit ref): 1.7.1 - Git version: n/a - Operating system: Windows 10 - Database (use `[x]`): - [X] PostgreSQL - Can you reproduce the bug at https://try.gitea.io: - [x] Yes (https://try.gitea.io/foobarbleh/foo) - Log gist: n/a ## Description When starting a file with a multiline comment or sometimes multiple lines of comments, syntax highlighting breaks (at least for .ps1 files). For example, starting a file with one of the following works fine: ```powershell # Foo --- <# Bar #> --- # Bleh # ``` This, however, breaks it: ```powershell <# Foo #> --- ## Bar ## ``` [Sample files in repo](https://try.gitea.io/foobarbleh/foo) ## Screenshots ![image](https://user-images.githubusercontent.com/44643697/52717481-7cb53000-2fa1-11e9-9438-ed75b6ef4e12.png) ![image](https://user-images.githubusercontent.com/44643697/52717497-850d6b00-2fa1-11e9-97c9-4f85d7edfe79.png) ![image](https://user-images.githubusercontent.com/44643697/52717507-8c347900-2fa1-11e9-8cb5-4bb3e25620df.png) <!-- **If this issue involves the Web Interface, please include a screenshot** -->
GiteaMirror added the issue/confirmedtype/bug labels 2025-11-02 04:53:23 -06:00
Author
Owner

@oscarlofwenhamn commented on GitHub (Feb 14, 2019):

Another example can be found in the example posted in #6064.

@oscarlofwenhamn commented on GitHub (Feb 14, 2019): Another example can be found in the example posted in #6064.
Author
Owner

@zeripath commented on GitHub (Feb 19, 2019):

Hi!

Is this still an issue on try.gitea.io?

The revision that fixed #6064 probably fixed this.

@zeripath commented on GitHub (Feb 19, 2019): Hi! Is this still an issue on try.gitea.io? The revision that fixed #6064 probably fixed this.
Author
Owner

@oscarlofwenhamn commented on GitHub (Feb 19, 2019):

Hi,
Yes, this problem remains (see my repo for an example: https://try.gitea.io/foobarbleh/foo).

@oscarlofwenhamn commented on GitHub (Feb 19, 2019): Hi, Yes, this problem remains (see my repo for an example: https://try.gitea.io/foobarbleh/foo).
Author
Owner

@silverwind commented on GitHub (Feb 19, 2019):

I suspect a highlight.js issue here.

@silverwind commented on GitHub (Feb 19, 2019): I suspect a [highlight.js](https://highlightjs.org/) issue here.
Author
Owner

@oscarlofwenhamn commented on GitHub (Feb 20, 2019):

Is Gitea running the latest version? Could this be something to report to the highlight.js team?

@oscarlofwenhamn commented on GitHub (Feb 20, 2019): Is Gitea running the latest version? Could this be something to report to the highlight.js team?
Author
Owner

@silverwind commented on GitHub (Feb 20, 2019):

highlight.js is 9.11.0, latest is 9.14.0.

It would help if you can showcase the issue in a fiddle like this, using the latest version.

@silverwind commented on GitHub (Feb 20, 2019): highlight.js is 9.11.0, latest is 9.14.0. It would help if you can showcase the issue in a fiddle like [this](http://jsfiddle.net/toubia95/bDW8H/), using the latest version.
Author
Owner

@oscarlofwenhamn commented on GitHub (Feb 21, 2019):

I'm new to using fiddle, but I've given it a shot here. (I'm guessing there's no way of embedding fiddles on GitHub?)

One of the variants that are broken on Gitea works in the fiddle, but the second example remains broken. Let me know if there are any modifications or corrections that should be made to the fiddle and I'll sort it out.


Fiddle output screenshot:
image

@oscarlofwenhamn commented on GitHub (Feb 21, 2019): I'm new to using fiddle, but I've given it a shot [here](https://jsfiddle.net/oscarlo/47woypse/5/). (I'm guessing there's no way of embedding fiddles on GitHub?) One of the variants that are broken on Gitea works in the fiddle, but the second example remains broken. Let me know if there are any modifications or corrections that should be made to the fiddle and I'll sort it out. --- Fiddle output screenshot: ![image](https://user-images.githubusercontent.com/44643697/53154962-45a3d780-35bc-11e9-9459-2a5722bf412c.png)
Author
Owner

@oscarlofwenhamn commented on GitHub (Feb 27, 2019):

If this isn't a priority issue for the general group, could anyone point me towards where (if possible) I could define what version of Highlight.js my instance should run? It would be nice to have this in upstream, but I would gladly sort out a local fix if this is not a priority issue.

@oscarlofwenhamn commented on GitHub (Feb 27, 2019): If this isn't a priority issue for the general group, could anyone point me towards where (if possible) I could define what version of Highlight.js my instance should run? It would be nice to have this in upstream, but I would gladly sort out a local fix if this is not a priority issue.
Author
Owner

@jolheiser commented on GitHub (Feb 27, 2019):

A temporary local workaround could be to use a custom footer template that instead gets highlight.js from {{AppSubUrl}}/js/highlight.js and then add the new version of highlight.js to your custom/public/js folder.
Docs for customizing templates

@jolheiser commented on GitHub (Feb 27, 2019): A temporary local workaround could be to use a custom [footer template](https://github.com/go-gitea/gitea/blob/master/templates/base/footer.tmpl#L33) that instead gets `highlight.js` from `{{AppSubUrl}}/js/highlight.js` and then add the new version of `highlight.js` to your `custom/public/js` folder. [Docs for customizing templates](https://docs.gitea.io/en-us/customizing-gitea/)
Author
Owner

@silverwind commented on GitHub (Feb 27, 2019):

Updated fiddle with 9.15.6: https://jsfiddle.net/vk3j2gLd/3/

All three cases look alright, correct?

@silverwind commented on GitHub (Feb 27, 2019): Updated fiddle with 9.15.6: https://jsfiddle.net/vk3j2gLd/3/ All three cases look alright, correct?
Author
Owner

@oscarlofwenhamn commented on GitHub (Feb 28, 2019):

Updated fiddle with 9.15.6: https://jsfiddle.net/vk3j2gLd/3/

All three cases look alright, correct?

Yes, this looks great!

I'm gonna test it out with a local workaround, thanks for the suggestion @jolheiser. I'll get it done right away and post an update here, and if it works I'll close this issue and open a new one for updating highligt.js, if no one objects.

@oscarlofwenhamn commented on GitHub (Feb 28, 2019): > Updated fiddle with 9.15.6: https://jsfiddle.net/vk3j2gLd/3/ > > All three cases look alright, correct? Yes, this looks great! I'm gonna test it out with a local workaround, thanks for the suggestion @jolheiser. I'll get it done right away and post an update here, and if it works I'll close this issue and open a new one for updating highligt.js, if no one objects.
Author
Owner

@silverwind commented on GitHub (Feb 28, 2019):

Once you confirm it works with in Gitea with newer highlight.js, I can raise a PR to update it. You want to use these resources:

https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/styles/default.min.css
https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/highlight.min.js
@silverwind commented on GitHub (Feb 28, 2019): Once you confirm it works with in Gitea with newer highlight.js, I can raise a PR to update it. You want to use these resources: ```` https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/styles/default.min.css https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/highlight.min.js ````
Author
Owner

@oscarlofwenhamn commented on GitHub (Feb 28, 2019):

I can confirm that the variants listed in the fiddle all work with newer highlight.js, using the resources you've provided.


I did, however, notice another breaking variant. If I write three or more lines with two or more #'s, it still breaks, looking like the third line of #'s gets interpreted as something very particular as it gets uniquely highlighted.

image

This still is an improvement, but it is unfortunate as the user who raised the issue has a habit of tagging his codes with exactly that: opening with several lines of several #'s ... I will just have to ask him not to.

@oscarlofwenhamn commented on GitHub (Feb 28, 2019): I can confirm that the variants listed in the fiddle all work with newer highlight.js, using the resources you've provided. --- I did, however, notice another breaking variant. If I write three or more lines with two or more #'s, it still breaks, looking like the third line of #'s gets interpreted as something very particular as it gets uniquely highlighted. ![image](https://user-images.githubusercontent.com/44643697/53556711-b743ce80-3b44-11e9-8881-4f7bf6135fba.png) This still is an improvement, but it is unfortunate as the user who raised the issue has a habit of tagging his codes with exactly that: opening with several lines of several #'s ... I will just have to ask him not to.
Author
Owner

@oscarlofwenhamn commented on GitHub (Mar 5, 2019):

@silverwind I just noticed in the highlight.min.js you provided that it seems to be only registering something like 25 languages (powershell not included), instead of 175 which it seems like the original highlight.pack.js is registering. It being a .min. file maybe it is really slimmed down, but I figured I'd point it out.

@oscarlofwenhamn commented on GitHub (Mar 5, 2019): @silverwind I just noticed in the highlight.min.js you provided that it seems to be only registering something like 25 languages (powershell not included), instead of 175 which it seems like the original highlight.pack.js is registering. It being a .min. file maybe it is really slimmed down, but I figured I'd point it out.
Author
Owner

@silverwind commented on GitHub (Mar 5, 2019):

Yeah, highlight.js weirdly does not publish a proper packed file with all languagues anywhere. I assume if we want to update it, we should include all languages which results in a 650kb file, not that much of a problem.

@silverwind commented on GitHub (Mar 5, 2019): Yeah, highlight.js weirdly does not publish a proper packed file with all languagues anywhere. I assume if we want to update it, we should include all languages which results in a 650kb file, not that much of a problem.
Author
Owner

@oscarlofwenhamn commented on GitHub (Mar 5, 2019):

Definately, especially if the alternative would result in previously supported languages losing support. that feels like a step in the wrong direction.

@oscarlofwenhamn commented on GitHub (Mar 5, 2019): Definately, especially if the alternative would result in previously supported languages losing support. that feels like a step in the wrong direction.
Author
Owner

@oscarlofwenhamn commented on GitHub (Mar 20, 2019):

@silverwind Any update on the PR?

@oscarlofwenhamn commented on GitHub (Mar 20, 2019): @silverwind Any update on the PR?
Author
Owner

@silverwind commented on GitHub (Apr 16, 2019):

Update PR is up, but it does not fix this issue. The root of your issue is that our use of hljs relies on automatic language detection which is rather broken. You can see it on the CSS class on the code element which in one of your broken examples has hljs ruby so the file was actually detected as ruby code.

A proper fix would be to generate a filename to language map similar to this and then pre-set the class so hljs can apply syntax highlighting based on filename and/or code fence language (e.g. like CodeMirror.findModeByName).

@silverwind commented on GitHub (Apr 16, 2019): Update PR is up, but it does not fix this issue. The root of your issue is that our use of hljs relies on automatic language detection which is rather broken. You can see it on the CSS class on the code element which in one of your broken examples has `hljs ruby` so the file was actually detected as ruby code. A proper fix would be to generate a filename to language map similar to [this](https://github.com/codemirror/CodeMirror/blob/master/mode/meta.js) and then pre-set the class so hljs can apply syntax highlighting based on filename and/or code fence language (e.g. like `CodeMirror.findModeByName`).
Author
Owner

@stale[bot] commented on GitHub (Jun 15, 2019):

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs during the next 2 weeks. Thank you for your contributions.

@stale[bot] commented on GitHub (Jun 15, 2019): This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs during the next 2 weeks. Thank you for your contributions.
Author
Owner

@oscarlofwenhamn commented on GitHub (Jul 17, 2019):

Sorry, mistakenly closed the issue.

@oscarlofwenhamn commented on GitHub (Jul 17, 2019): Sorry, mistakenly closed the issue.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/gitea#2907