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>