about summary refs log tree commit diff stats
path: root/ranger/gui
diff options
context:
space:
mode:
authortoonn <toonn@toonn.io>2018-10-03 19:06:17 +0200
committertoonn <toonn@toonn.io>2019-11-06 20:14:17 +0100
commita9aa71cfd91cb33cc9968e936e37df43b76daf6d (patch)
tree4b659528f0bf6d854ea5fc732509b31d2ab0a019 /ranger/gui
parentdab04350b2a3d55e762b0a2f855c5faf4ca61d61 (diff)
downloadranger-a9aa71cfd91cb33cc9968e936e37df43b76daf6d.tar.gz
Add a setting to wrap plain text previews
Fixes #1304
Diffstat (limited to 'ranger/gui')
-rw-r--r--ranger/gui/widgets/pager.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/ranger/gui/widgets/pager.py b/ranger/gui/widgets/pager.py
index c1aa2765..fd0e7887 100644
--- a/ranger/gui/widgets/pager.py
+++ b/ranger/gui/widgets/pager.py
@@ -246,11 +246,17 @@ class Pager(Widget):  # pylint: disable=too-many-instance-attributes
         while True:
             try:
                 line = self._get_line(i).expandtabs(4)
-                if self.markup == 'ansi':
-                    line = ansi.char_slice(line, startx, self.wid) + ansi.reset
-                else:
-                    line = line[startx:self.wid + startx]
-                yield line.rstrip().replace('\r\n', '\n')
+                for part in ((0,) if not
+                        self.fm.settings.wrap_plaintext_previews else
+                        range(max(1, ((len(line) - 1) // self.wid) + 1))):
+                    shift = part * self.wid
+                    if self.markup == 'ansi':
+                        line_bit = ansi.char_slice(line, startx + shift,
+                                self.wid + shift) + ansi.reset
+                    else:
+                        line_bit = line[startx + shift
+                                        :self.wid + startx + shift]
+                    yield line_bit.rstrip().replace('\r\n', '\n')
             except IndexError:
                 return
             i += 1