Module: VER::Methods::Ctags
- Included in:
- VER::Methods
- Defined in:
- lib/ver/methods/ctags.rb
Instance Method Summary collapse
- #ctags_content ⇒ Object
- #ctags_execute(file_name, ex_cmd) ⇒ Object
- #ctags_find(needle) ⇒ Object
- #ctags_find_current ⇒ Object
Instance Method Details
#ctags_content ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/ver/methods/ctags.rb', line 34 def 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 |
#ctags_execute(file_name, ex_cmd) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/ver/methods/ctags.rb', line 16 def (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 |
#ctags_find(needle) ⇒ Object
9 10 11 12 13 14 |
# File 'lib/ver/methods/ctags.rb', line 9 def (needle) do |tag_name, file_name, ex_cmd| next unless tag_name == needle return (file_name, ex_cmd) end end |
#ctags_find_current ⇒ Object
4 5 6 7 |
# File 'lib/ver/methods/ctags.rb', line 4 def word = get('insert wordstart', 'insert wordend') (word) end |