How do you modify Eclipse IDE tooltip? - eclipse-cdt

When I'm writing C in Eclipse, sometimes I see an explanation of what the function does. For instance, the tooltip for fopen explains that you can use r for read and w for write.
How do you make this kind of information show up for your own functions? I'd like to be able to make a library and for anyone using it, they could see what the different parameters are for.

If you add comments before your function the Eclipse-CDT will automatically pick them up and apply them in the tool tip.

Related

How to enable documentation comments for C++/Qt in VS Code?

Following these instructions, I have already managed to fix the IntelliSense suggestions for my C++ hello world program using Qt headers. So for instance, when I type QString::, the class methods append, arg, etc. are suggested correctly. However, when I choose any of them, I would expect to read a short documentation comment describing what the selected method does do. Unfortunately, this information is not available.
I have also followed this tip and installed qt5-doc on my Ubuntu system, but I have no idea how I can use the .qch documentation files in VS Code. Do you have any pointer for me?

How to always show the comment of the current function?

Okay,
I have this slightly annoying problem with the code assistance of Eclipse CDT.
Whenever you hover the mouse over a function, a window pops up to show you the comment of that function. That is good.
Now, unfortunately, when the source file for that function is also available, it shows that instead of the comment. But I really don't want to see the source of the function, I always want to see the comment in the header. Who thought it would be a good idea to show source code when you just want a short description of what a function does? Not especially well suited for C++, is it? ;)
And another issue:
This window that pops up when you hover with mouse over a function... I really don't want to hover my mouse everytime I want to have that window.
I think the solution to my problems would be if there was a way to always show the header comment of a function as soon as the text cursor is on that function. Maybe in a permanent window that I can place wherever I want. Is there a way to achieve this? Maybe a plugin?
And if there is no way to do that: What is the shortcut for opening that window and how can I force it to show the header comment instead of the source code?
From this thread, it looks like the hover issue is intentional design. It probably results from eclipse originally being a Java IDE (where function definition equals declaration in source code).
The only workaround seems to be to exclude the source code by compiling it away into a *.lib without debug information and including it via lib and headers. Which is kind of impossible when your project is the one that generates the library in the first place.
What you could do is to make Documentation in the sense of the property page avaliable. That seems somewhat complicated from what I found in the eclipse forums:
The 'Documentation Hover' type listed in the preference page only
displays help content which has been contributed to the
org.eclipse.cdt.ui.CHelpProvider extension point.

C.VIM not working

I have a simple question (that I don't seem to be able to answer),
I am a new VIM/Linux user, and since I do c++ development I decided to install the C.VIM plugin to speed up my development time. The problem is, it says in the plug-in (c++) menu that to do a switch statement I have to write \ss (for me the leader is ",", so it's ",ss") but when I do this it just puts me in insert mode and nothing happens. I know the plugin is well set up because when I open a new c++ file it generates a comment box where I can give the description of the program.
I would love it if I would be able to use the shortcuts, because using the menu just losses the point of using vim.
Oh and please, just keep in mind that I am new to vim, I still have hard time figuring out what means <c-r> + TAB (which is, if i'm not mistaking "ctrl-r <tab>"), so if you could just try to explain the solution clearly without to much jargon I would appreciate it. (while i'm here, does anyone know of a good vim tutorial where I could understands all of the vim jargon, thanks!)
I appreciate all the help.
I use this cheat sheet:
http://www.worldtimzone.com/res/vi.html
Please add the below line to .vimrc and
helptags ~/.vim/bundle/c.vim/doc
Note: I have pointed to my c.vim doc and I use bundle, it may differ for you :)

Vim OmniCppComplete on vectors of pointers

I might have done something wrong in the set up but is OmniCppComplete supposed to provide the members/functions of classes when doing this?
vectorofpointers[0]->
At the moment all I get when trying that are things relating to the vector class itself, which obviously isn't very useful. I think it might have been working before I tagged /usr/include/ but I could be wrong.
Also, is it possible to disable the preview window? I find it just clutters up my workspace. And since I enabled ShowPrototypeInAbbr I don't really need it.
Thanks,
Alex
I do not think it is possible to get proper code completion on the objects that are included in the vector, but someone please correct me if I am mistaken.
To disable the preview window, make sure to not set preview for the the completeopt option, type :help completeopt in Vim for more information.
We finally have sane code completion for C++ in Vim using GCCSense. With GCCSense it is possible to autocomplete on the contents of a vector.

C++ Passing Options To Executable

How do you pass options to an executable? Is there an easier way than making the options boolean arguments?
EDIT: The last two answers have suggested using arguments. I know I can code a workable solution like that, but I'd rather have them be options.
EDIT2: Per requests for clarification, I'll use this simple example:
It's fairly easy to handle arguments because they automatically get parsed into an array.
./printfile file.txt 1000
If I want to know what the name of the file the user wants to print, I access it via argv[1].
Now about how this situation:
./printfile file.txt 1000 --nolinebreaks
The user wants to print the file with no line breaks. This is not required for the program to be able to run (as the filename and number of lines to print are), but the user has the option of using if if s/he would like. Now I could do this using:
./printfile file.txt 1000 true
The usage prompt would inform the user that the third argument is used to determine whether to print the file with line breaks or not. However, this seems rather clumsy.
Command-line arguments is the way to go. You may want to consider using Boost.ProgramOptions to simplify this task.
You seem to think that there is some fundamental difference between "options" that start with "--" and "arguments" that don't. The only difference is in how you parse them.
It might be worth your time to look at GNU's getopt()/getopt_long() option parser. It supports passing arguments with options such as --number-of-line-breaks 47.
I use two methods for passing information:
1/ The use of command line arguments, which are made easier to handle with specific libraries such as getargs.
2/ As environment variables, using getenv.
Pax has the right idea here.
If you need more thorough two-way communication, open the process with pipes and send stuff to stdin/listen on stdout.
You can also use Window's PostMessage() function. This is very handy if the executable you want to send the options to is already running. I can post some example code if you are interested in this technique.
The question isn't blazingly clear as to the context and just what you are trying to do - you mean running an executable from within a C++ program? There are several standard C library functions with names like execl(), execv(), execve(), ... that take the options as strings or pointer to an array of strings. There's also system() which takes a string containing whatever you'd be typing at a bash prompt, options and all.
I like the popt library. It is C, but works fine from C++ as well.
It doesn't appear to be cross-platform though. I found that out when I had to hack out my own API-compatible version of it for a Windows port of some Linux software.
You can put options in a .ini file and use the GetPrivateProfileXXX API's to create a class that can read the type of program options you're looking for from the .ini.
You can also create an interactive shell for your app to change certain settings real-time.
EDIT:
From your edits, can't you just parse each option looking for special keywords associated with that option that are "optional"?