Sha256: b7cd9983dc3c748ed80465cc8fb8a13e5876bd5d03e15b074022e14a64b5e817
Contents?: true
Size: 1.82 KB
Versions: 6
Compression:
Stored size: 1.82 KB
Contents
module Redcar class EditViewSWT class WordMoveListener MOVE_FORWARD_RE = /\s{3,}|[^\w]{2,}|(\s|[^\w])?\w+/ def initialize(controller) @controller = controller end def get_next_offset(e) if e.movement == Swt::SWT::MOVEMENT_WORD e.newOffset = next_offset(e.offset, e.lineOffset, e.lineText) # SWT gets pissy without this: if e.newOffset == e.lineOffset + e.lineText.length + 1 e.newOffset += 1 end end end def next_offset(offset, line_offset, line_text) if offset == line_offset + line_text.length offset + 1 else future_text = line_text[(offset - line_offset)..-1] if future_text == nil or future_text == "" line_offset + line_text.length else if md = future_text.match(MOVE_FORWARD_RE) offset + md.end(0) else line_offset + line_text.length end end end end def get_previous_offset(e) if e.movement == Swt::SWT::MOVEMENT_WORD e.newOffset = previous_offset(e.offset, e.lineOffset, e.lineText) # SWT gets pissy without this: if e.newOffset == e.lineOffset - 1 e.newOffset -= 1 end end end def previous_offset(offset, line_offset, line_text) if offset == line_offset offset - 1 else future_text = line_text[0..(offset - line_offset - 1)].reverse if future_text == nil or future_text == "" line_offset else if md = future_text.match(MOVE_FORWARD_RE) offset - md.end(0) else line_offset end end end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems