Skip to content

Fine tune diff highlighting#36592

Merged
wxiaoguang merged 5 commits intogo-gitea:mainfrom
wxiaoguang:fix-diff-highlight
Feb 12, 2026
Merged

Fine tune diff highlighting#36592
wxiaoguang merged 5 commits intogo-gitea:mainfrom
wxiaoguang:fix-diff-highlight

Conversation

@wxiaoguang
Copy link
Copy Markdown
Contributor

Chroma seems extremely slow when highlighting large files, it might take dozens or hundreds of milliseconds.
When fully highlighting a diff with a lot of large files, it would take many seconds or even dozens of seconds.
So, don't highlight the entire file if it's too large, or highlighting takes too long.

Optimize recoverOneDiff a little with a improved test case and fix one more edge case.

@GiteaBot GiteaBot added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label Feb 11, 2026
@github-actions github-actions bot added the modifies/go Pull requests that update Go code label Feb 11, 2026
@wxiaoguang wxiaoguang requested a review from Copilot February 11, 2026 20:03

This comment was marked as resolved.

@wxiaoguang wxiaoguang added the skip-changelog This PR is irrelevant for the (next) changelog, for example bug fixes for unreleased features. label Feb 11, 2026
@wxiaoguang wxiaoguang added this to the 1.26.0 milestone Feb 11, 2026
@silverwind
Copy link
Copy Markdown
Member

silverwind commented Feb 12, 2026

FYI, according to Google AI, GitHub applies these limits on syntax highlighting:

  • File Size Limit: Syntax highlighting is disabled for files larger than 512 KB.
  • Line Length: Individual lines exceeding 1,000 characters are often truncated or displayed without highlighting.
  • Diff Rendering: In Pull Requests, syntax highlighting is limited to files smaller than 300 KB and total diffs under 1 MB.
  • Execution Time: The highlighting engine will time out if parsing takes longer than several seconds.

@wxiaoguang
Copy link
Copy Markdown
Contributor Author

FYI, according to Google AI, GitHub applies these limits on syntax highlighting:

* **File Size Limit:** Syntax highlighting is disabled for files larger than **512 KB**.

* **Line Length:** Individual lines exceeding **1,000 characters** are often truncated or displayed without highlighting.

* **Diff Rendering:** In Pull Requests, syntax highlighting is limited to files smaller than **300 KB** and total diffs under **1 MB**.

* **Execution Time:** The highlighting engine will time out if parsing takes longer than **several seconds**.

We also have similar approaches.

