coloration syntaxique avec kedit

coloration syntaxique avec kedit - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 08-10-2004 à 15:10:34    

Bonjour,
 
Je cherche a ecrire un shema de coloration syntaxique pour kedit. Enfin j'aimerais deja savoir si c'est possible d'en faire un personalisé, ensuite savoir quelle est la syntaxe de ce type de fichier...
 
Si vous avez des infos là dessus merci de m'en faire profiter ;)
 
@+


---------------
#NetOp. T'as pas 10G ?
Reply

Marsh Posté le 08-10-2004 à 15:10:34   

Reply

Marsh Posté le 08-10-2004 à 16:56:11    

je vais répondre à côté mais tu devrais utiliser plutôt kwrite, il a déjà un très grand nombre de cschéma de coloration syntaxique dispos
 
Note : kate doit utiliser kwrite, kile (éditeur tex) aussi


Message édité par Mjules le 08-10-2004 à 16:56:37

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 08-10-2004 à 17:49:55    

en fait j'utilises deja kwrite, mais je les confonds tout le temps. Mon probleme c'est que je ne veux pas un mode de coloration syntaxique existant mais je veux en faire un pour un format de fichier bien specifique...


---------------
#NetOp. T'as pas 10G ?
Reply

Marsh Posté le 08-10-2004 à 18:11:22    

j'ai vu qu'on pouvait télécharger das nouveaux schémas, faudrait voir om il les mets :/


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 09-10-2004 à 16:24:04    

ben j'ai pas trouvé justement, alors avant de passer 3h a chercher ou c'est et comment ça marche je preferes demander ;)
J'ai rien trouver sur kde.org en tout cas :(


---------------
#NetOp. T'as pas 10G ?
Reply

Marsh Posté le 09-10-2004 à 17:29:03    

NicolBolas a écrit :

ben j'ai pas trouvé justement, alors avant de passer 3h a chercher ou c'est et comment ça marche je preferes demander ;)
J'ai rien trouver sur kde.org en tout cas :(


Les fichiers de coloration sont dans share/apps/katepart/syntax qui peut varier selon l'installation, chez moi c'est /usr/share/apps/katepart/syntax.
 
Et tu peux en mettre normalement d'autre dans ton .kde : ~/.kde/share/apps/katepart/syntax.
 
Pour en faire un nouveau le + simple est de partir d'un existant assez proche et de le modifier. Le format est assez compréhensible. Il y a des bribes d'explications ici : http://kate.kde.org/doc/hlhowto.php
 
En gros tu définis des contextes et, dans chaque contextes, des règles qui font changer de contextes (genre détection de regexp ou de caractères). Chaque contexte a des propriétés d'affichage. Changement de contexte == empilement du nouveau contexte sur la pile de contexte, et tu as donc des règles qui permettent de dépiler et de retourner dans le contexte précédent (== contexte spécial #pop).
 
Enfin pas facile à expliquer comme cela mais en lisant quelques uns de ces fichiers pour un langage que tu connais tu devrais comprendre comment ca marche :)
 
Edit: ceci concerne katepart qui est utilisé par kwrite (enfin, par défaut) et par kate et d'autres. kedit n'a a ma connaissance pas de support de la coloration syntaxique car cet éditeur est destiné à rester le plus simple possible.


Message édité par djdie le 09-10-2004 à 17:31:40
Reply

Marsh Posté le 13-10-2004 à 13:14:20    

bon j'ai pu recuperer toutes les infos dispos mais je n'ai toujours pas compris comment marchent les fichier de coloration syntaxique. Quelqu'un a compris le fonctionnement des contextes et les différentes façons de detecter les mots clefs, les balises et autres?
 
pour info voila grosso modo comment sont construits mes fichiers :
 
NOM_VARIABLE=chaine_de_carractère;
 
à plusieurs reprises
 
DEBUT_BALISE
FIN_BALISE
 
qui doivent etre detectées comme un bloc avec expand/collapse
 
MOTS_CLEFS a representer d'une couleur differente, ils sont contenus entre deux \
 
\ a representer d'une couleur differente quelle que soit sa position
 
toute information est la bienvenue...


---------------
#NetOp. T'as pas 10G ?
Reply

Marsh Posté le 13-10-2004 à 17:26:39    

Mets voir un exemple de tes fichiers (un extrait avec un peu tout); je comprends surtout pas trop le DEBUT_BALSE FIN_BALISE ? DEBUT_ et FIN_ sont des préfixes obligatoires ou c'était juste pour l'exemple ?
 
J'essaierai de te faire un fichier pour la coloration syntaxique - ca devrait pas être trop dur, j'en ai déjà fait plusieurs.

Reply

Marsh Posté le 13-10-2004 à 18:27:28    

