use max_line_width + 1 during softwrap to account for newline char

Helix softwrap implementation always wraps lines so that the newline
character doesn't get cut off so he line wraps one chars earlier then
in other editors. This is necessary, because newline chars are always
selecatble in helix and must never be hidden.

However That means that `max_line_width` currently wraps one char
earlier than expected. The typical definition of line width does not
include the newline character and other helix commands like `:reflow`
also don't count the newline character here.

This commit makes softwrap use `max_line_width + 1` instead of
`max_line_width` to correct the impedance missmatch.
pull/5813/head
Pascal Kuthe 2 years ago
parent 30412366be
commit dcfa4a63c6
No known key found for this signature in database
GPG Key ID: D715E8655AE166A6

@ -1212,7 +1212,12 @@ impl Document {
.language_config() .language_config()
.and_then(|config| config.max_line_length) .and_then(|config| config.max_line_length)
{ {
viewport_width = viewport_width.min(max_line_len as u16) // we increase max_line_len by 1 because softwrap considers the newline characterr
// as part of the line length while the "typical" expectiation is that this is not the case
// In particular other commands like :reflow do not count the line terminator
// this is technically inconsistent for the last line as that line never has a line terminator
// but having the last visual line exceed the width by 1 seems like a rare edgecase
viewport_width = viewport_width.min(max_line_len as u16 + 1)
} }
let config = self.config.load(); let config = self.config.load();
let soft_wrap = &config.soft_wrap; let soft_wrap = &config.soft_wrap;

Loading…
Cancel
Save