Outils pour ajouter les Declare des procédures d'un fichier
Bon a savoir mais je prefere personnellement l'editeur officiel, je jetterais quand meme un oeil sur la derniere version de jaPBE des que j'ai un peu de temps
, Au fait, bravo pour le boulot fourni sur tes nombreux autres programmes, une suggestion quand meme, pourrais tu fournir les codes sources, ca pourrait etre un plus apreciable...

Salut à Toutes et à Tous,
Ah JaPBe, un réel plaisir pour PureBasic
Pendant que j'y suis : FELICITATIONS pour tes produits qui demandent énormément de travail! (JaPBe, PureForm...)
Une petite question Gnozal...Que veut dire jaPBe ?
C'est une concaténation de mots clefs
En outre, puisque je suis dans les éloges, je tiens à remercier tous les purebasiciens et purebasiciennes pour les aides et autres codes sources qui sont à mis à disposition de la communauté.
Cordialement,
Ah JaPBe, un réel plaisir pour PureBasic

Pendant que j'y suis : FELICITATIONS pour tes produits qui demandent énormément de travail! (JaPBe, PureForm...)
Une petite question Gnozal...Que veut dire jaPBe ?
C'est une concaténation de mots clefs

En outre, puisque je suis dans les éloges, je tiens à remercier tous les purebasiciens et purebasiciennes pour les aides et autres codes sources qui sont à mis à disposition de la communauté.

Cordialement,
c'est clair, que c'est un sacré boulotSehka a écrit :Salut à Toutes et à Tous,
Ah JaPBe, un réel plaisir pour PureBasic![]()
Pendant que j'y suis : FELICITATIONS pour tes produits qui demandent énormément de travail! (JaPBe, PureForm...)

et puis pour JaPBE , je ne saurai plus m'en passer !!
je ne sais meme pas comment font ceux qui ne l'utilise pas !!
rien que pour la mise en forme du code avec Ctrl+Tab, il est indispensable

J usteSehka a écrit : Une petite question Gnozal...Que veut dire jaPBe ?
C'est une concaténation de mots clefs![]()
A nother
P ure
B asic
E ditor
voila ! Japbe a été programmé par G P I ,
puis repris par Gnozal , pour continuer a le maintenir

Interessant en effet Ctrl+Tab, j'ai un peu examiné le code de JaPBE, j'ai extrait la procedure AutoIndentSelection2() apparement optimisé par gnozal et l'autre faite par l'auteur initial AutoIndentSelection(), bon je pensais faire ca rapidement pour l'editeur officiel, le hic c'est que la procedure d'indentation depend etroitement de scintilla, il faudrait a priori readapter les procedures associés et ils sont nombreux les bougres, autant reecrire une telle fonction mais ca prendrait trop de temps, c'est quand meme aberrant que ce type de fonction manque a l'editeur officiel, je me poses une question, pourquoi maintenir jaPBE au lieu d'ameliorer par des petits utilitaires (codé avec le language) l'editeur officiel de purebasic, ca pourrait profiter egallement aux autres version linux et mac...
Un programme à ajouter à l'éditeur officiel existe déja, créé par LSI (Le Soldat Inconnu). Fouillez sur son site pour un petit programme qui s'appelle
PBSyntax.exe dans la section PureBasic.
http://www.lsi-dev.com/index.php
Pour être honnète, ce genre de fonctionnalité se doit d'être intégré à l'éditeur et non disponible par l'intermédiaire d'un plugin. C'est la seule raison pour laquelle je travaille avec jaPBe. Même si je préfaire, et de loin, la simplicité de l'éditeur officiel.
A+
Guimauve
PBSyntax.exe dans la section PureBasic.
http://www.lsi-dev.com/index.php
Pour être honnète, ce genre de fonctionnalité se doit d'être intégré à l'éditeur et non disponible par l'intermédiaire d'un plugin. C'est la seule raison pour laquelle je travaille avec jaPBe. Même si je préfaire, et de loin, la simplicité de l'éditeur officiel.
A+
Guimauve
c'est pas si sorcier a faire un Ctrl-tab, j'en ai fait un pour mon éditeur
PureGolo
je surveille l'appuis sur les touches Ctrl+Tab
puis je passe en revu chaque ligne de l'éditeur
en fonction de ce que je trouve , comme commandes PureGolo
j'ajoute un espace (ou une tabulation, je sais plus
)
ou bien je retire, cette espace , ou cet tabulation
il suffit de faire une variable qui s'incremente a la rencontre d'un "IF" par exemple , et qui se décremente a la rencontre d'un Endif
pareil avec les autres commandes qui seraient concernées par l'indentation, une seul variable devrai suffire en principe
bref rien de bien compliqué
pareil au moment de l'entrée d'une commande, incrémenter la variable ou décrémenter la variable suivant la commande qui est entré en début de ligne ..
Franchement, c'est pas dur a faire comme truc
je ne comprends pas non plus pourquoi l'éditeur officiel ne l'a pas
mais mon pure Golo lui si !
PureGolo

