Feature: string filtering for code completion [Patch attached]
Milian Wolff
mail at milianw.de
Thu Jul 15 10:39:27 UTC 2010
On Thursday, 15. July 2010 01:29:43 Eduardo Robles Elvira wrote:
> Hello everyone!
>
> First mail to this list =) I use kdevelop a lot so I figured out that
> I should start contributing a bit back. I have this idea for code
> completion that I want to share with you, so that you can help me give
> it form and also hopefully give me some hints about how to implement
> it. Kdevelop code completion is awesome, it find possible completion
> in many different contexts when working in C++ or PHP.
>
> The idea is to be able to filter the completions when accessing a
> member function/var. So say for example a have a QString myString;
> then I start writting myString.qbytearray. At the moment, this doesn't
> show any completion because there's no function starting with the
> filter string "qbytearray".
>
> If you write instead "QByteArray myArray = s.", then KDevelop
> provides as best matches the QString member functions which return a
> QByteArray, and that's really nice. But I might be trying to get a
> function that takes a QByteString as an argument, and there' no way to
> get best matches for that. That's what I want to do.
>
> Also, best matches sometimes don't help because you might be writing
> "QByteArray myArray = s." and get those best matches that provide a
> QByteArray, but maybe what you want is to do something like
> "QByteArray myArray = s.left(10).toAscii()". For having correct best
> matches in that case, I argue it would be nice to write "QByteArray
> myArray = s.QString", select in the completion the left function, and
> then use the current best matches for QByteArray.
>
> Some argued that it's not really intuitive and it might need it's own
> shortcut for this new kind of completion. I'm not really sure about
> that, I want to try first as a new way to provide best matches, which
> normally is triggered when no other matches are shown (non-constructor
> member functions usually are not named as data types :P).
>
> How to implement this? I already did that part ;-) patch attached.
> Apply at kdelibs/kate/completion. It's a not review-ready patch, but
> more like a proof-of-concept. I tested and it works fine, I love it
> already!
Wow, I'm surprised that the patch is so small. Pretty cool.
How slow exactly is it, do you notice it?
And another point in favor of using a special shortcut for it, is that your
code would "fail" (as percieved by the user) in cases where you have a
member/method starting with a string, that you actually want to find a
function for that takes it as a argument or something like that. I mean e.g.:
struct foo {
String stringVal();
void append(String);
};
foo.string => only stringVal() is returned.
--
Milian Wolff
mail at milianw.de
http://milianw.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20100715/5095a5dc/attachment.sig>
More information about the KDevelop-devel
mailing list