TODO Plugin for QtCreator
-
In "this ":http://developer.qt.nokia.com/forums/viewthread/69/ thread Esdras Beleza asked about plugin, which show list of TODO, FIXME, etc comments. And Markus Liebe created it, but didn't published :(
On weekend, I created plugin, which show TODO (and etc) comments list in current open file.
"Download source":http://gitorious.org/qt-creator-todo-plugin
"Screenshot":http://dl.yarlug.org/misc/todoplugin/todoplugin.pngP. S. It's first version and it's very simple, I accept suggestions for improvement.
Thanks!
-
Could you please add this to the "plugin gallery ":http://developer.qt.nokia.com/wiki/Qt_Creator_Plug-in_Gallery ?
Thanks!
-
Hi Vass!
nice work. I did something similar a little time ago as you mentioned. The problem is that I cannot make the code public available at the moment, because of company policies :(
However I just skimmed through your code and I have the following suggestions:
-
do not create a new Outputpane but use the one that is used for build issues. (see QtCreator's ProjectExplorer::"TaskHub":http://qt.gitorious.org/qt-creator/qt-creator/blobs/master/src/plugins/projectexplorer/taskhub.h ) You can then benefit from the already existing navigation feature to navigate the todo items and jump to the todo item in the code.
-
The Items in the build issues are so called "tasks":http://qt.gitorious.org/qt-creator/qt-creator/blobs/master/src/plugins/projectexplorer/task.h You can use this class instead of creating a new class that does the same.
-
make the plugin configurable, so that you can configure the pattern for the todo item comments (todo, bug, fixme, hack etc.)
ok so long for the moment. If you need more information or some help, just ask.
Regards,
Markus -
-
Hi Markus!
- I think new pane is good idea for me, because I planning show all entries in project in the future.
- Navigation will be added - it's simple.
- Plugin settings also in planning.
Thank you for your offer to help.
I have a question.
Now file parsing is very slow and simple, I think must use Find plugin for parsing, but I don't know how I can it.
Any ideas?P. S. Sorry, my english on basic level.
-
Hi Vass,
concerning the file parsing:
- you do not need to open the file for your plugin again. In your slot "currentEditorChanged()" you can do the following:
@
QPlainTextEdit textEdit = 0;
if (editor) {
textEdit = dynamic_cast<QPlainTextEdit>(editor->widget());
if (!textEdit) {
// do something
}else{
// yay! you have a pointer to the textedit that contains the already open file you are looking at.
// the contents of the file are easy to get:
QString fileContent(textEdit->toPlainText());
}
}
@Regards,
Markus -
... but then you do not get the project wide TODOs, only those in the currently open files. I am not sure whether that is what you want or not.
I would like to second Markus suggestion to use Tasks and the Build issues view. That way you get instant access to the TaskHandler infrastructure used to implement the functionality seen in the build issues context menu/navigation. I would consider "Blame" TaskHandler to be very useful in the context of TODO/HACK items:-)
It would be pretty trival to add a "Mark as done" TaskHandler, too which would trigger a quickfix to remove the TODO comment...
The downside of using tasks is that -- at this time -- they do expect a error/warning/other kind of severity and that the icons are hardcoded based on this severity.
-
Vass: Feel free to contact me if you need enhancements to the task class;-) I am happy to discuss your requirements.
-
Hi Folks! I update my plugin.
Recent changes:
- Plugin settings available
- Task window or Todo pane output selector
- Scanning all file in project or only current file selector
- Keywords editor
- Locale support
- Bug fixes and new bugs :)
Please, use and test it, and report me you suggestions.
-
Vass: How about doing a merge request to get your work into Qt Creator proper?
-
Hello Tobias!
Sorry, noticed your comment only now (because of all this "Project Elf" rush)I will very glad, if my plugin will merge to QtCreator, but I don't know what needed for it.
And now plugin not compatible with MASTER of QtCreator.I think there are some rules for merge request will be accepted.
If you help me and tell me what I should do for merge, I'll be very grateful. -
chetankjain: We are starting to introduce checks static code analysis. Currently most of the prototyping seems to happen in the QML camp: They introduced JSlint like functionality into the QML editor recently.
The C++ engine is prepared ready to add more checks, too, but so far nobody found the time to get down and write some checks.
Of course there is also the quick fixes (in C++ as well as QML) which can even "fix up" common problems for you. There are already some of those, but the UI is not really giving any feedback where you can fix things at this time... Try e.g. hitting Alt-Return on a string constant.