je surveille l'appuis sur les touches Ctrl+Tab
puis je passe en revu chaque ligne de l'éditeur
en fonction de ce que je trouve , comme commandes PureGolo
j'ajoute un espace (ou une tabulation, je sais plus

ou bien je retire, cette espace , ou cet tabulation

il suffit de faire une variable qui s'incremente a la rencontre d'un "IF" par exemple , et qui se décremente a la rencontre d'un Endif

pareil avec les autres commandes qui seraient concernées par l'indentation, une seul variable devrai suffire en principe

bref rien de bien compliqué

pareil au moment de l'entrée d'une commande, incrémenter la variable ou décrémenter la variable suivant la commande qui est entré en début de ligne ..
Franchement, c'est pas dur a faire comme truc

je ne comprends pas non plus pourquoi l'éditeur officiel ne l'a pas

mais mon pure Golo lui si !

Bon, j'ai fait une recherche dans le forum sur PBSyntax, il me semble que ce n'est pas fiable, d'apres ce que j'ai lu, beaucoups on eu des probleme en l'utilisant, maintenant faire ce genre de fonction de zero en tenant compte de la syntaxe de purebasic n'est peut etre pas dur mais necessiterait beaucoup de temps et je n'ai vraiment pas que ca a faire
surtout que cette fonction devrait logiquement etre integre dans tous editeur de language qui se respecte...

Bonjour à tous,
j'ai adapté le code qui permet de lister les déclarations pour les avoir dans l'ordre alphabétique (nom de procédure)
Merci à Marc et Coolman pour les versions
j'ai adapté le code qui permet de lister les déclarations pour les avoir dans l'ordre alphabétique (nom de procédure)
Merci à Marc et Coolman pour les versions
Code : Tout sélectionner
; Description : au lieu d'ajouter manuellement les Declare en début des fichiers sources. ce code permet
; de le faire automatiquement, cree les declare relatifs aux procedures du code a traiter, à compiler en V4
; et à ajouter au menu Outils de l'IDE....
;
; ne pas oublier dans la section arguments de mettre "%FILE" au lieu de seulement %FILE sinon les noms
; de fichiers avec espace ne passent pas...
;
; Code creé par Mark trouvé sur le forum francais de purebasic
;
; Modifié par Coolman le 12 Fevrier 2007, le resultat est transferé dans le presse papier a charge pour
; l'utilisateur de faire un coller en debut de code...
;
; Modifié par Denis le 25 Novembre 2007, le resultat transferé dans le presse papier est trié par ordre
; alphabétique des noms de procedure
;
Structure MyDeclare
NomProc.s
TypeRetour.s
EndStructure
Declare.l CheckDeclare(Chaine.s)
Declare.s GetProcedureName(Chaine.s)
Declare.l CheckString(Chaine.s)
EnableExplicit
Global NewList MyProcedures.s()
Global NewList MyDeclarations.MyDeclare()
Define Result.l = 0
Define Pos.l = 0
Define SourceFileName.s = ProgramParameter()
Define Chaine.s = ""
Define TempDir.s = GetTemporaryDirectory()
Define Tmpchaine.s = ""
Define Compteur.l = 0
Define RC.s = Chr(13) + Chr(10)
Procedure.l CheckDeclare(Chaine.s)
Define Result.l = #False
Define MyProcName.s = ""
Define Data01.s = Trim(Chaine)
If FindString(Data01,"Declare",1) = 1
MyProcName = GetProcedureName(Data01)
ResetList(MyProcedures())
While NextElement(MyProcedures())
If MyProcedures() = MyProcName
Result = #True
Break
EndIf
Wend
EndIf
ProcedureReturn Result
EndProcedure
Procedure.s GetProcedureName(Chaine.s)
Define Ptr01.l = 0
Define Ptr02.l = 0
Define Result.s = ""
Define Data01.s = Trim(Chaine)
Ptr01 = FindString(Data01," ",1)
Ptr02 = FindString(Data01,"(",1)
If Ptr01 > 0 And Ptr02 > Ptr01
Ptr01 + 1
Result = Trim(Mid(Data01,Ptr01,Ptr02 - Ptr01))
EndIf
ProcedureReturn Result
EndProcedure
Procedure.l CheckString(Chaine.s)
Define Result.l = 0
Define DoIt.l = #False
Define Data01.s = Trim(Chaine)
Define Data02.s = ""
If FindString(Data01,"ProcedureReturn",1) = 1
Result = 0
Else
If FindString(Data01,"Procedure",1) = 1
Data02 = GetProcedureName(Chaine)
AddElement(MyProcedures())
MyProcedures() = Data02
Data01 = StringField(Data01,1," ")
If FindString(Data01,".",1) > 0
Select Right(Data01,1)
Case "b" : Result = 2
Case "c" : Result = 3
Case "w" : Result = 4
Case "l" : Result = 5
Case "f" : Result = 6
Case "q" : Result = 7
Case "d" : Result = 8
Case "s" : Result = 9
EndSelect
Else
Result = 1
EndIf
EndIf
EndIf
ProcedureReturn Result
EndProcedure
If SourceFileName="" : End : EndIf
If MessageRequester("Information", "Analyser le fichier "+ SourceFileName + " (O/N) !" , #PB_MessageRequester_YesNo) <> 6 :
End : EndIf
If OpenFile(1,SourceFileName)
While Eof(1) = 0
Chaine = ReadString(1) : Result.l = CheckString(Chaine)
If Result > 0
Chaine = Trim(Chaine) : Pos = FindString(Chaine," ",1)
If Pos > 0
Select Result
Case 1
If AddElement(MyDeclarations())
MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
MyDeclarations()\TypeRetour = "Declare "
EndIf
Case 2
If AddElement(MyDeclarations())
MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
MyDeclarations()\TypeRetour = "Declare.b "
EndIf
Case 3
If AddElement(MyDeclarations())
MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
MyDeclarations()\TypeRetour = "Declare.c "
EndIf
Case 4
If AddElement(MyDeclarations())
MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
MyDeclarations()\TypeRetour = "Declare.w "
EndIf
Case 5
If AddElement(MyDeclarations())
MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
MyDeclarations()\TypeRetour = "Declare.l "
EndIf
Case 6
If AddElement(MyDeclarations())
MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
MyDeclarations()\TypeRetour = "Declare.f "
EndIf
Case 7
If AddElement(MyDeclarations())
MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
MyDeclarations()\TypeRetour = "Declare.q "
EndIf
Case 8
If AddElement(MyDeclarations())
MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
MyDeclarations()\TypeRetour = "Declare.d "
EndIf
Case 9
If AddElement(MyDeclarations())
MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
MyDeclarations()\TypeRetour = "Declare.s "
EndIf
EndSelect
Compteur + 1
EndIf
EndIf
Wend
SortStructuredList(MyDeclarations(), 2, OffsetOf(MyDeclare\NomProc), #PB_Sort_String)
ForEach MyDeclarations()
Tmpchaine + MyDeclarations()\TypeRetour+MyDeclarations()\NomProc + RC
Next
If Compteur>0 And (compteur = CountList(MyDeclarations()))
SetClipboardText(Tmpchaine)
MessageRequester("Information", Str(Compteur)+" 'Declare(s)' detecté(s) et transferé(s) dans le presse papier" + RC +"faites un coller pour l'inserer dans votre code source...", 0)
Else
If Compteur = 0
MessageRequester("Information", "Desolé, aucun resultas...", 0)
Else
; c'est une erreur dans l'ajout des éléments de la liste chainée
MessageRequester("Information", "Le nombre d'éléments de la liste ne correspond pas au nombre de déclarations"+RC+"testez le résultat des fonctions AddElement(MyDeclarations())", 0)
EndIf
EndIf
CloseFile(1)
Else
MessageRequester("Information", "Desolé, une erreur s'est produite lors de l'acces au fichier "+SourceFileName+" !", 0)
End
EndIf
End