DEBUT_ et FIN_ sont des prefixes et le reste de la balise doit garder la meme couleur...
 
voila un exemple de fichier vide :
 

Code :
  1. NOM_SPY=;
  2. INFO_ONLINE=;
  3. CATEGORIE=;
  4. DEBUT_CHEMINS_REGISTRE
  5. FIN_CHEMINS_REGISTRE
  6. DEBUT_FICHIERS_EXEC
  7. FIN_FICHIERS_EXEC
  8. DEBUT_PROCESSUS_A_TUER
  9. FIN_PROCESSUS_A_TUER
  10. DEBUT_DLL_A_DECHARGER
  11. FIN_DLL_A_DECHARGER
  12. DEBUT_FICHIERS_A_EFFACER
  13. FIN_FICHIERS_A_EFFACER
  14. DEBUT_REPERTOIRES_A_EFFACER
  15. FIN_REPERTOIRES_A_EFFACER
  16. DEBUT_CLES_REGISTRE_A_EFFACER
  17. FIN_CLES_REGISTRE_A_EFFACER
  18. NBRE_ELEMENTS=;


 
dans les blancs tu as soit des paths de clefs de registre, de fichiers ou de répertoires, sachant que dans les paths de  fichiers/repertoires il y a des raccorcis (alias des variables systemes quoi) genre \APPDATA\ au lieu de \D&S\$user\application data\ . C'est une liste de mots clefs à faire ressortir (en gras quoi)
 
Merci pour ton aide, meme si tu peux juste me trouver un exemple assez depouillé avec mes differents cas de figures, ça m'aidera beacoup ;)


---------------
#NetOp. T'as pas 10G ?
Reply

Marsh Posté le 13-10-2004 à 23:56:24    

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="Test" version="1.00" kateversion="2.3" section="Sources" extensions="*.test" priority="5">
  <highlighting>
    <contexts>
      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
        <RegExpr attribute="Variable" context="VarEq" String="^\w+(?=\s*=)"/>
        <RegExpr attribute="Keyword" context="#pop" String="^FIN_\w+" endRegion="Bloc" />
        <RegExpr attribute="Keyword" context="Normal" String="^DEBUT_\w+" beginRegion="Bloc" />
      </context>
      <context attribute="Symbol" lineEndContext="#pop" name="VarEq" fallthrough="true" fallthroughContext="VarDecl">
        <RegExpr attribute="Symbol" context="#stay" String="\s|="/>
      </context>  
      <context attribute="Value" lineEndContext="#pop#pop" name="VarDecl">
        <RegExpr attribute="Keyword" context="#stay" String="\\[^\\]*\\" />
        <DetectChar attribute="Backslash" context="#stay" char="\" />
        <DetectChar attribute="Symbol" context="#pop#pop" char=";" />
      </context>
    </contexts>
    <itemDatas>
      <itemData name="Normal Text"  defStyleNum="dsNormal"/>
      <itemData name="Keyword"      defStyleNum="dsKeyword"/>
      <itemData name="BackSlash"    defStyleNum="dsFunction"/>
      <itemData name="Value"        defStyleNum="dsString"/>
      <itemData name="Variable"     defStyleNum="dsChar"/>
      <itemData name="Comment"      defStyleNum="dsComment"/>
      <itemData name="Symbol"       defStyleNum="dsNormal"/>
      <itemData name="Alert"        defStyleNum="dsAlert" />
    </itemDatas>
  </highlighting>
</language>


Voici un exemple qui donne un premier résultat. C'est une sorte de machine à états : elle commence dans le premier context avec l'attribut "Normal Text". Ensuite elle regarde si une des règle s'applique. Exemple: détection de la regexpr ^\w+(?=\s*=) (i.e. une chaîne de caractères suivie d'un signe égal, sans capturer le signe égal) et en cas de détection, elle saute dans le nouveau contexte en empilant l'ancien...
 
On est alors dans le contexte VarEq et le processus recommence. Si elle trouve eds espaces ou des =, elle les colorie. Sinon, comme aucune règle ne s'est appliquée, elle part dans le contexte de "fallback".
 
On est alors dans le contexte VarDecl. Ici aussi quelques règles pour colorier les \ et les \blabla\. Et une règle qui capture le ; et remonte de deux étages dans la pile de contexte (=> retour au contexte initial).


Message édité par djdie le 13-10-2004 à 23:58:57
Reply

Marsh Posté le 13-10-2004 à 23:56:24   

Reply

Marsh Posté le 14-10-2004 à 10:02:11    

et ben ça marche a merveille, merci beaucoup :D J'ai plus qu'à rajouter mes listes de keywords et c'est impécable!


---------------
#NetOp. T'as pas 10G ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed