Re: Opening files matching tags in another window
Hello, You can try this mapping with the left mouse button (I don't try with C-] because I can't type CTRL-] on my french keyboard :p ) : map C-LeftMouse :exe :stj . expand(cword)CR Best regards, Vissale 2007/5/24, cupaxe [EMAIL PROTECTED]: Hello, This is a newbie question. I want to have a functionality similar to g CTRL-] which implements the command :stj [ident]. Is there something like that? I wasn't able to find it in :help tags. Thanks, Krishna
Re: OmniCppComplete question
Hello, This is a known bug. It appears when you edit a new cpp file without saving it before running a completion. Just save the file before. It will be fixed for the next release. Best regards, Vissale 2007/5/19, madiyaan [EMAIL PROTECTED]: Hello, I installed this add-on as per the instructions in the help file. However, after building the tags database when I do a this- it says: Omnicomplete: Pattern not found: When I do a object. (dot) I get this: Error detected while processing function omni#cpp#complete#Main..omni#cpp#namespaces#GetCo ntexts..omni#cpp#namespaces#GetUsingNamespaces..omni#cpp#namespaces#GetListFromCurrentBuff er..SNR38_GetAllUsingNamespaceMapFromCurrentBuffer: line7: E713: Cannot use empty key for Dictionary Can anyone tell me what I'm missing? I'm sure it's something really elementary... -- View this message in context: http://www.nabble.com/OmniCppComplete-question-tf3780665.html#a10691989 Sent from the Vim - General mailing list archive at Nabble.com.
Re: Omnicomplete for C - pattern not found problem
Hi, You can try this C++ omnicomplete plugin http://www.vim.org/scripts/script.php?script_id=1520 It will work for C files if you copy the file ~/.vim/after/ftplugin/cpp.vim to ~/.vim/after/ftplugin/c.vim (I'll add it for the next release). Best regards, Vissale 2007/3/6, Zarko Coklin [EMAIL PROTECTED]: I found a partial answer to my question here: http://tech.groups.yahoo.com/group/vim/message/68078 However, not sure why would the following be declared as an invalid C code: struct foo { /* ... */ }; typedef struct foo foo_t; int main() { foo myfoo; /* ... */ } In fact, I have a lot of instances in the code where following is used. And what I got from Bram it sounds omnicompletion will not work!? To me this would be the most basic thing for omnicomplete to support. typedef struct foo { /* ... */ } foo_t; int main() { foo myfoo; /* ... */ foo. CTRL-xCTRL-o yields with Pattern not found } Need a quick answer? Get one in minutes from people who know. Ask your question on www.Answers.yahoo.com
Re: Re : Omni Confusion
I forgot to mention that you have to build your tags database with this command : ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . You'll see more details on these parameters in the help file. Moreover, there is a recent bug where you have to disable the ignorecase function to complete correctly your code (eg: A* a), it will be fixed. Best regards, Vissale 2007/2/20, Bill McCarthy [EMAIL PROTECTED]: On Mon 19-Feb-07 6:14am -0600, Vissale NEANG wrote: To use cpp completion with c files you can copy ~/.vim/after/ftplugin/cpp.vim to ~/.vim/after/ftplugin/c.vim This apparently doesn't work with C. I've installed it and copied cpp.vim to c.vim as instructed above. It automatically goes into omni mode when I type the '' in: b- However it reports Pattern not found - yes I created the tags file. I tried again with each function parameter on a separate line - that didn't matter to your function, but worked perfectly after deleting after/ftplugin/c.vim If anyone else wants to see this happen, here is a complete, albeit trivial, program (try to omni complete a line of C code starting with b- in the function myfunc(): #include stdio.h #include stdlib.h typedef struct A { int a1; int a2; int a3; } A; typedef struct B { int b1; int b2; int b3; } B; void myfunc( A *a, B *b ); int main( void ) { A x; B y; myfunc( x, y ); printf( %d %d %d\n, x.a1, x.a2, x.a3 ); printf( %d %d %d\n, y.b1, y.b2, y.b3 ); return EXIT_SUCCESS; } void myfunc( A *a, B *b ) { a-a1 = 1; a-a2 = 2; a-a3 = 3; b-b1 = 4; b-b2 = 5; b-b3 = 6; } -- Best regards, Bill
Re : Omni Confusion
Hello, To use cpp completion with c files you can copy ~/.vim/after/ftplugin/cpp.vim to ~/.vim/after/ftplugin/c.vim Best regards vissale
Re: automatic code completion in vim
It's because your tag file is not sorted correctly, the last tag main should be the first tag in the file. The script does a tag binary search and the tags file must be sorted to work properly (:help tag-binary-search). Best regards, Vissale 2007/1/3, zhengda [EMAIL PROTECTED]: Vissale NEANG wrote: What is you ctags command? Could you send me your tag file? Just for comparison I give you my tag file 2007/1/3, Zheng Da [EMAIL PROTECTED]: On 1/3/07, Vissale NEANG [EMAIL PROTECTED] wrote: Hello, I am the maintainer of the script and I can reproduce the problem: 1 int main(){ 2hello h; 3hello::hello(); 4h. 5hello::C-xC-o- the popup menu only appear here 6tmp1 t1; 7t1. 8 } At line 4, the popup menu doesn't appear because of the brace at line 1. Internally the script use the vim function searchdecl (same behaviour as the command gd) to search the declaration line of your object h. But gd works properly only if your brace starts a new line because it uses internally the command [[ (:help gd and :help [[). So if you want to see the popup menu at line 4 you have to write your code like this : 1 int main() 2 { // This brace must starts the line 3hello h; 4hello::hello(); 5h. // The popup menu should appear here 6hello:: 7tmp1 t1; 8t1. 9 } At line 8, the popup menu doesn't appear because, after the command gd, the script tokenizes the source code from line 5 to 7 and the resulting code in our case is : h.hello::tmp1 t1; so the script found that the type of the object t1 is h.hello::tmp1, this is not correct. If you want to see the popup menu you have to, at least, terminate the instruction at line 6 with ; 1 int main() 2 { // This brace must starts the line 3hello h; 4hello::hello(); 5h.print(); // The popup menu should appear here 6hello::hello(); // you have to terminate properly your // instruction with ; before the next declaration 7tmp1 t1; 8t1.// the popup menu should appear here 9 } If you have other questions, I am there :) Best regards, Vissale 2007/1/2, zhengda [EMAIL PROTECTED]: Mikolaj Machowski wrote: On pon sty 1 2007, Mikolaj Machowski wrote: This won't work: you need a different variable name, see :help E706. Yeah, I forgot (not only about that). This is complete solution:: function! UpdateTags() call writefile(getline(1, '$'), '.tmp.cc', 'b') let tags = system('ctags --c++-kinds=+p --fields=+iaS --extra=+q -f - .tmp.cc') Note: whitespaces around expand are tab chars. let alltags = system('grep -v '.expand('%').' tags') let tagstable = split(alltags, '\n') call add(tagstable, tags) call writefile(tagstable, 'tags', 'b') redraw! return ';' endfunction inoremap expr ; UpdateTags() Note: this is untested in real life, it doesn't return any errors. In good conditions execution of whole function takes 0.46s on big tags file (KMail source, tags size over 4MB, 1 lines). Delay noticeable on my computer Sempron 2200, 512M RAM, old HD 5400rpm. In worse conditions it was taking up to 0.75s:: FUNCTION UpdateTags() Called 1 time Total time: 0.527128 Self time: 0.401542 count total (s) self (s) 1 0.000551 call writefile(getline(1, '$'), '.tmp.cc', 'b') 1 0.026373 0.000298 let tags = system('ctags --c++-kinds=+p --fields=+iaS --extra=+q -f - .tmp.cc') 1 0.91 let stags = split(tags, '\n') 1 0.130731 0.031220 let alltags = system('grep -v '.expand('%').' tags') 1 0.128909 let tagstable = split(alltags, '\n') 1 0.43 call extend(tagstable, stags) 1 0.240341 call writefile(tagstable, 'tags', 'b') 1 0.33 return ';' FUNCTIONS SORTED ON TOTAL TIME count total (s) self (s) function 1 0.527128 0.401542 UpdateTags() FUNCTIONS SORTED ON SELF TIME count total (s) self (s) function 1 0.527128 0.401542 UpdateTags() Note however I've made one fatal mistake. ``ctags fname`` will point to tags in file .tmp.cc not our real current file! Filtering tags in Vim is possible and on small sample quite fast but still 0.5s is long. Maybe we should put that strain to the system:: function! UpdateTags() call writefile(getline(1, '$'), '.tmp.cc', 'b
Re: automatic code completion in vim
You can use the vim sort command (:help sort) instead of gnu sort. Moreover it's portable. 2007/1/4, Zheng Da [EMAIL PROTECTED]: On 1/4/07, Vissale NEANG [EMAIL PROTECTED] wrote: It's because your tag file is not sorted correctly, the last tag main should be the first tag in the file. The script does a tag binary search and the tags file must be sorted to work properly (:help tag-binary-search). Best regards, Vissale 2007/1/3, zhengda [EMAIL PROTECTED]: Vissale NEANG wrote: What is you ctags command? Could you send me your tag file? Just for comparison I give you my tag file 2007/1/3, Zheng Da [EMAIL PROTECTED]: On 1/3/07, Vissale NEANG [EMAIL PROTECTED] wrote: Hello, I am the maintainer of the script and I can reproduce the problem: 1 int main(){ 2hello h; 3hello::hello(); 4h. 5hello::C-xC-o- the popup menu only appear here 6tmp1 t1; 7t1. 8 } At line 4, the popup menu doesn't appear because of the brace at line 1. Internally the script use the vim function searchdecl (same behaviour as the command gd) to search the declaration line of your object h. But gd works properly only if your brace starts a new line because it uses internally the command [[ (:help gd and :help [[). So if you want to see the popup menu at line 4 you have to write your code like this : 1 int main() 2 { // This brace must starts the line 3hello h; 4hello::hello(); 5h. // The popup menu should appear here 6hello:: 7tmp1 t1; 8t1. 9 } At line 8, the popup menu doesn't appear because, after the command gd, the script tokenizes the source code from line 5 to 7 and the resulting code in our case is : h.hello::tmp1 t1; so the script found that the type of the object t1 is h.hello::tmp1, this is not correct. If you want to see the popup menu you have to, at least, terminate the instruction at line 6 with ; 1 int main() 2 { // This brace must starts the line 3hello h; 4hello::hello(); 5h.print(); // The popup menu should appear here 6hello::hello(); // you have to terminate properly your // instruction with ; before the next declaration 7tmp1 t1; 8t1.// the popup menu should appear here 9 } If you have other questions, I am there :) Best regards, Vissale 2007/1/2, zhengda [EMAIL PROTECTED]: Mikolaj Machowski wrote: On pon sty 1 2007, Mikolaj Machowski wrote: This won't work: you need a different variable name, see :help E706. Yeah, I forgot (not only about that). This is complete solution:: function! UpdateTags() call writefile(getline(1, '$'), '.tmp.cc', 'b') let tags = system('ctags --c++-kinds=+p --fields=+iaS --extra=+q -f - .tmp.cc') Note: whitespaces around expand are tab chars. let alltags = system('grep -v '.expand('%').' tags') let tagstable = split(alltags, '\n') call add(tagstable, tags) call writefile(tagstable, 'tags', 'b') redraw! return ';' endfunction inoremap expr ; UpdateTags() Note: this is untested in real life, it doesn't return any errors. In good conditions execution of whole function takes 0.46s on big tags file (KMail source, tags size over 4MB, 1 lines). Delay noticeable on my computer Sempron 2200, 512M RAM, old HD 5400rpm. In worse conditions it was taking up to 0.75s:: FUNCTION UpdateTags() Called 1 time Total time: 0.527128 Self time: 0.401542 count total (s) self (s) 1 0.000551 call writefile(getline(1, '$'), '.tmp.cc', 'b') 1 0.026373 0.000298 let tags = system('ctags --c++-kinds=+p --fields=+iaS --extra=+q -f - .tmp.cc') 1 0.91 let stags = split(tags, '\n') 1 0.130731 0.031220 let alltags = system('grep -v '.expand('%').' tags') 1 0.128909 let tagstable = split(alltags, '\n') 1 0.43 call extend(tagstable, stags) 1 0.240341 call writefile(tagstable, 'tags', 'b') 1 0.33 return ';' FUNCTIONS SORTED ON TOTAL TIME count total (s) self (s) function 1 0.527128 0.401542 UpdateTags() FUNCTIONS SORTED ON SELF TIME count
Re: automatic code completion in vim
There is also an autotag plugin (just found it): http://www.vim.org/scripts/script.php?script_id=1343 But I have not yet try it. It seems you need to compile vim with python. 2007/1/4, Zheng Da [EMAIL PROTECTED]: On 1/4/07, Vissale NEANG [EMAIL PROTECTED] wrote: You can use the vim sort command (:help sort) instead of gnu sort. Moreover it's portable. 2007/1/4, Zheng Da [EMAIL PROTECTED]: On 1/4/07, Vissale NEANG [EMAIL PROTECTED] wrote: It's because your tag file is not sorted correctly, the last tag main should be the first tag in the file. The script does a tag binary search and the tags file must be sorted to work properly (:help tag-binary-search). Best regards, Vissale 2007/1/3, zhengda [EMAIL PROTECTED]: Vissale NEANG wrote: What is you ctags command? Could you send me your tag file? Just for comparison I give you my tag file 2007/1/3, Zheng Da [EMAIL PROTECTED]: On 1/3/07, Vissale NEANG [EMAIL PROTECTED] wrote: Hello, I am the maintainer of the script and I can reproduce the problem: 1 int main(){ 2hello h; 3hello::hello(); 4h. 5hello::C-xC-o- the popup menu only appear here 6tmp1 t1; 7t1. 8 } At line 4, the popup menu doesn't appear because of the brace at line 1. Internally the script use the vim function searchdecl (same behaviour as the command gd) to search the declaration line of your object h. But gd works properly only if your brace starts a new line because it uses internally the command [[ (:help gd and :help [[). So if you want to see the popup menu at line 4 you have to write your code like this : 1 int main() 2 { // This brace must starts the line 3hello h; 4hello::hello(); 5h. // The popup menu should appear here 6hello:: 7tmp1 t1; 8t1. 9 } At line 8, the popup menu doesn't appear because, after the command gd, the script tokenizes the source code from line 5 to 7 and the resulting code in our case is : h.hello::tmp1 t1; so the script found that the type of the object t1 is h.hello::tmp1, this is not correct. If you want to see the popup menu you have to, at least, terminate the instruction at line 6 with ; 1 int main() 2 { // This brace must starts the line 3hello h; 4hello::hello(); 5h.print(); // The popup menu should appear here 6hello::hello(); // you have to terminate properly your // instruction with ; before the next declaration 7tmp1 t1; 8t1.// the popup menu should appear here 9 } If you have other questions, I am there :) Best regards, Vissale 2007/1/2, zhengda [EMAIL PROTECTED]: Mikolaj Machowski wrote: On pon sty 1 2007, Mikolaj Machowski wrote: This won't work: you need a different variable name, see :help E706. Yeah, I forgot (not only about that). This is complete solution:: function! UpdateTags() call writefile(getline(1, '$'), '.tmp.cc', 'b') let tags = system('ctags --c++-kinds=+p --fields=+iaS --extra=+q -f - .tmp.cc') Note: whitespaces around expand are tab chars. let alltags = system('grep -v '.expand('%').' tags') let tagstable = split(alltags, '\n') call add(tagstable, tags) call writefile(tagstable, 'tags', 'b') redraw! return ';' endfunction inoremap expr ; UpdateTags() Note: this is untested in real life, it doesn't return any errors. In good conditions execution of whole function takes 0.46s on big tags file (KMail source, tags size over 4MB, 1 lines). Delay noticeable on my computer Sempron 2200, 512M RAM, old HD 5400rpm. In worse conditions it was taking up to 0.75s:: FUNCTION UpdateTags() Called 1 time Total time: 0.527128 Self time: 0.401542 count total (s) self (s) 1 0.000551 call writefile(getline(1, '$'), '.tmp.cc', 'b') 1 0.026373 0.000298 let tags = system('ctags --c++-kinds=+p --fields=+iaS --extra=+q -f - .tmp.cc') 1 0.91 let stags = split(tags, '\n') 1 0.130731 0.031220 let alltags = system('grep -v
Re: automatic code completion in vim
Hello, I am the maintainer of the script and I can reproduce the problem: 1 int main(){ 2hello h; 3hello::hello(); 4h. 5hello::C-xC-o- the popup menu only appear here 6tmp1 t1; 7t1. 8 } At line 4, the popup menu doesn't appear because of the brace at line 1. Internally the script use the vim function searchdecl (same behaviour as the command gd) to search the declaration line of your object h. But gd works properly only if your brace starts a new line because it uses internally the command [[ (:help gd and :help [[). So if you want to see the popup menu at line 4 you have to write your code like this : 1 int main() 2 { // This brace must starts the line 3hello h; 4hello::hello(); 5h. // The popup menu should appear here 6hello:: 7tmp1 t1; 8t1. 9 } At line 8, the popup menu doesn't appear because, after the command gd, the script tokenizes the source code from line 5 to 7 and the resulting code in our case is : h.hello::tmp1 t1; so the script found that the type of the object t1 is h.hello::tmp1, this is not correct. If you want to see the popup menu you have to, at least, terminate the instruction at line 6 with ; 1 int main() 2 { // This brace must starts the line 3hello h; 4hello::hello(); 5h.print(); // The popup menu should appear here 6hello::hello(); // you have to terminate properly your // instruction with ; before the next declaration 7tmp1 t1; 8t1.// the popup menu should appear here 9 } If you have other questions, I am there :) Best regards, Vissale 2007/1/2, zhengda [EMAIL PROTECTED]: Mikolaj Machowski wrote: On pon sty 1 2007, Mikolaj Machowski wrote: This won't work: you need a different variable name, see :help E706. Yeah, I forgot (not only about that). This is complete solution:: function! UpdateTags() call writefile(getline(1, '$'), '.tmp.cc', 'b') let tags = system('ctags --c++-kinds=+p --fields=+iaS --extra=+q -f - .tmp.cc') Note: whitespaces around expand are tab chars. let alltags = system('grep -v '.expand('%').' tags') let tagstable = split(alltags, '\n') call add(tagstable, tags) call writefile(tagstable, 'tags', 'b') redraw! return ';' endfunction inoremap expr ; UpdateTags() Note: this is untested in real life, it doesn't return any errors. In good conditions execution of whole function takes 0.46s on big tags file (KMail source, tags size over 4MB, 1 lines). Delay noticeable on my computer Sempron 2200, 512M RAM, old HD 5400rpm. In worse conditions it was taking up to 0.75s:: FUNCTION UpdateTags() Called 1 time Total time: 0.527128 Self time: 0.401542 count total (s) self (s) 1 0.000551 call writefile(getline(1, '$'), '.tmp.cc', 'b') 1 0.026373 0.000298 let tags = system('ctags --c++-kinds=+p --fields=+iaS --extra=+q -f - .tmp.cc') 1 0.91 let stags = split(tags, '\n') 1 0.130731 0.031220 let alltags = system('grep -v '.expand('%').' tags') 1 0.128909 let tagstable = split(alltags, '\n') 1 0.43 call extend(tagstable, stags) 1 0.240341 call writefile(tagstable, 'tags', 'b') 1 0.33 return ';' FUNCTIONS SORTED ON TOTAL TIME count total (s) self (s) function 1 0.527128 0.401542 UpdateTags() FUNCTIONS SORTED ON SELF TIME count total (s) self (s) function 1 0.527128 0.401542 UpdateTags() Note however I've made one fatal mistake. ``ctags fname`` will point to tags in file .tmp.cc not our real current file! Filtering tags in Vim is possible and on small sample quite fast but still 0.5s is long. Maybe we should put that strain to the system:: function! UpdateTags() call writefile(getline(1, '$'), '.tmp.cc', 'b') call system('grep -v '.expand('%').' tags tags2 mv -f tags2 tags') let tags = system('ctags --c++-kinds=+p --fields=+iaS --extra=+q -f - .tmp.cc | sed s/\t\.tmp\.cc\t/\t'.expand('%').'\t/ tags') return ';' endfunction inoremap expr ; UpdateTags() And here we have the winner:: FUNCTION UpdateTags() Called 1 time Total time: 0.145700 Self time: 0.001068 count total (s) self (s) 1 0.000523 call writefile(getline(1, '$'), '.tmp.cc', 'b') 1 0.096118 0.000195 call system('grep -v '.expand('%').' tags tags2 mv -f tags2 tags') 1 0.049003 0.000294 call system('ctags --c++-kinds=+p --fields=+iaS --extra=+q -f - .tmp.cc | sed
Re: suggestions for ssh under windows
Hi, Maybe he can try OpenSSH for windows from here : http://sshwindows.sourceforge.net/ It doesn't need the full Cygwin package. Best regards, Vissale 2006/11/30, Charles E Campbell Jr [EMAIL PROTECTED]: Hello! I have a netrw user using WinXP who wants to use ssh; currently, he doesn't have such an executable. I tend to use cygwin, but that's like asking one to build a home instead of new cabinets for the kitchen. So, where can he get ssh for WinXP? I'm likely to put a synopsis of any answers in netrw's help. Thank you, Chip Campbell
Small question about the popup menu
Hi, In the vim documentation, there is a note about a possibility to display an icon thanks to the kind information of a popup item (:h complete-items) : The kind item uses a single letter to indicate the kind of completion. This may be used to show the completion differently (different color or icon). Is it possible to do this in the current version of Vim or is there a dev plan to implement a gui popup for the futur ? Thanks in advance, Best regards, -- Vissale Live For Speed Racer - http://www.liveforspeed.net
Re: c and gvim
Hi, You can also use the usefull plugin taglist.vim, it shows you the list of functions prototypes, classes and more in a splitted window. http://www.vim.org/scripts/script.php?script_id=273 If you want to use omni-completion for C++ you can use the OmniCppComplete plugin. http://www.vim.org/scripts/script.php?script_id=1520 Both use ctags. Regards, Vissale 2006/9/7, SHANKAR R-R66203 [EMAIL PROTECTED]: Hi All, I am basically a VHDL/verilog guy. But my team has fresh verification engineers who will be using c a lot. I want to know the useful plugins and any other important aspects, when using gvim for editing C/C++ As far as I know and searched - I could get c.vim -- plugin for gvim ctags/cscope -- tag generator. Any other important feature/plugin/tool one need to know for editing C, please let me know. Thanks and Regards, Shankar
Re: tag lookup for Class::member
Hi, You can build your ctags database with the option : --extra=+q after that you can run the cmd : :tag /^CRectangle::set_values$ Regards, Vissale 2006/8/16, A Bera [EMAIL PROTECTED]: Hi, I would like to search tags for Class::member in a c++ file. For example, I have the following class in a header file: class CRectangle { int x, y; public: void set_values (int,int); int area (void); }; Also I have their implementation in a different file. Now consider the following case: int main () { CRectangle rect; rect.set_values (3,4); cout area: rect.area(); return 0; } when I press ^] at set_values(), I would like to do a look-up on CRectangle::set_values not only set_values or rect.set_values(). let me know how can I ask vim to do a look up for CRectangle::set_values? Thanks, A Bera - __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: ctags for win32
Hi, I had some problems to send my previous mail to the vim list, sorry if you have already received this mail. Someone on the ctags-users mailing list has posted a ctags win32 binary (topic Binary for Windows NT/2000/XP and OS/2 (version 5.6).), here is the link to this binary built with MSVC 6.0: http://mb9x.ginps.com/files/ctags_w32_5-6.zip Regards, Vissale PS: ctags 5.6 can also be built with MSVC 2005 2006/7/28, A.J.Mechelynck [EMAIL PROTECTED]: Brett Calcott wrote: I'm looking to get the latest version of ctags for win32. There doesn't appear to be a binary on sourceforge. Or am I just being dense? Cheers, Brett From what I see at Sourceforge, version 5.6 of exuberant ctags isn't yet available for Windows. I suppose you can use version 5.5.4 while waiting for the 5.6 Windows release; or else, you might be able to compile a Cygwin-only version of 5.6. It is not obvious to me whether the 5.5.4 release .zip is source-only or includes the executable but that difference should be a minor problem. See http://sourceforge.net/project/showfiles.php?group_id=6556package_id=6631 Best regards, Tony.