From 9d8238cef09d8cb7c270b616ec56a335e0ac0854 Mon Sep 17 00:00:00 2001 From: René Neumann Date: Tue, 4 Sep 2012 16:20:28 +0200 Subject: Move to bundles in vim -- also remove old craft --- .vim/doc/omnicppcomplete.txt | 1078 ------------------------------------------ 1 file changed, 1078 deletions(-) delete mode 100644 .vim/doc/omnicppcomplete.txt (limited to '.vim/doc/omnicppcomplete.txt') diff --git a/.vim/doc/omnicppcomplete.txt b/.vim/doc/omnicppcomplete.txt deleted file mode 100644 index b11e006..0000000 --- a/.vim/doc/omnicppcomplete.txt +++ /dev/null @@ -1,1078 +0,0 @@ -*omnicppcomplete.txt* Plugin for C/C++ omnicompletion -*omnicppcomplete* - -Author: Vissale NEANG (fromtonrouge AT gmail DOT com) -Last Change: 26 sept. 2007 - -OmniCppComplete version 0.41 - -For Vim version 7.0 and above - -============================================================================== - -1. Overview |omnicpp-overview| -2. Downloads |omnicpp-download| -3. Installation |omnicpp-installation| -4. Options |omnicpp-options| -5. Features |omnicpp-features| -6. Limitations |omnicpp-limitations| -7. FAQ & TIPS |omnicpp-faq| -8. History |omnicpp-history| -9. Thanks |omnicpp-thanks| - -============================================================================== -1. Overview~ - *omnicpp-overview* -The purpose of this script is to provide an 'omnifunc' function for C and C++ -language. In a C++ file, while in insert mode, you can use CTRL-X CTRL-O to: - - * Complete namespaces, classes, structs and unions - * Complete attribute members and return type of functions - * Complete the "this" pointer - * Complete an object after a cast (C and C++ cast) - * Complete typedefs and anonymous types - -You can set a "may complete" behaviour to start a completion automatically -after a '.', '->' or '::'. Please see |omnicpp-may-complete| for more details. - -The script needs an |Exuberant_ctags| database to work properly. - -============================================================================== -2. Downloads~ - *omnicpp-download* -You can download the latest release of the script from this url : - - http://www.vim.org/scripts/script.php?script_id=1520 - -You can download |Exuberant_ctags| from : - - http://ctags.sourceforge.net - -============================================================================== -3. Installation~ - *omnicpp-installation* -3.1. Script installation~ - -Unzip the downloaded file in your personal |vimfiles| directory (~/.vim under -unix or %HOMEPATH%\vimfiles under windows). The 'omnifunc' will be -automatically set for C and C++ files. - -You also have to enable plugins by adding these two lines in your|.vimrc|file: > - - set nocp - filetype plugin on -< -Please see |cp| and |filetype-plugin-on| sections for more details. - -3.1.1. Files~ - -After installation you should find these files : - - after\ftplugin\cpp.vim - after\ftplugin\c.vim - - autoload\omni\common\debug.vim - \utils.vim - - autoload\omni\cpp\complete.vim - \includes.vim - \items.vim - \maycomplete.vim - \namespaces.vim - \settings.vim - \tokenizer.vim - \utils.vim - - doc\omnicppcomplete.txt - -3.2. Building the Exuberant Ctags database~ - -To extract C/C++ symbols information, the script needs an |Exuberant_ctags| -database. - -You have to build your database with at least the following options: - --c++-kinds=+p : Adds prototypes in the database for C/C++ files. - --fields=+iaS : Adds inheritance (i), access (a) and function - signatures (S) information. - --extra=+q : Adds context to the tag name. Note: Without this - option, the script cannot get class members. - -Thus to build recursively a ctags database from the current directory, the -command looks like this: -> - ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . -< -You can add a map in your |.vimrc| file, eg: > - - map :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . -< -Or you can add these options in your ctags config file (~/.ctags under unix or -%HOMEPATH%\ctags.cnf under windows) and execute the command : > - - :!ctags -R . -< -If your project contains files of other languages you may add the following -options: - --languages=c++ : Builds only the tags for C++ files. - -If your project contains macros you may also use the -I option. - -Please read the ctags help or ctags man page for more details. - -3.3. Setting the 'tags' option~ - -The default value of the option 'tags' is "./tags,tags" ("./tags,./TAGS,tags,TAGS" -when |+emacs_tags| is enabled), if you build your tag database with the cmd above, -you normally don't have to change this setting (The cmd used above generates a -file with the name "tags"). In this case your current working directory must be -the directory where the tags file reside. - -Note: When |+emacs_tags| is enabled, the script may display members twice, it's - recommended to set tags to "./tags,tags' or "./TAGS,TAGS". - -If your tags file is not named "tags" you have to add it in the 'tags' -option eg: > - - set tags+=/usr/tagsdir/mytagfile -< -You can ensure that the 'tags' option is set properly by executing the following -command: > - - :tselect MyClass -< -Where MyClass is a class of your project. This command should display all -possible tags for the type MyClass. - -3.4. Simple test~ - -Now you can do a simple test. Edit a C++ file and write the simplest case : > - - MyClass myObject; - myObject. -< -You should see class members of MyClass. - -============================================================================== -4. Options~ - *omnicpp-options* - -You can change completion behaviour by setting script options in your |.vimrc| -configuration file. - -4.1. Global scope search toggle~ - *OmniCpp_GlobalScopeSearch* - -You can enable/disable the global scope search by setting the -OmniCpp_GlobalScopeSearch option. - -Possible values are : - 0 = disabled - 1 = enabled - [default=1] > - - let OmniCpp_GlobalScopeSearch = 1 -< -4.2. Namespace search method~ - *OmniCpp_NamespaceSearch* - -You can change the 'using namespace' search behaviour by setting the -OmniCpp_NamespaceSearch option. - -Possible values are : - 0 = namespaces disabled - 1 = search namespaces in the current buffer - 2 = search namespaces in the current buffer and in included files - [default=1] > - - let OmniCpp_NamespaceSearch = 1 -< -When OmniCpp_NamespaceSearch is 2, "using namespace" declarations are parsed -in the current buffer and also in included files. To find included files, the -script use the vim env 'path', so you have to set it properly. - -Note: included files are searched with lvimgrep, thus the location list of the -current window is changed. - -Note: When the 'filetype' is "c", namespace search is always disabled even if -OmniCpp_NamespaceSearch != 0 - -4.3. Class scope completion mode~ - *OmniCpp_DisplayMode* - -When you are completing a class scope (eg: MyClass::), depending on -the current scope, you may see sometimes static, public, protected or private -members and sometimes you may see all members. By default the choice is done -automatically by the script but you can override it with the -OmniCpp_DisplayMode option. - -Note: This option can be use when you have friend classes in your project (the -script does not support friend classes). - -Possible values are : - 0 = auto - 1 = always show all members - [default=0] > - - let OmniCpp_DisplayMode = 0 -< -4.4. Show scope in abbreviation~ - *OmniCpp_ShowScopeInAbbr* - -By default, in the |omnicpp-popup| menu, you will see the scope of a match in -the last column. You can remove this column and add the scope at the beginning -of match abbreviation. -eg: - -OmniCpp_ShowScopeInAbbr = 0 - +-------------------------------------+ - |method1( f + MyNamespace::MyClass| - |_member1 m + MyNamespace::MyClass| - |_member2 m # MyNamespace::MyClass| - |_member3 m - MyNamespace::MyClass| - +-------------------------------------+ - -OmniCpp_ShowScopeInAbbr = 1 - +-------------------------------------+ - |MyNamespace::MyClass::method1( f + | - |MyNamespace::MyClass::_member1 m + | - |MyNamespace::MyClass::_member2 m # | - |MyNamespace::MyClass::_member3 m - | - +-------------------------------------+ - -Possible values are : - 0 = don't show scope in abbreviation - 1 = show scope in abbreviation and remove the last column - [default=0] > - - let OmniCpp_ShowScopeInAbbr = 0 -< -4.5. Show prototype in abbreviation~ - *OmniCpp_ShowPrototypeInAbbr* - -This option allows to display the prototype of a function in the abbreviation -part of the popup menu. - -Possible values are: - 0 = don't display prototype in abbreviation - 1 = display prototype in abbreviation - [default=0] > - - let OmniCpp_ShowPrototypeInAbbr = 0 -< -4.6. Show access~ - *OmniCpp_ShowAccess* - -This option allows to show/hide the access information ('+', '#', '-') in the -popup menu. - -Possible values are: - 0 = hide access - 1 = show access - [default=1] > - - let OmniCpp_ShowAccess = 1 - -4.7. Default using namespace list~ - *OmniCpp_DefaultNamespaces* - -When |OmniCpp_NamespaceSearch| is not 0, the script will parse using namespace -declarations in the current buffer and maybe in included files. -You can specify manually a default namespace list if you want with the -OmniCpp_DefaultNamespaces option. Each item in the list is a namespace name. -eg: If you have - - let OmniCpp_DefaultNamespaces = ["std", "MyNamespace"] - - It will be the same as inserting this declarations at the top of the - current buffer : - - using namespace std; - using namespace MyNamespace; - -This option can be use if you don't want to parse using namespace declarations -in included files and want to add namespaces that are always used in your -project. - -Possible values are : - List of String - [default=[]] > - - let OmniCpp_DefaultNamespaces = [] -< -4.8. May complete behaviour~ - *omnicpp-may-complete* - -This feature allows you to run automatically a completion after a '.', '->' -or '::'. By default, the "may complete" feature is set automatically for '.' -and '->'. The reason to not set this feature for the scope operator '::' is -sometimes you don't want to complete a namespace that contains many members. - -To enable/disable the "may complete" behaviour for dot, arrow and scope -operator, you can change the option OmniCpp_MayCompleteDot, -OmniCpp_MayCompleteArrow and OmniCpp_MayCompleteScope respectively. - - *OmniCpp_MayCompleteDot* -Possible values are : - 0 = May complete disabled for dot - 1 = May complete enabled for dot - [default=1] > - - let OmniCpp_MayCompleteDot = 1 -< - *OmniCpp_MayCompleteArrow* -Possible values are : - 0 = May complete disabled for arrow - 1 = May complete enabled for arrow - [default=1] > - - let OmniCpp_MayCompleteArrow = 1 -< - *OmniCpp_MayCompleteScope* -Possible values are : - 0 = May complete disabled for scope - 1 = May complete enabled for scope - [default=0] > - - let OmniCpp_MayCompleteScope = 0 -< - -Note: You can obviously continue to use - -4.9. Select/Don't select first popup item~ - *OmniCpp_SelectFirstItem* - -Note: This option is only used when 'completeopt' does not contain "longest". - -When 'completeopt' does not contain "longest", Vim automatically select the -first entry of the popup menu. You can change this behaviour with the -OmniCpp_SelectFirstItem option. - -Possible values are: - 0 = don't select first popup item - 1 = select first popup item (inserting it to the text) - 2 = select first popup item (without inserting it to the text) - [default=0] > - - let OmniCpp_SelectFirstItem = 0 - -4.10 Use local search function for variable definitions~ - *OmniCpp_LocalSearchDecl* - -The internal search function for variable definitions of vim requires that the -enclosing braces of the function are located in the first column. You can -change this behaviour with the OmniCpp_LocalSearchDecl option. The local -version works irrespective the position of braces. - -Possible values are: - 0 = use standard vim search function - 1 = use local search function - [default=0] > - -============================================================================== -5. Features~ - *omnicpp-features* -5.1. Popup menu~ - *omnicpp-popup* -Popup menu format: - +-------------------------------------+ - |method1( f + MyNamespace::MyClass| - |_member1 m + MyNamespace::MyClass| - |_member2 m # MyNamespace::MyClass| - |_member3 m - MyNamespace::MyClass| - +-------------------------------------+ - ^ ^ ^ ^ - (1) (2)(3) (4) - -(1) name of the symbol, when a match ends with '(' it's a function. - -(2) kind of the symbol, possible kinds are : - * c = classes - * d = macro definitions - * e = enumerators (values inside an enumeration) - * f = function definitions - * g = enumeration names - * m = class, struct, and union members - * n = namespaces - * p = function prototypes - * s = structure names - * t = typedefs - * u = union names - * v = variable definitions - -(3) access, possible values are : - * + = public - * # = protected - * - = private -Note: enumerators have no access information - -(4) scope where the symbol is defined. -Note: If the scope is empty it's a global symbol -Note: anonymous scope may end with __anon[number] -eg: If you have an anonymous enum in MyNamespace::MyClass : > - - namespace MyNamespace - { - class MyClass - { - private: - - enum - { - E_ENUM0, - E_ENUM1, - E_ENUM2 - }; - }; - } -< - -You should see : - - +----------------------------------------------+ - |E_ENUM0 e MyNamespace::MyClass::__anon1| - |E_ENUM1 e MyNamespace::MyClass::__anon1| - |E_ENUM2 e MyNamespace::MyClass::__anon1| - +----------------------------------------------+ - ^ - __anon[number] - -5.2. Global scope completion~ - -The global scope completion allows you to complete global symbols for the base -you are currently typing. The base can start with '::' or not. -Note: Global scope completion only works with a non empty base, if you run a -completion just after a '::' the completion will fail. The reason is that if -there is no base to complete the script will try to display all the tags in -the database. For small project it could be not a problem but for others you -may wait 5 minutes or more for a result. - -eg1 : > - - pthread_cr => pthread_create -< -Where pthread_create is a global function. -eg2: > - ::globa => ::global_func( - +----------------+ - |global_func( f| - |global_var1 v| - |global_var2 v| - +----------------+ -< -Where global_var1, global_var2 and global_func are global symbols -eg3: > - :: => [NO MATCH] -< -No match because a global completion from an empty base is not allowed. - -5.3. Namespace scope completion~ - -You can complete namespace members after a 'MyNamespace::'. Contrary to global -scope completion you can run a completion from an empty base. -Possible members are: - * Namespaces - * Classes - * Structs - * Unions - * Enums - * Functions - * Variables - * Typedefs - -eg: > - MyNamespace:: - +--------------------------------+ - |E_ENUM0 e MyNamespace| - |E_ENUM1 e MyNamespace| - |E_ENUM2 e MyNamespace| - |MyClass c MyNamespace| - |MyEnum g MyNamespace| - |MyStruct s MyNamespace| - |MyUnion u MyNamespace| - |SubNamespace n MyNamespace| - |doSomething( f MyNamespace| - |myVar v MyNamespace| - |something_t t MyNamespace| - +--------------------------------+ - -5.4. Class scope completion~ - -You can complete class members after a 'MyClass::'. Contrary to global scope -completion you can run a completion from an empty base. -By default, there is two behaviours for class scope completion. - - a) Completion of a base class of the current class scope - - When you are completing a base class of the current class scope, you - will see all members of this class in the popup menu. - eg: > - - class A - { - public: - enum - { - E_ENUM0, - E_ENUM1, - E_ENUM2, - }; - - void func1(); - static int _staticMember; - - private: - int _member; - }; - - class B : public A - { - public: - void doSomething(); - }; - - - void MyClassB::doSomething() - { - MyClassA:: - +---------------------------+ - |E_ENUM0 e MyClassA| - |E_ENUM1 e MyClassA| - |E_ENUM2 e MyClassA| - |func1( f + MyClassA| - |_member m - MyClassA| - |_staticMember m + MyClassA| - +---------------------------+ - } -< - - b) Completion of a non base class of the current class scope - - When you are completing a class that is not a base class of the - current class you will see only enumerators and static members. - eg: > - - class C - { - public: - void doSomething(); - }; - - void MyClassC::doSomething() - { - MyClassA:: - +---------------------------+ - |E_ENUM0 e MyClassA| - |E_ENUM1 e MyClassA| - |E_ENUM2 e MyClassA| - |_staticMember m + MyClassA| - +---------------------------+ - } -< -You can override the default behaviour by setting the -|OmniCpp_DisplayMode| option. - -5.5. Current scope completion~ - -When you start a completion from an empty instruction you are in "Current -scope completion" mode. You will see possible members of each context in -the context stack. -eg: > - void MyClass::doSomething() - { - using namespace MyNamespace; - using namespace SubNamespace; - - // You will see members of each context in the context stack - // 1) MyClass members - // 2) MyNamespace::SubNamespace members - // 3) MyNamespace members - - - +------------------------------------------+ - |_member1 m + MyClass | - |_member2 m # MyClass | - |func1( f MyNamespace::SubNamespace| - |var v MyNamespace::SubNamespace| - |func1( f MyNamespace | - |var v MyNamespace | - +------------------------------------------+ - } -< - -5.6. Class, Struct and Union members completion~ - -You can complete members of class, struct and union instances after a '->' or -'.'. -eg: > - MyClass myObject; - myObject. - +-----------------------+ - |_member1 m + MyClass | - |_member2 m # MyClass | - +-----------------------+ -< - -5.7. Attribute members and returned type completion~ - -You can complete a class member or a return type of a function. -eg: > - MyClass myObject; - - // Completion of the member _member1 - myObject._member1-> - +------------------------+ - |get( m + AnotherClass1| - +------------------------+ - - // Completion of the return type of the function get() - myObject._member1->get()-> - +--------------------------+ - |_member1 m + AnotherClass2| - |_member2 m # AnotherClass2| - |_member3 m - AnotherClass2| - +--------------------------+ - -5.8. Anonymous type completion~ - -Note: To use this feature you need at least|Exuberant_ctags| version 5.6 - -You can complete an anonymous type like this : > - struct - { - int a; - int b; - int c; - }globalVar; - - void func() - { - globalVar. - +---------------+ - |a m + __anon1| - |b m + __anon1| - |c m + __anon1| - +---------------+ - } -< -Where globalVar is a global variable of an anonymous type - -5.9. Typedef completion~ - -You can complete a typedef. The typedef is resolved recursively, thus typedef -of typedef of... may not be a problem. - -You can also complete a typedef of an anonymous type, eg : > - typedef struct - { - int a; - int b; - int c; - }something_t; - - something_t globalVar; - - void func() - { - globalVar. - +---------------+ - |a m + __anon1| - |b m + __anon1| - |c m + __anon1| - +---------------+ - } -< -Where globalVar is a global variable of typedef of an anonymous type. - -5.10. Completion of the "this" pointer~ - -You can complete the "this" pointer. -eg: > - this-> - +-----------------------+ - |_member1 m + MyClass | - |_member2 m # MyClass | - +-----------------------+ - - (*this). - +-----------------------+ - |_member1 m + MyClass | - |_member2 m # MyClass | - +-----------------------+ -< - -5.11. Completion after a cast~ - -You can complete an object after a C or C++ cast. -eg: > - // C cast style - ((AnotherStruct*)pStruct)-> - - // C++ cast style - static_cast(pStruct)-> -< - -5.12. Preview window~ - -If the 'completeopt' option contains the setting "preview" (this is the -default value), you will see a preview window during the completion. -This window shows useful information like function signature, filename where -the symbol is define etc... - -The preview window contains tag information, the list below is non exhaustive. - - * name : name of the tag - * cmd : regexp or line number that helps to find the tag - * signature : signature for prototypes and functions - * kind : kind of the tag (eg: namespace, class etc...) - * access : access information (eg: public, protected, private) - * inherits : list of base classes - * filename : filename where the tag is define - -5.13. Code tokenization~ - -When you start a completion, the current instruction is tokenized ignoring -spaces, tabs, carriage returns and comments. Thus you can complete a symbol -even if the current instruction is on multiple lines, has comments between -words etc... : -eg: this case is unrealistic but it's just for illustration > - - myObject [ 0 ]/* Why is there a comment here ?*/ - ->_member - -> -< - -============================================================================== -6. Limitations~ - *omnicpp-limitations* -Some C++ features are not supported by the script, some implemented features -may not work properly in some conditions. They are multiple reasons like a -lack of information in the database, performance issues and so on... - -6.1. Attribute members and returned type completion~ - -To work properly, the completion of attribute members and returned type of -functions depends on how you write your code in the class declaration. -Because the tags database does not contain information like return type or -type of a member, the script use the cmd information of the tag to determine -the type of an attribute member or the return type of a function. - -Thus, because the cmd is a regular expression (or line number for #define) if -you write your code like this : > - - class MyClass - { - public: - - MyOtherClass - _member; - }; -< -The type of _member will not be recognized, because the cmd will be -/^ _member;$/ and does not contain the type MyOtherClass. -The correct case should be : > - - class MyClass - { - public: - - MyOtherClass _member; - }; -< -It's the same problem for return type of function : > - - class MyClass - { - public: - - MyOtherClass - getOtherClass(); - }; -< -Here the cmd will be /^ getOtherClass();$/ and the script won't find the -return type. -The correct case should be : > - class MyClass - { - public: - - MyOtherClass getOtherClass(); - }; -< - -6.2. Static members~ - -It's the same problem as above, tags database does not contain information -about static members. The only fast way to get this information is to use the -cmd. - -6.3. Typedef~ - -It's the same problem as above, tags database does not contain information -about the type of a typedef. The script use the cmd information to resolve the -typedef. - -6.4. Restricted inheritance access~ - -Tags database contains inheritance information but unfortunately inheritance -access are not available. We could use the cmd but we often find code -indentation like this : > - - class A : - public B, - protected C, - private D - { - }; -< -Here the cmd will be /^class A :$/, we can't extract inheritance access. - -6.5. Using namespace parsing~ - -When you start a completion, using namespace declarations are parsed from the -cursor position to the first scope to detect local using namespace -declarations. After that, global using namespace declarations are parsed in the -file and included files. - -There is a limitation for global using namespace detection, for performance -issues only using namespace that starts a line will be detected. - -6.6. Friend classes~ - -Tags database does not contain information about friend classes. The script -does not support friend classes. - -6.7. Templates~ - -At the moment, |Exuberant_ctags| does not provide additional information for -templates. That's why the script does not handle templates. - -============================================================================== -7. FAQ & TIPS~ - *omnicpp-faq* - -* How to complete STL objects ? - If you have some troubles to generate a good ctags database for STL you - can try this solution : - - 1) Download SGI's STL from SGI's site - (http://www.sgi.com/tech/stl/download.html) - 2) Replace all __STL_BEGIN_NAMESPACE by "namespace std {" and - __STL_END_NAMESPACE by "}" from header and source files. (with Vim, - or with tar and sed or another tool) - 3) Run ctags and put the generated tags file in a directory eg: - ~/MyTags/stl.tags - 4) set tags+=~/MyTags/stl.tags - - The main problem is that you can't tell to ctags that - __STL_BEGIN_NAMESPACE = "namespace std {" even with the option -I. - That's why you need the step 2). - - Here is another solution if you have STL sources using _GLIBCXX_STD macro - (Tip by Nicola Bonelli) : > - - let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"] -< -* How to close automatically the preview window after a completion ? - (Tip by Kamil Renczewski) - - You can add to your |vimrc| the following lines : > - - autocmd CursorMovedI * if pumvisible() == 0|pclose|endif - autocmd InsertLeave * if pumvisible() == 0|pclose|endif -< -============================================================================== -8. History~ - *omnicpp-history* -Version O.41 - - It's recommended to update ctags to version 5.7 or higher - - The plugin is now activated for C files - - New value for OmniCpp_SelectFirstItem when the option is equal to - 2 the first item is selected without inserting it to - the text (patch from Marek Olszewski) - - Bug when completing union members fixed with ctags 5.7 - (reported by Willem-Jan de Hoog) - - New option OmniCpp_LocalSearchDecl (patch from Roland Kuck) - - Bug when tags=something,,somethingelse (reported by Tobias Pflug) - - Bug with nested structure (reported by Mikhail Daen) - - Bug where the script fails to detect the type of a variable when - the ignorecase option is on (reported by Alexey Vakhov) - - Error message when trying to use completion on a not yet saved - Vim buffer (reported by Neil Bird) - - Error message when trying to use completion on an file opened from - a tselect command (reported by Henrique Andrade) - -Version 0.4 - - The script is renamed to OmniCppComplete according to the library - script directory structure. - - OmniCpp_ClassScopeCompletionMethod renamed to OmniCpp_DisplayMode - - Fixed a bug where the quickfix list is modified after a completion. - - OmniCpp_ShowPrototypeInAbbr option added. It allows to show the - function signature in the abbreviation. - - OmniCpp_ShowAccess option added. It allows to hide the access - information in the popup menu. - - The tags database format must be a ctags 5.6 database if you want to - complete anonymous types. - - Fixed current scope detection not working properly in destructors. - - Don't show protected and private members according to the current scope. - - Overloaded functions are now filtered properly. - - New cache system using less memory. - - The class scope of a method is now resolved properly with "using - namespace" declarations. - - OmniCpp_SelectFirstItem option added. It allows to not select the first - item in the popup menu when 'completeopt' does not contain "longest". - - Fixed the bug where a "random" item in the popup menu is selected - by default when 'completeopt' does not contain "longest" option. - - The script is now split in library scripts. - - Cache added for 'using namespace' search in included files - - Default value for OmniCpp_NamespaceSearch is now 1 (search only in the - current buffer). - - Namespace search automatically disabled for C files even if - OmniCpp_NamespaceSearch != 0. - - To avoid linear search in tags files, the ignorecase option is now - disabled when getting tags datas (the user setting is restored after). - - Fixed a bug where friend functions may crash the script and also crash vim. - -Version 0.32 - - Optimizations in search members methods. - - 'May complete' behaviour is now set to default for dot '.' and arrow - '->' (mappings are set in after/ftplugin/cpp.vim) - - Fixed the option CppOmni_ShowScopeInAbbr not detected after the first - completion. - - Exceptions catched from taglist() when a tag file is corrupted. - - Fixed a bug where enumerators in global scope didn't appear in the - popup menu. - -Version 0.31 - WARNING: For this release and future releases you have to build your tags - database with this cmd : - "ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ." - Please read installation instructions in the documentation for details - - - May complete added, please see installation notes for details. - - Fixed a bug where the completion works while in a comment or in a string. - -Version 0.3 - WARNING: For this release and future releases you have to build your tags - database with this cmd : - "ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ." - Please read installation instructions in the documentation for details - - - Documentation added. - - Fixed a bug where typedefs were not correctly resolved in namespaces - in some cases. - - Fixed a bug where the type can not be detected when we have a decl - like this: class A {}globalVar; - - Fixed a bug in type detection where searchdecl() (gd) find - incorrect declaration instruction. - - Global scope completion now only works with non-empty base. - - Using namespace list is now parsed in the current buffer and in - included files. - - Fixed a bug where the completion fails in some cases when the user - sets the ignorecase to on - - Preview window information added - - Some improvements in type detection, the type can be properly detected - with a declaration like this: - 'Class1 *class1A = NULL, **class1B = NULL, class1C[9], class1D[1] = {};' - - Fixed a bug where parent scopes were not displayed in the popup menu - in the current scope completion mode. - - Fixed a bug where an error message was displayed when the last - instruction was not finished. - - Fixed a bug where the completion fails if a punctuator or operator was - immediately after the cursor. - - The script can now detect parent contexts at the cursor position - thanks to 'using namespace' declarations. - It can also detect ambiguous namespaces. They are not included in - the context list. - - Fixed a bug where the current scope is not properly detected when - a file starts with a comment - - Fixed a bug where the type is not detected when we have myObject[0] - - Removed the system() call in SearchMembers(), no more calls to the - ctags binary. The user have to build correctly his database with the cmd: - "ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ." - - File time cache removed, the user have to rebuild his data base after a - modification. - -Version 0.22 - - Completion of unnamed type (eg: You can complete g_Var defined like - this 'struct {int a; int b;}g_Var;'). It also works for a typedef of - an unnamed type (eg: 'typedef struct {int a; int b;}t_mytype; t_mytype - g_Var;'). - - Tag file's time cache added, if a tag file has changed the global - scope result cache is cleared. - - Fixed a bug where the tokenization process enter in an infinite loop - when a file starts with '/*'. - -Version 0.21 - - Improvements on the global scope completion. - The user can now see the progression of the search and complete - matches are stored in a cache for optimization. The cache is cleared - when the tag env is modified. - - Within a class scope when the user complete an empty word, the popup - menu displays the members of the class then members of the global - scope. - - Fixed a bug where a current scope completion failed after a punctuator - or operator (eg: after a '=' or '!='). - -Version 0.2 - - Improvements in type detection (eg: when a variable is declared in a - parameter list, a catch clause, etc...) - - Code tokenization => ignoring spaces, tabs, carriage returns and comments - You can complete a code even if the instruction has bad - indentation, spaces or carriage returns between words - - Completion of class members added - - Detection of the current scope at the cursor position. - If you run a completion from en empty line, members of the current - scope are displayed. It works on the global namespace and the current - class scope (but there is not the combination of the 2 for the moment) - - Basic completion on the global namespace (very slow) - - Completion of returned type added - - this pointer completion added - - Completion after a cast added (C and C++ cast) - - Fixed a bug where the matches of the complete menu are not filtered - according to what the user typed - - Change the output of the popup menu. The type of the member - (function, member, enum etc...) is now display as a single letter. - The access information is display like this : '+' for a public member - '#' for a protected member and '-' for a private member. - The last information is the class, namespace or enum where the member is define. - -Version 0.12: - - Complete check added to the search process, you can now cancel - the search during a complete search. - -Version 0.1: - - First release - -============================================================================== -9. Thanks~ - *omnicpp-thanks* - * For advices, bug report, documentation, help, ideas : - Alexey Vakhov (bug report) - Arthur Axel "fREW" Schmidt (documentation) - Dennis Lubert (bug report) - Henrique Andrade (bug report) - Kamil Renczewski (tips) - Marek Olszewski (patch) - Markus Trenkwalder (bug report) - Martin Stubenschrott (bug report) - Mikhail Daen (bug report) - Neil Bird (bug report) - Nicola Bonelli (tips) - Robert Webb (bug report) - Roland Kuck (patch) - Tobias Pflug (bug report) - Willem-Jan de Hoog (bug report) - Yegappan Lakshmanan (advices) - - - * Darren Hiebert for Exuberant Ctags - - * All Vim devs for Vim - - * Bram Moolenaar for Vim - - * You for using this script :) - -============================================================================== - - vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl: -- cgit v1.2.3-70-g09d2