Your comments

Image 1024



Following up on my comment from a few months ago. Rather than add another +1, I wanted to find out how big this change actually is.

I spent 15 minutes with an AI agent, and it works. Screenshot attached — SmartGit 26.1.049 with a "Wrap Lines" option added to the Changes-panel view menu: soft-wrapped lines, no horizontal scrollbar, line numbers on the first visual row with continuation rows unnumbered, inner-line diff highlighting still tracking across wrapped rows, and both sides staying aligned.

The reason it isn't a big change is that the Changes panes are SWT StyledText. setWordWrap(true) does the layout — no custom wrapping renderer needed — and the line-number gutter already paints per logical line from getLinePixel(), which is wrap-aware, so the numbering behaviour people have been asking for in this thread falls out for free.

Three places assume exactly one screen row per logical line:

  1. setFixedLineMetrics(), called from the diff widget's setFont(), pins a uniform row height. With wrap on, SWT still draws the wrapped text but reserves no vertical space for it, so continuation rows paint over the following lines. This is the non-obvious one: the widget reports getWordWrap() == true while getLinePixel(i) still returns a clean i * lineHeight.
  2. The scroll-sync adapter maps line index to y as index * lineHeight and derives total height from lineCount. Both break once line heights vary, and the two sides drift apart. getLinePixel() / getLineHeight(getOffsetAtLine(i)) fix it.
  3. An overlay painter passes a line index to StyledText.getLineHeight(int), which expects a character offset — invisible while every row is the same height, wrong once they aren't.

Full write-up, with the specifics: https://gist.github.com/aiba/f735dad34a86820988c59f53afb0de83

To be clear about scope: this is a spike, not a finished feature. I didn't touch the overview ruler, collapsed-hunk geometry, find / "Go to Line" / caret movement across visual rows, or the separate Compare and Conflict Solver editors. And I'm not going to guess what it costs to productionize — I can't see your source or your QA bar.

Two data points from this thread that matter more than my prototype: one commenter says this single missing feature is why he has never bought a commercial license, and GitKraken shipped line wrapping in v11.9.0 in February. I'm a paying, enthusiastic daily SmartGit user, and this is the last thing that still sends me to another tool for diffs.

In the era of AI, this is more important than ever because LLMs tend to speak markdown and write markdown files with entire paragraphs on one line.  Diffing markdown has become an important workflow for developers.

Also, Kaleidoscope diff tool, and most other diff tools, have this ability.

I would really love to be able to run smartgit on an arm64 JVM.  My own comany does java development and we run fully on the zulu-16 arm64 JVM on apple silicon and our experience has been great.  It's ridiculously fast.

There used to be a way to set SmartGit's JRE by editing ~/Library/Preferences/SmartGit/smartgit.vmoptions, but I can't find any documentation on that anymore.

Is there a way (command-line flag, environment variable, or config file) where we can tell SmartGit the path of a different JRE?