Is there some way to make visual-line-mode more smart about line-breaks? As depicted in fig.1, visual-line-mode doesn’t really handle overly-long lines (e.g. due to URLs) well. Disabling it entirely makes a bad overall trade-off in files containing mostly textual lines (fig.2).
It could improve by allowing line-breaks on some non-whitespace characters (like “-” or “/”) or simply disabling visual-line-mode entirely for “words” that anyway need more than one line. Better yet, for any word exceeding a maximum character-length (e.g. 50) in order to better handle lines containing a few words, but also a moderately long URL (e.g. when using the markdown syntax [link name](link url)).
I’ve found no existing options in the M-x customize interface, nor any relevant packages in M-x package-list-packages (including MELPA).
The following solutions won’t break long URLs more intelligently but may be useful alternatives. You can use
(setq word-wrap t)
. It will allow line breaking at any space or tab character but without visual-line-mode. SeeC-h v word-wrap
. In this case, maximum character length, as hoped in your message above, is the width of the window. I typically make my windows narrower if I want fewer character columns per line. On some occasions, I have used Olivetti mode to enforce a better reading experience but with wider windows.