Skip to content
Browse files

vim

  • Loading branch information...
0 parents commit aa7b57e3f57f275243b3d9d1c6838c335599eece @sethwalker committed
Showing with 17,661 additions and 0 deletions.
  1. +10 −0 .vim/.netrwhist
  2. +4,647 −0 .vim/autoload/rails.vim
  3. +801 −0 .vim/autoload/rubycomplete.vim
  4. +93 −0 .vim/autoload/vimclojure.vim
  5. +40 −0 .vim/compiler/eruby.vim
  6. +38 −0 .vim/compiler/rcov.vim
  7. +67 −0 .vim/compiler/ruby.vim
  8. +34 −0 .vim/compiler/rubyunit.vim
  9. +23 −0 .vim/doc/clojure.txt
  10. +217 −0 .vim/doc/fugitive.txt
  11. +967 −0 .vim/doc/fuzzyfinder.jax
  12. +1,303 −0 .vim/doc/fuzzyfinder.txt
  13. +406 −0 .vim/doc/matchit.txt
  14. +1,202 −0 .vim/doc/rails.txt
  15. +218 −0 .vim/doc/surround.txt
  16. +139 −0 .vim/doc/tags-ja
  17. +11 −0 .vim/filetype.vim
  18. +1 −0 .vim/ftdetect/clojure.vim
  19. +26 −0 .vim/ftdetect/ruby.vim
  20. +56 −0 .vim/ftplugin/clojure.vim
  21. +414 −0 .vim/ftplugin/clojure/completions-clojure.core.txt
  22. +10 −0 .vim/ftplugin/clojure/completions-clojure.set.txt
  23. +13 −0 .vim/ftplugin/clojure/completions-clojure.xml.txt
  24. +24 −0 .vim/ftplugin/clojure/completions-clojure.zip.txt
  25. +103 −0 .vim/ftplugin/eruby.vim
  26. +188 −0 .vim/ftplugin/php.vim
  27. +262 −0 .vim/ftplugin/ruby.vim
  28. +5 −0 .vim/ftplugin/smarty.vim
  29. +213 −0 .vim/indent/clojure.vim
  30. +80 −0 .vim/indent/eruby.vim
  31. +377 −0 .vim/indent/ruby.vim
  32. +80 −0 .vim/macros/table.txt
  33. +324 −0 .vim/macros/table.vim
  34. +9 −0 .vim/plugin/ack.vim
  35. +132 −0 .vim/plugin/endwise.vim
  36. +1,658 −0 .vim/plugin/fugitive.vim
  37. +1,742 −0 .vim/plugin/fuzzyfinder.vim
  38. +139 −0 .vim/plugin/fuzzyfinder_textmate.vim
  39. +812 −0 .vim/plugin/matchit.vim
  40. +314 −0 .vim/plugin/rails.vim
  41. +463 −0 .vim/plugin/supertab.vim
