lib/textbringer/modes/backtrace_mode.rb in textbringer-0.1.7 vs lib/textbringer/modes/backtrace_mode.rb in textbringer-0.1.8

- old
+ new

@@ -3,33 +3,37 @@ module Textbringer class BacktraceMode < Mode define_generic_command :jump_to_source_location BACKTRACE_MODE_MAP = Keymap.new - BACKTRACE_MODE_MAP.define_key("\n", :jump_to_source_location_command) + BACKTRACE_MODE_MAP.define_key("\C-m", :jump_to_source_location_command) + define_syntax :link, /^\S*?:\d+:(?:\d+:)?/ + def initialize(buffer) super(buffer) buffer.keymap = BACKTRACE_MODE_MAP end def jump_to_source_location - file_name, line_number = get_source_location + file_name, line_number, column_number = get_source_location if file_name find_file(file_name) goto_line(line_number) + forward_char(column_number - 1) end end private def get_source_location @buffer.save_excursion do @buffer.beginning_of_line - if @buffer.looking_at?(/^(\S*?):(\d+):/) + if @buffer.looking_at?(/^(\S*?):(\d+):(?:(\d+):)?/) file_name = @buffer.match_string(1) line_number = @buffer.match_string(2).to_i - [file_name, line_number] + column_number = (@buffer.match_string(3) || 1).to_i + [file_name, line_number, column_number] else nil end end end