Warning, /office/kile/doc/scripting.docbook is written in an unsupported language. File is not indexed.
0001 <chapter id="id_scripting"> 0002 <title>Scripting</title> 0003 0004 <sect1 id="id_scripting_kile"> 0005 <title>Scripting in &kile;</title> 0006 0007 <para>&kile;'s scripting feature allows the execution of <ulink url="http://en.wikipedia.org/wiki/ECMAScript">ECMAScript</ulink> code, widely known as &javascript;. You will find a lot of tutorials, which provide information about objects (variables), functions and properties supported by &javascript;.</para> 0008 0009 <para>Scripting support can be enabled in the configuration dialog of &kile;: <menuchoice><guimenu>Settings</guimenu><guisubmenu>Configure Kile...</guisubmenu> 0010 <guimenuitem>Kile</guimenuitem><guilabel>Scripting</guilabel></menuchoice>. 0011 <screenshot> 0012 <screeninfo>Enable or disable scripting support</screeninfo> 0013 <mediaobject> 0014 <imageobject> 0015 <imagedata fileref="scripting-support.png" format="PNG" /> 0016 </imageobject> 0017 <textobject> 0018 <phrase>Enable or disable scripting support</phrase> 0019 </textobject> 0020 </mediaobject> 0021 </screenshot> 0022 </para> 0023 0024 <para> If scripting is enabled, an additional scripting panel is visible in the sidebar, where scripts can be managed: 0025 <screenshot> 0026 <screeninfo>Scripting panel in the sidebar</screeninfo> 0027 <mediaobject> 0028 <imageobject> 0029 <imagedata fileref="scripting-panel.png" format="PNG" /> 0030 </imageobject> 0031 <textobject> 0032 <phrase>Scripting panel in the sidebar</phrase> 0033 </textobject> 0034 </mediaobject> 0035 </screenshot> 0036 </para> 0037 0038 <para> 0039 This widget contains six icons, which offer different tasks: 0040 <itemizedlist> 0041 <listitem><para>Run the selected script.</para></listitem> 0042 <listitem><para>Create a new script.</para></listitem> 0043 <listitem><para>Open the selected script in the editor.</para></listitem> 0044 <listitem><para>Configure a key sequence for the selected script.</para></listitem> 0045 <listitem><para>Remove an assigned key sequence.</para></listitem> 0046 <listitem><para>Refresh the list of available scripts, which are all found in <filename>$<envar>KDEDIR</envar>/share/apps/kile/scripts/</filename>.</para></listitem> 0047 </itemizedlist> 0048 </para> 0049 0050 </sect1> 0051 0052 <sect1 id="id_execute_script"> 0053 <title>Executing a Script</title> 0054 0055 <para>You can execute a script in three different ways:</para> 0056 0057 <procedure> 0058 <step><para>Select the desired script and click on the <guilabel>Execute</guilabel> button on the left side of the script management widget.</para> 0059 <screenshot> 0060 <screeninfo>Scripting: execute button</screeninfo> 0061 <mediaobject> 0062 <imageobject> 0063 <imagedata fileref="scripting-execbutton.png" format="PNG" /> 0064 </imageobject> 0065 <textobject> 0066 <phrase>Scripting: execute button</phrase> 0067 </textobject> 0068 </mediaobject> 0069 </screenshot> 0070 </step> 0071 0072 <step><para>Use a keyboard shortcut.</para> 0073 <screenshot> 0074 <screeninfo>Scripting: keyboard shortcut</screeninfo> 0075 <mediaobject> 0076 <imageobject> 0077 <imagedata fileref="scripting-shortcut.png" format="PNG" /> 0078 </imageobject> 0079 <textobject> 0080 <phrase>Scripting: keyboard shortcut</phrase> 0081 </textobject> 0082 </mediaobject> 0083 </screenshot> 0084 <para>You can assign a keyboard shortcut to a script using the <guilabel>Configure</guilabel> button in the script management widget.</para> 0085 <screenshot> 0086 <screeninfo>Scripting: configure sequence dialog</screeninfo> 0087 <mediaobject> 0088 <imageobject> 0089 <imagedata fileref="scripting-configure.png" format="PNG" /> 0090 </imageobject> 0091 <textobject> 0092 <phrase>Scripting: configure sequence dialog</phrase> 0093 </textobject> 0094 </mediaobject> 0095 </screenshot> 0096 </step> 0097 0098 <step><para>Use an editor key sequence. The script will be executed, if you type the assigned key sequence in the editor.</para> 0099 <screenshot> 0100 <screeninfo>Scripting: editor key sequence</screeninfo> 0101 <mediaobject> 0102 <imageobject> 0103 <imagedata fileref="scripting-keysequence1.png" format="PNG" /> 0104 </imageobject> 0105 <textobject> 0106 <phrase>Scripting: editor key sequence</phrase> 0107 </textobject> 0108 </mediaobject> 0109 </screenshot> 0110 <para>This method can be extended to a rather sophisticated kind of code completion. Let us assume that you have a written a script, which simply inserts the &latex; command <userinput>\textbf{}</userinput> into the current document.</para> 0111 0112 <programlisting> 0113 document.insertText("\\textbf{%C}"); 0114 </programlisting> 0115 0116 <para>If you now type the assigned key sequence <userinput>bfx</userinput> in your text document, this key sequence will be removed and the script will be executed. It will insert <userinput>\textbf{}</userinput> and the cursor is placed between the braces.</para> 0117 <screenshot> 0118 <screeninfo>Scripting: typing an editor key sequence</screeninfo> 0119 <mediaobject> 0120 <imageobject> 0121 <imagedata fileref="scripting-keysequence2.png" format="PNG" /> 0122 </imageobject> 0123 <textobject> 0124 <phrase>Scripting: typing an editor key sequence</phrase> 0125 </textobject> 0126 </mediaobject> 0127 </screenshot> 0128 <para>What a comfortable and powerful method of code completion.</para> 0129 </step> 0130 </procedure> 0131 0132 </sect1> 0133 0134 <sect1 id="id_scripting_api"> 0135 <title>API Reference</title> 0136 0137 <para>The scripting API presented here is available in all scripts. Before the contents of a script is loaded, &kile; first adds several prototypes and functions to the scripting context. This convenience API contains prototypes like text cursors and text ranges and is located in the folder <filename>KILE_APP_DIR/script-plugins/</filename>.</para> 0138 0139 <para>&kile; scripts differ slightly from <ulink url="http://kate-editor.org">&kate;</ulink> scripts, which use another design, as they also can be started from the command line. But all functions of the &kate; scripting API are also available in &kile;'s scripting API, so porting &javascript; code from &kate; to &kile; should be very easy. But as &kile; is a very rich featured &latex; editor, its own scripting API offers many more possibilities than &kate;'s one.</para> 0140 0141 <para><emphasis>Remark: </emphasis>Description of API calls, which are also available in &kate; scripting, have been taken from &kate;'s documentation.</para> 0142 0143 0144 <sect2 id="id_scripting_api_global"> 0145 <title>Global Functions</title> 0146 0147 <para>This section lists global functions.</para> 0148 0149 <variablelist><varlistentry> 0150 <term><synopsis> 0151 void debug(<parameter>String <replaceable>text</replaceable></parameter>); 0152 </synopsis></term> 0153 <listitem><para> 0154 Prints <parameter>text</parameter> to <literal>stdout</literal> in the console. The printed text is colored to distinguish it from other debug output. 0155 </para></listitem> 0156 </varlistentry></variablelist> 0157 0158 </sect2> 0159 0160 0161 <sect2 id="id_scripting_api_cursor"> 0162 <title>The Cursor Prototype</title> 0163 0164 <para>As &kile; is a text editor, all the scripting API is based on cursors and ranges whenever possible. A Cursor is a simple <literal>(line, column)</literal> tuple representing a text position in the document.</para> 0165 0166 <variablelist><varlistentry> 0167 <term><synopsis> 0168 Cursor(); 0169 </synopsis></term> 0170 <listitem><para> 0171 Constructor: Returns a Cursor at position <literal>(0,0)</literal>. 0172 </para><para> 0173 Example: <function>var cursor = new Cursor();</function></para> 0174 </listitem> 0175 </varlistentry></variablelist> 0176 0177 <variablelist><varlistentry> 0178 <term><synopsis> 0179 Cursor(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>int <replaceable>column</replaceable></parameter>); 0180 </synopsis></term> 0181 <listitem><para> 0182 Constructor: Returns a Cursor at position (line,column). 0183 </para><para> 0184 Example: <function>var cursor = new Cursor(3,42);</function> 0185 </para></listitem> 0186 </varlistentry></variablelist> 0187 0188 <variablelist><varlistentry> 0189 <term><synopsis> 0190 Cursor(<parameter>Cursor <replaceable>other</replaceable></parameter>); 0191 </synopsis></term> 0192 <listitem><para> 0193 Copy constructor: Returns a copy of the cursor <parameter>other</parameter>. 0194 </para><para> 0195 Example: <function>var copy = new Cursor(other);</function> 0196 </para></listitem> 0197 </varlistentry></variablelist> 0198 0199 <variablelist><varlistentry> 0200 <term><synopsis> 0201 Cursor Cursor.clone(); 0202 </synopsis></term> 0203 <listitem><para> 0204 Returns a clone of the cursor. 0205 </para><para> 0206 Example: <function>var clone = cursor.clone();</function> 0207 </para></listitem> 0208 </varlistentry></variablelist> 0209 0210 <variablelist><varlistentry> 0211 <term><synopsis> 0212 bool Cursor.isValid(); 0213 </synopsis></term> 0214 <listitem><para> 0215 Check whether the cursor is valid. The cursor is invalid if line and/or 0216 column are set to <literal>-1</literal>. 0217 </para><para> 0218 Example: <function>var valid = cursor.isValid();</function> 0219 </para></listitem> 0220 </varlistentry></variablelist> 0221 0222 <variablelist><varlistentry> 0223 <term><synopsis> 0224 Cursor Cursor.invalid(); 0225 </synopsis></term> 0226 <listitem><para> 0227 Returns a new invalid cursor located at <literal>(-1,-1)</literal>. 0228 </para><para> 0229 Example: <function>var invalidCursor = cursor.invalid();</function> 0230 </para></listitem> 0231 </varlistentry></variablelist> 0232 0233 <variablelist><varlistentry> 0234 <term><synopsis> 0235 int Cursor.compareTo(<parameter>Cursor <replaceable>other</replaceable></parameter>); 0236 </synopsis></term> 0237 <listitem><para> 0238 Compares this cursor to the cursor <parameter>other</parameter>. Returns 0239 <itemizedlist> 0240 <listitem><para><literal>-1</literal>, if this cursor is located before the cursor <parameter>other</parameter>,</para></listitem> 0241 <listitem><para><literal>0</literal>, if both cursors equal and</para></listitem> 0242 <listitem><para><literal>+1</literal>, if this cursor is located after the cursor <parameter>other</parameter>.</para></listitem> 0243 </itemizedlist> 0244 </para></listitem> 0245 </varlistentry></variablelist> 0246 0247 <variablelist><varlistentry> 0248 <term><synopsis> 0249 bool Cursor.equals(<parameter>Cursor <replaceable>other</replaceable></parameter>); 0250 </synopsis></term> 0251 <listitem><para> 0252 Returns <literal>true</literal>, if this cursor and the cursor <parameter>other</parameter> are equal, otherwise <literal>false</literal>. 0253 </para></listitem> 0254 </varlistentry></variablelist> 0255 0256 <variablelist><varlistentry> 0257 <term><synopsis> 0258 String Cursor.toString(); 0259 </synopsis></term> 0260 <listitem><para> 0261 Returns the cursor as a string of the form <literal>Cursor(line,column)</literal>. 0262 </para></listitem> 0263 </varlistentry></variablelist> 0264 0265 </sect2> 0266 0267 0268 <sect2 id="id_scripting_api_range"> 0269 <title>The Range Prototype</title> 0270 0271 <para>As &kile; is a text editor, all the scripting API is based on cursors and ranges whenever possible. As Cursor is a simple <literal>(line, column)</literal> tuple representing a text position in the document, a Range spans text from a starting cursor position to an ending cursor position.</para> 0272 0273 <variablelist><varlistentry> 0274 <term><synopsis> 0275 Range(); 0276 </synopsis></term> 0277 <listitem><para> 0278 Constructor: Calling <literal>new Range()</literal> returns a Range at <literal>(0,0) - (0,0)</literal>. 0279 </para></listitem> 0280 </varlistentry></variablelist> 0281 0282 <variablelist><varlistentry> 0283 <term><synopsis> 0284 Range(<parameter>Cursor <replaceable>start</replaceable></parameter>, <parameter>Cursor <replaceable>end</replaceable></parameter>); 0285 </synopsis></term> 0286 <listitem><para> 0287 Constructor: Calling <literal>new Range(<replaceable>start</replaceable>, <replaceable>end</replaceable>)</literal> returns the range from cursor <parameter>start</parameter> to cursor <parameter>end</parameter>. 0288 </para></listitem> 0289 </varlistentry></variablelist> 0290 0291 <variablelist><varlistentry> 0292 <term><synopsis> 0293 Range(<parameter>int <replaceable>startLine</replaceable></parameter>, <parameter>int <replaceable>startColumn</replaceable></parameter>, <parameter>int <replaceable>endLine</replaceable></parameter>, <parameter>int <replaceable>endColumn</replaceable></parameter>); 0294 </synopsis></term> 0295 <listitem><para> 0296 Constructor: Calling <literal>new Range(<replaceable>startLine</replaceable>,<replaceable>startColumn</replaceable>,<replaceable>endLine</replaceable>, <replaceable>endColumn</replaceable>)</literal> 0297 returns the Range from (<literal>startLine</literal>, <literal>startColumn</literal>) to (<literal>endLine</literal>, <literal>endColumn</literal>). 0298 </para></listitem> 0299 </varlistentry></variablelist> 0300 0301 <variablelist><varlistentry> 0302 <term><synopsis> 0303 Range(<parameter>Range <replaceable>other</replaceable></parameter>); 0304 </synopsis></term> 0305 <listitem><para> 0306 Copy constructor: Returns a copy of Range <literal>other</literal>. 0307 </para></listitem> 0308 </varlistentry></variablelist> 0309 0310 <variablelist><varlistentry> 0311 <term><synopsis> 0312 Range Range.clone(); 0313 </synopsis></term> 0314 <listitem><para> 0315 Returns a clone of the range. 0316 </para><para> 0317 Example: <function>var clone = range.clone();</function> 0318 </para></listitem> 0319 </varlistentry></variablelist> 0320 0321 <variablelist><varlistentry> 0322 <term><synopsis> 0323 bool Range.isValid(); 0324 </synopsis></term> 0325 <listitem><para> 0326 Returns <literal>true</literal>, if both start and end cursor are valid, otherwise <literal>false</literal>. 0327 </para><para> 0328 Example: <function>var valid = range.isValid();</function> 0329 </para></listitem> 0330 </varlistentry></variablelist> 0331 0332 <variablelist><varlistentry> 0333 <term><synopsis> 0334 bool Range.invalid(); 0335 </synopsis></term> 0336 <listitem><para> 0337 Returns the Range from (-1,-1) to (-1,-1). 0338 </para></listitem> 0339 </varlistentry></variablelist> 0340 0341 <variablelist><varlistentry> 0342 <term><synopsis> 0343 bool Range.contains(<parameter>Cursor <replaceable>cursor</replaceable></parameter>); 0344 </synopsis></term> 0345 <listitem><para> 0346 Returns <literal>true</literal>, if this range contains the cursor position, otherwise <literal>false</literal>. 0347 </para></listitem> 0348 </varlistentry></variablelist> 0349 0350 <variablelist><varlistentry> 0351 <term><synopsis> 0352 bool Range.contains(<parameter>Range <replaceable>other</replaceable></parameter>); 0353 </synopsis></term> 0354 <listitem><para> 0355 Returns <literal>true</literal>, if this range contains the Range <parameter>other</parameter>, otherwise <literal>false</literal>. 0356 </para></listitem> 0357 </varlistentry></variablelist> 0358 0359 <variablelist><varlistentry> 0360 <term><synopsis> 0361 bool Range.containsColumn(<parameter>int <replaceable>column</replaceable></parameter>); 0362 </synopsis></term> 0363 <listitem><para> 0364 Returns <literal>true</literal>, if <parameter>column</parameter> is in the half open interval <literal>[start.column, end.column]</literal>, otherwise <literal>false</literal>. 0365 </para></listitem> 0366 </varlistentry></variablelist> 0367 0368 <variablelist><varlistentry> 0369 <term><synopsis> 0370 bool Range.containsLine(<parameter>int <replaceable>line</replaceable></parameter>); 0371 </synopsis></term> 0372 <listitem><para> 0373 Returns <literal>true</literal>, if <parameter>line</parameter> is in the half open interval <literal>[start.line, end.line]</literal>, otherwise <literal>false</literal>. 0374 </para></listitem> 0375 </varlistentry></variablelist> 0376 0377 <variablelist><varlistentry> 0378 <term><synopsis> 0379 bool Range.overlaps(<parameter>Range <replaceable>other</replaceable></parameter>); 0380 </synopsis></term> 0381 <listitem><para> 0382 Returns <literal>true</literal>, if this range and the range <parameter>other</parameter> share a common region, otherwise <literal>false</literal>. 0383 </para></listitem> 0384 </varlistentry></variablelist> 0385 0386 <variablelist><varlistentry> 0387 <term><synopsis> 0388 bool Range.overlapsLine(<parameter>int <replaceable>line</replaceable></parameter>); 0389 </synopsis></term> 0390 <listitem><para> 0391 Returns <literal>true</literal>, if <parameter>line</parameter> is in the interval <literal>[start.line, end.line]</literal>, otherwise <literal>false</literal>. 0392 </para></listitem> 0393 </varlistentry></variablelist> 0394 0395 <variablelist><varlistentry> 0396 <term><synopsis> 0397 bool Range.overlapsColumn(<parameter>int <replaceable>column</replaceable></parameter>); 0398 </synopsis></term> 0399 <listitem><para> 0400 Returns <literal>true</literal>, if <parameter>column</parameter> is in the interval <literal>[start.column, end.column]</literal>, otherwise <literal>false</literal>. 0401 </para></listitem> 0402 </varlistentry></variablelist> 0403 0404 <variablelist><varlistentry> 0405 <term><synopsis> 0406 bool Range.equals(<parameter>Range <replaceable>other</replaceable></parameter>); 0407 </synopsis></term> 0408 <listitem><para> 0409 Returns <literal>true</literal>, if this range and the Range <parameter>other</parameter> are equal, otherwise <literal>false</literal>. 0410 </para></listitem> 0411 </varlistentry></variablelist> 0412 0413 <variablelist><varlistentry> 0414 <term><synopsis> 0415 String Range.toString(); 0416 </synopsis></term> 0417 <listitem><para> 0418 Returns the range as a string of the form <literal>Range(Cursor(line,column) - Cursor(line,column))</literal>. 0419 </para></listitem> 0420 </varlistentry></variablelist> 0421 0422 </sect2> 0423 0424 0425 <sect2 id="id_scripting_api_view"> 0426 <title>The View API</title> 0427 0428 <para>Whenever a script is being executed, there is a global object (variable) <userinput>view</userinput> representing the current active editor view. All functions of <literal>view</literal> work with cursor positions or selected text. The following is a list of all available <userinput>view</userinput> functions.</para> 0429 0430 <variablelist><varlistentry> 0431 <term><synopsis> 0432 void view.backspace(); 0433 </synopsis></term> 0434 <listitem><para> 0435 Programmatically performs the equivalent of pressing the backspace key. 0436 </para></listitem> 0437 </varlistentry></variablelist> 0438 0439 <variablelist><varlistentry> 0440 <term><synopsis> 0441 Cursor view.cursorPosition(); 0442 </synopsis></term> 0443 <listitem><para> 0444 Returns the current cursor position in the view. 0445 </para></listitem> 0446 </varlistentry></variablelist> 0447 0448 <variablelist><varlistentry> 0449 <term><synopsis> 0450 void view.setCursorPosition(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>int <replaceable>column</replaceable></parameter>); 0451 void view.setCursorPosition(<parameter>Cursor <replaceable>cursor</replaceable></parameter>); 0452 </synopsis></term> 0453 <listitem><para> 0454 Set the current cursor position to either <parameter>line</parameter>, <parameter>column</parameter> or to the given <parameter>cursor</parameter>. 0455 </para></listitem> 0456 </varlistentry></variablelist> 0457 0458 <variablelist><varlistentry> 0459 <term><synopsis> 0460 void view.cursorLeft(); 0461 </synopsis></term> 0462 <listitem><para> 0463 Moves the cursor one position backward in the text. 0464 </para></listitem> 0465 </varlistentry></variablelist> 0466 0467 <variablelist><varlistentry> 0468 <term><synopsis> 0469 void view.cursorRight(); 0470 </synopsis></term> 0471 <listitem><para> 0472 Moves the cursor one position forward in the text. 0473 </para></listitem> 0474 </varlistentry></variablelist> 0475 0476 <variablelist><varlistentry> 0477 <term><synopsis> 0478 void view.cursorUp(); 0479 </synopsis></term> 0480 <listitem><para> 0481 Moves the cursor one line up in the document. 0482 </para></listitem> 0483 </varlistentry></variablelist> 0484 0485 <variablelist><varlistentry> 0486 <term><synopsis> 0487 void view.cursorDown(); 0488 </synopsis></term> 0489 <listitem><para> 0490 Moves the cursor one line down in the document. 0491 </para></listitem> 0492 </varlistentry></variablelist> 0493 0494 <variablelist><varlistentry> 0495 <term><synopsis> 0496 int view.cursorLine(); 0497 </synopsis></term> 0498 <listitem><para> 0499 Returns the line which the cursor is currently located at. 0500 </para></listitem> 0501 </varlistentry></variablelist> 0502 0503 <variablelist><varlistentry> 0504 <term><synopsis> 0505 int view.cursorColumn(); 0506 </synopsis></term> 0507 <listitem><para> 0508 Returns the column which the cursor is currently located at. 0509 </para></listitem> 0510 </varlistentry></variablelist> 0511 0512 <variablelist><varlistentry> 0513 <term><synopsis> 0514 void view.setCursorLine(<parameter>int <replaceable>line</replaceable></parameter>); 0515 </synopsis></term> 0516 <listitem><para> 0517 Set the cursor line to the given <parameter>line</parameter>. 0518 </para></listitem> 0519 </varlistentry></variablelist> 0520 0521 <variablelist><varlistentry> 0522 <term><synopsis> 0523 void view.setCursorColumn(<parameter>int <replaceable>column</replaceable></parameter>); 0524 </synopsis></term> 0525 <listitem><para> 0526 Set the cursor column to the given <parameter>column</parameter>. 0527 </para></listitem> 0528 </varlistentry></variablelist> 0529 0530 <variablelist><varlistentry> 0531 <term><synopsis> 0532 Cursor view.virtualCursorPosition(); 0533 </synopsis></term> 0534 <listitem><para> 0535 Get the current <emphasis>virtual</emphasis> cursor position. <emphasis>Virtual</emphasis> means the tabulator character (TAB) counts <emphasis>multiple</emphasis> characters, as configured by the user (e.g. one TAB is 8 spaces). The virtual cursor position provides access to the user visible values of the current cursor position. 0536 </para></listitem> 0537 </varlistentry></variablelist> 0538 0539 <variablelist><varlistentry> 0540 <term><synopsis> 0541 bool view.hasSelection(); 0542 </synopsis></term> 0543 <listitem><para> 0544 Returns <literal>true</literal>, if the view has selected text, otherwise <literal>false</literal>. 0545 </para></listitem> 0546 </varlistentry></variablelist> 0547 0548 <variablelist><varlistentry> 0549 <term><synopsis> 0550 String view.selectedText(); 0551 </synopsis></term> 0552 <listitem><para> 0553 Returns the selected text. If no text is selected, the returned string is empty. 0554 </para></listitem> 0555 </varlistentry></variablelist> 0556 0557 <variablelist><varlistentry> 0558 <term><synopsis> 0559 Range view.selectionRange(); 0560 </synopsis></term> 0561 <listitem><para> 0562 Returns the selected text range. The returned range is invalid if there is no selected text. 0563 </para></listitem> 0564 </varlistentry></variablelist> 0565 0566 <variablelist><varlistentry> 0567 <term><synopsis> 0568 void view.setSelection(<parameter>Range <replaceable>range</replaceable></parameter>); 0569 </synopsis></term> 0570 <listitem><para> 0571 Set the selected text to the given <parameter>range</parameter>. 0572 </para></listitem> 0573 </varlistentry></variablelist> 0574 0575 <variablelist><varlistentry> 0576 <term><synopsis> 0577 void view.selectAll(); 0578 </synopsis></term> 0579 <listitem><para> 0580 Selects the entire text in the document. 0581 </para></listitem> 0582 </varlistentry></variablelist> 0583 0584 <variablelist><varlistentry> 0585 <term><synopsis> 0586 void view.clearSelection(); 0587 </synopsis></term> 0588 <listitem><para> 0589 Clears the text selection without removing the text. 0590 </para></listitem> 0591 </varlistentry></variablelist> 0592 0593 <variablelist><varlistentry> 0594 <term><synopsis> 0595 void view.removeSelectedText(); 0596 </synopsis></term> 0597 <listitem><para> 0598 Remove the selected text. If the view does not have any selected text, this does nothing. 0599 </para></listitem> 0600 </varlistentry></variablelist> 0601 0602 <variablelist><varlistentry> 0603 <term><synopsis> 0604 void view.selectLine(); 0605 </synopsis></term> 0606 <listitem><para> 0607 Selects the text in the current line. 0608 </para></listitem> 0609 </varlistentry></variablelist> 0610 0611 <variablelist><varlistentry> 0612 <term><synopsis> 0613 void view.selectLine(<parameter>int <replaceable>line</replaceable></parameter>); 0614 </synopsis></term> 0615 <listitem><para> 0616 Selects the text in the given <parameter>line</parameter>. 0617 </para></listitem> 0618 </varlistentry></variablelist> 0619 0620 <variablelist><varlistentry> 0621 <term><synopsis> 0622 void view.selectLines(<parameter>int <replaceable>from</replaceable></parameter>, <parameter>int <replaceable>to</replaceable></parameter>); 0623 </synopsis></term> 0624 <listitem><para> 0625 Selects the entire text from line <parameter>from</parameter> to line <parameter>to</parameter>. 0626 </para></listitem> 0627 </varlistentry></variablelist> 0628 0629 <variablelist><varlistentry> 0630 <term><synopsis> 0631 void view.selectWord(); 0632 </synopsis></term> 0633 <listitem><para> 0634 Selects the current word. If no word is found at the current cursor position, nothing is done. 0635 </para></listitem> 0636 </varlistentry></variablelist> 0637 0638 <variablelist><varlistentry> 0639 <term><synopsis> 0640 void view.selectLatexCommand(); 0641 </synopsis></term> 0642 <listitem><para> 0643 Selects the current &latex; command. If no command is found at the current cursor position, nothing is done. 0644 </para></listitem> 0645 </varlistentry></variablelist> 0646 0647 <variablelist><varlistentry> 0648 <term><synopsis> 0649 void view.selectEnvironment(<parameter>bool <replaceable>inside = false</replaceable></parameter>); 0650 </synopsis></term> 0651 <listitem><para> 0652 Selects the entire text of the current &latex; environment. If <parameter>inside</parameter> is <literal>false</literal>, the environment text including the surrounding &latex; tags <userinput>\begin{...}...\end{...}</userinput> will be selected, else without these tags. If no parameter is given, <parameter>inside</parameter> is set to <literal>false</literal>. 0653 </para></listitem> 0654 </varlistentry></variablelist> 0655 0656 <variablelist><varlistentry> 0657 <term><synopsis> 0658 void view.selectTexgroup(<parameter>bool <replaceable>inside = true</replaceable></parameter>); 0659 </synopsis></term> 0660 <listitem><para> 0661 Selects the text of the current &latex; group. If <parameter>inside</parameter> is <literal>true</literal>, only the texgroup without the surrounding braces will be selected. If no parameter is given, <parameter>inside</parameter> is set to <literal>true</literal>. 0662 </para></listitem> 0663 </varlistentry></variablelist> 0664 0665 <variablelist><varlistentry> 0666 <term><synopsis> 0667 void view.selectMathgroup(); 0668 </synopsis></term> 0669 <listitem><para> 0670 Selects the text of the current math group. 0671 </para></listitem> 0672 </varlistentry></variablelist> 0673 0674 <variablelist><varlistentry> 0675 <term><synopsis> 0676 void view.selectParagraph(bool wholeLines = true); 0677 </synopsis></term> 0678 <listitem><para> 0679 Selects the entire text of the current &latex; paragraph. If <parameter>wholeLines</parameter> is <literal>true</literal>, the first and the last lines of the paragraph will be included in the selection entirely (including the end-of-line character); otherwise, the selection will only contain non-whitespace characters. 0680 </para></listitem> 0681 </varlistentry></variablelist> 0682 0683 </sect2> 0684 0685 0686 <sect2 id="id_scripting_api_document"> 0687 <title>The Document API</title> 0688 0689 <para>Whenever a script is being executed, there is a global object (variable) <userinput>document</userinput> representing the current active document. The following is a list of all available <userinput>document</userinput> functions.</para> 0690 0691 <variablelist><varlistentry> 0692 <term><synopsis> 0693 void document.insertText(<parameter>String <replaceable>text</replaceable></parameter>); 0694 </synopsis></term> 0695 <listitem><para> 0696 Inserts the <parameter>text</parameter> at the current cursor position. 0697 </para></listitem> 0698 </varlistentry></variablelist> 0699 0700 <variablelist><varlistentry> 0701 <term><synopsis> 0702 void document.insertText(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>int <replaceable>column</replaceable></parameter>, <parameter>String <replaceable>text</replaceable></parameter>); 0703 void document.insertText(<parameter>Cursor <replaceable>cursor</replaceable></parameter>, <parameter>String <replaceable>text</replaceable></parameter>); 0704 </synopsis></term> 0705 <listitem><para> 0706 Inserts the <parameter>text</parameter> at the given cursor position. 0707 </para></listitem> 0708 </varlistentry></variablelist> 0709 0710 <variablelist><varlistentry> 0711 <term><synopsis> 0712 bool document.removeText(<parameter>int <replaceable>fromLine</replaceable></parameter>, <parameter>int <replaceable>fromColumn</replaceable></parameter>, <parameter>int <replaceable>toLine</replaceable></parameter>, <parameter>int <replaceable>toColumn</replaceable></parameter>); 0713 bool document.removeText(<parameter>Cursor <replaceable>from</replaceable></parameter>, <parameter>Cursor <replaceable>to</replaceable></parameter>); 0714 bool document.removeText(<parameter>Range <replaceable>range</replaceable></parameter>); 0715 </synopsis></term> 0716 <listitem><para> 0717 Removes the text in the given range. Returns <literal>true</literal> on success, or <literal>false</literal>, if the document is in read-only mode. 0718 </para></listitem> 0719 </varlistentry></variablelist> 0720 0721 <variablelist><varlistentry> 0722 <term><synopsis> 0723 bool document.replaceText(<parameter>Range <replaceable>range</replaceable></parameter>, <parameter>String <replaceable>text</replaceable></parameter>); 0724 </synopsis></term> 0725 <listitem><para> 0726 Replace the text of the given range with the specified text. 0727 </para></listitem> 0728 </varlistentry></variablelist> 0729 0730 <variablelist><varlistentry> 0731 <term><synopsis> 0732 int document.lines(); 0733 </synopsis></term> 0734 <listitem><para> 0735 Returns the number of lines in the document. 0736 </para></listitem> 0737 </varlistentry></variablelist> 0738 0739 <variablelist><varlistentry> 0740 <term><synopsis> 0741 int document.length(); 0742 </synopsis></term> 0743 <listitem><para> 0744 Returns the number of characters in the document. 0745 </para></listitem> 0746 </varlistentry></variablelist> 0747 0748 <variablelist><varlistentry> 0749 <term><synopsis> 0750 Range document.documentRange(); 0751 </synopsis></term> 0752 <listitem><para> 0753 Returns a range which encompasses the whole document. 0754 </para></listitem> 0755 </varlistentry></variablelist> 0756 0757 <variablelist><varlistentry> 0758 <term><synopsis> 0759 Cursor document.documentEnd(); 0760 </synopsis></term> 0761 <listitem><para> 0762 Returns the current cursor position of the document's end. 0763 </para></listitem> 0764 </varlistentry></variablelist> 0765 0766 <variablelist><varlistentry> 0767 <term><synopsis> 0768 String document.text(); 0769 </synopsis></term> 0770 <listitem><para> 0771 Returns the entire content of the document in a single text string. Newlines 0772 are marked with the newline character <literal>\n</literal>. 0773 </para></listitem> 0774 </varlistentry></variablelist> 0775 0776 <variablelist><varlistentry> 0777 <term><synopsis> 0778 String document.text(<parameter>int <replaceable>fromLine</replaceable></parameter>, <parameter>int <replaceable>fromColumn</replaceable></parameter>, <parameter>int <replaceable>toLine</replaceable></parameter>, <parameter>int <replaceable>toColumn</replaceable></parameter>); 0779 String document.text(<parameter>Cursor <replaceable>from</replaceable></parameter>, <parameter>Cursor <replaceable>to</replaceable></parameter>); 0780 String document.text(<parameter>Range <replaceable>range</replaceable></parameter>); 0781 </synopsis></term> 0782 <listitem><para> 0783 Returns the text in the given range. It is recommended to use the cursor and range based version for better readability of the source code. 0784 </para></listitem> 0785 </varlistentry></variablelist> 0786 0787 <variablelist><varlistentry> 0788 <term><synopsis> 0789 bool document.setText(<parameter>String <replaceable>text</replaceable></parameter>); 0790 </synopsis></term> 0791 <listitem><para> 0792 Sets the entire document text. 0793 </para></listitem> 0794 </varlistentry></variablelist> 0795 0796 <variablelist><varlistentry> 0797 <term><synopsis> 0798 bool document.clear(); 0799 </synopsis></term> 0800 <listitem><para> 0801 Removes the entire text in the document. 0802 </para></listitem> 0803 </varlistentry></variablelist> 0804 0805 <variablelist><varlistentry> 0806 <term><synopsis> 0807 String document.line(); 0808 </synopsis></term> 0809 <listitem><para> 0810 Returns the current text line as string. 0811 </para></listitem> 0812 </varlistentry></variablelist> 0813 0814 <variablelist><varlistentry> 0815 <term><synopsis> 0816 String document.line(<parameter>int <replaceable>line</replaceable></parameter>); 0817 </synopsis></term> 0818 <listitem><para> 0819 Returns the given text line as string. The string is empty if the requested line is out of range. 0820 </para></listitem> 0821 </varlistentry></variablelist> 0822 0823 <variablelist><varlistentry> 0824 <term><synopsis> 0825 int document.lineLength(); 0826 </synopsis></term> 0827 <listitem><para> 0828 Returns the length of the current line. 0829 </para></listitem> 0830 </varlistentry></variablelist> 0831 0832 <variablelist><varlistentry> 0833 <term><synopsis> 0834 int document.lineLength(<parameter>int <replaceable>line</replaceable></parameter>); 0835 </synopsis></term> 0836 <listitem><para> 0837 Returns the <parameter>line</parameter>'s length. 0838 </para></listitem> 0839 </varlistentry></variablelist> 0840 0841 <variablelist><varlistentry> 0842 <term><synopsis> 0843 bool document.insertLine(<parameter>String <replaceable>s</replaceable></parameter>); 0844 </synopsis></term> 0845 <listitem><para> 0846 Inserts text in the current line. Returns <literal>true</literal> on success, or <literal>false</literal>, if the document is in read-only mode or the line is not in the document range. 0847 </para></listitem> 0848 </varlistentry></variablelist> 0849 0850 <variablelist><varlistentry> 0851 <term><synopsis> 0852 bool document.insertLine(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>String <replaceable>s</replaceable></parameter>); 0853 </synopsis></term> 0854 <listitem><para> 0855 Inserts text in the given line. Returns <literal>true</literal> on success, or <literal>false</literal>, if the document is in read-only mode or the line is not in the document range. 0856 </para></listitem> 0857 </varlistentry></variablelist> 0858 0859 <variablelist><varlistentry> 0860 <term><synopsis> 0861 bool document.removeLine(); 0862 </synopsis></term> 0863 <listitem><para> 0864 Removes the current text line. Returns <literal>true</literal> on success, or <literal>false</literal>, if the document is in read-only mode. 0865 </para></listitem> 0866 </varlistentry></variablelist> 0867 0868 <variablelist><varlistentry> 0869 <term><synopsis> 0870 bool document.removeLine(<parameter>int <replaceable>line</replaceable></parameter>); 0871 </synopsis></term> 0872 <listitem><para> 0873 Removes the given text line. Returns <literal>true</literal> on success, or <literal>false</literal>, if the document is in read-only mode or the line is not in the document range. 0874 </para></listitem> 0875 </varlistentry></variablelist> 0876 0877 <variablelist><varlistentry> 0878 <term><synopsis> 0879 bool document.replaceLine(<parameter>String <replaceable>text</replaceable></parameter>); 0880 </synopsis></term> 0881 <listitem><para> 0882 Replace the text of the current line with the specified text. 0883 </para></listitem> 0884 </varlistentry></variablelist> 0885 0886 <variablelist><varlistentry> 0887 <term><synopsis> 0888 bool document.replaceLine(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>String <replaceable>text</replaceable></parameter>); 0889 </synopsis></term> 0890 <listitem><para> 0891 Replace the text of the given line with the specified text. 0892 </para></listitem> 0893 </varlistentry></variablelist> 0894 0895 <variablelist><varlistentry> 0896 <term><synopsis> 0897 bool document.truncateLine(); 0898 </synopsis></term> 0899 <listitem><para> 0900 Truncate the current line at the given column or cursor position. Returns <literal>true</literal> on success, or <literal>false</literal> if the given line is not part of the document range. 0901 </para></listitem> 0902 </varlistentry></variablelist> 0903 0904 <variablelist><varlistentry> 0905 <term><synopsis> 0906 bool document.truncate(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>int <replaceable>column</replaceable></parameter>); 0907 bool document.truncate(<parameter>Cursor <replaceable>cursor</replaceable></parameter>); 0908 </synopsis></term> 0909 <listitem><para> 0910 Truncate the given line at the given column or cursor position. Returns <literal>true</literal> on success, or <literal>false</literal> if the given line is not part of the document range. 0911 </para></listitem> 0912 </varlistentry></variablelist> 0913 0914 <variablelist><varlistentry> 0915 <term><synopsis> 0916 String document.word(); 0917 </synopsis></term> 0918 <listitem><para> 0919 Returns the word at the current cursor position. If no word is found at this cursor position, the returned string is empty. 0920 </para></listitem> 0921 </varlistentry></variablelist> 0922 0923 <variablelist><varlistentry> 0924 <term><synopsis> 0925 String document.wordAt(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>int <replaceable>column</replaceable></parameter>); 0926 String document.wordAt(<parameter>Cursor <replaceable>cursor</replaceable></parameter>); 0927 </synopsis></term> 0928 <listitem><para> 0929 Returns the word at the given cursor position. If no word is found at this cursor position, the returned string is empty. 0930 </para></listitem> 0931 </varlistentry></variablelist> 0932 0933 <variablelist><varlistentry> 0934 <term><synopsis> 0935 Range document.wordRange(); 0936 </synopsis></term> 0937 <listitem><para> 0938 Returns the range of the word at the given cursor position. If no word is found, <literal>Range.invalid()</literal> is returned, which can be tested with <literal>Range.isValid()</literal>. 0939 </para></listitem> 0940 </varlistentry></variablelist> 0941 0942 <variablelist><varlistentry> 0943 <term><synopsis> 0944 String document.latexCommand(); 0945 </synopsis></term> 0946 <listitem><para> 0947 Returns the &latex; command at the current cursor position. If no command is found at this cursor position, the returned string is empty. 0948 </para></listitem> 0949 </varlistentry></variablelist> 0950 0951 <variablelist><varlistentry> 0952 <term><synopsis> 0953 String document.latexCommandAt(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>int <replaceable>column</replaceable></parameter>); 0954 String document.latexCommandAt(<parameter>Cursor <replaceable>cursor</replaceable></parameter>); 0955 </synopsis></term> 0956 <listitem><para> 0957 Returns the &latex; command at the given cursor position. If no command is found at this cursor position, the returned string is empty. 0958 </para></listitem> 0959 </varlistentry></variablelist> 0960 0961 <variablelist><varlistentry> 0962 <term><synopsis> 0963 Range document.latexCommandRange(); 0964 </synopsis></term> 0965 <listitem><para> 0966 Returns the range of the &latex; command at the given cursor position. If no &latex; command is found, <literal>Range.invalid()</literal> is returned, which can be tested with <literal>Range.isValid()</literal>. 0967 </para></listitem> 0968 </varlistentry></variablelist> 0969 0970 <variablelist><varlistentry> 0971 <term><synopsis> 0972 String document.charAt(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>int <replaceable>column</replaceable></parameter>); 0973 String document.charAt(<parameter>Cursor <replaceable>cursor</replaceable></parameter>); 0974 </synopsis></term> 0975 <listitem><para> 0976 Returns the character at the given cursor position. 0977 </para></listitem> 0978 </varlistentry></variablelist> 0979 0980 <variablelist><varlistentry> 0981 <term><synopsis> 0982 String document.firstChar(<parameter>int <replaceable>line</replaceable></parameter>); 0983 </synopsis></term> 0984 <listitem><para> 0985 Returns the first character in the given <parameter>line</parameter> that is not a whitespace. The first character is at column 0. If the line is empty or only contains whitespace characters, the returned string is empty. 0986 </para></listitem> 0987 </varlistentry></variablelist> 0988 0989 <variablelist><varlistentry> 0990 <term><synopsis> 0991 String document.lastChar(<parameter>int <replaceable>line</replaceable></parameter>); 0992 </synopsis></term> 0993 <listitem><para> 0994 Returns the last character in the given <parameter>line</parameter> that is not a whitespace. If the line is empty or only contains whitespace characters, the returned string is empty. 0995 </para></listitem> 0996 </varlistentry></variablelist> 0997 0998 <variablelist><varlistentry> 0999 <term><synopsis> 1000 bool document.isSpace(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>int <replaceable>column</replaceable></parameter>); 1001 bool document.isSpace(<parameter>Cursor <replaceable>cursor</replaceable></parameter>); 1002 </synopsis></term> 1003 <listitem><para> 1004 Returns <literal>true</literal>, if the character at the given cursor position is a whitespace, otherwise <literal>false</literal>. 1005 </para></listitem> 1006 </varlistentry></variablelist> 1007 1008 <variablelist><varlistentry> 1009 <term><synopsis> 1010 void document.insertBullet(); 1011 </synopsis></term> 1012 <listitem><para> 1013 Insert a &kile; <emphasis>bullet</emphasis>. Remember that you can easily jump to the next or previous bullet. This will also highlight this bullet so that it will be deleted automatically, when you enter your first letter. 1014 </para></listitem> 1015 </varlistentry></variablelist> 1016 1017 <variablelist><varlistentry> 1018 <term><synopsis> 1019 void document.nextBullet(); 1020 </synopsis></term> 1021 <listitem><para> 1022 Jump to the next bullet in the text if there is one. 1023 </para></listitem> 1024 </varlistentry></variablelist> 1025 1026 <variablelist><varlistentry> 1027 <term><synopsis> 1028 void document.previousBullet(); 1029 </synopsis></term> 1030 <listitem><para> 1031 Jump to the previous bullet in the text if there is one. 1032 </para></listitem> 1033 </varlistentry></variablelist> 1034 1035 <variablelist><varlistentry> 1036 <term><synopsis> 1037 bool document.hasEnvironment(); 1038 </synopsis></term> 1039 <listitem><para> 1040 Returns <literal>true</literal> if a surrounding &latex; environment is found, else <literal>false</literal>. 1041 </para></listitem> 1042 </varlistentry></variablelist> 1043 1044 <variablelist><varlistentry> 1045 <term><synopsis> 1046 String document.environment(<parameter>bool <replaceable>inside = false</replaceable></parameter>); 1047 </synopsis></term> 1048 <listitem><para> 1049 Returns the entire text of the surrounding &latex; environment. If <parameter>inside</parameter> is <literal>false</literal>, the environment text including the surrounding &latex; tags <userinput>\begin{...}...\end{...}</userinput> will be returned, else without these tags. If no parameter is given, <parameter>inside</parameter> is set to <literal>false</literal>. If no environment is found, the returned string is empty. 1050 </para></listitem> 1051 </varlistentry></variablelist> 1052 1053 <variablelist><varlistentry> 1054 <term><synopsis> 1055 Range document.environmentRange(<parameter>bool <replaceable>inside = false</replaceable></parameter>); 1056 </synopsis></term> 1057 <listitem><para> 1058 Returns the range of the surrounding &latex; environment. If <parameter>inside</parameter> is <literal>false</literal>, the range including the surrounding &latex; tags <userinput>\begin{...}...\end{...}</userinput> will be returned, else without these tags. If no parameter is given, <parameter>inside</parameter> is set to <literal>false</literal>. If no environment is found, <literal>Range.invalid()</literal> is returned, which can be tested with <literal>Range.isValid()</literal>. 1059 </para></listitem> 1060 </varlistentry></variablelist> 1061 1062 <variablelist><varlistentry> 1063 <term><synopsis> 1064 String document.environmentName(); 1065 </synopsis></term> 1066 <listitem><para> 1067 Returns the name of the surrounding &latex; environment or an empty string. 1068 </para></listitem> 1069 </varlistentry></variablelist> 1070 1071 <variablelist><varlistentry> 1072 <term><synopsis> 1073 void document.removeEnvironment(<parameter>bool <replaceable>inside = false</replaceable></parameter>); 1074 </synopsis></term> 1075 <listitem><para> 1076 Removes the text of the surrounding &latex; environment. If <parameter>inside</parameter> is <literal>false</literal>, the environment text including the surrounding &latex; tags <userinput>\begin{...}...\end{...}</userinput> will be removed, else without these tags. If no parameter is given, <parameter>inside</parameter> is set to <literal>false</literal>. 1077 </para></listitem> 1078 </varlistentry></variablelist> 1079 1080 <variablelist><varlistentry> 1081 <term><synopsis> 1082 void document.closeEnvironment(); 1083 </synopsis></term> 1084 <listitem><para> 1085 Insert a closing environment tag, if an opened &latex; environment is found at the current cursor position. 1086 </para></listitem> 1087 </varlistentry></variablelist> 1088 1089 <variablelist><varlistentry> 1090 <term><synopsis> 1091 void document.closeAllEnvironments(); 1092 </synopsis></term> 1093 <listitem><para> 1094 Insert closing environment tags for all opened &latex; environments, which were found at the current cursor position. 1095 </para></listitem> 1096 </varlistentry></variablelist> 1097 1098 <variablelist><varlistentry> 1099 <term><synopsis> 1100 bool document.hasTexgroup(); 1101 </synopsis></term> 1102 <listitem><para> 1103 Returns <literal>true</literal> if a surrounding &latex; group is found at the current cursor position, else <literal>false</literal>. 1104 </para></listitem> 1105 </varlistentry></variablelist> 1106 1107 <variablelist><varlistentry> 1108 <term><synopsis> 1109 String document.texgroup(<parameter>bool <replaceable>inside = true</replaceable></parameter>); 1110 </synopsis></term> 1111 <listitem><para> 1112 Returns the text of the surrounding &latex; group. If <parameter>inside</parameter> is <literal>false</literal>, the text of this &latex; group including the surrounding braces <userinput>{...}</userinput> will be returned, else without them. If no parameter is given, <parameter>inside</parameter> is set to <literal>false</literal>. The returned string is empty, if no surrounding &latex; group is found at the current cursor position. 1113 </para></listitem> 1114 </varlistentry></variablelist> 1115 1116 <variablelist><varlistentry> 1117 <term><synopsis> 1118 Range document.texgroupRange(<parameter>bool <replaceable>inside = true</replaceable></parameter>); 1119 </synopsis></term> 1120 <listitem><para> 1121 Returns the range of the surrounding &latex; group. If <parameter>inside</parameter> is <literal>false</literal>, the range including the surrounding braces <userinput>{...}</userinput> will be returned, else without them. If no parameter is given, <parameter>inside</parameter> is set to <literal>false</literal>. If no group is found, <literal>Range.invalid()</literal> is returned, which can be tested with <literal>Range.isValid()</literal>. 1122 </para></listitem> 1123 </varlistentry></variablelist> 1124 1125 <variablelist><varlistentry> 1126 <term><synopsis> 1127 void document.removeTexgroup(<parameter>bool <replaceable>inside = true</replaceable></parameter>); 1128 </synopsis></term> 1129 <listitem><para> 1130 Removes the text of the surrounding &latex; group. If <parameter>inside</parameter> is <literal>false</literal>, the text of this &latex; group including the surrounding braces <userinput>{...}</userinput> will be removed, else without them. If no parameter is given, <parameter>inside</parameter> is set to <literal>false</literal>. 1131 </para></listitem> 1132 </varlistentry></variablelist> 1133 1134 <variablelist><varlistentry> 1135 <term><synopsis> 1136 bool document.hasMathgroup(); 1137 </synopsis></term> 1138 <listitem><para> 1139 Returns <literal>true</literal> if a surrounding &latex; mathgroup is found at the current cursor position, else <literal>false</literal>. 1140 </para></listitem> 1141 </varlistentry></variablelist> 1142 1143 <variablelist><varlistentry> 1144 <term><synopsis> 1145 String document.mathgroup(); 1146 </synopsis></term> 1147 <listitem><para> 1148 Returns the text of the surrounding &latex; mathgroup. The returned string is empty, if no surrounding &latex; mathgroup is found at the current cursor position. 1149 </para></listitem> 1150 </varlistentry></variablelist> 1151 1152 <variablelist><varlistentry> 1153 <term><synopsis> 1154 Range document.mathgroupRange(); 1155 </synopsis></term> 1156 <listitem><para> 1157 Returns the range of the surrounding &latex; mathgroup. If there is no surrounding mathgroup, <literal>Range.invalid()</literal> is returned, which can be tested with <literal>Range.isValid()</literal>. 1158 </para></listitem> 1159 </varlistentry></variablelist> 1160 1161 <variablelist><varlistentry> 1162 <term><synopsis> 1163 void document.removeMathgroup(); 1164 </synopsis></term> 1165 <listitem><para> 1166 Removes the text of the surrounding &latex; mathgroup. 1167 </para></listitem> 1168 </varlistentry></variablelist> 1169 1170 <variablelist><varlistentry> 1171 <term><synopsis> 1172 String document.paragraph(); 1173 </synopsis></term> 1174 <listitem><para> 1175 Returns the text of the current &latex; paragraph. 1176 </para></listitem> 1177 </varlistentry></variablelist> 1178 1179 <variablelist><varlistentry> 1180 <term><synopsis> 1181 Range document.paragraphRange(); 1182 </synopsis></term> 1183 <listitem><para> 1184 Returns the range of the surrounding &latex; paragraph. 1185 </para></listitem> 1186 </varlistentry></variablelist> 1187 1188 <variablelist><varlistentry> 1189 <term><synopsis> 1190 void document.removeParagraph(); 1191 </synopsis></term> 1192 <listitem><para> 1193 Removes the text of the current &latex; paragraph. 1194 </para></listitem> 1195 </varlistentry></variablelist> 1196 1197 <variablelist><varlistentry> 1198 <term><synopsis> 1199 bool document.matchesAt(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>int <replaceable>column</replaceable></parameter>, <parameter>String <replaceable>text</replaceable></parameter>); 1200 bool document.matchesAt(<parameter>Cursor <replaceable>cursor</replaceable></parameter>, <parameter>String <replaceable>text</replaceable></parameter>); 1201 </synopsis></term> 1202 <listitem><para> 1203 Returns <literal>true</literal>, if the given <parameter>text</parameter> matches at the corresponding cursor position, otherwise <literal>false</literal>. 1204 </para></listitem> 1205 </varlistentry></variablelist> 1206 1207 <variablelist><varlistentry> 1208 <term><synopsis> 1209 bool document.startsWith(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>String <replaceable>pattern</replaceable></parameter>, <parameter>bool <replaceable>skipWhiteSpaces = true</replaceable></parameter>); 1210 </synopsis></term> 1211 <listitem><para> 1212 Returns <literal>true</literal>, if the line starts with <parameter>pattern</parameter>, otherwise <literal>false</literal>. The argument <parameter>skipWhiteSpaces</parameter> controls whether leading whitespaces are ignored. 1213 </para></listitem> 1214 </varlistentry></variablelist> 1215 1216 <variablelist><varlistentry> 1217 <term><synopsis> 1218 bool document.endsWith(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>String <replaceable>pattern</replaceable></parameter>, <parameter>bool <replaceable>skipWhiteSpaces = true</replaceable></parameter>); 1219 </synopsis></term> 1220 <listitem><para> 1221 Returns <literal>true</literal>, if the line ends with <parameter>pattern</parameter>, otherwise <literal>false</literal>. The argument <parameter>skipWhiteSpaces</parameter> controls whether trailing whitespaces are ignored. 1222 </para></listitem> 1223 </varlistentry></variablelist> 1224 1225 <variablelist><varlistentry> 1226 <term><synopsis> 1227 int document.firstColumn(<parameter>int <replaceable>line</replaceable></parameter>); 1228 </synopsis></term> 1229 <listitem><para> 1230 Returns the first non-whitespace column in the given <parameter>line</parameter>. If there are only whitespaces in the line, the return value is <literal>-1</literal>. 1231 </para></listitem> 1232 </varlistentry></variablelist> 1233 1234 <variablelist><varlistentry> 1235 <term><synopsis> 1236 int document.lastColumn(<parameter>int <replaceable>line</replaceable></parameter>); 1237 </synopsis></term> 1238 <listitem><para> 1239 Returns the last non-whitespace column in the given <parameter>line</parameter>. If there are only whitespaces in the line, the return value is <literal>-1</literal>. 1240 </para></listitem> 1241 </varlistentry></variablelist> 1242 1243 <variablelist><varlistentry> 1244 <term><synopsis> 1245 int document.prevNonSpaceColumn(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>int <replaceable>column</replaceable></parameter>); 1246 int document.prevNonSpaceColumn(<parameter>Cursor <replaceable>cursor</replaceable></parameter>); 1247 </synopsis></term> 1248 <listitem><para> 1249 Returns the column with a non-whitespace character starting at the given cursor position and searching backwards. 1250 </para></listitem> 1251 </varlistentry></variablelist> 1252 1253 <variablelist><varlistentry> 1254 <term><synopsis> 1255 int document.nextNonSpaceColumn(<parameter>int <replaceable>line</replaceable></parameter>, <parameter>int <replaceable>column</replaceable></parameter>); 1256 int document.nextNonSpaceColumn(<parameter>Cursor <replaceable>cursor</replaceable></parameter>); 1257 </synopsis></term> 1258 <listitem><para> 1259 Returns the column with a non-whitespace character starting at the given cursor position and searching forwards. 1260 </para></listitem> 1261 </varlistentry></variablelist> 1262 1263 <variablelist><varlistentry> 1264 <term><synopsis> 1265 int document.prevNonEmptyLine(<parameter>int <replaceable>line</replaceable></parameter>); 1266 </synopsis></term> 1267 <listitem><para> 1268 Returns the next non-empty line containing non-whitespace characters searching backwards. 1269 </para></listitem> 1270 </varlistentry></variablelist> 1271 1272 <variablelist><varlistentry> 1273 <term><synopsis> 1274 int document.nextNonEmptyLine(<parameter>int <replaceable>line</replaceable></parameter>); 1275 </synopsis></term> 1276 <listitem><para> 1277 Returns the next non-empty line containing non-whitespace characters searching forwards. 1278 </para></listitem> 1279 </varlistentry></variablelist> 1280 1281 <variablelist><varlistentry> 1282 <term><synopsis> 1283 void document.gotoBeginEnv(); 1284 </synopsis></term> 1285 <listitem><para> 1286 Go to the start of a surrounding &latex; environment. 1287 </para></listitem> 1288 </varlistentry></variablelist> 1289 1290 <variablelist><varlistentry> 1291 <term><synopsis> 1292 void document.gotoEndEnv(); 1293 </synopsis></term> 1294 <listitem><para> 1295 Go to the end of a surrounding &latex; environment. 1296 </para></listitem> 1297 </varlistentry></variablelist> 1298 1299 <variablelist><varlistentry> 1300 <term><synopsis> 1301 void document.gotoBeginTexgroup(); 1302 </synopsis></term> 1303 <listitem><para> 1304 Go to the start of a surrounding &latex; group. 1305 </para></listitem> 1306 </varlistentry></variablelist> 1307 1308 <variablelist><varlistentry> 1309 <term><synopsis> 1310 void document.gotoEndTexgroup(); 1311 </synopsis></term> 1312 <listitem><para> 1313 Go to the end of a surrounding &latex; group. 1314 </para></listitem> 1315 </varlistentry></variablelist> 1316 1317 <variablelist><varlistentry> 1318 <term><synopsis> 1319 void document.gotoNextParagraph(); 1320 </synopsis></term> 1321 <listitem><para> 1322 Go to the next &latex; paragraph. 1323 </para></listitem> 1324 </varlistentry></variablelist> 1325 1326 <variablelist><varlistentry> 1327 <term><synopsis> 1328 void document.gotoPrevParagraph(); 1329 </synopsis></term> 1330 <listitem><para> 1331 Go to the previous &latex; paragraph. 1332 </para></listitem> 1333 </varlistentry></variablelist> 1334 1335 <variablelist><varlistentry> 1336 <term><synopsis> 1337 void document.gotoNextSectioning(); 1338 </synopsis></term> 1339 <listitem><para> 1340 Go to the next &latex; section. 1341 </para></listitem> 1342 </varlistentry></variablelist> 1343 1344 <variablelist><varlistentry> 1345 <term><synopsis> 1346 void document.gotoPrevSectioning(); 1347 </synopsis></term> 1348 <listitem><para> 1349 Go to the previous &latex; section. 1350 </para></listitem> 1351 </varlistentry></variablelist> 1352 1353 <variablelist><varlistentry> 1354 <term><synopsis> 1355 void document.gotoLine(<parameter>int <replaceable>line</replaceable></parameter>); 1356 </synopsis></term> 1357 <listitem><para> 1358 Go to the given <literal>line</literal>. 1359 </para></listitem> 1360 </varlistentry></variablelist> 1361 1362 <variablelist><varlistentry> 1363 <term><synopsis> 1364 void document.insertChapter(); 1365 </synopsis></term> 1366 <listitem><para> 1367 Insert a <userinput>\chapter</userinput> command (see also <literal>document.insertSection()</literal>). 1368 </para></listitem> 1369 </varlistentry></variablelist> 1370 1371 <variablelist><varlistentry> 1372 <term><synopsis> 1373 void document.insertSection(); 1374 </synopsis></term> 1375 <listitem><para> 1376 Insert a <userinput>\section</userinput> command. As with choosing the menu entry <menuchoice><guimenu>LaTeX</guimenu><guisubmenu>Sectioning</guisubmenu><guimenuitem>section</guimenuitem></menuchoice> a dialog will appear, where you can choose the title and an optional label for this sectioning command. 1377 <screenshot> 1378 <screeninfo>Dialog: insert chapter command</screeninfo> 1379 <mediaobject> 1380 <imageobject> 1381 <imagedata fileref="dialog-insertsection.png" format="PNG" /> 1382 </imageobject> 1383 <textobject> 1384 <phrase>Dialog: insert chapter command</phrase> 1385 </textobject> 1386 </mediaobject> 1387 </screenshot> 1388 </para></listitem> 1389 </varlistentry></variablelist> 1390 1391 <variablelist><varlistentry> 1392 <term><synopsis> 1393 void document.insertSubsection(); 1394 </synopsis></term> 1395 <listitem><para> 1396 Insert a <userinput>\subsection</userinput> command (see also <literal>document.insertSection()</literal>). 1397 </para></listitem> 1398 </varlistentry></variablelist> 1399 1400 <variablelist><varlistentry> 1401 <term><synopsis> 1402 void document.insertSubsubsection(); 1403 </synopsis></term> 1404 <listitem><para> 1405 Insert a <userinput>\subsubsection</userinput> command (see also <literal>document.insertSection()</literal>). 1406 </para></listitem> 1407 </varlistentry></variablelist> 1408 1409 <variablelist><varlistentry> 1410 <term><synopsis> 1411 void document.insertParagraph(); 1412 </synopsis></term> 1413 <listitem><para> 1414 Insert a <userinput>\paragraph</userinput> command (see also <literal>document.insertSection()</literal>). 1415 </para></listitem> 1416 </varlistentry></variablelist> 1417 1418 <variablelist><varlistentry> 1419 <term><synopsis> 1420 void document.insertSubparagraph(); 1421 </synopsis></term> 1422 <listitem><para> 1423 Insert a <userinput>\subparagraph</userinput> command (see also <literal>document.insertSection()</literal>). 1424 </para></listitem> 1425 </varlistentry></variablelist> 1426 1427 <variablelist><varlistentry> 1428 <term><synopsis> 1429 void document.insertLabel(); 1430 </synopsis></term> 1431 <listitem><para> 1432 Insert a <userinput>\label</userinput> command. 1433 </para></listitem> 1434 </varlistentry></variablelist> 1435 1436 <variablelist><varlistentry> 1437 <term><synopsis> 1438 void document.insertReference(); 1439 </synopsis></term> 1440 <listitem><para> 1441 Insert a <userinput>\ref</userinput> command. As with choosing the menu entry <menuchoice><guimenu>&latex;</guimenu><guisubmenu>References</guisubmenu><guimenuitem>ref</guimenuitem></menuchoice> a dialog will appear, where you can choose from already defined labels, which are listed in a combobox. 1442 <screenshot> 1443 <screeninfo>Dialog: insert a reference command</screeninfo> 1444 <mediaobject> 1445 <imageobject> 1446 <imagedata fileref="dialog-insertreference.png" format="PNG" /> 1447 </imageobject> 1448 <textobject> 1449 <phrase>Dialog: insert a reference command</phrase> 1450 </textobject> 1451 </mediaobject> 1452 </screenshot> 1453 </para></listitem> 1454 </varlistentry></variablelist> 1455 1456 <variablelist><varlistentry> 1457 <term><synopsis> 1458 void document.insertPageref(); 1459 </synopsis></term> 1460 <listitem><para> 1461 Insert a <userinput>\pageref</userinput> command (see also <literal>document.insertReference()</literal>). 1462 </para></listitem> 1463 </varlistentry></variablelist> 1464 1465 1466 <variablelist><varlistentry> 1467 <term><synopsis> 1468 void document.insertCitation(); 1469 </synopsis></term> 1470 <listitem><para> 1471 Insert a <userinput>\cite</userinput> command. 1472 </para></listitem> 1473 </varlistentry></variablelist> 1474 1475 <variablelist><varlistentry> 1476 <term><synopsis> 1477 void document.insertIndex(); 1478 </synopsis></term> 1479 <listitem><para> 1480 Insert a <userinput>\index</userinput> command. 1481 </para></listitem> 1482 </varlistentry></variablelist> 1483 1484 <variablelist><varlistentry> 1485 <term><synopsis> 1486 void document.insertFootnote(); 1487 </synopsis></term> 1488 <listitem><para> 1489 Insert a <userinput>\footnote</userinput> command. 1490 </para></listitem> 1491 </varlistentry></variablelist> 1492 1493 <variablelist><varlistentry> 1494 <term><synopsis> 1495 void document.comment(); 1496 </synopsis></term> 1497 <listitem><para> 1498 Inserts comment markers to make the selection or current line a comment. 1499 </para></listitem> 1500 </varlistentry></variablelist> 1501 1502 <variablelist><varlistentry> 1503 <term><synopsis> 1504 void document.uncomment(); 1505 </synopsis></term> 1506 <listitem><para> 1507 Removes comment markers from the selection or current line. 1508 </para></listitem> 1509 </varlistentry></variablelist> 1510 1511 <variablelist><varlistentry> 1512 <term><synopsis> 1513 void document.uppercase(); 1514 </synopsis></term> 1515 <listitem><para> 1516 Put the selected text or the letter after the cursor in uppercase. 1517 </para></listitem> 1518 </varlistentry></variablelist> 1519 1520 <variablelist><varlistentry> 1521 <term><synopsis> 1522 void document.lowercase(); 1523 </synopsis></term> 1524 <listitem><para> 1525 Put the selected text or the letter after the cursor in lowercase. 1526 </para></listitem> 1527 </varlistentry></variablelist> 1528 1529 <variablelist><varlistentry> 1530 <term><synopsis> 1531 void document.capitalize(); 1532 </synopsis></term> 1533 <listitem><para> 1534 Capitalize the selected text or the current word. 1535 </para></listitem> 1536 </varlistentry></variablelist> 1537 1538 <variablelist><varlistentry> 1539 <term><synopsis> 1540 void document.joinLines(); 1541 </synopsis></term> 1542 <listitem><para> 1543 Joins the lines of the current selection. Two succeeding text lines are always separated with a single space. 1544 </para></listitem> 1545 </varlistentry></variablelist> 1546 1547 <variablelist><varlistentry> 1548 <term><synopsis> 1549 void document.insertIntelligentNewline(); 1550 </synopsis></term> 1551 <listitem><para> 1552 Insert a smart newline (see <xref linkend="editing_smartnewline" role="select: title pageabbrv"/>). 1553 </para></listitem> 1554 </varlistentry></variablelist> 1555 1556 <variablelist><varlistentry> 1557 <term><synopsis> 1558 void document.insertIntelligentTabulator(); 1559 </synopsis></term> 1560 <listitem><para> 1561 Insert a smart tabulator (see <xref linkend="editing_tabulator" role="select: title pageabbrv"/>). 1562 </para></listitem> 1563 </varlistentry></variablelist> 1564 1565 <variablelist><varlistentry> 1566 <term><synopsis> 1567 void document.editBegin(); 1568 </synopsis></term> 1569 <listitem><para> 1570 Starts an edit group for undo/redo grouping. Make sure to always call <function>editEnd()</function> as often as you call <function>editBegin()</function>. Calling <function>editBegin()</function> internally uses a reference counter, i.e., this call can be nested. 1571 </para></listitem> 1572 </varlistentry></variablelist> 1573 1574 <variablelist><varlistentry> 1575 <term><synopsis> 1576 void document.editEnd(); 1577 </synopsis></term> 1578 <listitem><para> 1579 Ends an edit group. The last call of <function>editEnd()</function> (i.e. the one for the first call of <function>editBegin()</function>) finishes the edit step. 1580 </para></listitem> 1581 </varlistentry></variablelist> 1582 1583 <variablelist><varlistentry> 1584 <term><synopsis> 1585 StringList document.labelList(); 1586 </synopsis></term> 1587 <listitem><para> 1588 Returns all defined labels as a <literal>StringList</literal>, which can be used in &javascript; as an array of strings. 1589 </para></listitem> 1590 </varlistentry></variablelist> 1591 1592 <variablelist><varlistentry> 1593 <term><synopsis> 1594 StringList document.bibitemList(); 1595 </synopsis></term> 1596 <listitem><para> 1597 Returns all defined bibitems as a <literal>StringList</literal>, which can be used in &javascript; as an array of strings. 1598 </para></listitem> 1599 </varlistentry></variablelist> 1600 1601 <variablelist><varlistentry> 1602 <term><synopsis> 1603 void document.refreshStructure(); 1604 </synopsis></term> 1605 <listitem><para> 1606 Refresh the structure view (see <xref linkend="navigating" role="select: title pageabbrv"/>). 1607 </para></listitem> 1608 </varlistentry></variablelist> 1609 1610 </sect2> 1611 1612 1613 <sect2 id="id_scripting_api_kile"> 1614 <title>The &kile; API</title> 1615 1616 <para>The global object (variable) <userinput>kile</userinput> is used to handle top level interactions with the outside world, input message and dialog interfaces. These API calls are divided into subobjects to structure this part of the scripting API. Conceptually <userinput>kile</userinput> is a bit like <userinput>window</userinput> in a browser API. 1617 <itemizedlist> 1618 <listitem><para><literal>kile.alert</literal>: message boxes</para></listitem> 1619 <listitem><para><literal>kile.input</literal>: get user input</para></listitem> 1620 <listitem><para><literal>kile.wizard</literal>: call one of &kile;'s wizards</para></listitem> 1621 <listitem><para><literal>kile.script</literal>: get info about a running script</para></listitem> 1622 <listitem><para><literal>kile.file</literal>: file operations like read and write.</para></listitem> 1623 </itemizedlist> 1624 </para> 1625 1626 1627 <sect3 id="id_scripting_api_kile_alert"> 1628 <title>Alert</title> 1629 1630 <variablelist><varlistentry> 1631 <term><synopsis> 1632 void kile.alert.information(<parameter>String <replaceable>text</replaceable></parameter>, <parameter>String <replaceable>caption</replaceable></parameter>); 1633 </synopsis></term> 1634 <listitem><para> 1635 Display an <emphasis>Information</emphasis> dialog. <parameter>text</parameter> is the message string and <parameter>caption</parameter> the title of the message box. The default title is the script name. 1636 </para></listitem> 1637 </varlistentry></variablelist> 1638 1639 <variablelist><varlistentry> 1640 <term><synopsis> 1641 void kile.alert.sorry(<parameter>String <replaceable>text</replaceable></parameter>, <parameter>String <replaceable>caption</replaceable></parameter>); 1642 </synopsis></term> 1643 <listitem><para> 1644 Display a <emphasis>Sorry</emphasis> dialog. <parameter>text</parameter> is the message string and <parameter>caption</parameter> the title of the message box. The default title is the script name. 1645 </para></listitem> 1646 </varlistentry></variablelist> 1647 1648 <variablelist><varlistentry> 1649 <term><synopsis> 1650 void kile.alert.error(<parameter>String <replaceable>text</replaceable></parameter>, <parameter>String <replaceable>caption</replaceable></parameter>); 1651 </synopsis></term> 1652 <listitem><para> 1653 Display an <emphasis>Error</emphasis> dialog. <parameter>text</parameter> is the message string and <parameter>caption</parameter> the title of the message box. The default title is the script name. 1654 </para></listitem> 1655 </varlistentry></variablelist> 1656 1657 <variablelist><varlistentry> 1658 <term><synopsis> 1659 String kile.alert.question(<parameter>String <replaceable>text</replaceable></parameter>, <parameter>String <replaceable>caption</replaceable></parameter>); 1660 </synopsis></term> 1661 <listitem><para> 1662 Display a simple <emphasis>question</emphasis> dialog. <parameter>text</parameter> is the message string and <parameter>caption</parameter> the title of the message box. The default title is the script name. The returned string is either <literal>yes</literal> or <literal>no</literal>. 1663 </para></listitem> 1664 </varlistentry></variablelist> 1665 1666 <variablelist><varlistentry> 1667 <term><synopsis> 1668 String kile.alert.warning(<parameter>String <replaceable>text</replaceable></parameter>, <parameter>String <replaceable>caption</replaceable></parameter>); 1669 </synopsis></term> 1670 <listitem><para> 1671 Display a simple <emphasis>warning</emphasis> dialog. <parameter>text</parameter> is the message string and <parameter>caption</parameter> the title of the message box. The default title is the script name. The returned string is either <literal>continue</literal> or <literal>cancel</literal>. 1672 </para></listitem> 1673 </varlistentry></variablelist> 1674 </sect3> 1675 1676 1677 <sect3 id="id_scripting_api_kile_input"> 1678 <title>Input</title> 1679 1680 <variablelist><varlistentry> 1681 <term><synopsis> 1682 String kile.input.getListboxItem(<parameter>String <replaceable>caption</replaceable></parameter>, <parameter>String <replaceable>label</replaceable></parameter>, <parameter>StringList <replaceable>list</replaceable></parameter>); 1683 </synopsis></term> 1684 <listitem><para> 1685 Function to let the user select an item from a list, which is shown as a listbox. <parameter>caption</parameter> is the text that is displayed in the title bar, <parameter>label</parameter> is the text that appears as the label for the list and <parameter>list</parameter> is the string list which is inserted into the list. 1686 </para></listitem> 1687 </varlistentry></variablelist> 1688 1689 <variablelist><varlistentry> 1690 <term><synopsis> 1691 String kile.input.getComboboxItem(<parameter>String <replaceable>caption</replaceable></parameter>, <parameter>String <replaceable>label</replaceable></parameter>, <parameter>StringList <replaceable>list</replaceable></parameter>); 1692 </synopsis></term> 1693 <listitem><para> 1694 Function to let the user select an item from a list, which is shown as a combobox. <parameter>caption</parameter> is the text that is displayed in the title bar, <parameter>label</parameter> is the text that appears as the label for the list and <parameter>list</parameter> is the string list which is inserted into the list. 1695 </para></listitem> 1696 </varlistentry></variablelist> 1697 1698 <variablelist><varlistentry> 1699 <term><synopsis> 1700 String kile.input.getText(<parameter>String <replaceable>caption</replaceable></parameter>, <parameter>String <replaceable>label</replaceable></parameter>); 1701 </synopsis></term> 1702 <listitem><para> 1703 Function to get a string from the user. <parameter>caption</parameter> is the text that is displayed in the title bar and <parameter>label</parameter> the text that appears as a label for the line edit. 1704 </para></listitem> 1705 </varlistentry></variablelist> 1706 1707 <variablelist><varlistentry> 1708 <term><synopsis> 1709 String kile.input.getLatexCommand(<parameter>String <replaceable>caption</replaceable></parameter>, <parameter>String <replaceable>label</replaceable></parameter>); 1710 </synopsis></term> 1711 <listitem><para> 1712 Function to get a &latex; command from the user. This means that only lower- and uppercase letters are allowed. <parameter>caption</parameter> is the text that is displayed in the title bar and <parameter>label</parameter> the text that appears as a label for the line edit. 1713 </para></listitem> 1714 </varlistentry></variablelist> 1715 1716 <variablelist><varlistentry> 1717 <term><synopsis> 1718 int kile.input.getInteger(<parameter>String <replaceable>caption</replaceable></parameter>, <parameter>String <replaceable>label</replaceable></parameter>, <parameter>int <replaceable>min = INT_MIN</replaceable></parameter>, <parameter>int <replaceable>max = INT_MAX</replaceable></parameter>); 1719 </synopsis></term> 1720 <listitem><para> 1721 Function to get an integer from the user. <parameter>caption</parameter> is the text that is displayed in the title bar. <parameter>label</parameter> is the text that appears as the label for the spin box. <parameter>min</parameter> and <parameter>max</parameter> are the minimum and maximum allowable values the user may choose. Default values are <literal>INT_MIN</literal> and <literal>INT_MAX</literal>. 1722 </para></listitem> 1723 </varlistentry></variablelist> 1724 1725 <variablelist><varlistentry> 1726 <term><synopsis> 1727 int kile.input.getPosInteger(<parameter>String <replaceable>caption</replaceable></parameter>, <parameter>String <replaceable>label</replaceable></parameter>, <parameter>int <replaceable>min = 1</replaceable></parameter>, <parameter>int <replaceable>max = INT_MAX</replaceable></parameter>); 1728 </synopsis></term> 1729 <listitem><para> 1730 Function to get a positive integer from the user. <parameter>caption</parameter> is the text that is displayed in the title bar. <parameter>label</parameter> is the text that appears as the label for the spin box. <parameter>min</parameter> and <parameter>max</parameter> are the minimum and maximum allowable values the user may choose. Default values are <literal>1</literal> and <literal>INT_MAX</literal>. 1731 </para></listitem> 1732 </varlistentry></variablelist> 1733 </sect3> 1734 1735 1736 <sect3 id="id_scripting_api_kile_wizard"> 1737 <title>Wizard</title> 1738 1739 <variablelist><varlistentry> 1740 <term><synopsis> 1741 void kile.wizard.tabular(); 1742 </synopsis></term> 1743 <listitem><para> 1744 Calls the <emphasis>Tabular wizard</emphasis>, which helps to write a tabular environment (see <xref linkend="wizard_array" role="select: title pageabbrv"/>). 1745 </para></listitem> 1746 </varlistentry></variablelist> 1747 1748 <variablelist><varlistentry> 1749 <term><synopsis> 1750 void kile.wizard.array(); 1751 </synopsis></term> 1752 <listitem><para> 1753 Calls the <emphasis>Array wizard</emphasis>, which helps to write an array environment (see <xref linkend="wizard_array" role="select: title pageabbrv"/>). 1754 </para></listitem> 1755 </varlistentry></variablelist> 1756 1757 <variablelist><varlistentry> 1758 <term><synopsis> 1759 void kile.wizard.tabbing(); 1760 </synopsis></term> 1761 <listitem><para> 1762 Calls the <emphasis>Tabbing wizard</emphasis>, which helps to write a tabbing environment (see <xref linkend="wizard_array" role="select: title pageabbrv"/>). 1763 </para></listitem> 1764 </varlistentry></variablelist> 1765 1766 <variablelist><varlistentry> 1767 <term><synopsis> 1768 void kile.wizard.floatEnvironment(); 1769 </synopsis></term> 1770 <listitem><para> 1771 Calls the <emphasis>Floats wizard</emphasis>, which helps to insert floating elements (see <xref linkend="wizard_float" role="select: title pageabbrv"/>). 1772 </para></listitem> 1773 </varlistentry></variablelist> 1774 1775 <variablelist><varlistentry> 1776 <term><synopsis> 1777 void kile.wizard.mathEnvironment(); 1778 </synopsis></term> 1779 <listitem><para> 1780 Calls the <emphasis>Math wizard</emphasis>, which helps to insert math environments (see <xref linkend="wizard_math" role="select: title pageabbrv"/>). 1781 </para></listitem> 1782 </varlistentry></variablelist> 1783 1784 <variablelist><varlistentry> 1785 <term><synopsis> 1786 void kile.wizard.postscript(); 1787 </synopsis></term> 1788 <listitem><para> 1789 Calls the <emphasis>Postscript Tools wizard</emphasis>, which may help to manipulate or rearrange Postscript documents (see <xref linkend="wizard_postscript" role="select: title pageabbrv"/>). 1790 </para></listitem> 1791 </varlistentry></variablelist> 1792 </sect3> 1793 1794 1795 <sect3 id="id_scripting_api_kile_script"> 1796 <title>Script</title> 1797 1798 <variablelist><varlistentry> 1799 <term><synopsis> 1800 String kile.script.name(); 1801 </synopsis></term> 1802 <listitem><para> 1803 Returns the basename of a running script (without path and extension). 1804 </para></listitem> 1805 </varlistentry></variablelist> 1806 1807 <variablelist><varlistentry> 1808 <term><synopsis> 1809 String kile.script.caption(); 1810 </synopsis></term> 1811 <listitem><para> 1812 Returns a string, which can be used as a caption of alert boxes. It looks like <userinput>Script: scriptname.js</userinput>. 1813 </para></listitem> 1814 </varlistentry></variablelist> 1815 </sect3> 1816 1817 1818 <sect3 id="id_scripting_api_kile_file"> 1819 <title>File</title> 1820 1821 <variablelist><varlistentry> 1822 <term><synopsis> 1823 Object kile.file.read(<parameter>String <replaceable>filename</replaceable></parameter>); 1824 </synopsis></term> 1825 <listitem><para> 1826 Read the contents of a text file. It is used like 1827 </para><para> 1828 Example: <function>var res = kile.file.read("path/to/file.txt");</function> 1829 </para><para> 1830 The return value <userinput>res</userinput> is an object (better: a map) with three properties: 1831 </para><para> 1832 <itemizedlist> 1833 <listitem><para><guilabel>status:</guilabel> Gives the status code of the operation, which can be 0 (no error), 1 (access failed) or 2 (access denied). So, if no error occurred, the value of <userinput>res.status</userinput> or <userinput>res["status"]</userinput> will be 0.</para></listitem> 1834 <listitem><para><guilabel>result:</guilabel> Contains the text of the given file.</para></listitem> 1835 <listitem><para><guilabel>message:</guilabel> Contains an error message, if an error occurred.</para></listitem> 1836 </itemizedlist> 1837 </para></listitem> 1838 </varlistentry></variablelist> 1839 1840 <variablelist><varlistentry> 1841 <term><synopsis> 1842 Object kile.file.read(); 1843 </synopsis></term> 1844 <listitem><para> 1845 The same as <literal>read(filename)</literal>, but no filename is given. A dialog will appear to select the file to read. 1846 </para></listitem> 1847 </varlistentry></variablelist> 1848 1849 <variablelist><varlistentry> 1850 <term><synopsis> 1851 Object kile.file.write(<parameter>String <replaceable>filename</replaceable></parameter>, <parameter>String <replaceable>text</replaceable></parameter>); 1852 </synopsis></term> 1853 <listitem><para> 1854 Write the given text into a file. It is used like 1855 </para><para> 1856 Example: <function>var res = kile.file.write("path/to/file.txt","Some text...");</function> 1857 </para><para> 1858 The return value <userinput>res</userinput> is an object (better: a map) with two properties: <literal>status</literal> and <literal>message</literal> (see <literal>read()</literal> for more information). 1859 </para></listitem> 1860 </varlistentry></variablelist> 1861 1862 <variablelist><varlistentry> 1863 <term><synopsis> 1864 Object kile.file.write(<parameter>String <replaceable>text</replaceable></parameter>); 1865 </synopsis></term> 1866 <listitem><para> 1867 The same as <literal>write(filename,text)</literal>, but no filename is given. A dialog will appear to choose a filename. 1868 </para></listitem> 1869 </varlistentry></variablelist> 1870 1871 <variablelist><varlistentry> 1872 <term><synopsis> 1873 String kile.file.getOpenFileName(<parameter>String <replaceable>startDir</replaceable></parameter>, <parameter>String <replaceable>filter</replaceable></parameter>); 1874 </synopsis></term> 1875 <listitem><para> 1876 Creates a modal file dialog and return the selected filename or an empty string if none is chosen. Note that with this method the user must select an existing filename. 1877 </para><para> 1878 Parameters: 1879 </para><para> 1880 <itemizedlist> 1881 <listitem><para><guilabel>startDir:</guilabel> Starting directory of the open dialog.</para></listitem> 1882 <listitem><para><guilabel>filter:</guilabel> A shell glob or a mime-type-filter that specifies which files to display. Refer to the KFileDialog documentation for more information on this parameter.</para></listitem> 1883 </itemizedlist> 1884 </para><para> 1885 Both parameters are optional. If you omit <literal>filter</literal>, all files will be displayed. If additionally <literal>startDir</literal> is omitted, the dialog will take the current document directory as starting point. 1886 </para></listitem> 1887 </varlistentry></variablelist> 1888 1889 <variablelist><varlistentry> 1890 <term><synopsis> 1891 String kile.file.getSaveFileName(<parameter>String <replaceable>startDir</replaceable></parameter>, <parameter>String <replaceable>filter</replaceable></parameter>); 1892 </synopsis></term> 1893 <listitem><para> 1894 Creates a modal file dialog and returns the selected filename or an empty string if none is chosen. Note that with this method the user need not select an existing filename. 1895 See <literal>getOpenFileName()</literal> for an explanation of the parameters. 1896 </para></listitem> 1897 </varlistentry></variablelist> 1898 1899 </sect3> 1900 1901 </sect2> 1902 1903 </sect1> 1904 1905 1906 <sect1 id="id_scripting_examples"> 1907 <title>Examples</title> 1908 1909 <para>Some examples may help you to understand how to use the scripting API. These examples and some more are found in the scripting directory of &kile;: <filename>KILE_APP_DIR/scripts/</filename>. Each script contains a short description.</para> 1910 1911 <sect2 id="id_scripting_example1"> 1912 <title>Example 1: replace environment name</title> 1913 1914 <para>Replace a surrounding &latex; environment with another, where the relative cursor position will not be changed. <userinput>\begin{abc}...\end{abc}</userinput> for example can be changed to <userinput>\begin{xyz}...\end{xyz}</userinput>.</para> 1915 1916 <programlisting> 1917 var range = document.environmentRange(false); 1918 if ( range.isValid() ) { 1919 var envname = kile.input.getLatexCommand("Enter Environment","New environment name:"); 1920 if ( envname != '' ) { 1921 replaceEnvCommand(envname,range); 1922 } 1923 } 1924 else { 1925 kile.alert.sorry("No surrounding LaTeX environment found."); 1926 } 1927 1928 function replaceEnvCommand(newEnv,r) 1929 { 1930 var c = view.cursorPosition(); 1931 1932 var envname = document.environmentName(); 1933 1934 if ( envname != "" ) { 1935 var beginRange = new Range(r.start,new Cursor(r.start.line,r.start.column+8+envname.length)); 1936 var endRange = new Range(new Cursor(r.end.line,r.end.column-6-envname.length),r.end); 1937 1938 document.editBegin(); 1939 document.replaceText(endRange,"\\end{"+newEnv+"}"); 1940 document.replaceText(beginRange,"\\begin{"+newEnv+"}"); 1941 document.editEnd(); 1942 } 1943 } 1944 </programlisting> 1945 </sect2> 1946 1947 <sect2 id="id_scripting_example2"> 1948 <title>Example 2: replace a &latex; font command</title> 1949 1950 <para>Replace a surrounding &latex; font command with another font command, when the cursor is placed inside the texgroup. The relative cursor position will not be changed. <userinput>\textbf{abc}</userinput> for example can be changed to <userinput>\textit{abc}</userinput>.</para> 1951 1952 <programlisting> 1953 var fontCommands = new Array("\\textbf","\\textit","\\textsl","\\texttt", 1954 "\\textsc","\\textrm","\\textsf","\\emph"); 1955 1956 var range = document.texgroupRange(false); 1957 if ( range.isValid() ) { 1958 replaceFontCommand(range); 1959 } 1960 else { 1961 kile.alert.sorry("No surrounding TeX group found."); 1962 } 1963 1964 function replaceFontCommand(r) 1965 { 1966 var c = view.cursorPosition(); 1967 1968 document.editBegin(); 1969 view.setCursorPosition(r.start); 1970 var cmd = document.latexCommand(); 1971 var index = fontCommands.indexOf(cmd); 1972 if ( index >= 0 ) { 1973 var cmdRange = document.latexCommandRange(); 1974 if ( cmdRange.isValid() ) { 1975 var newcommand = kile.input.getListboxItem("Choose", 1976 "Choose font command:",buildCmdList(cmd)); 1977 if ( newcommand != "" ) { 1978 document.replaceText(cmdRange,newcommand); 1979 c.column = c.column - (cmd.length - newcommand.length); 1980 } 1981 } 1982 / view.setCursorPosition(c); 1983 } 1984 else { 1985 kile.alert.sorry("No surrounding font command found."); 1986 } 1987 document.editEnd(); 1988 } 1989 1990 function buildCmdList(current) 1991 { 1992 var result = new Array(); 1993 for ( i=0; i<fontCommands.length; ++i ) { 1994 if ( fontCommands[i] != current ) { 1995 result.push(fontCommands[i]); 1996 } 1997 } 1998 return result; 1999 } 2000 </programlisting> 2001 2002 </sect2> 2003 2004 <sect2 id="id_scripting_example3"> 2005 <title>Example 3: surround selected text</title> 2006 2007 <para>Surround selected text with a TeX command, where the relative cursor position will not be changed. <userinput>abc</userinput> for example can be changed to <userinput>\texcommand{abc}</userinput>.</para> 2008 2009 <programlisting> 2010 var range = view.selectionRange(); 2011 2012 if ( range.isValid() ) { 2013 var cmd = kile.input.getLatexCommand("Choose","Choose surrounding LaTeX command:"); 2014 if ( cmd != "" ) { 2015 surroundTexCommand("\\"+cmd,range); 2016 } 2017 } 2018 else { 2019 kile.alert.sorry("No selection found."); 2020 } 2021 2022 function surroundTexCommand(cmd,r) 2023 { 2024 var c = view.cursorPosition(); 2025 2026 document.editBegin(); 2027 view.clearSelection(); 2028 document.insertText(r.end,"}"); 2029 document.insertText(r.start,cmd+"{"); 2030 2031 c.column = c.column + cmd.length + 2; 2032 view.setCursorPosition(c); 2033 document.editEnd(); 2034 } 2035 </programlisting> 2036 </sect2> 2037 2038 </sect1> 2039 2040 </chapter>