def load_file(filename)
if filename == @current_file
return
end
@info_buffer.delete(*@info_buffer.bounds)
@source_buffer.delete(*@source_buffer.bounds)
file = begin
File.open(filename)
rescue
$stderr.puts "Cannot open: #{$!}" if $DEBUG
return
end
start = @info_buffer.get_iter_at_offset(0)
state = :before_header
file.each do |line|
case state
when :before_header
if line =~ /^=begin$/
state = :in_header
end
when :in_header
if line =~ /^=end$/
state = :body
start = @source_buffer.get_iter_at_offset(0)
elsif line =~ /^=\s+(.*)$/
title = $1
title.gsub!(/\s*\(.*\)$/, '')
last = start
@info_buffer.insert(last, title)
start = last.clone
start.backward_chars(title.length)
@info_buffer.apply_tag('title', start, last)
start = last
else
@info_buffer.insert(start, line)
end
when :body
@source_buffer.insert(start, line)
end
end
fontify
@current_file = filename
end