J'ai essayé de suivre un peu le modèle utilisé pour TeX pour le repliage de code, mais là où les marques pour TeX sont nettes (par exemple avec \begin et \end), dans txt2tags c'est plus compliqué, parce que les parties à replier (les entêtes) sont de type :
== header 1 ==
texte
== header 2 ==
texte
=== sous header ===
etc
et donc il n'est pas aisé de savoir où ça commence et où ça s'arrête. J'avais donc pensé faire commencer ça à la fin d'une ligne avec ==\n et l'arrêter en début de ligne avec \n== par exemple, en me basant sur le code de :
[^] # Re: normal
Posté par B16F4RV4RD1N . En réponse au message Trouver la fin d'une ligne après un charactère. Évalué à 2.
La coloration existe déjà, par contre pour pouvoir permettre au code de se replier en fonction de certains critères, je n'y arrive pas.
Pour la coloration, ça avait été fait à partir du code du lexer de Markdown, et ça donnait ça : http://scintilla.hg.sourceforge.net/hgweb/scintilla/scintill(...)
J'ai essayé de suivre un peu le modèle utilisé pour TeX pour le repliage de code, mais là où les marques pour TeX sont nettes (par exemple avec \begin et \end), dans txt2tags c'est plus compliqué, parce que les parties à replier (les entêtes) sont de type :
== header 1 ==
texte
== header 2 ==
texte
=== sous header ===
etc
et donc il n'est pas aisé de savoir où ça commence et où ça s'arrête. J'avais donc pensé faire commencer ça à la fin d'une ligne avec ==\n et l'arrêter en début de ligne avec \n== par exemple, en me basant sur le code de :
http://scintilla.hg.sourceforge.net/hgweb/scintilla/scintill(...)
static int classifyFoldPointTeXPaired(const char* s) {
int lev=0;
if (!(isdigit(s[0]) || (s[0] == '.'))){
if (strcmp(s, "begin")==0||strcmp(s,"FoldStart")==0||
strcmp(s,"abstract")==0||strcmp(s,"unprotect")==0||
strcmp(s,"title")==0||strncmp(s,"start",5)==0||strncmp(s,"Start",5)==0||
strcmp(s,"documentclass")==0||strncmp(s,"if",2)==0
)
lev=1;
if (strcmp(s, "end")==0||strcmp(s,"FoldStop")==0||
strcmp(s,"maketitle")==0||strcmp(s,"protect")==0||
strncmp(s,"stop",4)==0||strncmp(s,"Stop",4)==0||
strcmp(s,"fi")==0
)
lev=-1;
}
return lev;
}
Mais si ça fonctionne bien avec n'importe quel symbole ou partie de texte entrée, avec un \n ça bloque l'analyse.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it