Sha256: 2af615bfb643c20bc98c2a893a1d2081a0bff5aa10fdf92a8743079f63b398d2
Contents?: true
Size: 1.37 KB
Versions: 2
Compression:
Stored size: 1.37 KB
Contents
module VER module Methods module Ctags def ctags_find_current word = get('insert wordstart', 'insert wordend') ctags_find(word) end def ctags_find(needle) ctags_content do |tag_name, file_name, ex_cmd| next unless tag_name == needle return ctags_execute(file_name, ex_cmd) end end def ctags_execute(file_name, ex_cmd) case ex_cmd when /^\d+$/ view.find_or_create(file_name) do |view| view.text.go_line(ex_cmd.to_i) end when /^\/(.*)\/$/ source = $1.gsub!(/(?!\\)([()])/, '\\\\\\1') regexp = Regexp.new(source) self.view.find_or_create(file_name) do |view| view.text.tag_all_matching(:search, regexp, Search::SEARCH_HIGHLIGHT) view.text.search_next end else raise ArgumentError, "Unknown Ex command: %p" % [ex_cmd] end end def ctags_content dir = filename.dirname file = nil loop do file = dir/'tags' break if file.file? || dir.root? dir = dir.parent end return unless file.file? file.open 'rb' do |io| io.each_line do |line| head, tail = line.split(/;"\t/, 2) yield(*head.split("\t")) end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ver-2009.11.29 | lib/ver/methods/ctags.rb |
ver-2009.11.28 | lib/ver/methods/ctags.rb |