<br>&gt;I agree that the API isn&#39;t very flexible. To get the functionality most<br>
&gt;users probably expect requires deeper knowledge of the particular<br>
&gt;programming language than a Scintilla lexer has. The expectation was that<br>
&gt;an application would provide additional API information dynamically - but<br>
&gt;there are some problems with the API that make this difficult. I hope to<br>
&gt;address these (to some extent) for the next version.<br>
&gt;<br>&gt;Any suggestions welcome.<br>
<br>Well the user list functionally seems much rougher then it could be for this purpose, I guess if it could share more of the qsciapi functionality that would be an improvement (automatic non-matching elimination, proper replacement of the typed text with the auto complete item chosen). <br>
&nbsp;&nbsp; Alternatively I&#39;d envision that when a languages member accessor (&#39;::&#39;, &#39;-&gt;&#39; &#39;.&#39;) gets hit you&#39;d have a callback that would give the api user the previous token or line/index info. The end user would then be required to specify a typename, which would map to a list of methods in the qsciapis object. At the api level those could be initialized with QsciAPIs:add(QString type, QString function), <br>
<br>&nbsp;In some respects there wouldn&#39;t even need to be that change, if you added &quot;string.foo&quot; and &quot;string.bar&quot; to the api list, the autocomplete could just treat the left side of &#39;.&#39; as the type and the right side as the method. you&#39;d only need to create the callback function and a option to turn on, <br>
<br>-Gedalia<br><br><br><div class="gmail_quote">On Sun, Jun 29, 2008 at 8:40 AM, Phil Thompson &lt;<a href="mailto:phil@riverbankcomputing.com" target="_blank">phil@riverbankcomputing.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">


On Fri, 27 Jun 2008 14:55:28 -0400, &quot;Gedalia Pasternak&quot; &lt;<a href="mailto:gedalia@gmail.com" target="_blank">gedalia@gmail.com</a>&gt;<br>
wrote:<br>
<div><div></div><div>&gt; Hi ,<br>
&gt; &nbsp; I&#39;ve been trying to work with the qsciapis to trigger some complex<br>
&gt; autocomplete responses.<br>
&gt; it seems like qsciapis are only designed to handle global functions, or<br>
&gt; function where the object name is known.<br>
&gt;<br>
&gt; &nbsp; &nbsp;I&#39;m wondering if there are any facilities for something more object<br>
&gt; oriented.<br>
&gt; I&#39;m trying to implement this for lua, so valid function separators are<br>
&#39;.&#39;<br>
&gt; and &#39;:&#39; if I know the class of the object on the left side of the<br>
&gt; separator<br>
&gt; is there any way to get an autocomplete list with a list of that object&#39;s<br>
&gt; members.<br>
&gt;<br>
&gt; showUserList seems to be my only option, at the same time it seems a bit<br>
&gt; dumb:<br>
&gt;<br>
&gt; slotTextChange()<br>
&gt; {<br>
&gt; &nbsp; &nbsp; int line_num;<br>
&gt; &nbsp; &nbsp; int index;<br>
&gt;<br>
&gt; &nbsp; &nbsp; m_textedit_code-&gt;getCursorPosition(&amp;line_num, &amp;index);<br>
&gt; &nbsp; &nbsp; QString line = m_textedit_code-&gt;text(line_num);<br>
&gt; &nbsp; &nbsp; QChar curr_char = <a href="http://line.at" target="_blank">line.at</a>(index);<br>
&gt; &nbsp; &nbsp; if(curr_char == &#39;:&#39; || curr_char == &#39;.&#39;)<br>
&gt; &nbsp; &nbsp; {<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; QString current_line = line.left( index );<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; QStringList list = QStringList::split(QRegExp(&quot;[<br>
&gt; ]|[(]|[)]|[[]|[]]|[;]|[,]|[\n]|[\r]&quot;), current_line);<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; QString object_name = list[list.size()-1];<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; if(object_name == &quot;Known_Object&quot;){<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; QStringList function_list = QStringList::split(&quot; &quot;,<br>
&gt; QString(&quot;foo1 bar2&quot;));<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_textedit_code-&gt;showUserList ( 1, function_list);<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
&gt; &nbsp; &nbsp; }<br>
&gt;<br>
&gt; Unfortunately the autocomplete box instantly disappears because<br>
&gt; AutoComplete::autoHide defaults to true, and qscintilla thinks none of<br>
the<br>
&gt; possible replacements has a &#39;:&#39;, even if I add a &#39;:&#39; to the various<br>
&gt; function<br>
&gt; names I don&#39;t get the nice eliminate &quot;all the non potential matches&quot;<br>
&gt; behavior of the qsciapis code.<br>
&gt;<br>
&gt; &nbsp; &nbsp;Currently qsciapis seems somewhat hard coded with no virtual<br>
functions,<br>
&gt; or slots/signals, is there any sample code floating around that might<br>
help<br>
&gt; me?<br>
<br>
</div></div>I agree that the API isn&#39;t very flexible. To get the functionality most<br>
users probably expect requires deeper knowledge of the particular<br>
programming language than a Scintilla lexer has. The expectation was that<br>
an application would provide additional API information dynamically - but<br>
there are some problems with the API that make this difficult. I hope to<br>
address these (to some extent) for the next version.<br>
<br>
Any suggestions welcome.<br>
<div><br>
&gt; P.S. as long as I&#39;m posting... can anyone tell me why the default lua<br>
&gt; Lexer<br>
&gt; seems so much less visually appealing then the perl one? Keywords and<br>
&gt; special characters in Perl appear bolder and it just generally seems more<br>
&gt; readable. Unless I&#39;m messing something up, It seems odd that things<br>
aren&#39;t<br>
&gt; more uniform.<br>
<br>
</div>That&#39;s down to the defaults in the QSciLexerLua class which should reflect<br>
the standard SciTE properties. Override them if you don&#39;t like them.<br>
<font color="#888888"><br>
Phil<br>
<br>
</font></blockquote></div><br><br clear="all"><br>-- <br>---------------------------------------------------------------<br>cel: 917.776.8346 AIM: gedaliap<br><a href="http://www.gedalia.net" target="_blank">http://www.gedalia.net</a><br>


---------------------------------------------------------------<br>Fight Entropy!!! Fight Entropy!!! Figth Etnropy! !<br>iFgth Etnrop!y ! giFth tErno!py ! giFt htrEno!p y! --- Well maybe<br>not...