119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
# File 'lib/textbringer/modes/ruby_mode.rb', line 119
def backward_definition(n = number_prefix_arg || 1)
tokens = Ripper.lex(@buffer.to_s).reverse
@buffer.beginning_of_line
n.times do |i|
tokens = tokens.drop_while { |(l, _), e, t|
l >= @buffer.current_line ||
e != :on_kw || /\A(?:class|module|def)\z/ !~ t
}
(line,), = tokens.first
if line.nil?
@buffer.beginning_of_buffer
break
end
@buffer.goto_line(line)
tokens = tokens.drop(1)
end
while /\s/ =~ @buffer.char_after
@buffer.forward_char
end
end
|