Sorry, we could not display the entire diff because it was too big.
10 .vim/.netrwhist
@@ -0,0 +1,10 @@
+let g:netrw_dirhistmax =10
+let g:netrw_dirhist_cnt =8
+let g:netrw_dirhist_1='/usr/share/pear/xhprof_lib/display'
+let g:netrw_dirhist_2='/home/swalker/development/Web/phplib/IpDb'
+let g:netrw_dirhist_3='/etc/yum.repos.d'
+let g:netrw_dirhist_4='/home/swalker/development/DevTools'
+let g:netrw_dirhist_5='/home/swalker/development/Web/phplib/Cache/Adapter'
+let g:netrw_dirhist_6='/home/swalker/.ssh'
+let g:netrw_dirhist_7='/home/swalker/development/Web/phplib/Cache/Adapter'
+let g:netrw_dirhist_8='/usr/local/src/csslint/src'
4,647 .vim/autoload/rails.vim
4,647 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
801 .vim/autoload/rubycomplete.vim
@@ -0,0 +1,801 @@
+" Vim completion script
+" Language: Ruby
+" Maintainer: Mark Guzman <segfault@hasno.info>
+" URL: http://vim-ruby.rubyforge.org
+" Anon CVS: See above site
+" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
+" Maintainer Version: 0.8.1
+" ----------------------------------------------------------------------------
+"
+" Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com)
+" ----------------------------------------------------------------------------
+
+" {{{ requirement checks
+if !has('ruby')
+ s:ErrMsg( "Error: Rubycomplete requires vim compiled with +ruby" )
+ s:ErrMsg( "Error: falling back to syntax completion" )
+ " lets fall back to syntax completion
+ setlocal omnifunc=syntaxcomplete#Complete
+ finish
+endif
+
+if version < 700
+ s:ErrMsg( "Error: Required vim >= 7.0" )
+ finish
+endif
+" }}} requirement checks
+
+" {{{ configuration failsafe initialization
+if !exists("g:rubycomplete_rails")
+ let g:rubycomplete_rails = 0
+endif
+
+if !exists("g:rubycomplete_classes_in_global")
+ let g:rubycomplete_classes_in_global = 0
+endif
+
+if !exists("g:rubycomplete_buffer_loading")
+ let g:rubycomplete_buffer_loading = 0
+endif
+
+if !exists("g:rubycomplete_include_object")
+ let g:rubycomplete_include_object = 0
+endif
+
+if !exists("g:rubycomplete_include_objectspace")
+ let g:rubycomplete_include_objectspace = 0
+endif
+" }}} configuration failsafe initialization
+
+" {{{ vim-side support functions
+let s:rubycomplete_debug = 0
+
+function! s:ErrMsg(msg)
+ echohl ErrorMsg
+ echo a:msg
+ echohl None
+endfunction
+
+function! s:dprint(msg)
+ if s:rubycomplete_debug == 1
+ echom a:msg
+ endif
+endfunction
+
+function! s:GetBufferRubyModule(name, ...)
+ if a:0 == 1
+ let [snum,enum] = s:GetBufferRubyEntity(a:name, "module", a:1)
+ else
+ let [snum,enum] = s:GetBufferRubyEntity(a:name, "module")
+ endif
+ return snum . '..' . enum
+endfunction
+
+function! s:GetBufferRubyClass(name, ...)
+ if a:0 >= 1
+ let [snum,enum] = s:GetBufferRubyEntity(a:name, "class", a:1)
+ else
+ let [snum,enum] = s:GetBufferRubyEntity(a:name, "class")
+ endif
+ return snum . '..' . enum
+endfunction
+
+function! s:GetBufferRubySingletonMethods(name)
+endfunction
+
+function! s:GetBufferRubyEntity( name, type, ... )
+ let lastpos = getpos(".")
+ let lastline = lastpos
+ if (a:0 >= 1)
+ let lastline = [ 0, a:1, 0, 0 ]
+ call cursor( a:1, 0 )
+ endif
+
+ let stopline = 1
+
+ let crex = '^\s*\<' . a:type . '\>\s*\<' . a:name . '\>\s*\(<\s*.*\s*\)\?'
+ let [lnum,lcol] = searchpos( crex, 'w' )
+ "let [lnum,lcol] = searchpairpos( crex . '\zs', '', '\(end\|}\)', 'w' )
+
+ if lnum == 0 && lcol == 0
+ call cursor(lastpos[1], lastpos[2])
+ return [0,0]
+ endif
+
+ let curpos = getpos(".")
+ let [enum,ecol] = searchpairpos( crex, '', '\(end\|}\)', 'wr' )
+ call cursor(lastpos[1], lastpos[2])
+
+ if lnum > enum
+ return [0,0]
+ endif
+ " we found a the class def
+ return [lnum,enum]
+endfunction
+
+function! s:IsInClassDef()
+ return s:IsPosInClassDef( line('.') )
+endfunction
+
+function! s:IsPosInClassDef(pos)
+ let [snum,enum] = s:GetBufferRubyEntity( '.*', "class" )
+ let ret = 'nil'
+
+ if snum < a:pos && a:pos < enum
+ let ret = snum . '..' . enum
+ endif
+
+ return ret
+endfunction
+
+function! s:GetRubyVarType(v)
+ let stopline = 1
+ let vtp = ''
+ let pos = getpos('.')
+ let sstr = '^\s*#\s*@var\s*'.a:v.'\>\s\+[^ \t]\+\s*$'
+ let [lnum,lcol] = searchpos(sstr,'nb',stopline)
+ if lnum != 0 && lcol != 0
+ call setpos('.',pos)
+ let str = getline(lnum)
+ let vtp = substitute(str,sstr,'\1','')
+ return vtp
+ endif
+ call setpos('.',pos)
+ let ctors = '\(now\|new\|open\|get_instance'
+ if exists('g:rubycomplete_rails') && g:rubycomplete_rails == 1 && s:rubycomplete_rails_loaded == 1
+ let ctors = ctors.'\|find\|create'
+ else
+ endif
+ let ctors = ctors.'\)'
+
+ let fstr = '=\s*\([^ \t]\+.' . ctors .'\>\|[\[{"''/]\|%[xwQqr][(\[{@]\|[A-Za-z0-9@:\-()\.]\+...\?\|lambda\|&\)'
+ let sstr = ''.a:v.'\>\s*[+\-*/]*'.fstr
+ let [lnum,lcol] = searchpos(sstr,'nb',stopline)
+ if lnum != 0 && lcol != 0
+ let str = matchstr(getline(lnum),fstr,lcol)
+ let str = substitute(str,'^=\s*','','')
+
+ call setpos('.',pos)
+ if str == '"' || str == '''' || stridx(tolower(str), '%q[') != -1
+ return 'String'
+ elseif str == '[' || stridx(str, '%w[') != -1
+ return 'Array'
+ elseif str == '{'
+ return 'Hash'
+ elseif str == '/' || str == '%r{'
+ return 'Regexp'
+ elseif strlen(str) >= 4 && stridx(str,'..') != -1
+ return 'Range'
+ elseif stridx(str, 'lambda') != -1 || str == '&'
+ return 'Proc'
+ elseif strlen(str) > 4
+ let l = stridx(str,'.')
+ return str[0:l-1]
+ end
+ return ''
+ endif
+ call setpos('.',pos)
+ return ''
+endfunction
+
+"}}} vim-side support functions
+
+"{{{ vim-side completion function
+function! rubycomplete#Init()
+ execute "ruby VimRubyCompletion.preload_rails"
+endfunction
+
+function! rubycomplete#Complete(findstart, base)
+ "findstart = 1 when we need to get the text length
+ if a:findstart
+ let line = getline('.')
+ let idx = col('.')
+ while idx > 0
+ let idx -= 1
+ let c = line[idx-1]
+ if c =~ '\w'
+ continue
+ elseif ! c =~ '\.'
+ idx = -1
+ break
+ else
+ break
+ endif
+ endwhile
+
+ return idx
+ "findstart = 0 when we need to return the list of completions
+ else
+ let g:rubycomplete_completions = []
+ execute "ruby VimRubyCompletion.get_completions('" . a:base . "')"
+ return g:rubycomplete_completions
+ endif
+endfunction
+"}}} vim-side completion function
+
+"{{{ ruby-side code
+function! s:DefRuby()
+ruby << RUBYEOF
+# {{{ ruby completion
+
+begin
+ require 'rubygems' # let's assume this is safe...?
+rescue Exception
+ #ignore?
+end
+class VimRubyCompletion
+# {{{ constants
+ @@debug = false
+ @@ReservedWords = [
+ "BEGIN", "END",
+ "alias", "and",
+ "begin", "break",
+ "case", "class",
+ "def", "defined", "do",
+ "else", "elsif", "end", "ensure",
+ "false", "for",
+ "if", "in",
+ "module",
+ "next", "nil", "not",
+ "or",
+ "redo", "rescue", "retry", "return",
+ "self", "super",
+ "then", "true",
+ "undef", "unless", "until",
+ "when", "while",
+ "yield",
+ ]
+
+ @@Operators = [ "%", "&", "*", "**", "+", "-", "/",
+ "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
+ "[]", "[]=", "^", ]
+# }}} constants
+
+# {{{ buffer analysis magic
+ def load_requires
+ buf = VIM::Buffer.current
+ enum = buf.line_number
+ nums = Range.new( 1, enum )
+ nums.each do |x|
+ ln = buf[x]
+ begin
+ eval( "require %s" % $1 ) if /.*require\s*(.*)$/.match( ln )
+ rescue Exception
+ #ignore?
+ end
+ end
+ end
+
+ def load_buffer_class(name)
+ dprint "load_buffer_class(%s) START" % name
+ classdef = get_buffer_entity(name, 's:GetBufferRubyClass("%s")')
+ return if classdef == nil
+
+ pare = /^\s*class\s*(.*)\s*<\s*(.*)\s*\n/.match( classdef )
+ load_buffer_class( $2 ) if pare != nil && $2 != name # load parent class if needed
+
+ mixre = /.*\n\s*include\s*(.*)\s*\n/.match( classdef )
+ load_buffer_module( $2 ) if mixre != nil && $2 != name # load mixins if needed
+
+ begin
+ eval classdef
+ rescue Exception
+ VIM::evaluate( "s:ErrMsg( 'Problem loading class \"%s\", was it already completed?' )" % name )
+ end
+ dprint "load_buffer_class(%s) END" % name
+ end
+
+ def load_buffer_module(name)
+ dprint "load_buffer_module(%s) START" % name
+ classdef = get_buffer_entity(name, 's:GetBufferRubyModule("%s")')
+ return if classdef == nil
+
+ begin
+ eval classdef
+ rescue Exception
+ VIM::evaluate( "s:ErrMsg( 'Problem loading module \"%s\", was it already completed?' )" % name )
+ end
+ dprint "load_buffer_module(%s) END" % name
+ end
+
+ def get_buffer_entity(name, vimfun)
+ loading_allowed = VIM::evaluate("exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading")
+ return nil if loading_allowed.to_i.zero?
+ return nil if /(\"|\')+/.match( name )
+ buf = VIM::Buffer.current
+ nums = eval( VIM::evaluate( vimfun % name ) )
+ return nil if nums == nil
+ return nil if nums.min == nums.max && nums.min == 0
+
+ dprint "get_buffer_entity START"
+ visited = []
+ clscnt = 0
+ bufname = VIM::Buffer.current.name
+ classdef = ""
+ cur_line = VIM::Buffer.current.line_number
+ while (nums != nil && !(nums.min == 0 && nums.max == 0) )
+ dprint "visited: %s" % visited.to_s
+ break if visited.index( nums )
+ visited << nums
+
+ nums.each do |x|
+ if x != cur_line
+ next if x == 0
+ ln = buf[x]
+ if /^\s*(module|class|def|include)\s+/.match(ln)
+ clscnt += 1 if $1 == "class"
+ #dprint "\$1$1
+ classdef += "%s\n" % ln
+ classdef += "end\n" if /def\s+/.match(ln)
+ dprint ln
+ end
+ end
+ end
+
+ nm = "%s(::.*)*\", %s, \"" % [ name, nums.last ]
+ nums = eval( VIM::evaluate( vimfun % nm ) )
+ dprint "nm: \"%s\"" % nm
+ dprint "vimfun: %s" % (vimfun % nm)
+ dprint "got nums: %s" % nums.to_s
+ end
+ if classdef.length > 1
+ classdef += "end\n"*clscnt
+ # classdef = "class %s\n%s\nend\n" % [ bufname.gsub( /\/|\\/, "_" ), classdef ]
+ end
+
+ dprint "get_buffer_entity END"
+ dprint "classdef====start"
+ lns = classdef.split( "\n" )
+ lns.each { |x| dprint x }
+ dprint "classdef====end"
+ return classdef
+ end
+
+ def get_var_type( receiver )
+ if /(\"|\')+/.match( receiver )
+ "String"
+ else
+ VIM::evaluate("s:GetRubyVarType('%s')" % receiver)
+ end
+ end
+
+ def dprint( txt )
+ print txt if @@debug
+ end
+
+ def get_buffer_entity_list( type )
+ # this will be a little expensive.
+ loading_allowed = VIM::evaluate("exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading")
+ allow_aggressive_load = VIM::evaluate("exists('g:rubycomplete_classes_in_global') && g:rubycomplete_classes_in_global")
+ return [] if allow_aggressive_load.to_i.zero? || loading_allowed.to_i.zero?
+
+ buf = VIM::Buffer.current
+ eob = buf.length
+ ret = []
+ rg = 1..eob
+ re = eval( "/^\s*%s\s*([A-Za-z0-9_:-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*/" % type )
+
+ rg.each do |x|
+ if re.match( buf[x] )
+ next if type == "def" && eval( VIM::evaluate("s:IsPosInClassDef(%s)" % x) ) != nil
+ ret.push $1
+ end
+ end
+
+ return ret
+ end
+
+ def get_buffer_modules
+ return get_buffer_entity_list( "modules" )
+ end
+
+ def get_buffer_methods
+ return get_buffer_entity_list( "def" )
+ end
+
+ def get_buffer_classes
+ return get_buffer_entity_list( "class" )
+ end
+
+
+ def load_rails
+ allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails")
+ return if allow_rails.to_i.zero?
+
+ buf_path = VIM::evaluate('expand("%:p")')
+ file_name = VIM::evaluate('expand("%:t")')
+ vim_dir = VIM::evaluate('getcwd()')
+ file_dir = buf_path.gsub( file_name, '' )
+ file_dir.gsub!( /\\/, "/" )
+ vim_dir.gsub!( /\\/, "/" )
+ vim_dir << "/"
+ dirs = [ vim_dir, file_dir ]
+ sdirs = [ "", "./", "../", "../../", "../../../", "../../../../" ]
+ rails_base = nil
+
+ dirs.each do |dir|
+ sdirs.each do |sub|
+ trail = "%s%s" % [ dir, sub ]
+ tcfg = "%sconfig" % trail
+
+ if File.exists?( tcfg )
+ rails_base = trail
+ break
+ end
+ end
+ break if rails_base
+ end
+
+ return if rails_base == nil
+ $:.push rails_base unless $:.index( rails_base )
+
+ rails_config = rails_base + "config/"
+ rails_lib = rails_base + "lib/"
+ $:.push rails_config unless $:.index( rails_config )
+ $:.push rails_lib unless $:.index( rails_lib )
+
+ bootfile = rails_config + "boot.rb"
+ envfile = rails_config + "environment.rb"
+ if File.exists?( bootfile ) && File.exists?( envfile )
+ begin
+ require bootfile
+ require envfile
+ begin
+ require 'console_app'
+ require 'console_with_helpers'
+ rescue Exception
+ dprint "Rails 1.1+ Error %s" % $!
+ # assume 1.0
+ end
+ #eval( "Rails::Initializer.run" ) #not necessary?
+ VIM::command('let s:rubycomplete_rails_loaded = 1')
+ dprint "rails loaded"
+ rescue Exception
+ dprint "Rails Error %s" % $!
+ VIM::evaluate( "s:ErrMsg('Error loading rails environment')" )
+ end
+ end
+ end
+
+ def get_rails_helpers
+ allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails")
+ rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded')
+ return [] if allow_rails.to_i.zero? || rails_loaded.to_i.zero?
+
+ buf_path = VIM::evaluate('expand("%:p")')
+ buf_path.gsub!( /\\/, "/" )
+ path_elm = buf_path.split( "/" )
+ dprint "buf_path: %s" % buf_path
+ types = [ "app", "db", "lib", "test", "components", "script" ]
+
+ i = nil
+ ret = []
+ type = nil
+ types.each do |t|
+ i = path_elm.index( t )
+ break if i
+ end
+ type = path_elm[i]
+ type.downcase!
+
+ dprint "type: %s" % type
+ case type
+ when "app"
+ i += 1
+ subtype = path_elm[i]
+ subtype.downcase!
+
+ dprint "subtype: %s" % subtype
+ case subtype
+ when "views"
+ ret += ActionView::Base.instance_methods
+ ret += ActionView::Base.methods
+ when "controllers"
+ ret += ActionController::Base.instance_methods
+ ret += ActionController::Base.methods
+ when "models"
+ ret += ActiveRecord::Base.instance_methods
+ ret += ActiveRecord::Base.methods
+ end
+
+ when "db"
+ ret += ActiveRecord::ConnectionAdapters::SchemaStatements.instance_methods
+ ret += ActiveRecord::ConnectionAdapters::SchemaStatements.methods
+ end
+
+
+ return ret
+ end
+
+ def add_rails_columns( cls )
+ allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails")
+ rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded')
+ return [] if allow_rails.to_i.zero? || rails_loaded.to_i.zero?
+
+ begin
+ eval( "#{cls}.establish_connection" )
+ return [] unless eval( "#{cls}.ancestors.include?(ActiveRecord::Base).to_s" )
+ col = eval( "#{cls}.column_names" )
+ return col if col
+ rescue
+ dprint "add_rails_columns err: (cls: %s) %s" % [ cls, $! ]
+ return []
+ end
+ return []
+ end
+
+ def clean_sel(sel, msg)
+ sel.delete_if { |x| x == nil }
+ sel.uniq!
+ sel.grep(/^#{Regexp.quote(msg)}/) if msg != nil
+ end
+
+ def get_rails_view_methods
+ allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails")
+ rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded')
+ return [] if allow_rails.to_i.zero? || rails_loaded.to_i.zero?
+
+ buf_path = VIM::evaluate('expand("%:p")')
+ buf_path.gsub!( /\\/, "/" )
+ pelm = buf_path.split( "/" )
+ idx = pelm.index( "views" )
+
+ return [] unless idx
+ idx += 1
+
+ clspl = pelm[idx].camelize.pluralize
+ cls = clspl.singularize
+
+ ret = []
+ begin
+ ret += eval( "#{cls}.instance_methods" )
+ ret += eval( "#{clspl}Helper.instance_methods" )
+ rescue Exception
+ dprint "Error: Unable to load rails view helpers for %s: %s" % [ cls, $! ]
+ end
+
+ return ret
+ end
+# }}} buffer analysis magic
+
+# {{{ main completion code
+ def self.preload_rails
+ a = VimRubyCompletion.new
+ require 'Thread'
+ Thread.new(a) do |b|
+ begin
+ b.load_rails
+ rescue
+ end
+ end
+ a.load_rails
+ rescue
+ end
+
+ def self.get_completions(base)
+ b = VimRubyCompletion.new
+ b.get_completions base
+ end
+
+ def get_completions(base)
+ loading_allowed = VIM::evaluate("exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading")
+ if loading_allowed.to_i == 1
+ load_requires
+ load_rails
+ end
+
+ input = VIM::Buffer.current.line
+ cpos = VIM::Window.current.cursor[1] - 1
+ input = input[0..cpos]
+ input += base
+ input.sub!(/.*[ \t\n\"\\'`><=;|&{(]/, '') # Readline.basic_word_break_characters
+ input.sub!(/self\./, '')
+ input.sub!(/.*((\.\.[\[(]?)|([\[(]))/, '')
+
+ dprint 'input %s' % input
+ message = nil
+ receiver = nil
+ methods = []
+ variables = []
+ classes = []
+ constants = []
+
+ case input
+ when /^(\/[^\/]*\/)\.([^.]*)$/ # Regexp
+ receiver = $1
+ message = Regexp.quote($2)
+ methods = Regexp.instance_methods(true)
+
+ when /^([^\]]*\])\.([^.]*)$/ # Array
+ receiver = $1
+ message = Regexp.quote($2)
+ methods = Array.instance_methods(true)
+
+ when /^([^\}]*\})\.([^.]*)$/ # Proc or Hash
+ receiver = $1
+ message = Regexp.quote($2)
+ methods = Proc.instance_methods(true) | Hash.instance_methods(true)
+
+ when /^(:[^:.]*)$/ # Symbol
+ dprint "symbol"
+ if Symbol.respond_to?(:all_symbols)
+ receiver = $1
+ message = $1.sub( /:/, '' )
+ methods = Symbol.all_symbols.collect{|s| s.id2name}
+ methods.delete_if { |c| c.match( /'/ ) }
+ end
+
+ when /^::([A-Z][^:\.\(]*)$/ # Absolute Constant or class methods
+ dprint "const or cls"
+ receiver = $1
+ methods = Object.constants
+ methods.grep(/^#{receiver}/).collect{|e| "::" + e}
+
+ when /^(((::)?[A-Z][^:.\(]*)+?)::?([^:.]*)$/ # Constant or class methods
+ receiver = $1
+ message = Regexp.quote($4)
+ dprint "const or cls 2 [recv: \'%s\', msg: \'%s\']" % [ receiver, message ]
+ load_buffer_class( receiver )
+ begin
+ classes = eval("#{receiver}.constants")
+ #methods = eval("#{receiver}.methods")
+ rescue Exception
+ dprint "exception: %s" % $!
+ methods = []
+ end
+ methods.grep(/^#{message}/).collect{|e| receiver + "::" + e}
+
+ when /^(:[^:.]+)\.([^.]*)$/ # Symbol
+ dprint "symbol"
+ receiver = $1
+ message = Regexp.quote($2)
+ methods = Symbol.instance_methods(true)
+
+ when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/ # Numeric
+ dprint "numeric"
+ receiver = $1
+ message = Regexp.quote($4)
+ begin
+ methods = eval(receiver).methods
+ rescue Exception
+ methods = []
+ end
+
+ when /^(\$[^.]*)$/ #global
+ dprint "global"
+ methods = global_variables.grep(Regexp.new(Regexp.quote($1)))
+
+ when /^((\.?[^.]+)+?)\.([^.]*)$/ # variable
+ dprint "variable"
+ receiver = $1
+ message = Regexp.quote($3)
+ load_buffer_class( receiver )
+
+ cv = eval("self.class.constants")
+ vartype = get_var_type( receiver )
+ dprint "vartype: %s" % vartype
+ if vartype != ''
+ load_buffer_class( vartype )
+
+ begin
+ methods = eval("#{vartype}.instance_methods")
+ variables = eval("#{vartype}.instance_variables")
+ rescue Exception
+ dprint "load_buffer_class err: %s" % $!
+ end
+ elsif (cv).include?(receiver)
+ # foo.func and foo is local var.
+ methods = eval("#{receiver}.methods")
+ vartype = receiver
+ elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver
+ vartype = receiver
+ # Foo::Bar.func
+ begin
+ methods = eval("#{receiver}.methods")
+ rescue Exception
+ end
+ else
+ # func1.func2
+ ObjectSpace.each_object(Module){|m|
+ next if m.name != "IRB::Context" and
+ /^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name
+ methods.concat m.instance_methods(false)
+ }
+ end
+ variables += add_rails_columns( "#{vartype}" ) if vartype && vartype.length > 0
+
+ when /^\(?\s*[A-Za-z0-9:^@.%\/+*\(\)]+\.\.\.?[A-Za-z0-9:^@.%\/+*\(\)]+\s*\)?\.([^.]*)/
+ message = $1
+ methods = Range.instance_methods(true)
+
+ when /^\.([^.]*)$/ # unknown(maybe String)
+ message = Regexp.quote($1)
+ methods = String.instance_methods(true)
+
+ else
+ dprint "default/other"
+ inclass = eval( VIM::evaluate("s:IsInClassDef()") )
+
+ if inclass != nil
+ dprint "inclass"
+ classdef = "%s\n" % VIM::Buffer.current[ inclass.min ]
+ found = /^\s*class\s*([A-Za-z0-9_-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*\n$/.match( classdef )
+
+ if found != nil
+ receiver = $1
+ message = input
+ load_buffer_class( receiver )
+ begin
+ methods = eval( "#{receiver}.instance_methods" )
+ variables += add_rails_columns( "#{receiver}" )
+ rescue Exception
+ found = nil
+ end
+ end
+ end
+
+ if inclass == nil || found == nil
+ dprint "inclass == nil"
+ methods = get_buffer_methods
+ methods += get_rails_view_methods
+
+ cls_const = Class.constants
+ constants = cls_const.select { |c| /^[A-Z_-]+$/.match( c ) }
+ classes = eval("self.class.constants") - constants
+ classes += get_buffer_classes
+ classes += get_buffer_modules
+
+ include_objectspace = VIM::evaluate("exists('g:rubycomplete_include_objectspace') && g:rubycomplete_include_objectspace")
+ ObjectSpace.each_object(Class) { |cls| classes << cls.to_s } if include_objectspace == "1"
+ message = receiver = input
+ end
+
+ methods += get_rails_helpers
+ methods += Kernel.public_methods
+ end
+
+
+ include_object = VIM::evaluate("exists('g:rubycomplete_include_object') && g:rubycomplete_include_object")
+ methods = clean_sel( methods, message )
+ methods = (methods-Object.instance_methods) if include_object == "0"
+ rbcmeth = (VimRubyCompletion.instance_methods-Object.instance_methods) # lets remove those rubycomplete methods
+ methods = (methods-rbcmeth)
+
+ variables = clean_sel( variables, message )
+ classes = clean_sel( classes, message ) - ["VimRubyCompletion"]
+ constants = clean_sel( constants, message )
+
+ valid = []
+ valid += methods.collect { |m| { :name => m, :type => 'm' } }
+ valid += variables.collect { |v| { :name => v, :type => 'v' } }
+ valid += classes.collect { |c| { :name => c, :type => 't' } }
+ valid += constants.collect { |d| { :name => d, :type => 'd' } }
+ valid.sort! { |x,y| x[:name] <=> y[:name] }
+
+ outp = ""
+
+ rg = 0..valid.length
+ rg.step(150) do |x|
+ stpos = 0+x
+ enpos = 150+x
+ valid[stpos..enpos].each { |c| outp += "{'word':'%s','item':'%s','kind':'%s'}," % [ c[:name], c[:name], c[:type] ] }
+ outp.sub!(/,$/, '')
+
+ VIM::command("call extend(g:rubycomplete_completions, [%s])" % outp)
+ outp = ""
+ end
+ end
+# }}} main completion code
+
+end # VimRubyCompletion
+# }}} ruby completion
+RUBYEOF
+endfunction
+
+let s:rubycomplete_rails_loaded = 0
+
+call s:DefRuby()
+"}}} ruby-side code
+
+
+" vim:tw=78:sw=4:ts=8:et:fdm=marker:ft=vim:norl:
93 .vim/autoload/vimclojure.vim
@@ -0,0 +1,93 @@
+" Part of Vim filetype plugin for Clojure
+" Language: Clojure
+" Maintainer: Meikel Brandmeyer <mb@kotka.de>
+
+function! vimclojure#WithSaved(closure)
+ let v = a:closure.get(a:closure.tosafe)
+ let r = a:closure.f()
+ call a:closure.set(a:closure.tosafe, v)
+ return r
+endfunction
+
+function! vimclojure#WithSavedPosition(closure)
+ let a:closure['tosafe'] = "."
+ let a:closure['get'] = function("getpos")
+ let a:closure['set'] = function("setpos")
+ return vimclojure#WithSaved(a:closure)
+endfunction
+
+function! vimclojure#WithSavedRegister(closure)
+ let a:closure['get'] = function("getreg")
+ let a:closure['set'] = function("setreg")
+ return vimclojure#WithSaved(a:closure)
+endfunction
+
+function! vimclojure#Yank(r, how)
+ let closure = {'tosafe': a:r, 'yank': a:how}
+
+ function closure.f() dict
+ execute self.yank
+ return getreg(self.tosafe)
+ endfunction
+
+ return vimclojure#WithSavedRegister(closure)
+endfunction
+
+function! vimclojure#AddPathToOption(path, option)
+ if exists("*fnameescape")
+ let path = fnameescape(a:path)
+ else
+ let path = escape(a:path, '\ ')
+ endif
+
+ execute "setlocal " . a:option . "+=" . path
+endfunction
+
+function! vimclojure#AddCompletions(ns)
+ let completions = split(globpath(&rtp, "ftplugin/clojure/completions-" . a:ns . ".txt"), '\n')
+ if completions != []
+ call vimclojure#AddPathToOption('k' . completions[0], 'complete')
+ endif
+endfunction
+
+function! vimclojure#CheckUsage() dict
+ while search('^.*\M' . self.ns . '\m.*$', "W") != 0
+ let line = getline(".")
+ let mod = substitute(line, self.mod, '\1', '')
+
+ if line != mod
+ return mod
+ endif
+
+ let l = search('^\s*(\(:use\|:require\)', 'Wnb')
+ if l == 0
+ return 0
+ endif
+
+ if getline(l) =~ self.lookfor
+ return 1
+ endif
+ endwhile
+endfunction
+
+function! vimclojure#IsRequired(ns)
+ let closure = {
+ \ 'f': function("vimclojure#CheckUsage"),
+ \ 'ns': a:ns,
+ \ 'lookfor': ':require',
+ \ 'mod':
+ \ '^.*\[\M' . a:ns . '\m\s\+:as\s\+\([a-zA-Z0-9.-]\+\)\].*$'
+ \ }
+ return vimclojure#WithSavedPosition(closure)
+endfunction
+
+function! vimclojure#IsUsed(ns)
+ let closure = {
+ \ 'f': function("vimclojure#CheckUsage"),
+ \ 'ns': a:ns,
+ \ 'lookfor': ':use',
+ \ 'mod':
+ \ '^.*\[\M' . a:ns . '\m\s\+:only\s\+(\([ a-zA-Z0-9-]\+\))\].*$',
+ \ }
+ return vimclojure#WithSavedPosition(closure)
+endfunction
40 .vim/compiler/eruby.vim
@@ -0,0 +1,40 @@
+" Vim compiler file
+" Language: eRuby
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" URL: http://vim-ruby.rubyforge.org
+" Anon CVS: See above site
+" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "eruby"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+if exists("eruby_compiler") && eruby_compiler == "eruby"
+ CompilerSet makeprg=eruby
+else
+ CompilerSet makeprg=erb
+endif
+
+CompilerSet errorformat=
+ \eruby:\ %f:%l:%m,
+ \%+E%f:%l:\ parse\ error,
+ \%W%f:%l:\ warning:\ %m,
+ \%E%f:%l:in\ %*[^:]:\ %m,
+ \%E%f:%l:\ %m,
+ \%-C%\tfrom\ %f:%l:in\ %.%#,
+ \%-Z%\tfrom\ %f:%l,
+ \%-Z%p^,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8:
38 .vim/compiler/rcov.vim
@@ -0,0 +1,38 @@
+" Vim compiler file
+" Language: Ruby
+" Function: Code coverage information with rcov
+" Maintainer: Mauricio Fernandez <mfp at acm dot org>
+" Info:
+" URL: http://eigenclass.org/hiki.rb?rcov
+" ----------------------------------------------------------------------------
+"
+" Changelog:
+" 0.1: initial version, shipped with rcov 0.6.0
+"
+" Comments:
+" Initial attempt.
+" ----------------------------------------------------------------------------
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "rcov"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+CompilerSet makeprg=rake\ $*\ RCOVOPTS=\"-D\ --no-html\ --no-color\"\ $*
+
+CompilerSet errorformat=
+ \%+W\#\#\#\ %f:%l\,
+ \%-C\ \ \ ,
+ \%-C!!\
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 ff=unix :
67 .vim/compiler/ruby.vim
@@ -0,0 +1,67 @@
+" Vim compiler file
+" Language: Ruby
+" Function: Syntax check and/or error reporting
+" Maintainer: Tim Hammerquist <timh at rubyforge.org>
+" URL: http://vim-ruby.rubyforge.org
+" Anon CVS: See above site
+" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
+" ----------------------------------------------------------------------------
+"
+" Changelog:
+" 0.2: script saves and restores 'cpoptions' value to prevent problems with
+" line continuations
+" 0.1: initial release
+"
+" Contributors:
+" Hugh Sasse <hgs@dmu.ac.uk>
+" Doug Kearns <djkea2@gus.gscit.monash.edu.au>
+"
+" Todo:
+" match error type %m
+"
+" Comments:
+" I know this file isn't perfect. If you have any questions, suggestions,
+" patches, etc., please don't hesitate to let me know.
+"
+" This is my first experience with 'errorformat' and compiler plugins and
+" I welcome any input from more experienced (or clearer-thinking)
+" individuals.
+" ----------------------------------------------------------------------------
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "ruby"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+" default settings runs script normally
+" add '-c' switch to run syntax check only:
+"
+" CompilerSet makeprg=ruby\ -wc\ $*
+"
+" or add '-c' at :make command line:
+"
+" :make -c %<CR>
+"
+CompilerSet makeprg=ruby\ -w\ $*
+
+CompilerSet errorformat=
+ \%+E%f:%l:\ parse\ error,
+ \%W%f:%l:\ warning:\ %m,
+ \%E%f:%l:in\ %*[^:]:\ %m,
+ \%E%f:%l:\ %m,
+ \%-C%\tfrom\ %f:%l:in\ %.%#,
+ \%-Z%\tfrom\ %f:%l,
+ \%-Z%p^,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8:
34 .vim/compiler/rubyunit.vim
@@ -0,0 +1,34 @@
+" Vim compiler file
+" Language: Test::Unit - Ruby Unit Testing Framework
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" URL: http://vim-ruby.rubyforge.org
+" Anon CVS: See above site
+" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "rubyunit"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+CompilerSet makeprg=testrb
+
+CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:,
+ \%C%m\ [%f:%l]:,
+ \%E\ %\\+%\\d%\\+)\ Error:,
+ \%C%m:,
+ \%C\ \ \ \ %f:%l:%.%#,
+ \%C%m,
+ \%Z\ %#,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8:
23 .vim/doc/clojure.txt
@@ -0,0 +1,23 @@
+CLOJURE *clojure.vim* *ft-clj-syntax*
+
+The clojure syntax highlighting provides two options:
+>
+ g:clj_highlight_builtins
+ If it exists and is nonzero, then Clojure's builtin functions
+ are highlighted. This useful to distuingish macros and special
+ forms from functions.
+
+ g:clj_highlight_contrib
+ If it exists and is nonzero, then Clojure-Contrib's functions
+ are highlighted.
+
+ g:clj_paren_rainbow
+ If it exists and is nonzero, then differing levels of
+ parenthesisation will receive different highlighting.
+<
+The g:clj_paren_rainbow option provides 10 levels of individual colorisation
+for the parentheses. Because of the quantity of colorisation levels, unlike
+non-rainbow highlighting, the rainbow mode specifies its highlighting using
+ctermfg and guifg, thereby bypassing the usual colorscheme control using
+standard highlighting groups. The actual highlighting used depends on the
+dark/bright setting (see |'bg'|).
217 .vim/doc/fugitive.txt
@@ -0,0 +1,217 @@
+*fugitive.txt* A Git wrapper so awesome, it should be illegal
+
+Author: Tim Pope <vimNOSPAM@tpope.info> *fugitive-author*
+License: Same terms as Vim itself (see |license|)
+
+This plugin is only available if 'compatible' is not set.
+
+INTRODUCTION *fugitive*
+
+Install in ~/.vim, or in ~\vimfiles if you're on Windows and feeling lucky.
+Vim 7.2 is recommended as it ships with syntax highlighting for many Git file
+types.
+
+If you're in a hurry to get started, here are some things to try:
+
+In any file in your repository, run |:Gedit| HEAD. Press <CR> to jump to the
+current branch. Press <CR> again to jump to the top most commit. Keep using
+<CR> to explore parent commits, trees, and blobs. Use C in a tree or blob to
+get back to the commit.
+
+Edit a file in the work tree and make some changes. Use |:Gdiff| to open up
+the indexed version. Use |do| and |dp| on various hunks to bring the files in
+sync, or use |:Gread| to pull in all changes. Write the indexed version to
+stage the file.
+
+Run |:Gstatus| to check your repository's status. Use "-" to stage and reset
+files and "p" to add/reset --patch them. Invoke |:Gcommit| to commit your
+changes.
+
+Run |:Gblame| in a work tree file to see a blame in a vertical split. Press
+<CR> on any line to reopen and reblame that file as it stood in that commit.
+Press o or O on any line to inspect that commit in a split or a tab.
+
+Run |:Ggrep| to search the work tree or history. Run |:Gmove| to rename a
+file. Run |:Gremove| to delete a file.
+
+COMMANDS *fugitive-commands*
+
+These commands are local to the buffers in which they work (generally, buffers
+that are part of Git repositories).
+
+ *fugitive-:Git*
+:Git [args] Run an arbitrary git command. Similar to :!git [args]
+ but chdir to the repository tree first.
+
+ *fugitive-:Gcd*
+:Gcd [directory] |:cd| relative to the repository.
+
+ *fugitive-:Glcd*
+:Glcd [directory] |:lcd| relative to the repository.
+
+ *fugitive-:Gstatus*
+:Gstatus Bring up the output of git-status in the preview
+ window. Press - to stage or unstage the file on the
+ cursor line. Press p to do so on a per hunk basis
+ (--patch). Press C to invoke |:Gcommit|.
+
+ *fugitive-:Gcommit*
+:Gcommit [args] A wrapper around git-commit. If there is nothing
+ to commit, |:Gstatus| is called instead. Unless the
+ arguments given would skip the invocation of an editor
+ (e.g., -m), a split window will be used to obtain a
+ commit message. Write and close that window (:wq or
+ |:Gwrite|) to finish the commit. Unlike when running
+ the actual git-commit command, it is possible (but
+ unadvisable) to muck with the index with commands like
+ git-add and git-reset while a commit message is
+ pending.
+
+ *fugitive-:Ggrep*
+:Ggrep [args] |:grep| with git-grep as 'grepprg'.
+
+ *fugitive-:Glog*
+:Glog [args] Load all previous revisions of the current file into
+ the quickfix list. Additional git-log arguments can
+ be given (for example, --reverse). If "--" appears as
+ an argument, no file specific filtering is done, and
+ commits are loaded into the quickfix list.
+
+ *fugitive-:Gedit* *fugitive-:Ge*
+:Gedit [revision] |:edit| a |fugitive-revision|.
+
+ *fugitive-:Gsplit*
+:Gsplit [revision] |:split| a |fugitive-revision|.
+
+ *fugitive-:Gvsplit*
+:Gvsplit [revision] |:vsplit| a |fugitive-revision|.
+
+ *fugitive-:Gtabedit*
+:Gtabedit [revision] |:tabedit| a |fugitive-revision|
+
+ *fugitive-:Gpedit*
+:Gpedit [revision] |:pedit| a |fugitive-revision|
+
+ *fugitive-:Gread*
+:Gread [revision] Empty the buffer and |:read| a |fugitive-revision|.
+ When the argument is omitted, this is similar to
+ git-checkout on a work tree file or git-add on a stage
+ file, but without writing anything to disk.
+
+:{range}Gread [revision]
+ |:read| in a |fugitive-revision| after {range}.
+
+ *fugitive-:Gread!*
+:Gread! [revision] Deprecated synonym for |:Gread|.
+
+ *fugitive-:Gwrite*
+:Gwrite Write to the current file's path and stage the results.
+ When run in a work tree file, it is effectively git
+ add. Elsewhere, it is effectively git-checkout. A
+ great deal of effort is expended to behave sensibly
+ when the work tree or index version of the file is
+ open in another buffer.
+
+:Gwrite {path} You can give |:Gwrite| an explicit path of where in
+ the work tree to write. You can also give a path like
+ :0:foo.txt or even :0 to write to just that stage in
+ the index.
+
+ *fugitive-:Gdiff*
+:Gdiff [revision] Perform a |vimdiff| against the current file in the
+ given revision. With no argument, the version in the
+ index is used (which means a three-way diff during a
+ merge conflict, making it a git-mergetool
+ alternative). The newer of the two files is placed
+ to the right. Use |do| and |dp| and write to the
+ index file to simulate "git add --patch".
+
+ *fugitive-:Gmove*
+:Gmove {destination} Wrapper around git-mv that renames the buffer
+ afterward. The destination is relative to the current
+ directory except when started with a /, in which case
+ it is relative to the work tree. Add a ! to pass -f.
+
+ *fugitive-:Gremove*
+:Gremove Wrapper around git-rm that deletes the buffer
+ afterward. When invoked in an index file, --cached is
+ passed. Add a ! to pass -f and forcefully discard the
+ buffer.
+
+ *fugitive-:Gblame*
+:Gblame Run git-blame on the file and open the results in a
+ scroll bound vertical split. Press enter on a line to
+ reblame the file as it was in that commit.
+
+:[range]Gblame Run git-blame on the given range.
+
+MAPPINGS *fugitive-mappings*
+
+These maps are available in Git objects.
+
+ *fugitive-<CR>*
+<CR> Jump to the revision under the cursor.
+
+ *fugitive-o*
+o Jump to the revision under the cursor in a new split.
+
+ *fugitive-O*
+O Jump to the revision under the cursor in a new tab.
+
+ *fugitive-~*
+~ Go to the current file in the [count]th first
+ ancestor.
+
+ *fugitive-P*
+P Go to the current file in the [count]th parent.
+
+ *fugitive-C*
+C Go to the commit containing the current file.
+
+ *fugitive-a*
+a Show the current tag, commit, or tree in an alternate
+ format.
+
+SPECIFYING REVISIONS *fugitive-revision*
+
+Fugitive revisions are similar to Git revisions as defined in the "SPECIFYING
+REVISIONS" section in the git-rev-parse man page. For commands that accept an
+optional revision, the default is the file in the index for work tree files
+and the work tree file for everything else. Example revisions follow.
+
+Revision Meaning ~
+HEAD .git/HEAD
+master .git/refs/heads/master
+HEAD^{} The commit referenced by HEAD
+HEAD^ The parent of the commit referenced by HEAD
+HEAD: The tree referenced by HEAD
+/HEAD The file named HEAD in the work tree
+Makefile The file named Makefile in the work tree
+HEAD^:Makefile The file named Makefile in the parent of HEAD
+:Makefile The file named Makefile in the index (writable)
+- The current file in HEAD
+^ The current file in the previous commit
+~3 The current file 3 commits ago
+: .git/index (Same as |:Gstatus|)
+:0 The current file in the index
+:1 The current file's common ancestor during a conflict
+:2 The current file in the target branch during a conflict
+:3 The current file in the merged branch during a conflict
+:/foo The most recent commit with "foo" in the message
+
+STATUSLINE *fugitive-statusline*
+
+ *fugitive#statusline()*
+Add %{fugitive#statusline()} to your statusline to get an indicator including
+the current branch and the currently edited file's commit. If you don't have
+a statusline, this one matches the default when 'ruler' is set:
+>
+ set statusline=%<%f\ %h%m%r%{fugitive#statusline()}%=%-14.(%l,%c%V%)\ %P
+<
+ABOUT *fugitive-about*
+
+Grab the latest version or report a bug on GitHub:
+
+http://github.com/tpope/vim-fugitive
+
+ vim:tw=78:et:ft=help:norl:
967 .vim/doc/fuzzyfinder.jax
@@ -0,0 +1,967 @@
+*fuzzyfinder.txt* バッファ/ファイル/その他を、あいまい/部分一致検索
+
+Fuzzyfinder *fuzzyfinder*
+
+概要 |fuzzyfinder-introduction|
+インストール |fuzzyfinder-installation|
+使い方 |fuzzyfinder-usage|
+オプション |fuzzyfinder-options|
+VIMRC EXAMPLE |fuzzyfinder-vimrc-sample|
+SPECIAL THANKS |fuzzyfinder-thanks|
+CHANGELOG |fuzzyfinder-changelog|
+あばうと |fuzzyfinder-about|
+
+==============================================================================
+概要 *fuzzyfinder-introduction*
+
+Fuzzyfinder はバッファ/ファイル/コマンド/ブックマーク/タグに素早くアクセスする
+ための手段を提供します。入力されたパターンをあいまいパターンまたは部分一致パタ
+ーンに変換しマッチングを行います。
+
+ 入力パターン あいまいパターン 部分一致パターン ~
+ abc * a * b * c * * abc *
+ dir/file dir/ * f * i * l * e * dir/ * file *
+ d*r/file d * r/ * f * i * l * e * d * r/ * file *
+ ../**/s ../ ** / * s * ../ ** / * s *
+ (** allows searching a directory tree.)
+
+次のような場面で有用です:
+
+ "./AhLongLongLongLongLongFile.txt"
+ "./AhLongLongLongLongLongName.txt"
+ "./OhLongLongLongLongLongFile.txt"
+ "./OhLongLongLongLongLongName.txt" <- 欲しいファイル :-O
+
+"ON" と入力すれば "OhLongLongLongLongLongName.txt" が選択できます. :-D
+
+Fuzzyfinder にはいくつかのモードがあります:
+
+ Buffer モード
+ File モード
+ Directory モード (:cd コマンドの代わり)
+ MRU-File モード (最近使ったファイル)
+ MRU-Command モード (最近使ったコマンドライン)
+ Bookmark モード
+ Tag モード (|:tag|コマンドの代わり)
+ Tagged-File モード (tagsファイルに含まれるファイル)
+
+Fuzzyfinder はマルチバイト文字をサポートしています。
+
+
+==============================================================================
+インストール *fuzzyfinder-installation*
+
+ZIPファイルをランタイムディレクトリに展開します。
+
+以下のようにファイルが配置されるはずです。
+>
+ <ランタイムディレクトリ>/plugin/fuzzyfinder.vim
+ <ランタイムディレクトリ>/doc/fuzzyfinder.txt
+ <ランタイムディレクトリ>/doc/fuzzyfinder.jax
+<
+それから Fuzzyfinder のヘルプを有効にするためにタグファイルを更新してください
+。詳しくは|add-local-help|を参照してください。
+
+==============================================================================
+使い方 *fuzzyfinder-usage*
+
+ *fuzzyfinder-launch*
+起動 ~
+
+次のコマンドで Fuzzyfinder を起動します:
+
+ コマンド モード ~
+ |:FuzzyFinderBuffer| - Buffer モード
+ |:FuzzyFinderFile| - File モード
+ |:FuzzyFinderDir| - Directory モード
+ |:FuzzyFinderMruFile| - MRU-File モード
+ |:FuzzyFinderMruCmd| - MRU-Command モード
+ |:FuzzyFinderBookmark| - Bookmark モード
+ |:FuzzyFinderTag| - Tag モード
+ |:FuzzyFinderTaggedFile| - Tagged-File モード
+
+これらのコマンドを押しやすいキーにマッピングすることを推奨します。これらのコマ
+ンドは初期テキストをコマンド引数として受け取ることができます。初期テキストは
+Fuzzyfinder 起動直後に自動的に入力されます。コマンドが ! 付きで実行された場合(
+例: :FuzzyFinderTag!)、あいまいマッチングではなく部分一致マッチングを行うよう
+になります。
+
+ *fuzzyfinder-manipulation*
+操作 ~
+
+入力パターンはあいまいパターンに変換され、それにマッチするアイテムが補完メニュ
+ーに表示されます。
+
+行末で入力を行うと補完メニューが表示されます。
+
+レスポンスを向上させるため、補完メニューに表示されるアイテム数は
+|g:FuzzyFinderOptions.Base.enumerating_limit|に制限されます。
+
+Fuzzyfinder は幾つかのルールに従って補完アイテムをソートします:
+
+ - 完全一致を最優先する
+ - 連続的にマッチングしたアイテムを断片的にマッチングしたアイテムより優
+ 先する
+ - 後方でマッチングしたアイテムを前方でマッチングしたアイテムより優先す
+ る
+ - 短いアイテムを長いアイテムより優先する
+
+加えて、Fuzzyfinder には学習システムがあります。現在のパターンで、過去に補完さ
+れたことのあるアイテムを優先します。
+
+補完メニューの最初のアイテムは自動的に選択状態になります。
+
+いろいろな方法で、選択されたアイテムを開くことができます:
+
+ <CR> - 直前のウィンドウで開きます。
+ <C-j> - 直前のウィンドウを分割して開きます。
+ <C-k> - 直前のウィンドウを垂直分割して開きます。
+ <C-l> - 別のタブページで開きます。
+
+キャンセルして直前のウィンドウに戻るには、インサートモードを抜けてください。
+
+インサートモードを抜けずにモードを切り替えるには、<C-t> または <C-y> を入力し
+てください。
+
+大文字小文字を無視するかしないかを一時的に切り替えるには、<C-g><C-g> を入力し
+てください。
+
+ *fuzzyfinder-reusing-window*
+目的のバッファ/ファイルが開かれているウィンドウの再利用 ~
+
+ウィンドウを分割してバッファ/ファイルを開くときに、現在のタブページでそれが開
+かれているウィンドウが見つかった場合、そこへ移動します。別のタブページでバッフ
+ァ/ファイルを開くときに、他のタブページでそれが開かれているウィンドウが見つか
+った場合、そこへ移動します。
+
+常にバッファ/ファイルを新ウィンドウで開きたい場合、'reuse_window'オプションで
+この機能を無効にすることができます。
+
+ *fuzzyfinder-hiding-menu*
+補完メニューの一時非表示 ~
+
+<C-e> で補完メニューを閉じることができます。また、<C-x><C-o>で再度開くことがで
+きます。
+
+ *fuzzyfinder-highlighting*
+ハイライト ~
+
+マッチした補完アイテム数が 0 または
+|g:FuzzyFinderOptions.Base.enumerating_limit|を超える場合、
+Fuzzyfinderのバッファを"Error"グループでハイライトします。
+
+ *fuzzyfinder-command-arg*
+コマンド引数の利用 ~
+
+例として、File モードをカレントディレクトリのフルパスが入力された状態で起動す
+るには次のようにマッピングします:
+>
+ nnoremap <C-p> :FuzzyFinderFile <C-r>=fnamemodify(getcwd(), ':p')<CR><CR>
+<
+カレントディレクトリではなくカレントバッファのディレクトリの場合は次のようにマ
+ッピングします:
+>
+ nnoremap <C-p> :FuzzyFinderFile <C-r>=expand('%:~:.')[:-1-len(expand('%:~:.:t'))]<CR><CR>
+<
+ *fuzzyfinder-abbreviation* *fuzzyfinder-multiple-search*
+短縮入力及び複合検索 ~
+
+|g:FuzzyFinderOptions.Base.abbrev_map|を設定することで、全モードで短縮入力と複
+合検索が利用できます。
+
+例えば次のように設定したとします:
+>
+ let g:FuzzyFinderOptions.Base.abbrev_map = {
+ \ "^doc:" : [
+ \ "~/project/**/doc/",
+ \ ".vim/doc/",
+ \ ],
+ \ }
+<
+そして File モードで "doc:txt" と入力すると、次の2つのパターンの検索結果を複合
+します:
+
+ "~/project/**/doc/*t*x*t*"
+ ".vim/doc/*t*x*t*"
+
+ *fuzzyfinder-information-file*
+情報ファイル ~
+
+Fuzzyfinder は補完統計、MRUデータ、ブックマークなどを
+|g:FuzzyFinderOptions.Base.info_file|に書き込みます。
+
+:FuzzyFinderEditInfo コマンドは情報ファイルの編集を補助します。このコマンドを
+実行すると、情報ファイルを無名バッファに読み込みます。:write などで書き込みを
+行うと、情報ファイルを更新します。
+
+ *fuzzyfinder-cache*
+キャッシュ ~
+
+一旦キャッシュが生成されると、レスポンスを向上させるため自動的には更新されませ
+ん。これを更新するには :FuzzyFinderRenewCache コマンドを実行してください。
+
+ *fuzzyfinder-dot-sequence*
+ドット列で親ディレクトリへ移動 (File/Directory モード) ~
+
+ドット列を入力することで親ディレクトリを上がっていくことができます。パス区切り
+文字直後のドット列は "../" の列に展開されます。
+
+ ドット列 展開パターン ~
+ /.. /../
+ /... /../../
+ /.... /../../../
+
+ *fuzzyfinder-bookmark-mode*
+Bookmark モードについて ~
+
+事前にブックマークした行へジャンプすることができます。Fuzzyfinder はジャンプす
+る行番号を調整します。ブックマークされた行がブックマークされたときのパターンと
+マッチしない場合、Fuzzyfinder はブックマークされた位置の周辺でマッチする行を探
+します。なのでブックマークした行が多少移動していたとしても、そこでジャンプする
+ことができます。ブックマークした行番号へ調整せずにジャンプしたい場合、
+|g:FuzzyFinderOptions.Bookmark.searching_range|を 0 に設定してください。
+
+ *fuzzyfinder-adding-bookmark*
+ブックマークの追加 ~
+
+:FuzzyFinderAddBookmark コマンドでカーソルのある行をブックマークに追加できます
+。このコマンドを実行すると、ブックマーク名の入力を求められます。
+
+ *fuzzyfinder-alt-tagjump*
+タグジャンプの置き換え ~
+
+次のマッピングで、|:tag|と <C-]> を置き換えることができます:
+>
+ nnoremap <silent> <C-f><C-t> :FuzzyFinderTag!<CR>
+ nnoremap <silent> <C-]> :FuzzyFinderTag! <C-r>=expand('<cword>')<CR><CR>
+<
+Tag モードでは多数の補完アイテムを扱うことになるので、あいまいマッチングより強
+く絞り込める部分一致マッチングのほうがおすすめです。
+
+ *fuzzyfinder-taggedfile-mode*
+Tagged-File モード ~
+
+補完アイテムは tags ファイルに含まれるファイルです。これらのファイルは作業環境
+に関連しているので、一種のプロジェクトモードです。
+
+ *fuzzyfinder-givenfile-mode*
+Given-File モードの利用 ~
+
+Given-File モードは与えられたリストから選択されたファイルを開くための API を提
+供します。
+
+API 関数:
+>
+ function! g:FuzzyFinderMode.GivenFile.launch(
+ \ initial_pattern,
+ \ partial_matching,
+ \ items)
+<
+ initial_pattern - Fuzzyfinder 起動直後に挿入される文字列
+ partial_matching - マッチングではなく部分一致マッチングを行うか
+ items - アイテムのリスト
+
+使用例:
+>
+ " ドットファイルを開く
+ call g:FuzzyFinderMode.GivenFile.launch(
+ \ '', 0, split(glob('~/.*'), "\n"))
+<
+ *fuzzyfinder-givendir-mode*
+Given-Directory モードの利用 ~
+
+Given-Directory モードは与えられたリストから選択されたディレクトリにカレントデ
+ィレクトリを変更するための API を提供します。
+
+API 関数:
+>
+ function! g:FuzzyFinderMode.GivenDir.launch(
+ \ initial_pattern,
+ \ partial_matching,
+ \ items)
+<
+ initial_pattern - Fuzzyfinder 起動直後に挿入される文字列
+ partial_matching - マッチングではなく部分一致マッチングを行うか
+ items - アイテムのリスト
+
+使用例:
+>
+ " ランタイムディレクトリのどれかをカレントディレクトリにする
+ call g:FuzzyFinderMode.GivenDir.launch(
+ \ '', 0, split(&runtimepath, ','))
+<
+ *fuzzyfinder-givencmd-mode*
+Given-Command モードの利用 ~
+
+Given-Command モードは与えられたリストから選択されたコマンドを実行するための
+API を提供します。
+
+選択されたコマンドは feedkeys() によって実行されるので、ノーマルモードでの一連
+のキー入力をエミュレートさせることも可能です。
+
+API 関数:
+>
+ function! g:FuzzyFinderMode.GivenCmd.launch(
+ \ initial_pattern,
+ \ partial_matching,
+ \ items)
+<
+ initial_pattern - Fuzzyfinder 起動直後に挿入される文字列
+ partial_matching - マッチングではなく部分一致マッチングを行うか
+ items - アイテムのリスト
+
+
+使用例:
+>
+ function GetAllCommands()
+ redir => commands
+ silent command
+ redir END
+ return map((split(commands, "\n")[3:]),
+ \ '":" . matchstr(v:val, ''^....\zs\S*'')')
+ endfunction
+
+ " 全てのユーザー定義コマンドのリストからコマンドを選択して実行
+ call g:FuzzyFinderMode.GivenCmd.launch(
+ \ '', 0, GetAllCommands())
+
+<
+ *fuzzyfinder-callbackfile-mode*
+Callback-File モードの利用 ~
+
+Callback-File モードはファイルを探して選択するための API を提供します。
+
+API 関数:
+>
+ function! g:FuzzyFinderMode.CallbackFile.launch(
+ \ initial_pattern,
+ \ partial_matching,
+ \ listener)
+<
+ initial_pattern - Fuzzyfinder 起動直後に挿入される文字列
+ partial_matching - マッチングではなく部分一致マッチングを行うか
+ listener - 'onComplete' と 'onAbort' を持つ|Dictionary|。これ
+ らは Fuzzyfinder 終了時に呼ばれます。
+ listener.onComplete(item, method) は選択が完了した
+ とき、選択されたアイテム名とオープン方式番号の2引数
+ と共に呼ばれます。listener.onAbort() は選択を中止し
+ たときに呼ばれます。
+
+使用例:
+>
+ let listener = {}
+
+ function! listener.onComplete(item, method)
+ echo "Item: " . a:item . "\nMethod: " . a:method
+ endfunction
+
+ function! listener.onAbort()
+ echo "Abort"
+ endfunction
+
+ " カレントディレクトリからファイルを選択
+ call g:FuzzyFinderMode.CallbackFile.launch(
+ \ '', 0, listener)
+
+ " ホームディレクトリからファイルを選択
+ call g:FuzzyFinderMode.CallbackFile.launch(
+ \ '~/', 0, listener)
+<
+ *fuzzyfinder-callbackitem-mode*
+Callback-Item モードの利用 ~
+
+Callback-Item モードは与えられたリストからアイテムを選択するための API を提供
+します。
+
+API 関数:
+>
+ function! g:FuzzyFinderMode.CallbackItem.launch(
+ \ initial_pattern,
+ \ partial_matching,
+ \ listener,
+ \ items,
+ \ for_file)
+<
+ initial_pattern - Fuzzyfinder 起動直後に挿入される文字列
+ partial_matching - マッチングではなく部分一致マッチングを行うか
+ listener - 'onComplete' と 'onAbort' を持つ|Dictionary|。これ
+ らは Fuzzyfinder 終了時に呼ばれます。
+ listener.onComplete(item, method) は選択が完了した
+ とき、選択されたアイテム名とオープン方式番号の2引数
+ と共に呼ばれます。listener.onAbort() は選択を中止し
+ たときに呼ばれます。
+ items - アイテムのリスト
+ for_file - ファイル選択に特化したマッチングを利用するか
+
+使用例:
+>
+ let listener = {}
+
+ function! listener.onComplete(item, method)
+ echo "Item: " . a:item . "\nMethod: " . a:method
+ endfunction
+
+ function! listener.onAbort()
+ echo "Abort"
+ endfunction
+
+ " 与えられたリストからアイテムを選択
+ call g:FuzzyFinderMode.CallbackItem.launch(
+ \ '', 0, listener, ['ed', 'vi', 'vim'], 0)
+
+ " 与えられたリストからファイルを選択
+ call g:FuzzyFinderMode.CallbackItem.launch(
+ \ '', 0, listener, ['../foo/bar', 'baz'], 1)
+<
+ *fuzzyfinder-migemo*
+Migemo とは ~
+
+以下のページを参照してください。
+ - http://0xcc.net/migemo/
+ - http://www.kaoriya.net/#CMIGEMO
+
+
+==============================================================================
+コマンド *fuzzyfinder-commands*
+
+ *:FuzzyFinderBuffer*
+:FuzzyFinderBuffer [{text}]
+ Buffer モードの Fuzzyfinder を起動します。
+
+ *:FuzzyFinderFile*
+:FuzzyFinderFile [{text}]
+ File モードの Fuzzyfinder を起動します。
+
+ *:FuzzyFinderFileWithFullCwd*
+:FuzzyFinderFileWithFullCwd [{text}]
+ カレントディレクトリのフルパスを初期テキストとする以外は
+ |:FuzzyFinderFile|と同じです。
+
+ *:FuzzyFinderFileWithCurrentBufferDir*
+:FuzzyFinderFileWithCurrentBufferDir [{text}]
+ カレントバッファのディレクトリを初期テキストとする以外は
+ |:FuzzyFinderFile|と同じです。
+
+ *:FuzzyFinderDir*
+:FuzzyFinderDir [{text}]
+ Directory モードの Fuzzyfinder を起動します。
+
+ *:FuzzyFinderDirWithFullCwd*
+:FuzzyFinderDirWithFullCwd [{text}]
+ カレントディレクトリのフルパスを初期テキストとする以外は
+ |:FuzzyFinderDir|と同じです。
+
+ *:FuzzyFinderDirWithCurrentBufferDir*
+:FuzzyFinderDirWithCurrentBufferDir [{text}]
+ カレントバッファのディレクトリを初期テキストとする以外は
+ |:FuzzyFinderDir|と同じです。
+
+ *:FuzzyFinderMruFile*
+:FuzzyFinderMruFile [{text}]
+ MRU-File モードの Fuzzyfinder を起動します。
+
+ *:FuzzyFinderMruCmd*
+:FuzzyFinderMruCmd [{text}]
+ MRU-Command モードの Fuzzyfinder を起動します。
+
+ *:FuzzyFinderBookmark*
+:FuzzyFinderBookmark [{text}]
+ Bookmark モードの Fuzzyfinder を起動します。
+
+ *:FuzzyFinderTag*
+:FuzzyFinderTag [{text}]
+ Tag モードの Fuzzyfinder を起動します。
+
+ *:FuzzyFinderTagWithCursorWord*
+:FuzzyFinderTagWithCursorWord [{text}]
+ カーソル下の単語を初期テキストとする以外は|:FuzzyFinderTag|と
+ 同じです。
+
+ *:FuzzyFinderTaggedFile*
+:FuzzyFinderTaggedFile [{text}]
+ Tagged-File モードの Fuzzyfinder を起動します。
+
+ *:FuzzyFinderEditInfo*
+:FuzzyFinderEditInfo
+ 情報ファイルを編集するためのバッファを開きます。詳しくは
+ |fuzzyfinder-information-file|を参照してください。
+
+ *:FuzzyFinderAddBookmark*
+:FuzzyFinderAddBookmark [{name}]
+ カーソル行をブックマークに追加します。詳しくは
+ |fuzzyfinder-adding-bookmark|を参照してください。
+
+ *:FuzzyFinderAddBookmarkAsSelectedText*
+:FuzzyFinderAddBookmarkAsSelectedText
+ 最後に選択されたテキストをブックマーク名とする以外は
+ |:FuzzyFinderAddBookmark|と同じです。
+
+ *:FuzzyFinderRenewCache*
+:FuzzyFinderRenewCache
+ 補完アイテムを作り直すためにキャッシュを削除します。詳しくは
+ |fuzzyfinder-cache|を参照してください。
+
+
+==============================================================================
+オプション *fuzzyfinder-options* *g:FuzzyFinderOptions*
+
+|Dictionary|型変数|g:FuzzyFinderOptions|を通じてオプションを設定すること
+ができます。
+
+変数に値を代入する前に、|g:FuzzyFinderOptions|に各モードの|Dictionary|を宣言し
+ておく必要があります。|fuzzyfinder-vimrc-sample|を参考にしてください。
+
+ *fuzzyfinder-options-all-mode* *g:FuzzyFinderOptions.Base*
+全モード用 ~
+
+ *g:FuzzyFinderOptions.Base.key_open* >
+ let g:FuzzyFinderOptions.Base.key_open = '<CR>'
+<
+ 補完を確定し、バッファ/ファイルを直前のウィンドウで開くキーで
+ す。
+
+ *g:FuzzyFinderOptions.Base.key_open_split* >
+ let g:FuzzyFinderOptions.Base.key_open_split = '<C-j>'
+<
+ 補完を確定し、バッファ/ファイルを直前のウィンドウを分割して開
+ くキーです。
+
+ *g:FuzzyFinderOptions.Base.key_open_vsplit* >
+ let g:FuzzyFinderOptions.Base.key_open_vsplit = '<C-k>'
+<
+ 補完を確定し、バッファ/ファイルを直前のウィンドウを垂直分割し
+ て開くキーです。
+
+ *g:FuzzyFinderOptions.Base.key_open_tab* >
+ let g:FuzzyFinderOptions.Base.key_open_tab = '<C-l>'
+<
+ 補完を確定し、バッファ/ファイルを別タブページ開くキーです。
+
+ *g:FuzzyFinderOptions.Base.key_next_mode* >
+ let g:FuzzyFinderOptions.Base.key_next_mode = '<C-t>'
+<
+ 次のモードに切り替えるキーです。
+
+ *g:FuzzyFinderOptions.Base.key_prev_mode* >
+ let g:FuzzyFinderOptions.Base.key_prev_mode = '<C-y>'
+<
+ 前のモードに切り替えるキーです。
+
+ *g:FuzzyFinderOptions.Base.key_ignore_case* >
+ let g:FuzzyFinderOptions.Base.key_ignore_case = '<C-g><C-g>'
+<
+ 大文字小文字を無視するかしないかを一時的に切り替えるキーです。
+
+ *g:FuzzyFinderOptions.Base.info_file* >
+ let g:FuzzyFinderOptions.Base.info_file = '~/.vimfuzzyfinder'
+<
+ 補完統計、MRUデータ、ブックマークなどを書き込むファイルのパス
+ です。"" を設定するとファイルへの書き込みは行われなくなります。
+
+ *g:FuzzyFinderOptions.Base.min_length* >
+ let g:FuzzyFinderOptions.Base.min_length = 0
+<
+ 入力されたテキストの長さがこの値未満なら補完メニューを表示しま
+ せん。
+
+ *g:FuzzyFinderOptions.Base.abbrev_map* >
+ let g:FuzzyFinderOptions.Base.abbrev_map = {}
+<
+ |Dictionary|型でそれぞれの値は|List|型です。入力されたテキスト
+ の、キーにマッチする部分が対応する値に展開されます。
+
+ *g:FuzzyFinderOptions.Base.ignore_case* >
+ let g:FuzzyFinderOptions.Base.ignore_case = 1
+<
+ 真なら大文字小文字を無視します。
+
+ *g:FuzzyFinderOptions.Base.time_format* >
+ let g:FuzzyFinderOptions.Base.time_format = '(%x %H:%M:%S)'
+<
+ アイテムが登録された日時の書式を設定します。書式の詳細は
+ |strftime()|を参照してください。
+
+ *g:FuzzyFinderOptions.Base.learning_limit* >
+ let g:FuzzyFinderOptions.Base.learning_limit = 100
+<
+ 保持する補完統計データの上限値です。
+
+ *g:FuzzyFinderOptions.Base.enumerating_limit* >
+ let g:FuzzyFinderOptions.Base.enumerating_limit = 100
+<
+ レスポンスを向上させるため、補完アイテムの列挙をこの数に達した
+ 時点で打ち切ります。
+
+ *g:FuzzyFinderOptions.Base.max_menu_width* >
+ let g:FuzzyFinderOptions.Base.max_menu_width = 80
+<
+ 長い補完アイテムは、この長さに収まるよう前方を省略して表示しま
+ す。
+
+ *g:FuzzyFinderOptions.Base.lasting_cache* >
+ let g:FuzzyFinderOptions.Base.lasting_cache = 1
+<
+ 真なら補完リストのキャッシュを解放せずに次回以降再利用するよう
+ になります。
+
+ *g:FuzzyFinderOptions.Base.migemo_support* >
+ let g:FuzzyFinderOptions.Base.migemo_support = 0
+<
+ 真なら migemo を利用します。
+
+ *fuzzyfinder-options-buffer-mode* *g:FuzzyFinderOptions.Buffer*
+Buffer モード用 ~
+
+ *g:FuzzyFinderOptions.Buffer.mode_available* >
+ let g:FuzzyFinderOptions.Buffer.mode_available = 1
+<
+ 偽ならこのモードに関する機能を無効化します。
+
+ *g:FuzzyFinderOptions.Buffer.prompt* >
+ let g:FuzzyFinderOptions.Buffer.prompt = '>Buffer>'
+<
+ プロンプト文字列です。
+
+ *g:FuzzyFinderOptions.Buffer.prompt_highlight* >
+ let g:FuzzyFinderOptions.Buffer.prompt_highlight = 'Question'
+<
+ プロンプトをハイライトするグループ名です。
+
+ *g:FuzzyFinderOptions.Buffer.smart_bs* >
+ let g:FuzzyFinderOptions.Buffer.smart_bs = 1
+<
+ パス区切り文字の直後で <BS> を入力すると、ディレクトリ名1つ分
+ を削除します。
+
+ *g:FuzzyFinderOptions.Buffer.switch_order* >
+ let g:FuzzyFinderOptions.Buffer.switch_order = 10
+<
+ 次/前のモードに切り替えるためにモードをソートするときの比較値
+ です。負数ならこのモードには切り替えません。
+
+ *g:FuzzyFinderOptions.Buffer.reuse_window* >
+ let g:FuzzyFinderOptions.Buffer.reuse_window = 1
+<
+ 真なら目的のバッファ/ファイルを開いているウィンドウを再利用し
+ ます。
+
+ *g:FuzzyFinderOptions.Buffer.mru_order* >
+ let g:FuzzyFinderOptions.Buffer.mru_order = 1
+<
+ 真なら最後に使った時間順に補完アイテムをソートします。
+
+ *fuzzyfinder-options-file-mode* *g:FuzzyFinderOptions.File*
+File モード用 ~
+
+ *g:FuzzyFinderOptions.File.mode_available* >
+ let g:FuzzyFinderOptions.File.mode_available = 1
+<
+ 偽ならこのモードに関する機能を無効化します。
+
+ *g:FuzzyFinderOptions.File.prompt* >
+ let g:FuzzyFinderOptions.File.prompt = '>File>'
+<
+ プロンプト文字列です。
+
+ *g:FuzzyFinderOptions.File.prompt_highlight* >
+ let g:FuzzyFinderOptions.File.prompt_highlight = 'Question'
+<
+ プロンプトをハイライトするグループ名です。
+
+ *g:FuzzyFinderOptions.File.smart_bs* >
+ let g:FuzzyFinderOptions.File.smart_bs = 1
+<
+ パス区切り文字の直後で <BS> を入力すると、ディレクトリ名1つ分
+ を削除します。
+
+ *g:FuzzyFinderOptions.File.switch_order* >
+ let g:FuzzyFinderOptions.File.switch_order = 20
+<
+ 次/前のモードに切り替えるためにモードをソートするときの比較値
+ です。負数ならこのモードには切り替えません。
+
+ *g:FuzzyFinderOptions.File.reuse_window* >
+ let g:FuzzyFinderOptions.File.reuse_window = 1
+<
+ 真なら目的のバッファ/ファイルを開いているウィンドウを再利用し
+ ます。
+
+ *g:FuzzyFinderOptions.File.excluded_path* >
+ let g:FuzzyFinderOptions.File.excluded_path = '\v\~$|\.o$|\.exe$|\.bak$|\.swp$'
+<
+ これにマッチするパスのアイテムは除外します。
+
+ *fuzzyfinder-options-dir-mode* *g:FuzzyFinderOptions.Dir*
+Directory モード用 ~
+
+ *g:FuzzyFinderOptions.Dir.mode_available* >
+ let g:FuzzyFinderOptions.Dir.mode_available = 1
+<
+ 偽ならこのモードに関する機能を無効化します。
+
+ *g:FuzzyFinderOptions.Dir.prompt* >
+ let g:FuzzyFinderOptions.Dir.prompt = '>Dir>'
+<
+ プロンプト文字列です。
+
+ *g:FuzzyFinderOptions.Dir.prompt_highlight* >
+ let g:FuzzyFinderOptions.Dir.prompt_highlight = 'Question'
+<
+ プロンプトをハイライトするグループ名です。
+
+ *g:FuzzyFinderOptions.Dir.smart_bs* >
+ let g:FuzzyFinderOptions.Dir.smart_bs = 1
+<
+ パス区切り文字の直後で <BS> を入力すると、ディレクトリ名1つ分
+ を削除します。
+
+ *g:FuzzyFinderOptions.Dir.switch_order* >
+ let g:FuzzyFinderOptions.Dir.switch_order = 30
+<
+ 次/前のモードに切り替えるためにモードをソートするときの比較値
+ です。負数ならこのモードには切り替えません。
+
+ *g:FuzzyFinderOptions.Dir.excluded_path* >
+ let g:FuzzyFinderOptions.Dir.excluded_path = ''
+<
+ これにマッチするパスのアイテムは除外します。
+
+ *fuzzyfinder-options-mrufile-mode* *g:FuzzyFinderOptions.MruFile*
+Mru-File モード用 ~
+
+ *g:FuzzyFinderOptions.MruFile.mode_available* >
+ let g:FuzzyFinderOptions.MruFile.mode_available = 1
+<
+ 偽ならこのモードに関する機能を無効化します。
+
+ *g:FuzzyFinderOptions.MruFile.prompt* >
+ let g:FuzzyFinderOptions.MruFile.prompt = '>MruFile>'
+<
+ プロンプト文字列です。
+
+ *g:FuzzyFinderOptions.MruFile.prompt_highlight* >
+ let g:FuzzyFinderOptions.MruFile.prompt_highlight = 'Question'
+<
+ プロンプトをハイライトするグループ名です。
+
+ *g:FuzzyFinderOptions.MruFile.smart_bs* >
+ let g:FuzzyFinderOptions.MruFile.smart_bs = 1
+<
+ パス区切り文字の直後で <BS> を入力すると、ディレクトリ名1つ分
+ を削除します。
+
+ *g:FuzzyFinderOptions.MruFile.switch_order* >
+ let g:FuzzyFinderOptions.MruFile.switch_order = 40
+<
+ 次/前のモードに切り替えるためにモードをソートするときの比較値
+ です。負数ならこのモードには切り替えません。
+
+ *g:FuzzyFinderOptions.MruFile.reuse_window* >
+ let g:FuzzyFinderOptions.MruFile.reuse_window = 1
+<
+ 真なら目的のバッファ/ファイルを開いているウィンドウを再利用し
+ ます。
+
+ *g:FuzzyFinderOptions.MruFile.excluded_path* >
+ let g:FuzzyFinderOptions.MruFile.excluded_path = '\v\~$|\.bak$|\.swp$'
+<
+ これにマッチするパスのアイテムは除外します。
+
+ *g:FuzzyFinderOptions.MruFile.max_item* >
+ let g:FuzzyFinderOptions.MruFile.max_item = 200
+<
+ 保持するMRUアイテムの上限値です。
+
+ *fuzzyfinder-options-mrucmd-mode* *g:FuzzyFinderOptions.MruCmd*
+Mru-Cmd モード用 ~
+
+ *g:FuzzyFinderOptions.MruCmd.mode_available* >
+ let g:FuzzyFinderOptions.MruCmd.mode_available = 1
+<
+ 偽ならこのモードに関する機能を無効化します。
+
+ *g:FuzzyFinderOptions.MruCmd.prompt* >
+ let g:FuzzyFinderOptions.MruCmd.prompt = '>MruCmd>'
+<
+ プロンプト文字列です。
+
+ *g:FuzzyFinderOptions.MruCmd.prompt_highlight* >
+ let g:FuzzyFinderOptions.MruCmd.prompt_highlight = 'Question'
+<
+ プロンプトをハイライトするグループ名です。
+
+ *g:FuzzyFinderOptions.MruCmd.smart_bs* >
+ let g:FuzzyFinderOptions.MruCmd.smart_bs = 0
+<
+ パス区切り文字の直後で <BS> を入力すると、ディレクトリ名1つ分
+ を削除します。
+
+ *g:FuzzyFinderOptions.MruCmd.switch_order* >
+ let g:FuzzyFinderOptions.MruCmd.switch_order = 50
+<
+ 次/前のモードに切り替えるためにモードをソートするときの比較値
+ です。負数ならこのモードには切り替えません。
+
+ *g:FuzzyFinderOptions.MruCmd.excluded_command* >
+ let g:FuzzyFinderOptions.MruCmd.excluded_command = '^$'
+<
+ これにマッチするアイテムは除外します。
+
+ *g:FuzzyFinderOptions.MruCmd.max_item* >
+ let g:FuzzyFinderOptions.MruCmd.max_item = 200
+<
+ 保持するMRUアイテムの上限値です。
+
+ *fuzzyfinder-options-Bookmark-mode* *g:FuzzyFinderOptions.Bookmark*
+Bookmark モード用 ~
+
+ *g:FuzzyFinderOptions.Bookmark.mode_available* >
+ let g:FuzzyFinderOptions.Bookmark.mode_available = 1
+<
+ 偽ならこのモードに関する機能を無効化します。
+
+ *g:FuzzyFinderOptions.Bookmark.prompt* >
+ let g:FuzzyFinderOptions.Bookmark.prompt = '>Bookmark>'
+<
+ プロンプト文字列です。
+
+ *g:FuzzyFinderOptions.Bookmark.prompt_highlight* >
+ let g:FuzzyFinderOptions.Bookmark.prompt_highlight = 'Question'
+<
+ プロンプトをハイライトするグループ名です。
+
+ *g:FuzzyFinderOptions.Bookmark.smart_bs* >
+ let g:FuzzyFinderOptions.Bookmark.smart_bs = 0
+<
+ パス区切り文字の直後で <BS> を入力すると、ディレクトリ名1つ分
+ を削除します。
+
+ *g:FuzzyFinderOptions.Bookmark.switch_order* >
+ let g:FuzzyFinderOptions.Bookmark.switch_order = 60
+<
+ 次/前のモードに切り替えるためにモードをソートするときの比較値
+ です。負数ならこのモードには切り替えません。
+
+ *g:FuzzyFinderOptions.Bookmark.reuse_window* >
+ let g:FuzzyFinderOptions.Bookmark.reuse_window = 1
+<
+ 真なら目的のバッファ/ファイルを開いているウィンドウを再利用し
+ ます。
+
+ *g:FuzzyFinderOptions.Bookmark.searching_range* >
+ let g:FuzzyFinderOptions.Bookmark.searching_range = 100
+<
+ ジャンプするとき、ブックマークした位置からこの行数の範囲内でブ
+ ックマークしたときのパターンとマッチする行を探します。
+
+ *fuzzyfinder-options-tag-mode* *g:FuzzyFinderOptions.Tag*
+Tag モード用 ~
+
+ *g:FuzzyFinderOptions.Tag.mode_available* >
+ let g:FuzzyFinderOptions.Tag.mode_available = 1
+<
+ 偽ならこのモードに関する機能を無効化します。
+
+ *g:FuzzyFinderOptions.Tag.prompt* >
+ let g:FuzzyFinderOptions.Tag.prompt = '>Tag>'
+<
+ プロンプト文字列です。
+
+ *g:FuzzyFinderOptions.Tag.prompt_highlight* >
+ let g:FuzzyFinderOptions.Tag.prompt_highlight = 'Question'
+<
+ プロンプトをハイライトするグループ名です。
+
+ *g:FuzzyFinderOptions.Tag.smart_bs* >
+ let g:FuzzyFinderOptions.Tag.smart_bs = 0
+<
+ パス区切り文字の直後で <BS> を入力すると、ディレクトリ名1つ分
+ を削除します。
+
+ *g:FuzzyFinderOptions.Tag.switch_order* >
+ let g:FuzzyFinderOptions.Tag.switch_order = 70
+<
+ 次/前のモードに切り替えるためにモードをソートするときの比較値
+ です。負数ならこのモードには切り替えません。
+
+ *fuzzyfinder-options-taggedfile-mode* *g:FuzzyFinderOptions.TaggedFile*
+Tagged-File モード用 ~
+
+ *g:FuzzyFinderOptions.TaggedFile.mode_available* >
+ let g:FuzzyFinderOptions.TaggedFile.mode_available = 1
+<
+ 偽ならこのモードに関する機能を無効化します。
+
+ *g:FuzzyFinderOptions.TaggedFile.prompt* >
+ let g:FuzzyFinderOptions.TaggedFile.prompt = '>TaggedFile>'
+<
+ プロンプト文字列です。
+
+ *g:FuzzyFinderOptions.TaggedFile.prompt_highlight* >
+ let g:FuzzyFinderOptions.TaggedFile.prompt_highlight = 'Question'
+<
+ プロンプトをハイライトするグループ名です。
+
+ *g:FuzzyFinderOptions.TaggedFile.smart_bs* >
+ let g:FuzzyFinderOptions.TaggedFile.smart_bs = 0
+<
+ パス区切り文字の直後で <BS> を入力すると、ディレクトリ名1つ分
+ を削除します。
+
+ *g:FuzzyFinderOptions.TaggedFile.switch_order* >
+ let g:FuzzyFinderOptions.TaggedFile.switch_order = 80
+<
+ 次/前のモードに切り替えるためにモードをソートするときの比較値
+ です。負数ならこのモードには切り替えません。
+
+ *g:FuzzyFinderOptions.TaggedFile.reuse_window* >
+ let g:FuzzyFinderOptions.TaggedFile.reuse_window = 1
+<
+ 真なら目的のバッファ/ファイルを開いているウィンドウを再利用し
+ ます。
+
+
+==============================================================================
+vimrc の例 *fuzzyfinder-vimrc-example*
+
+>
+ let g:FuzzyFinderOptions = { 'Base':{}, 'Buffer':{}, 'File':{}, 'Dir':{}, 'MruFile':{}, 'MruCmd':{}, 'Bookmark':{}, 'Tag':{}, 'TaggedFile':{}}
+ let g:FuzzyFinderOptions.Base.abbrev_map = {
+ \ '^v|' : map(filter(split(&runtimepath, ','), 'v:val !~ "after$"'), 'v:val . "/**/"'),
+ \ }
+ let g:FuzzyFinderOptions.MruFile.max_item = 300
+ let g:FuzzyFinderOptions.MruCmd.max_item = 400
+ nnoremap <silent> <C-n> :FuzzyFinderBuffer<CR>
+ nnoremap <silent> <C-p> :FuzzyFinderFileWithCurrentBufferDir<CR>
+ nnoremap <silent> <C-f><C-p> :FuzzyFinderFileWithFullCwd<CR>
+ nnoremap <silent> <C-f>p :FuzzyFinderFile
+ nnoremap <silent> <C-j> :FuzzyFinderMruFile<CR>
+ nnoremap <silent> <C-k> :FuzzyFinderMruCmd<CR>
+ nnoremap <silent> <C-f><C-d> :FuzzyFinderDirWithCurrentBufferDir<CR>
+ nnoremap <silent> <C-f>d :FuzzyFinderDirWithFullCwd<CR>
+ nnoremap <silent> <C-b> :FuzzyFinderBookmark<CR>
+ nnoremap <silent> <C-f><C-t> :FuzzyFinderTag<CR>
+ nnoremap <silent> <C-f>t :FuzzyFinderTag!<CR>
+ noremap <silent> g] :FuzzyFinderTagWithCursorWord!<CR>
+ nnoremap <silent> <C-f><C-g> :FuzzyFinderTaggedFile<CR>
+ nnoremap <silent> <C-f><C-b> :FuzzyFinderAddBookmark<CR>
+ vnoremap <silent> <C-f><C-b> :FuzzyFinderAddBookmarkAsSelectedText<CR>
+ nnoremap <silent> <C-f><C-e> :FuzzyFinderEditInfo<CR>
+ nnoremap <silent> <C-f><C-r> :FuzzyFinderRenewCache<CR>
+<
+
+==============================================================================
+あばうと *fuzzyfinder-about* *fuzzyfinder-contact* *fuzzyfinder-author*
+
+作者: Takeshi NISHIDA <ns9tks@DELETE-ME.gmail.com>
+ライセンス: MIT Licence
+URL: http://www.vim.org/scripts/script.php?script_id=1984
+ http://code.google.com/p/vim-fuzzyfinder/
+
+バグや要望など ~
+
+http://code.google.com/p/vim-fuzzyfinder/issues/list に登録してもらえると助か
+ります。
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
1,303 .vim/doc/fuzzyfinder.txt
@@ -0,0 +1,1303 @@
+*fuzzyfinder.txt* Fuzzy/Partial pattern explorer for buffer/file/etc.
+
+Fuzzyfinder *fuzzyfinder*
+
+INTRODUCTION |fuzzyfinder-introduction|
+INSTALLATION |fuzzyfinder-installation|
+USAGE |fuzzyfinder-usage|
+OPTIONS |fuzzyfinder-options|
+VIMRC EXAMPLE |fuzzyfinder-vimrc-sample|
+SPECIAL THANKS |fuzzyfinder-thanks|
+CHANGELOG |fuzzyfinder-changelog|
+ABOUT |fuzzyfinder-about|
+
+==============================================================================
+INTRODUCTION *fuzzyfinder-introduction*
+
+Fuzzyfinder provides convenient ways to quickly reach the
+buffer/file/command/bookmark/tag you want. Fuzzyfinder finds matching items
+with a fuzzy/partial pattern to which it converted the entered pattern.
+
+ Entered pattern Fuzzy pattern Partial pattern ~
+ abc * a * b * c * * abc *
+ dir/file dir/ * f * i * l * e * dir/ * file *
+ d*r/file d * r/ * f * i * l * e * d * r/ * file *
+ ../**/s ../ ** / * s * ../ ** / * s *
+ (** allows searching a directory tree.)
+
+You will be happy when:
+
+ "./AhLongLongLongLongLongFile.txt"
+ "./AhLongLongLongLongLongName.txt"
+ "./OhLongLongLongLongLongFile.txt"
+ "./OhLongLongLongLongLongName.txt" <- you want :O
+
+Type "ON" and "OhLongLongLongLongLongName.txt" will be select. :D
+
+Fuzzyfinder has some modes:
+
+ Buffer mode
+ File mode
+ Directory mode (yet another :cd command)
+ MRU-File mode (most recently used files)
+ MRU-Command mode (most recently used command-lines)
+ Bookmark mode
+ Tag mode (yet another |:tag| command)
+ Tagged-File mode (files which are included in current tags)
+
+Fuzzyfinder supports multibyte characters.
+
+
+==============================================================================
+INSTALLATION *fuzzyfinder-installation*
+
+Put all files into your runtime directory. If you have the zip file, extract
+it to your runtime directory.
+
+You should place the files as follows:
+>
+ <your runtime directory>/plugin/fuzzyfinder.vim
+ <your runtime directory>/doc/fuzzyfinder.txt
+ <your runtime directory>/doc/fuzzyfinder.jax
+<
+And then update your help tags files to enable fuzzyfinder help. See
+|add-local-help| for details.
+
+==============================================================================
+USAGE *fuzzyfinder-usage*
+
+ *fuzzyfinder-launch*
+Launching ~
+
+You can launch Fuzzyfinder by the following commands:
+
+ Command Mode ~
+ |:FuzzyFinderBuffer| - Buffer mode
+ |:FuzzyFinderFile| - File mode
+ |:FuzzyFinderDir| - Directory mode
+ |:FuzzyFinderMruFile| - MRU-File mode
+ |:FuzzyFinderMruCmd| - MRU-Command mode
+ |:FuzzyFinderBookmark| - Bookmark mode
+ |:FuzzyFinderTag| - Tag mode
+ |:FuzzyFinderTaggedFile| - Tagged-File mode
+
+It is recommended to map these commands. These commands can take initial
+pattern as a command argument. The pattern will be inserted after launching
+Fuzzyfinder. If a command was executed with a ! modifier (e.g.:
+:FuzzyFinderTag!), it enables a partial matching instead of a fuzzy matching.
+
+ *fuzzyfinder-manipulation*
+Manipulation ~
+
+An entered pattern is converted to a fuzzy pattern and items which match the
+pattern is shown in a completion menu.
+
+A completion menu is shown when you type at an end of a line.
+
+The number of items shown in the completion menu is limited to
+|g:FuzzyFinderOptions.Base.enumerating_limit| to speed up the response time.
+
+Fuzzyfinder sorts completion items with some rules:
+
+ - A perfect matching puts first.
+ - A sequential matching puts higher than a fragmentary matching.
+ - A backward matching puts higher than a forward matching.
+ - A short item is put higher than a long item.
+
+Plus, Fuzzyfinder has a learning system. An item which has been completed in
+the past with a current pattern is placed upper.
+
+The first item in the completion menu will be selected automatically.
+
+You can open a selected item in various ways:
+
+ <CR> - opens in a previous window.
+ <C-j> - opens in a split window.
+ <C-k> - opens in a vertical-split window.
+ <C-l> - opens in a new tab page.
+
+To cancel and return to previous window, leave Insert mode.
+
+To Switch the mode without leaving Insert mode, use <C-t> or <C-y>.
+
+If you want to temporarily change whether or not to ignore case, use
+<C-g><C-g>.
+
+ *fuzzyfinder-reusing-window*
+Reusing Of A Window Containing Target Buffer/File ~
+
+If a window containing target buffer is found in current tab page when
+Fuzzyfinder is going to open the buffer in a split new window, move to it. If
+a window containing target buffer is found in other tab page when Fuzzyfinder
+is going to open the buffer in a new tab page, move to it.
+
+You can disable that feature via 'reuse_window' options if always want to open
+a buffer in a new window.
+
+ *fuzzyfinder-hiding-menu*
+To Hide The Completion Menu Temporarily In Fuzzyfinder ~
+
+You can close it by <C-e> and reopen it by <C-x><C-o>.
+
+ *fuzzyfinder-highlighting*
+Highlighting ~
+
+Fuzzyfinder highlights the buffer with "Error" group when the number of
+completion items found is 0 or over
+|g:FuzzyFinderOptions.Base.enumerating_limit|.
+
+ *fuzzyfinder-command-arg*
+Usage Of Command Argument ~
+
+As an example, if you want to launch file-mode Fuzzyfinder with the full path
+of current directory, map like below:
+>
+ nnoremap <C-p> :FuzzyFinderFile <C-r>=fnamemodify(getcwd(), ':p')<CR><CR>
+<
+Instead, if you want the directory of current buffer and not current directory:
+>
+ nnoremap <C-p> :FuzzyFinderFile <C-r>=expand('%:~:.')[:-1-len(expand('%:~:.:t'))]<CR><CR>
+<
+ *fuzzyfinder-abbreviation* *fuzzyfinder-multiple-search*
+Abbreviations And Multiple Search ~
+
+You can use abbreviations and multiple search in all modes by setting
+|g:FuzzyFinderOptions.Base.abbrev_map| option.
+
+For example, set as below:
+>
+ let g:FuzzyFinderOptions.Base.abbrev_map = {
+ \ "^doc:" : [
+ \ "~/project/**/doc/",
+ \ ".vim/doc/",
+ \ ],
+ \ }
+<
+and enter "doc:txt" in File mode, then Fuzzyfinder searches by following
+patterns:
+
+ "~/project/**/doc/*t*x*t*"
+ ".vim/doc/*t*x*t*"
+
+and show concatenated search results.
+
+ *fuzzyfinder-information-file*
+Information File ~
+
+Fuzzyfinder writes completion statistics, MRU data, bookmark, etc to
+|g:FuzzyFinderOptions.Base.info_file|.
+
+|:FuzzyFinderEditInfo| command is helpful in editing your information file.
+This command reads the information file in new unnamed buffer. Write the
+buffer and the information file will be updated.
+
+ *fuzzyfinder-cache*
+Cache ~
+
+Once a cache was created, It is not automatically updated to speed up the
+response time by default. To update it, use |:FuzzyFinderRenewCache| command.
+
+ *fuzzyfinder-dot-sequence*
+Going Up Parent Directories With Dot Sequence In File/Directory Mode ~
+
+In File/Directory mode, you can go up parent directories with entering dot
+sequence. Dot sequence after a path separator is expanded to "../" sequence.
+
+ Dot sequence Expanded pattern ~
+ /.. /../
+ /... /../../
+ /.... /../../../
+
+ *fuzzyfinder-bookmark-mode*
+Detail Of Bookmark Mode ~
+
+You can jump to a line you have added to bookmarks beforehand. Fuzzyfinder
+adjusts a line number for jump. If a line of bookmarked position does not
+match to a pattern when the bookmark was added, Fuzzyfinder searches a
+matching line around bookmarked position. So you can jump to a bookmarked line
+even if the line is out of bookmarked position. If you want to jump to
+bookmarked line number without the adjustment, set
+|g:FuzzyFinderOptions.Bookmark.searching_range| option to 0.