Le 03/10/2014 16:26, Jean-Marc Lasgouttes a écrit :
Le 03/10/2014 15:03, Stéphane Mourey a écrit :
J'étais en train de jeter un oeil dans la doc "Options avancées",
histoire de voir si je voyais quelque chose qui pourrait ressembler à ce
que pourrai imaginer être ce que tu appelles un "InsetInfo" dans un de
tes messages précédents. Et j'arrive au chapitre 5 "Le Serveur Lyx". Et
tout à coup, je me suis demandé s'il ne serait pas plus simple de faire
une macro LaTeX qui passe par le shell pour interroger le serveur LyX en
utilisant la fonciton LFUN_STATISTICS (trouvés dans l'aide "Fonctions
LyX"), plutôt que de faire une modification en C++.
Oui, on pourrait tout à fait créer une telle fonction, qui ne crée pas
le dialogue. On pourrait aussi imaginer passer un paramètre à la
fonction (comme "statistics words") pour demander de juste retourner
le nombre de mots. Ça normalement ce n'est pas très difficile.
JMarc
Bonjour,
Voilà, j'ai commencé à jeter un coup d'oeil aux sources, et bien que
tout cela soit encore bien hermétique pour moi, j'ai réussi à glane
quelques éléments jusdicieux à l'aide de quelques greps bien utilisés.
Voici :
* ce qui m'intéresse se joue dans quatre fichiers "seulement" :
LyXAction.cpp, FuncCode.h, BufferView.cpp, et Buffer.cpp (y
aura-t-il lieu d'intervenir sur Buffer.h et BufferView.h ?). Il
semblerait qu'il n'y ait pas de modifications nécessaires dans
Buffer.cpp bien que l'essentiel de l'action s'y déroule.
* je ne comprend pas bien le fonctionnement de LyXAction.cpp, mais
j'ai l'impression qu'il sert à faire le lien entre la commande reçue
par le serveur (statistics) et le nom de la fonction en interne
(LFUN_STATISTICS)
* j'aurai donc besoin d'y rajouter une ligne de code du style
{ LFUN_STATISTICS_NOVIEW, "statistics-noview", ReadOnly, /Buffer /}
en ajoutant les commentaires de documentation qui vont bien
* FuncCode.h semble lister les fonctions LyX en utilisant leur nom
interne, il faudrait que j'y ajoute une ligne :
LFUN_STATISTICS_NOVIEW, // brokenclock 20141006
* dans BufferView.cpp, il faudrait que j'ajouter
LFUN_STATISTICS_NOVIEW dans la liste des cas de la ligne 1068 à 1089,
* dans le même, il faut que je m'inspire du bloc "case
LFUN_STATISTICS" commençant à la ligne 1656 pour créer un autre bloc
"case LFUN_STATISTICS_NOVIEW",
* le sens du bloc existant est essentiellement d'appeler le code
réellement fonctionnel (qui se trouve dans Buffer.cpp), puis de
mettre en forme le résultat et de l'afficher.
* dans le bloc à produire, à la limite, que je me contenter de
récupérer les mêmes informations, mais au lieu de le mettre en forme
pour un affichage, j'envoie celui qui m'intéresse vers ~/.lyxpipe.out
* cela fait, je pourrai lancer des commandes du style :
echo "LYXCMD:bro:statistics-noview:words" >~/.lyxpipe.in //
nombre de mots
echo "LYXCMD:bro:statistics-noview:signs-with-spaces"
>~/.lyxpipe.in // nombre de signes (espaces inclus)
echo "LYXCMD:bro:statistics-noview:signs-without-spaces"
>~/.lyxpipe.in // nombre de mots (espaces exclus)
* et je pourrai alors lire le résultat dans ~/.lyxpipe.out.
Et maintenant, les questions qui vont avec tout ça :
* j'ai bon ?
* comment je reçois les paramètres reçus par lyxserver dans
BufferView.cpp (dans le bloc "case LFUN_STATISTICS_NOVIEW) ?
* comment je fais pour écrire proprement dans ~/.lyxpipe.out ?
Merci pour votre aide.
Cordialement,
Stéphane Mourey
--
Blog: Impossible Exil <http://impossible-exil.info>