Re-bonjour,

Je réponds vite, car je n'ai plus beaucoup de temps là, tout de suite, mais j'ai de nouveaux éléments :
Le 10/10/2014 17:25, Jean-Marc Lasgouttes a écrit :
Je dirais "words|signs|signs-space" comme possibilité d'arguments. Il vaut mieux être bref.
J'ai corrigé en :

     * \li Syntax: server-get-statistics <words|signs|signs-space>
     * \li Params: <words|signs|signs-space> indicate the statistic to
   get, none for all space separated

On peut supposer, comme dans la commande wc, que sans argument on renvoie les 3 valeurs séparées par un espace. Dans ce cas, le Argument n'est pas nécessaire.
OK.
D'autre part, dans la classe Buffer, on n'a pas de curseur (c'est un buffer qui n'est pas nécessairement en train d'être édité). Par exemple, quand on fait un export depuis la ligne de commande, il n'y a pas de curseur.
le "cur" dans le code, c'est le curseur ? Il se comporte comment en ligne de commande ?
Tu as raison qu'il serait utile d'avoir un curseur, ce qui veut dire qu'il faudrait déplacer le code dans Text3.cpp (== un morceau de texte en train d'être édité). Dans ce cas, tu fais comme les autres exemples de serveur.
Je l'ai fait, déplaçant mes "case" de Buffer vers les fonctions équivalentes Test3 (et en supprimant les this). Mais les fonction "updateStatistics", "wordCount" et "charCount" ne sont-elle pas des méthodes de Buffer ? Du coup, j'ai essayé de le récupérer le buffer dans une variable, pour appeler les méthodes...

Voilà ce que cela donne :

        case LFUN_SERVER_GET_STATISTICS:
            DocIterator from, to;
            if (cur.selection()) {
                from = cur.selectionBegin();
                to = cur.selectionEnd();
            } else {
                from = doc_iterator_begin(&buffer_);
                to = doc_iterator_end(&buffer_);
            }

            Buffer buffer = cur.buffer();
            buffer.updateStatistics(from, to);
            switch (cmd.getArg(0)) {
                case "words":
                    cur.message(buffer.wordCount());
                    break;
                case "signs":
                    cur.message(buffer.charCount(false));
                    break;
                case "signs-space":
                    cur.message(buffer.charCount(true));
                    break;
                default:
                    cur.message(buffer.wordCount() +
   buffer.charCount(false) + buffer.charCount(true));
            }
            break;

Oui, tu as tous les morceaux, et n'hésite pas lancer la compilation, cela peut faire faire des découvertes :)

./autogen.sh > ok
./configure >configure: error: cannot compile a simple Qt executable. Check you have the right $QTDIR.

 Hum!

Mes filles viennent de rentrer, c'est fini pour aujourd'hui, il faut que je "babysite" :)

Merci et bon week-end.

Stéphane Mourey

--
Blog: Impossible Exil <http://impossible-exil.info>

Répondre à