code: def _change_line(self, delta):
          
          # Ensure new line is within limits
          self._line = min(max(0, self._line + delta), len(self._value) - 1)
  
          # Fix up column if the new line is shorter than before.
          if self._column >= len(self._value[self._line]):
              self._column = len(self._value[self._line])
docs: Move the cursor up/down the specified number of lines.
  
          :param delta: The number of lines to move (-ve is up, +ve is down).