Skip to content
/ SrcExpl Public
forked from wenlongche/SrcExpl

A (G)Vim plugin for exploring the source code based on "tags", and it works like the context window of "Source Insight".

Notifications You must be signed in to change notification settings

sswly/SrcExpl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SrcExpl

SrcExpl (Source Explorer) is a source code explorer that provides context for the currently selected keyword by displaying the function or type definition or declaration in a separate window. This plugin aims to recreate the context window available in the IDE known as "Source Insight".

Features

  • Display definitions and declarations of various languages supported by ctags and various types including functions, macros, structures, arrays, methods, classes, and variables.
  • Jump to the displayed context in the Source Explorer window using the mouse or your own key mapping.
  • Jump back from the context location with the mouse context menu or your own key mapping.
  • Automatically list all definitions if multiple definitions for a keyword is found.
  • Automatically create and update the tags file.

Installation

  1. Ensure ctags is installed on your system and that VIM can use it.
  2. Place the Source Explorer files in your Vim directory (such as ~/.vim) or have it installed by a bundle manager like Vundle or NeoBundle.
  3. Open the Source Explorer window with :SrcExpl or :SrcExplToggle or map these commands to keys in your .vimrc.

Requirements

Source Explorer requires:

  • Vim 7.0 or higher
  • ctags

Screenshots

One Declaration Found

One Declaration Found

Multiple Declarations Found

Multiple Declarations Found

Local Declaration Found

Local Declaration Found

Settings Example

" // The switch of the Source Explorer 
nmap <F8> :SrcExplToggle<CR> 

" // Set the height of Source Explorer window 
let g:SrcExpl_winHeight = 8 

" // Set 100 ms for refreshing the Source Explorer 
let g:SrcExpl_refreshTime = 100 

" // Set "Enter" key to jump into the exact definition context 
let g:SrcExpl_jumpKey = "<ENTER>" 

" // Set "Space" key for back from the definition context 
let g:SrcExpl_gobackKey = "<SPACE>" 

" // In order to Avoid conflicts, the Source Explorer should know what plugins 
" // are using buffers. And you need add their bufname into the list below 
" // according to the command ":buffers!" 
let g:SrcExpl_pluginList = [ 
        \ "__Tag_List__", 
        \ "_NERD_tree_", 
        \ "Source_Explorer" 
    \ ] 

" // Enable/Disable the local definition searching, and note that this is not 
" // guaranteed to work, the Source Explorer doesn't check the syntax for now. 
" // It only searches for a match with the keyword according to command 'gd' 
let g:SrcExpl_searchLocalDef = 1 

" // Do not let the Source Explorer update the tags file when opening 
let g:SrcExpl_isUpdateTags = 0 

" // Use 'Exuberant Ctags' with '--sort=foldcase -R .' or '-L cscope.files' to 
" //  create/update a tags file 
let g:SrcExpl_updateTagsCmd = "ctags --sort=foldcase -R ." 

" // Set "<F12>" key for updating the tags file artificially 
let g:SrcExpl_updateTagsKey = "<F12>" 

Changelog

5.0

  • Replaced use of preview window with a named buffer.
  • Moved to github.
  • Added documentation.

5.1

  • Added two APIs for serving other plugins:
    1. SrcExpl_GetWin(), getting the Source Explorer window number for those plugins based on multiple windows.
    2. SrcExpl_GetVer(), getting the Source Explorer version for the forward compatibility.
  • Added debug/logging functions for the internal development.

About

A (G)Vim plugin for exploring the source code based on "tags", and it works like the context window of "Source Insight".

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published