[prev in list] [next in list] [prev in thread] [next in thread] 

List:       quanta-devel
Subject:    [quanta-devel] Class Variables - no attrAutoCompleteAfter patch
From:       Andrew Lowe <andrew.lowe () manildra ! com ! au>
Date:       2007-02-11 7:25:26
Message-ID: 45CEC4E6.2040400 () manildra ! com ! au
[Download RAW message or body]

Andras,
Please find attached to svn diff to fix the first of the problems that I 
am looking at:
 Removing the "completionDTD->attrAutoCompleteAfter" which for php is: 
"(" from the autocompletion entry for class variables.

You have to update the description.rc to make variables a member of the 
class group - exactly as you sent in a previous email, then this code 
seems to work, and I do not believe it breaks anything?

Here is what I have done:
in sagroupparser.cpp SAGroupParser::parseForScriptGroup
    I check if s (the tag text) contains a "(" and if it does, I set the 
qTag->type to "function", otherwise I set it to "variable".
in document.cpp Document::getTagCompletions
    I add a QMap named type,
    I check if the completionDTD->family is Script, (if not ignore - it 
is XML) then if our tag->type is "variable" insert into the type QMap 
"variable", if it is function, insert "script" (so it works in 
Document::slotFilterCompletion.) I also add to the comments QMap the 
type ("variable" or "function") to show the user the type when they are 
using the autocomplete drop-down.
    Finally, I set the completion.type to be the type for that tag.
    I also made a TODO comment to sort the completions by type.

I hope everything is right - and I have not used any QTag or 
CompletionEntry variables I should not have - if so let me know.  Also 
let me know if anything is not right :-)

-- 
Andrew Lowe
    System Administrator & Programmer
        Information Technology
            Manildra Group

Email:   andrew.lowe@manildra.com.au
Phone:   02 4423 8270
Mobile:  04 1323 8270
Fax:     02 4421 7760 


["noautocompletafter-for-class-variables.patch" (text/plain)]

Index: parsers/sagroupparser.cpp
===================================================================
--- parsers/sagroupparser.cpp	(revision 631116)
+++ parsers/sagroupparser.cpp	(working copy)
@@ -216,6 +216,15 @@
               }
             }
           }
+          /* Author Andrew Lowe - andrew.lowe@manildra.com.au
+           * Test for variable or function Type by checking for an opening bracket \
"(" used by functions +           * store the type in the QTag type variable.
+           */
+          if (s.find('(') == -1)
+            qTag->type="variable";
+          else
+            qTag->type="function";
+
           m_write->userTagList.insert(s.lower(), qTag);
         }
 
Index: src/document.cpp
===================================================================
--- src/document.cpp	(revision 631116)
+++ src/document.cpp	(working copy)
@@ -1285,6 +1285,10 @@
   completion.userdata = word + "|";
   QStringList tagNameList;
   QMap<QString, QString> comments;
+  /* Andrew Lowe - andrew.lowe@manildra.com.au
+   * A QMap to hold the completion type (function/string/class/etc)
+   */
+  QMap<QString, QString> type;
   QString tagName;
   QDictIterator<QTag> it(*(completionDTD->tagsList));
   int i = 0;
@@ -1318,6 +1322,24 @@
       tagName = tag->name() + QString("%1").arg(i, 10);
       tagNameList += tagName;
       comments.insert(tagName, tag->comment);
+      /* Author - Andrew Lowe - andrew.lowe@manildra.com.au
+       * If the completion family is script, then we want to update the tag type
+       * it appears we use "script" for adding the \
completionDTD->attrAutoCompleteAfter when we run the slotFilterCompletion +       * \
so we will continue to use that for functions (they need the attribute added), but \
variables get a new type - and we do not +       * have to auto-complete them
+       */
+      if(completionDTD->family==Script)
+      {
+        if(tag->type=="variable")
+          type.insert(tagName, tag->type);
+        else if(tag->type=="function")
+            type.insert(tagName, "script");
+      }
+      /*
+       * While we are at it - we might add the type to the comment variable, so it \
displays on the screen, giving the user some feedback +       */
+      comments.insert(tagName, tag->type);
+
       i++;
     }
   }
@@ -1331,10 +1353,17 @@
       completion.text = tagNameList[i];
     completion.text = completion.text.left(completion.text.length() - \
10).stripWhiteSpace();  completion.comment = comments[tagNameList[i]];
+    /* Author Andrew Lowe - andrew.lowe@manildra.com.au
+     * Here we actually append the completion type
+     */
+    completion.type = type[tagNameList[i]];
     completions->append( completion );
   }
 
 //  completionInProgress = true;
+  /* Author - Andrew Lowe - andrew.lowe@manildra.com.au
+   * TODO: Sort completions here (variables first, then functions)
+   */
   return completions;
 }



_______________________________________________
quanta-devel mailing list
quanta-devel@kde.org
https://mail.kde.org/mailman/listinfo/quanta-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic