Auto-complete showing members of the wrong class

Auto-complete showing members of the wrong class

61
Advanced UserAdvanced User
61

    Jun 16, 2007#1

    I am using UStudio version 6.30. This same problem existed in version 6.20, BTW.

    After lots of trial and error, I was finally able to find a way to get auto-complete and function tips activated for the Qt libraries I am using (a project in C++ for a GUI application).

    Activated they are, but flaky. I have a class which has a private data member of type QSqlDatabase. When I type a "." after the name in the header file, it shows me the correct members for QSqlDatabase. Also, the ClassView displays them correctly.

    But in the CPP file which contains the function implementations, when I type a dot after the name of the QSqlDatabase member, it shows me the members for the QSqlQuery class! :(

    So ... :idea: ... I renamed the member variable to something else; for a moment, it showed me the correct members in the CPP file after renaming the variable there -- in one function only! :? But as soon as I finished renaming that variable in all places in the CPP file, the same error occurs again. :x

    Does anyone know what's up? :?:

    6,680583
    Grand MasterGrand Master
    6,680583

      Jun 17, 2007#2

      Has the configuration setting Do not auto-complete structure members (items following "." or "->") at Configuration - Editor - Auto-complete any influence on that problem?
      Best regards from an UC/UE/UES for Windows user from Austria

      61
      Advanced UserAdvanced User
      61

        Jun 17, 2007#3

        Unfortunately, no. I tried both checking and unchecking it. Actually, the auto-complete feature seems to have more serious issues because at times I see garbage in it:


          Jun 22, 2007#4

          In the meantime, I have been in communication with the folks at IDM about this. However, they have had trouble reproducing these events at their office, so I am wondering if some of you might try the following?

          Make sure that you have "Show auto-complete dialog automatically" checked in the configuration dialog under "Editor / Auto-complete", and that the first option beginning with "Do not auto-complete ..." is unchecked. Also, in the configuration dialog under "IDE / IntelliTips / Auto-complete", the option "Show symbol list" should be checked; I use a value of 4 characters. All the other options on that page I have unchecked. I think I left all the other options as the default settings.

          (1) Create two files called "Test.h" and "Test.cpp" in the same directory:

          ==== Test.h ====

          Code: Select all

          #include <string>
          #include <vector>
          
          class MyClass
          {
          public:
              std::string s;
              std::vector<int> v;
          };
          
          ==== Test.cpp ====

          Code: Select all

          #include "Test.h"
          
          int main()
          {
              MyClass c;
              return 0;
          }
          
          (2) Create a new project (I called it "Test") and add the two files to the project;

          (3) Compile "Test.cpp" once so that UEStudio builds the "External Dependencies" folder;

          (4) In the configuration dialog "Advanced / Configuration / IDE / IntelliTips / Parser", click "Clear Cache". Close and re-open UEStudio;

          (5) In "Test.cpp", insert a line between "MyClass c;" and "return 0;". Type the following:

            c.

          (that's "c" followed by a dot.) Auto-complete shows the correct members "s" and "v". Continue typing:

            c.s.

          Auto-complete shows only the generic C++ keywords. Continue typing:

            c.s.empty

          What do you see? Anything like this?



          Thanks for trying to help pin this thing down!

            Aug 28, 2008#5

            bump...

            Anyone else ever see this strange behavior?

            2
            NewbieNewbie
            2

              Oct 07, 2008#6

              Hi!

              I'm not quite sure wether my problem really fits to the topic of this thread as I am quite a newbie to UEStudio and I might be simply doing something wrong.
              I have been using UltraEdit for years now for php development.
              Now that the applications i work on get more and more OO Style and my company shortly decided to work with zend framework in the future im am looking for a suitable IDE.
              Of course Zend Studio would be one choice but as I love my UE I also wanted to check UEStudio.
              UES has some really nice features but now I ran into some troubles with the IntelliTips.

              Let me give some example code for demonstration:

              Code: Select all

              class MyClass{
                  public function setSomething($value){
                      
                  }
              }
              
              $myObject = new MyClass();
              $myObject->set...
              At this point I would expect IntelliTips to propose the "setSomething" function to me for auto-completion.
              But what I see is an endless list of php functions startig with "set" (for example "set_magic_quotes_runtime") although most of them do not make any sense in the context of "$myObject->" as they do not belong to this class/object and would produce a parser/syntax error if used after the "->".
              Of course "setSomething" is one of the options shown but in a large ZF Project with hundreds of "set..." Functions in hundreds of different classes finding the correct function can be quite difficult.

              So my question would be: Is that behavior intended or is it a bug or am I just doing something wrong?

              6,680583
              Grand MasterGrand Master
              6,680583

                Oct 08, 2008#7

                Hi Hawklan,

                the auto-completion dialog shows you always all symbols which starts with the same letters as you have already typed. The auto-completion works like in UltraEdit, the only difference is that it uses also the symbols found by the internal symbol parser of UEStudio. The auto-completion dialog does not take dependences into account.

                I don't have any PHP project, but I quickly created a PHP file and tested it. If IntelliTips is not disabled it shows you automatically the suitable function of the class while typing the first letters after -> as you can see on the screenshot I have made. If you want to use the function displayed as tip you just have to press RETURN. So in this case after entering 's' I could immediately press RETURN to get "setSomething" inserted into the PHP file.
                intellitips_for_php.png (1.36KiB)
                IntelliTip for a PHP function
                Best regards from an UC/UE/UES for Windows user from Austria

                2
                NewbieNewbie
                2

                  Oct 14, 2008#8

                  Hi Mofi,

                  thanks for your answer.
                  Maybe my little example was too simple so UE can handle it somehow.
                  But still in a large project environment I do get wrong results from the auto-completion function.

                  The following screenshot I made in a complete zend framework project:

                  UEStudio_auto_complete.png (28.96KiB)
                  IntelliTip for PHP in Zend Framework environment

                  As one can see the IntelliTip List is very long and shows suggestions like set_magic_quotes_runtime that is not a function of one of the classes TestForm1 oder Zend_Form and that would result in a parser error (syntax) if placed after the $this->

                  6,680583
                  Grand MasterGrand Master
                  6,680583

                    Oct 15, 2008#9

                    Hi Hawklan,

                    you are right. I have captured a quick tip and not the auto-complete dialog. I use UEStudio only for HTML and 'C' projects. So I don't have experience how object-oriented languages like C++ and PHP are supported by UEStudio and if UEStudio is capable to show you in the auto-complete dialog just members and methods available for an object with a specific class after '.' or '->'. Because I don't have any large PHP project, I can't really help you.

                    Maybe you have to disable first Configuration - Editor - Auto-complete - Show auto-complete dialog automatically which is the auto-complete feature setting of UltraEdit, to have only the auto-complete feature of IntelliTips active which can be configured at Configuration - IDE - IntelliTips - Auto-complete.

                    If that still produces not the expected result, contact IDM support by email and ask for help on this issue.

                    According to UEStudio Development Roadmap Update it looks like UEStudio '09 will have some interesting improvements for PHP writers.
                    Best regards from an UC/UE/UES for Windows user from Austria

                    2362
                    MasterMaster
                    2362

                      Dec 05, 2009#10

                      UEStudio 09.30.0.1002 still has this issue.
                      “Don’t document the problem, fix it.” – Atli Björgvin Oddsson

                      1

                        Re: Auto-complete showing members of the wrong class (PHP)

                        Feb 02, 2011#11

                        I have an instance of a class like this:

                        Code: Select all

                        class MyClass
                        {
                          public function MyMethod1() { ... }
                          public function MyMethod2() { ... }
                          public function MyMethod3() { ... }
                        }
                        
                        $Foo = new MyClass();
                        When I type "$Foo->" the IntelliTipps jumps in and shows me a huge list auf php functions, globals, constants and so on.
                        It's the context of my class, there are only 3 things that can follow now: MyMethod1, MyMethod2, MyMethod3. All the other stuff doesn't make sense.
                        Why is that? Is there a way to configure the IntelliTips to show only the class methods in that case?

                        1
                        NewbieNewbie
                        1

                          Aug 20, 2011#12

                          I found that auto-complete works improperly with utf-8 mode, it can't recognize variable, parameter, function name, just give me the whole row.