mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-22 22:45:27 -05:00
Multiline comments are not highlighted correctly #10350
Closed
opened 2025-11-02 09:05:01 -06:00 by GiteaMirror
·
14 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
No Label
type/bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#10350
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @drsybren on GitHub (Feb 27, 2023).
Description
Multi-line comments are not highlighted correctly in diff views.
Actual behaviour
Example: commit aa72e3abf9644de3c0478692d7bb357d1c7297e2 in Blender
Another example in Go, to show that it's not limited to C/C++:
aa87c1c50dExpected behaviour
Expected would be to see the highlighting like done when viewing the file regularly (of course with red/green background for the added/removed lines in the diff):
Gitea Version
1.19.0+dev-649-g2093ca517
Can you reproduce the bug on the Gitea demo site?
Yes
Log Gist
No response
Screenshots
No response
Git Version
No response
Operating System
No response
How are you running Gitea?
Self-built from Git
Database
PostgreSQL
@wxiaoguang commented on GitHub (Feb 27, 2023):
I guess it's caused by that Gitea renders the diff page line by line, then highlight doesn't work (the comments are processed line by line). That's why the comment highlight works for whole file rendering, but doesn't work for the diff/compare page.
Maybe related to:
@a1012112796 commented on GitHub (Feb 28, 2023):
looks that's because gitea hasn't checking language by file name and content like file view. but it's sound not a easy job (how to get file content ? single file name always not enough for checking language). I'd like tag this issue as
kind/enhancementinstead ofkind/bug.ref:
443dcc2db0/services/gitdiff/gitdiff.go (L1156-L1160)@wxiaoguang commented on GitHub (Feb 28, 2023):
Not only a "language" problem, but the highlighter need all the lines together to do highlight correctly. Otherwise when the highlighter sees the second line of the comment without
/*, it doesn't know it's in the comment context.@drsybren commented on GitHub (Mar 3, 2023):
I would still argue this is a bug, as the highlighting is clearly wrong.
@silverwind commented on GitHub (Mar 3, 2023):
Yes, the main reason is diff highlighting is line-by-line so all multiline stuff breaks. We should instead feed both the "before" and "after" documents separately to chroma and then use those highlighted lines to replace the lines with highlighted ones in the diff.
I'm pretty sure this issue is duplicate.
@wxiaoguang commented on GitHub (Mar 4, 2023):
This problem is quite challenging. Because at the moment many Diff Lines are provided by git commands without highlight. If we want to highlight the file first then do the diff to get Diff Lines, then the diff code should be (nearly) totally rewritten.
There could be a intermediate solution: git provides the diff lines -> gitea parses the diff lines -> git merge (join) the diff lines (update: for every hunk, but not join all chunks) as a temp file content and highlight it -> then gitea splits the highlighted content into lines as diff lines.
Correct me if I am wrong.
@lunny commented on GitHub (Mar 4, 2023):
Could we highlight every section?
Storing the diff as a patch file may be useful for a second time CPU reduction.
@lunny commented on GitHub (Mar 4, 2023):
I mean the struct of
DiffLineSectionInfo@silverwind commented on GitHub (Mar 4, 2023):
If you mean the diff hunks: It may be an improvement, but will not completely fix the issue. A complete fix can only to be to highlight the whole "before" and "after" files and map back the highlighted lines into the diff lines.
Imagine a file that only consists of one big muliline string, spanning hundres of lines. git diff will give a context of +/- 3 lines to a one-line edit. Highlighting a hunk in the middle will still be incorrect.
Also, highlighting diff hunks may result in even more broken cases because added/removed lines are intermingled, so it will definitely confuse chroma.
@wxiaoguang commented on GitHub (Mar 4, 2023):
That's my "an intermediate solution" above. However it is only an intermediate solution, you would still lose the correct context because the diff hunk may only contain a few lines, there might be no
/*in the hunk.@silverwind commented on GitHub (Mar 4, 2023):
I doubt highlighting hunks as a whole will improve the situation much, I fear it may only make it worse.
@wxiaoguang commented on GitHub (Mar 4, 2023):
Yup, if the a hunk only contains
/*but doesn't contain*/, the remaining hunks are all rendered as "comment", not good.@silverwind commented on GitHub (Jan 22, 2025):
Let's continue in https://github.com/go-gitea/gitea/issues/33358
@wxiaoguang commented on GitHub (Jan 23, 2025):
No, that's different case. #33354 is just an upstream bug.Oops, misread, 33358 is the right issue.