@GiteaBot GiteaBot added lgtm/need 1 This PR needs approval from one additional maintainer to be merged. and removed lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. labels Feb 12, 2026
@GiteaBot GiteaBot added lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. and removed lgtm/need 1 This PR needs approval from one additional maintainer to be merged. labels Feb 12, 2026
@wxiaoguang wxiaoguang enabled auto-merge (squash) February 12, 2026 06:13
@wxiaoguang wxiaoguang disabled auto-merge February 12, 2026 06:13
@wxiaoguang wxiaoguang enabled auto-merge (squash) February 12, 2026 06:13
@wxiaoguang wxiaoguang merged commit 2876800 into go-gitea:main Feb 12, 2026
24 checks passed
@wxiaoguang wxiaoguang deleted the fix-diff-highlight branch February 12, 2026 07:02
silverwind added a commit to silverwind/gitea that referenced this pull request Feb 12, 2026
* origin/main: (34 commits)
  Fine tune diff highlighting (go-gitea#36592)
  Add code editor setting dropdowns (go-gitea#36534)
  Update to go 1.26.0 and golangci-lint 2.9.0 (go-gitea#36588)
  Improve diff highlighting (go-gitea#36583)
  Fix markup code block layout (go-gitea#36578)
  Remove striped tables in UI (go-gitea#36509)
  Fix vertical alignment of `.commit-sign-badge` children (go-gitea#36570)
  Fix mirror sync parser and fix mirror messages (go-gitea#36504)
  Update JS and PY deps (go-gitea#36576)
  Add viewer controller for mermaid (zoom, drag) (go-gitea#36557)
  Misc typescript tweaks (go-gitea#36523)
  Use full-file highlighting for diff sections (go-gitea#36561)
  fix(diff): reprocess htmx content after loading more files (go-gitea#36568)
  [skip ci] Updated translations via Crowdin
  Add wrap to runner label list (go-gitea#36565)
  fix: add dnf5 command for Fedora in RPM package instructions (go-gitea#36527)
  Enable pagination on GiteaDownloader.getIssueReactions() (go-gitea#36549)
  Refactor merge conan and container auth preserve actions taskID (go-gitea#36560)
  Fix assignee sidebar links and empty placeholder after go-gitea#32465 refactor (go-gitea#36559)
  Fix various version parsing problems (go-gitea#36553)
  ...
silverwind added a commit to silverwind/gitea that referenced this pull request Feb 12, 2026
* origin/main: (152 commits)
  Fine tune diff highlighting (go-gitea#36592)
  Add code editor setting dropdowns (go-gitea#36534)
  Update to go 1.26.0 and golangci-lint 2.9.0 (go-gitea#36588)
  Improve diff highlighting (go-gitea#36583)
  Fix markup code block layout (go-gitea#36578)
  Remove striped tables in UI (go-gitea#36509)
  Fix vertical alignment of `.commit-sign-badge` children (go-gitea#36570)
  Fix mirror sync parser and fix mirror messages (go-gitea#36504)
  Update JS and PY deps (go-gitea#36576)
  Add viewer controller for mermaid (zoom, drag) (go-gitea#36557)
  Misc typescript tweaks (go-gitea#36523)
  Use full-file highlighting for diff sections (go-gitea#36561)
  fix(diff): reprocess htmx content after loading more files (go-gitea#36568)
  [skip ci] Updated translations via Crowdin
  Add wrap to runner label list (go-gitea#36565)
  fix: add dnf5 command for Fedora in RPM package instructions (go-gitea#36527)
  Enable pagination on GiteaDownloader.getIssueReactions() (go-gitea#36549)
  Refactor merge conan and container auth preserve actions taskID (go-gitea#36560)
  Fix assignee sidebar links and empty placeholder after go-gitea#32465 refactor (go-gitea#36559)
  Fix various version parsing problems (go-gitea#36553)
  ...
silverwind added a commit to silverwind/gitea that referenced this pull request Feb 14, 2026
* origin/main: (2555 commits)
  automate updating nix flakes (go-gitea#35641)
  Update AGENTS.md instructions (go-gitea#36627)
  use user id in noreply emails (go-gitea#36550)
  feat(db): Improve BuildCaseInsensitiveLike with lowercase (go-gitea#36598)
  [skip ci] Updated translations via Crowdin
  BUG: Fix workflow run jobs API returning null steps (go-gitea#36603)
  Refactor highlight and diff (go-gitea#36599)
  Fix bug when do LFS GC (go-gitea#36500)
  feature to be able to filter project boards by milestones (go-gitea#36321)
  Update emoji data for Unicode 16 (go-gitea#36596)
  Adapt monaco error matching pattern to recent webpack config change (go-gitea#36533)
  Fix a bug user could change another user's primary email (go-gitea#36586)
  fix(repo-editor): disable Monaco `editContext` to avoid bugs with lost focus (go-gitea#36585)
  Fine tune diff highlighting (go-gitea#36592)
  Add code editor setting dropdowns (go-gitea#36534)
  Update to go 1.26.0 and golangci-lint 2.9.0 (go-gitea#36588)
  Improve diff highlighting (go-gitea#36583)
  Fix markup code block layout (go-gitea#36578)
  Remove striped tables in UI (go-gitea#36509)
  Fix vertical alignment of `.commit-sign-badge` children (go-gitea#36570)
  ...

# Conflicts:
#	custom/conf/app.example.ini
#	docs/content/administration/config-cheat-sheet.en-us.md
#	docs/content/administration/config-cheat-sheet.zh-cn.md
#	modules/setting/security.go
#	routers/common/errpage.go
#	services/context/api.go
#	services/context/context.go
Sirherobrine23 pushed a commit to Sirherobrine23/gitea that referenced this pull request Mar 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. modifies/go Pull requests that update Go code skip-changelog This PR is irrelevant for the (next) changelog, for example bug fixes for unreleased features.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants