aboutsummaryrefslogtreecommitdiff
path: root/modules/vim/vim.dot.link/plugin/indexer.vim.disabled
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2013-12-27 15:36:29 -0200
committerSilvio Rhatto <rhatto@riseup.net>2013-12-27 15:36:29 -0200
commite573a7090239d4b5cdc0e2e1053433f6341fdba2 (patch)
treee53f5164bb3c37dcf8d2959e06b6e2b722170af0 /modules/vim/vim.dot.link/plugin/indexer.vim.disabled
parentadce46f27ce9cd659581153ed7264dbabdc06c19 (diff)
downloaddotfiles-e573a7090239d4b5cdc0e2e1053433f6341fdba2.tar.gz
dotfiles-e573a7090239d4b5cdc0e2e1053433f6341fdba2.tar.bz2
Removing vim to convert it to a submodule
Diffstat (limited to 'modules/vim/vim.dot.link/plugin/indexer.vim.disabled')
-rw-r--r--modules/vim/vim.dot.link/plugin/indexer.vim.disabled672
1 files changed, 0 insertions, 672 deletions
diff --git a/modules/vim/vim.dot.link/plugin/indexer.vim.disabled b/modules/vim/vim.dot.link/plugin/indexer.vim.disabled
deleted file mode 100644
index 28c9472..0000000
--- a/modules/vim/vim.dot.link/plugin/indexer.vim.disabled
+++ /dev/null
@@ -1,672 +0,0 @@
-"=============================================================================
-" File: indexer.vim
-" Author: Dmitry Frank (dimon.frank@gmail.com)
-" Last Change: 26 Sep 2010
-" Version: 1.8
-"=============================================================================
-" See documentation in accompanying help file
-" You may use this code in whatever way you see fit.
-
-
-" s:ParsePath(sPath)
-" changing '\' to '/' or vice versa depending on OS (MS Windows or not) also calls simplify()
-function! s:ParsePath(sPath)
- if (has('win32') || has('win64'))
- let l:sPath = substitute(a:sPath, '/', '\', 'g')
- else
- let l:sPath = substitute(a:sPath, '\', '/', 'g')
- endif
- let l:sPath = simplify(l:sPath)
-
- " removing last "/" or "\"
- let l:sLastSymb = strpart(l:sPath, (strlen(l:sPath) - 1), 1)
- if (l:sLastSymb == '/' || l:sLastSymb == '\')
- let l:sPath = strpart(l:sPath, 0, (strlen(l:sPath) - 1))
- endif
- return l:sPath
-endfunction
-
-" s:Trim(sString)
-" trims spaces from begin and end of string
-function! s:Trim(sString)
- return substitute(substitute(a:sString, '^\s\+', '', ''), '\s\+$', '', '')
-endfunction
-
-" s:IsAbsolutePath(path) <<<
-" this function from project.vim is written by Aric Blumer.
-" Returns true if filename has an absolute path.
-function! s:IsAbsolutePath(path)
- if a:path =~ '^ftp:' || a:path =~ '^rcp:' || a:path =~ '^scp:' || a:path =~ '^http:'
- return 2
- endif
- let path=expand(a:path) " Expand any environment variables that might be in the path
- if path[0] == '/' || path[0] == '~' || path[0] == '\\' || path[1] == ':'
- return 1
- endif
- return 0
-endfunction " >>>
-
-
-
-function! s:GetDirsAndFilesFromIndexerList(aLines, projectName, dExistsResult)
- let l:aLines = a:aLines
- let l:dResult = a:dExistsResult
- let l:boolInNeededProject = (a:projectName == '' ? 1 : 0)
- let l:boolInProjectsParentSection = 0
- let l:sProjectsParentFilter = ''
-
- let l:sCurProjName = ''
-
- for l:sLine in l:aLines
-
- " if line is not empty
- if l:sLine !~ '^\s*$' && l:sLine !~ '^\s*\#.*$'
-
- " look for project name [PrjName]
- let myMatch = matchlist(l:sLine, '^\s*\[\([^\]]\+\)\]')
-
- if (len(myMatch) > 0)
-
- " check for PROJECTS_PARENT section
-
- if (strpart(myMatch[1], 0, 15) == 'PROJECTS_PARENT')
- " this is projects parent section
- let l:sProjectsParentFilter = ''
- let filterMatch = matchlist(myMatch[1], 'filter="\([^"]\+\)"')
- if (len(filterMatch) > 0)
- let l:sProjectsParentFilter = filterMatch[1]
- endif
- let l:boolInProjectsParentSection = 1
- else
- let l:boolInProjectsParentSection = 0
-
-
- if (a:projectName != '')
- if (myMatch[1] == a:projectName)
- let l:boolInNeededProject = 1
- else
- let l:boolInNeededProject = 0
- endif
- endif
-
- if l:boolInNeededProject
- let l:sCurProjName = myMatch[1]
- let l:dResult[l:sCurProjName] = { 'files': [], 'paths': [], 'not_exist': [] }
- endif
- endif
- else
-
- if l:boolInProjectsParentSection
- " parsing one project parent
-
- let l:lFilter = split(l:sProjectsParentFilter, ' ')
- if (len(l:lFilter) == 0)
- let l:lFilter = ['*']
- endif
- " removing \/* from end of path
- let l:projectsParent = substitute(<SID>Trim(l:sLine), '[\\/*]\+$', '', '')
-
- " creating list of projects
- let l:lProjects = split(expand(l:projectsParent.'/*'), '\n')
- let l:lIndexerFilesList = []
- for l:sPrj in l:lProjects
- if (isdirectory(l:sPrj))
- call add(l:lIndexerFilesList, '['.substitute(l:sPrj, '^.*[\\/]\([^\\/]\+\)$', '\1', '').']')
- for l:sCurFilter in l:lFilter
- call add(l:lIndexerFilesList, l:sPrj.'/**/'.l:sCurFilter)
- endfor
- call add(l:lIndexerFilesList, '')
- endif
- endfor
- " parsing this list
- let l:dResult = <SID>GetDirsAndFilesFromIndexerList(l:lIndexerFilesList, a:projectName, l:dResult)
-
- elseif l:boolInNeededProject
- " looks like there's path
- if l:sCurProjName == ''
- let l:sCurProjName = 'noname'
- let l:dResult[l:sCurProjName] = { 'files': [], 'paths': [], 'not_exist': [] }
- endif
- if (!g:indexer_ctagsDontSpecifyFilesIfPossible && s:indexer_projectName != '')
- " adding every file.
- let l:dResult[l:sCurProjName].files = <SID>ConcatLists(l:dResult[l:sCurProjName].files, split(expand(substitute(<SID>Trim(l:sLine), '\\\*\*', '**', 'g')), '\n'))
- else
- " adding just paths. (much more faster)
- let l:dResult[l:sCurProjName].paths = <SID>ConcatLists(l:dResult[l:sCurProjName].paths, [<SID>ParsePath(expand(substitute(substitute(substitute(l:sLine, '^\(.*\)[\\/][^\\/]\+$', '\1', 'g'), '^\([^*]\+\).*$', '\1', ''), '[\\/]$', '', '')))])
- endif
- endif
-
- endif
- endif
-
- endfor
-
- " build paths
- if (!g:indexer_ctagsDontSpecifyFilesIfPossible && s:indexer_projectName != '')
- for l:sKey in keys(l:dResult)
- let l:lPaths = []
- for l:sFile in l:dResult[l:sKey].files
- let l:sPath = substitute(l:sFile, '^\(.*\)[\\/][^\\/]\+$', '\1', 'g')
- call add(l:lPaths, l:sPath)
- endfor
-
- let l:dResult[l:sKey].paths = <SID>ConcatLists(l:dResult[l:sKey].paths, l:lPaths)
-
- endfor
- endif
-
- return l:dResult
-endfunction
-
-" getting dictionary with files, paths and non-existing files from indexer
-" project file
-function! s:GetDirsAndFilesFromIndexerFile(indexerFile, projectName)
- let l:aLines = readfile(a:indexerFile)
- let l:dResult = {}
- let l:dResult = <SID>GetDirsAndFilesFromIndexerList(l:aLines, a:projectName, l:dResult)
- return l:dResult
-endfunction
-
-" getting dictionary with files, paths and non-existing files from
-" project.vim's project file
-function! s:GetDirsAndFilesFromProjectFile(projectFile, projectName)
- let l:aLines = readfile(a:projectFile)
- " if projectName is empty, then we should add files from whole projectFile
- let l:boolInNeededProject = (a:projectName == '' ? 1 : 0)
-
- let l:iOpenedBraces = 0 " current count of opened { }
- let l:iOpenedBracesAtProjectStart = 0
- let l:aPaths = [] " paths stack
- let l:sLastFoundPath = ''
-
- let l:dResult = {}
- let l:sCurProjName = ''
-
- for l:sLine in l:aLines
- " ignoring comments
- if l:sLine =~ '^#' | continue | endif
-
- let l:sLine = substitute(l:sLine, '#.\+$', '' ,'')
- " searching for closing brace { }
- let sTmpLine = l:sLine
- while (sTmpLine =~ '}')
- let l:iOpenedBraces = l:iOpenedBraces - 1
-
- " if projectName is defined and there was last brace closed, then we
- " are finished parsing needed project
- if (l:iOpenedBraces <= l:iOpenedBracesAtProjectStart) && a:projectName != ''
- let l:boolInNeededProject = 0
- " TODO: total break
- endif
- call remove(l:aPaths, len(l:aPaths) - 1)
-
- let sTmpLine = substitute(sTmpLine, '}', '', '')
- endwhile
-
- " searching for blabla=qweqwe
- let myMatch = matchlist(l:sLine, '\s*\(.\{-}\)=\(.\{-}\)\\\@<!\(\s\|$\)')
- if (len(myMatch) > 0)
- " now we found start of project folder or subfolder
- "
- if !l:boolInNeededProject
- if (a:projectName != '' && myMatch[1] == a:projectName)
- let l:iOpenedBracesAtProjectStart = l:iOpenedBraces
- let l:boolInNeededProject = 1
- endif
- endif
-
- if l:boolInNeededProject && (l:iOpenedBraces == l:iOpenedBracesAtProjectStart)
- let l:sCurProjName = myMatch[1]
- let l:dResult[myMatch[1]] = { 'files': [], 'paths': [], 'not_exist': [] }
- endif
-
- let l:sLastFoundPath = myMatch[2]
- " ADDED! Jkooij
- " Strip the path of surrounding " characters, if there are any
- let l:sLastFoundPath = substitute(l:sLastFoundPath, "\"\\(.*\\)\"", "\\1", "g")
- let l:sLastFoundPath = expand(l:sLastFoundPath) " Expand any environment variables that might be in the path
- let l:sLastFoundPath = s:ParsePath(l:sLastFoundPath)
-
- endif
-
- " searching for opening brace { }
- let sTmpLine = l:sLine
- while (sTmpLine =~ '{')
-
- if (s:IsAbsolutePath(l:sLastFoundPath) || len(l:aPaths) == 0)
- call add(l:aPaths, s:ParsePath(l:sLastFoundPath))
- else
- call add(l:aPaths, s:ParsePath(l:aPaths[len(l:aPaths) - 1].'/'.l:sLastFoundPath))
- endif
-
- let l:iOpenedBraces = l:iOpenedBraces + 1
-
- if (l:boolInNeededProject && l:iOpenedBraces > l:iOpenedBracesAtProjectStart && isdirectory(l:aPaths[len(l:aPaths) - 1]))
- call add(l:dResult[l:sCurProjName].paths, l:aPaths[len(l:aPaths) - 1])
- endif
-
- let sTmpLine = substitute(sTmpLine, '{', '', '')
- endwhile
-
- " searching for filename
- if (l:sLine =~ '^[^={}]*$' && l:sLine !~ '^\s*$')
- " here we found something like filename
- "
- if (l:boolInNeededProject && (!g:indexer_enableWhenProjectDirFound || s:indexer_projectName != '') && l:iOpenedBraces > l:iOpenedBracesAtProjectStart)
- " we are in needed project
- "let l:sCurFilename = expand(s:ParsePath(l:aPaths[len(l:aPaths) - 1].'/'.s:Trim(l:sLine)))
- " CHANGED! Jkooij
- " expand() will change slashes based on 'shellslash' flag,
- " so call s:ParsePath() on expand() result for consistent slashes
- let l:sCurFilename = s:ParsePath(expand(l:aPaths[len(l:aPaths) - 1].'/'.s:Trim(l:sLine)))
- if (filereadable(l:sCurFilename))
- " file readable! adding it
- call add(l:dResult[l:sCurProjName].files, l:sCurFilename)
- elseif (!isdirectory(l:sCurFilename))
- call add(l:dResult[l:sCurProjName].not_exist, l:sCurFilename)
- endif
- endif
-
- endif
-
- endfor
-
- return l:dResult
-endfunction
-
-" returns whether or not file exists in list
-function! s:IsFileExistsInList(aList, sFilename)
- let l:sFilename = s:ParsePath(a:sFilename)
- if (index(a:aList, l:sFilename, 0, 1)) >= 0
- return 1
- endif
- return 0
-endfunction
-
-" updating tags using ctags.
-" if boolAppend then just appends existing tags file with new tags from
-" current file (%)
-function! s:UpdateTags(boolAppend)
-
- " one tags file
-
- let l:sTagsFileWOPath = substitute(join(g:indexer_indexedProjects, '_'), '\s', '_', 'g')
- let l:sTagsFile = s:tagsDirname.'/'.l:sTagsFileWOPath
- if !isdirectory(s:tagsDirname)
- call mkdir(s:tagsDirname, "p")
- endif
-
- let l:sSavedFile = <SID>ParsePath(expand('%:p'))
- if (<SID>IsFileExistsInList(s:lNotExistFiles, l:sSavedFile))
- " moving file from non-existing list to existing list
- call remove(s:lNotExistFiles, index(s:lNotExistFiles, l:sSavedFile))
- call add(s:lFileList, l:sSavedFile)
- endif
-
- let l:sRecurseCode = ''
-
- if (a:boolAppend && filereadable(l:sTagsFile))
- let l:sAppendCode = '-a'
- if (<SID>IsFileExistsInList(s:lFileList, l:sSavedFile))
- " saved file are in file list
- let l:sFiles = l:sSavedFile
- else
- let l:sFiles = ''
- endif
-
- else
- let l:sAppendCode = ''
- let l:sFiles = ''
- let l:sFile = ''
- if (g:indexer_ctagsDontSpecifyFilesIfPossible && s:sMode == 'IndexerFile')
- let l:sRecurseCode = '-R'
- for l:sPath in s:lPathList
- let l:sFiles = l:sFiles.' "'.l:sPath.'"'
- endfor
- else
- for l:sFile in s:lFileList
- let l:sFiles = l:sFiles.' "'.l:sFile.'"'
- endfor
- endif
- endif
-
- if l:sFiles != ''
- "if (has('win32') || has('win64'))
- let l:sTagsFile = '"'.l:sTagsFile.'"'
- "endif
-
- if (has('win32') || has('win64'))
- let l:cmd = 'ctags -f '.l:sTagsFile.' '.l:sRecurseCode.' '.l:sAppendCode.' '.g:indexer_ctagsCommandLineOptions.' '.l:sFiles
- else
- let l:cmd = 'ctags -f '.l:sTagsFile.' '.l:sRecurseCode.' '.l:sAppendCode.' '.g:indexer_ctagsCommandLineOptions.' '.l:sFiles.' &'
- endif
-
- let l:resp = system(l:cmd)
- exec 'set tags='.substitute(s:tagsDirname.'/'.l:sTagsFileWOPath, ' ', '\\\\\\ ', 'g')
- endif
-
- "multiple files, calls from bat file
- "exec 'set tags='
- "let l:lLines = []
- "for l:sFile in s:lFileList
- "let l:sTagFile = s:tagsDirname.'/'.substitute(l:sFile, '[\\/:]', '_', 'g')
- "call add(l:lLines, 'ctags -f '.l:sTagFile.' '.g:indexer_ctagsCommandLineOptions.' '.l:sFile)
- "exec 'set tags+='.l:sTagFile
- "endfor
- "call writefile(l:lLines, s:tagsDirname.'/maketags.bat')
-
- "let l:cmd = s:tagsDirname.'/maketags.bat'
- "let l:resp = system(l:cmd)
-endfunction
-
-function! s:ApplyProjectSettings(dParse)
- " paths for Vim
- set path=.
- for l:sPath in a:dParse.paths
- if isdirectory(l:sPath)
- exec 'set path+='.substitute(l:sPath, ' ', '\\ ', 'g')
- endif
- endfor
-
- let s:lFileList = a:dParse.files
- let s:lPathList = a:dParse.paths
- let s:lNotExistFiles = a:dParse.not_exist
-
- augroup Indexer_SavSrcFile
- autocmd! Indexer_SavSrcFile BufWritePost
- augroup END
- " collect extensions of files in project to make autocmd on save these
- " files
- let l:sExtsList = ''
- let l:lFullList = s:lFileList + s:lNotExistFiles
- for l:lFile in l:lFullList
- let l:sExt = substitute(l:lFile, '^.*\([.\\/][^.\\/]\+\)$', '\1', '')
- if strpart(l:sExt, 0, 1) != '.'
- let l:sExt = strpart(l:sExt, 1)
- endif
- if (stridx(l:sExtsList, l:sExt) == -1)
- if (l:sExtsList != '')
- let l:sExtsList = l:sExtsList.','
- endif
- let l:sExtsList = l:sExtsList.'*'.l:sExt
- endif
- endfor
-
- " defining autocmd at source files save
- exec 'autocmd Indexer_SavSrcFile BufWritePost '.l:sExtsList.' call <SID>UpdateTags('.(g:indexer_ctagsJustAppendTagsAtFileSave ? '1' : '0').')'
-
- " start full tags update
- call <SID>UpdateTags(0)
-endfunction
-
-" concatenates two lists preventing duplicates
-function! s:ConcatLists(lExistingList, lAddingList)
- let l:lResList = a:lExistingList
- for l:sItem in a:lAddingList
- if (index(l:lResList, l:sItem) == -1)
- call add(l:lResList, l:sItem)
- endif
- endfor
- return l:lResList
-endfunction
-
-function! s:GetDirsAndFilesFromAvailableFile()
- if (filereadable(g:indexer_indexerListFilename))
- " read all projects from proj file
- let s:sMode = 'IndexerFile'
- let s:dParseAll = s:GetDirsAndFilesFromIndexerFile(g:indexer_indexerListFilename, s:indexer_projectName)
- elseif (filereadable(g:indexer_projectsSettingsFilename))
- let s:sMode = 'ProjectFile'
- let s:dParseAll = s:GetDirsAndFilesFromProjectFile(g:indexer_projectsSettingsFilename, s:indexer_projectName)
- else
- let s:sMode = ''
- let s:dParseAll = {}
- endif
-endfunction
-
-function! s:ParseProjectSettingsFile()
- call <SID>GetDirsAndFilesFromAvailableFile()
-
- " let's found what files we should to index.
- " now we will search for project directory up by dir tree
- let l:i = 0
- let l:sCurPath = ''
- while (g:indexer_enableWhenProjectDirFound && s:indexer_projectName == '' && l:i < 10)
- for l:sKey in keys(s:dParseAll)
- if (<SID>IsFileExistsInList(s:dParseAll[l:sKey].paths, expand('%:p:h').l:sCurPath))
- let s:indexer_projectName = l:sKey
- if !(s:sMode == 'IndexerFile' && g:indexer_ctagsDontSpecifyFilesIfPossible)
- call <SID>GetDirsAndFilesFromAvailableFile()
- else
- call add(g:indexer_indexedProjects, l:sKey)
- endif
- break
- endif
- endfor
- let l:sCurPath = l:sCurPath.'/..'
- let l:i = l:i + 1
- endwhile
-
- if !(s:sMode == 'IndexerFile' && g:indexer_ctagsDontSpecifyFilesIfPossible)
- let s:iTotalFilesAvailableCnt = 0
- if (!s:boolIndexingModeOn)
- for l:sKey in keys(s:dParseAll)
- let s:iTotalFilesAvailableCnt = s:iTotalFilesAvailableCnt + len(s:dParseAll[l:sKey].files)
-
- if ((g:indexer_enableWhenProjectDirFound && <SID>IsFileExistsInList(s:dParseAll[l:sKey].paths, expand('%:p:h'))) || (<SID>IsFileExistsInList(s:dParseAll[l:sKey].files, expand('%:p'))))
- " user just opened file from project l:sKey. We should add it to
- " result lists
-
- " adding name of this project to g:indexer_indexedProjects
- call add(g:indexer_indexedProjects, l:sKey)
-
- endif
- endfor
- endif
- endif
-
- " build final list of files, paths and non-existing files
- let l:dParse = { 'files':[], 'paths':[], 'not_exist':[] }
- for l:sKey in g:indexer_indexedProjects
- let l:dParse.files = <SID>ConcatLists(l:dParse.files, s:dParseAll[l:sKey].files)
- let l:dParse.paths = <SID>ConcatLists(l:dParse.paths, s:dParseAll[l:sKey].paths)
- let l:dParse.not_exist = <SID>ConcatLists(l:dParse.not_exist, s:dParseAll[l:sKey].not_exist)
- endfor
-
- if (s:boolIndexingModeOn)
- call <SID>ApplyProjectSettings(l:dParse)
- else
- if (len(l:dParse.files) > 0 || len(l:dParse.paths) > 0)
-
- let s:boolIndexingModeOn = 1
-
- " creating auto-refresh index at project file save
- augroup Indexer_SavPrjFile
- autocmd! Indexer_SavPrjFile BufWritePost
- augroup END
-
- if (filereadable(g:indexer_indexerListFilename))
- let l:sIdxFile = substitute(g:indexer_indexerListFilename, '^.*[\\/]\([^\\/]\+\)$', '\1', '')
- exec 'autocmd Indexer_SavPrjFile BufWritePost '.l:sIdxFile.' call <SID>ParseProjectSettingsFile()'
- elseif (filereadable(g:indexer_projectsSettingsFilename))
- let l:sPrjFile = substitute(g:indexer_projectsSettingsFilename, '^.*[\\/]\([^\\/]\+\)$', '\1', '')
- exec 'autocmd Indexer_SavPrjFile BufWritePost '.l:sPrjFile.' call <SID>ParseProjectSettingsFile()'
- endif
-
- call <SID>ApplyProjectSettings(l:dParse)
-
- let l:iNonExistingCnt = len(s:lNotExistFiles)
- if (l:iNonExistingCnt > 0)
- if l:iNonExistingCnt < 100
- echo "Indexer Warning: project loaded, but there's ".l:iNonExistingCnt." non-existing files: \n\n".join(s:lNotExistFiles, "\n")
- else
- echo "Indexer Warning: project loaded, but there's ".l:iNonExistingCnt." non-existing files. Type :IndexerInfo for details."
- endif
- endif
- else
- " there's no project started.
- " we should define autocmd to detect if file from project will be opened later
- augroup Indexer_LoadFile
- autocmd! Indexer_LoadFile BufReadPost
- autocmd Indexer_LoadFile BufReadPost * call <SID>IndexerInit()
- augroup END
- endif
- endif
-endfunction
-
-function! s:IndexerInfo()
- if (s:sMode == '')
- echo '* Filelist: not found'
- elseif (s:sMode == 'IndexerFile')
- echo '* Filelist: indexer file: '.g:indexer_indexerListFilename
- elseif (s:sMode == 'ProjectFile')
- echo '* Filelist: project file: '.g:indexer_projectsSettingsFilename
- else
- echo '* Filelist: Unknown'
- endif
- echo '* Projects indexed: '.join(g:indexer_indexedProjects, ', ')
- if !(s:sMode == 'IndexerFile' && g:indexer_ctagsDontSpecifyFilesIfPossible)
- echo "* Files indexed: there's ".len(s:lFileList).' files. Type :IndexerFiles to list'
- echo "* Files not found: there's ".len(s:lNotExistFiles).' non-existing files. '.join(s:lNotExistFiles, ', ')
- endif
-
- echo '* Paths: '.&path
- echo '* Tags file: '.&tags
- echo '* Project root: '.($INDEXER_PROJECT_ROOT != '' ? $INDEXER_PROJECT_ROOT : 'not found').' (Project root is a directory which contains "'.g:indexer_dirNameForSearch.'" directory)'
-endfunction
-
-function! s:IndexerFilesList()
- echo "* Files indexed: ".join(s:lFileList, ', ')
-endfunction
-
-function! s:IndexerInit()
-
- augroup Indexer_LoadFile
- autocmd! Indexer_LoadFile BufReadPost
- augroup END
-
- " actual tags dirname. If .vimprj directory will be found then this tags
- " dirname will be /path/to/dir/.vimprj/tags
- let s:tagsDirname = g:indexer_tagsDirname
- let g:indexer_indexedProjects = []
- let s:sMode = ''
- let s:lFileList = []
- let s:lNotExistFiles = []
-
- let s:boolIndexingModeOn = 0
-
- if g:indexer_lookForProjectDir
- " need to look for .vimprj directory
-
- let l:i = 0
- let l:sCurPath = ''
- let $INDEXER_PROJECT_ROOT = ''
- while (l:i < g:indexer_recurseUpCount)
- if (isdirectory(expand('%:p:h').l:sCurPath.'/'.g:indexer_dirNameForSearch))
- let $INDEXER_PROJECT_ROOT = simplify(expand('%:p:h').l:sCurPath)
- exec 'cd '.substitute($INDEXER_PROJECT_ROOT, ' ', '\\ ', 'g')
- break
- endif
- let l:sCurPath = l:sCurPath.'/..'
- let l:i = l:i + 1
- endwhile
-
- if $INDEXER_PROJECT_ROOT != ''
- " project root was found.
- "
- " set directory for tags in .vimprj dir
- let s:tagsDirname = $INDEXER_PROJECT_ROOT.'/'.g:indexer_dirNameForSearch.'/tags'
-
- " sourcing all *vim files in .vimprj dir
- let l:lSourceFilesList = split(glob($INDEXER_PROJECT_ROOT.'/'.g:indexer_dirNameForSearch.'/*vim'), '\n')
- let l:sThisFile = expand('%:p')
- for l:sFile in l:lSourceFilesList
- if (l:sFile != l:sThisFile)
- exec 'source '.l:sFile
- endif
- endfor
- endif
-
- endif
-
- call s:ParseProjectSettingsFile()
-
-endfunction
-
-
-
-
-
-
-" --------- init variables --------
-if !exists('g:indexer_lookForProjectDir')
- let g:indexer_lookForProjectDir = 1
-endif
-
-if !exists('g:indexer_dirNameForSearch')
- let g:indexer_dirNameForSearch = '.vimprj'
-endif
-
-if !exists('g:indexer_recurseUpCount')
- let g:indexer_recurseUpCount = 10
-endif
-
-if !exists('g:indexer_indexerListFilename')
- let g:indexer_indexerListFilename = $HOME.'/.indexer_files'
-endif
-
-if !exists('g:indexer_projectsSettingsFilename')
- let g:indexer_projectsSettingsFilename = $HOME.'/.vimprojects'
-endif
-
-if !exists('g:indexer_projectName')
- let g:indexer_projectName = ''
-endif
-
-if !exists('g:indexer_enableWhenProjectDirFound')
- let g:indexer_enableWhenProjectDirFound = '1'
-endif
-
-if !exists('g:indexer_tagsDirname')
- let g:indexer_tagsDirname = $HOME.'/.vimtags'
-endif
-
-if !exists('g:indexer_ctagsCommandLineOptions')
- let g:indexer_ctagsCommandLineOptions = '--c++-kinds=+p+l --fields=+iaS --extra=+q'
-endif
-
-if !exists('g:indexer_ctagsJustAppendTagsAtFileSave')
- let g:indexer_ctagsJustAppendTagsAtFileSave = 1
-endif
-
-if !exists('g:indexer_ctagsDontSpecifyFilesIfPossible')
- let g:indexer_ctagsDontSpecifyFilesIfPossible = '0'
-endif
-
-let s:indexer_projectName = g:indexer_projectName
-
-
-" -------- init commands ---------
-
-if exists(':IndexerInfo') != 2
- command -nargs=? -complete=file IndexerInfo call <SID>IndexerInfo()
-endif
-if exists(':IndexerFiles') != 2
- command -nargs=? -complete=file IndexerFiles call <SID>IndexerFilesList()
-endif
-if exists(':IndexerRebuild') != 2
- command -nargs=? -complete=file IndexerRebuild call <SID>UpdateTags(0)
-endif
-
-
-
-
-
-
-augroup Indexer_LoadFile
- autocmd! Indexer_LoadFile BufReadPost
- autocmd Indexer_LoadFile BufReadPost * call <SID>IndexerInit()
-augroup END
-
-call <SID>IndexerInit()
-