Exemples

Quelques exemples pourraient vous aider à comprendre comment utiliser l'API d'écriture de scripts. Ces exemples et bien d'autres sont disponibles dans le dossier de scripts de Kile : KILE-APP-DIR/scripts/. Chaque script contient une description succincte.

Exemple 1 : remplacer le nom de l'environnement

Remplace l'environnement LATEX englobant avec un autre, où la position relative du curseur ne sera pas modifiée. \begin{abc}…\end{abc}, par exemple, peut être changé en \begin{xyz}…\end{xyz}.

var range = document.environmentRange(false);
if ( range.isValid() ) {
        var envname = kile.input.getLatexCommand("Saisissez l'environnement","Nouveau nom d'environnement : ");
        if ( envname != '' ) {
                replaceEnvCommand(envname,range);
        }
}
else {
        kile.alert.sorry("Aucun environnement LaTeX englobant trouvé.");
}

function replaceEnvCommand(newEnv,r)
{
        var c = view.cursorPosition();

        var envname = document.environmentName();

        if ( envname != "" ) {
                var beginRange = new Range(r.start,new Cursor(r.start.line,r.start.column+8+envname.length));
                var endRange = new Range(new Cursor(r.end.line,r.end.column-6-envname.length),r.end);

                document.editBegin();
                document.replaceText(endRange,"\\end{"+newEnv+"}");
                document.replaceText(beginRange,"\\begin{"+newEnv+"}");
                document.editEnd();
        }
}

Exemple 2 : remplacer une commande LATEX de polices de caractères

Remplace la commande LATEX de police englobante avec une autre commande, quand le curseur est placé à l'intérieur du groupe de texte. La position relative du curseur ne sera pas changée. Par exemple, \textbf{abc} peut être changé en \textit{abc}.

var fontCommands = new Array("\\textbf","\\textit","\\textsl","\\texttt",
                             "\\textsc","\\textrm","\\textsf","\\emph");

var range = document.texgroupRange(false);
if ( range.isValid() ) {
        replaceFontCommand(range);
}
else {
        kile.alert.sorry("Aucun groupe LaTeX englobant.");
}

function replaceFontCommand®
{
        var c = view.cursorPosition();

        document.editBegin();
        view.setCursorPosition(r.start);
        var cmd = document.latexCommand();
        var index = fontCommands.indexOf(cmd);
        if ( index 
>= 0 ) {
                var cmdRange = document.latexCommandRange();
                if ( cmdRange.isValid() ) {
                        var newcommand = kile.input.getListboxItem("Choose",
                                                    "Choose font command:",buildCmdList(cmd));
                        if ( new command != "" ) {
                                document.replaceText(cmdRange,newcommand);
                                c.column = c.column - (cmd.length - newcommand.length);
                        }
                }
/                view.setCursorPosition©;
        }
        else {
                kile.alert.sorry("No surrounding font command found.");
        }
        document.editEnd();
}

function buildCmdList(current)
{
        var result = new Array();
        for ( i=0; i<fontCommands.length; ++i ) {
                if ( fontCommands[i] != current ) {
                        result.push(fontCommands[i]);
                }
        }
        return result;
}

Exemple 3: entourer le texte sélectionné

Entourer le texte sélectionné à l'aide commande TeX, où la position relative du curseur ne pourra plus être changée. Par exemple, abc peut être changé en \texcommand{abc}.

var range = view.selectionRange();

if ( range.isValid() ) {
        var cmd = kile.input.getLatexCommand(« Choisir », « Choisir la commande LaTeX englobante :  »);
        if ( cmd != "" ) {
                surroundTexCommand("\\"+cmd,range);
        }
}
else {
        kile.alert.sorry("Aucune sélection trouvée.");
}

function surroundTexCommand(cmd,r)
{
        var c = view.cursorPosition();

        document.editBegin();
        view.clearSelection();
        document.insertText(r.end,"}");
        document.insertText(r.start,cmd+"{");

        c.column = c.column + cmd.length + 2;
        view.setCursorPosition(c);
        document.editEnd();
}