- Sapeur

 - Installation

 - Aide / Doc

 - forum Sapeur



 -
PONX 

 - PLUIE

 - MClaveau


 Aide SAPEUR    


Introduction

Sapeur est un éditeur de code-source spécialisé pour Python.
Le nom SAPEUR est la contraction de : Scintilla Autoit Ponx éditEUR

Sapeur ne fonctionne que sous Windows, car il nécessite Python 2.5.x, PyWin32 et Ponx. A noter que l'installation de Ponx vérifie la présence des autres éléments nécessaires, et les installe au besoin.
Pour l'aide Python, il est impératif que : l'aide (Python25.chm) soit installée dans C:\Python25\Doc


Fonctionnalités

Quelques particularités de sapeur :
- travail systématique en UTF-8
- indentation systématiquement avec 4 espaces
- grande sobriété : zone de saisie maximisée, menus épurés
- pas de menu "nouveau" (utiliser "ouvrir", et donner un nouveau nom)
- un seul menu (sauf l'aide), à ouvrir avec la touche {Echap}
- orienté clavier simple, sans combinaisons de touches (sauf les raccourcis-clavier de Scintilla)

Quelques fonctionnalités (liste non exhaustive) :
- coloration syntaxique
- UnDO / ReDO multiples
- dépliement / repliement des fonctions, méthodes et classes
- indentation automatique
- conversion automatique des TAB d'indentation en 4 espaces
- indentation / désindentation de bloc
- recherche simple, suivante, précédente, fonction, immédiate
- recherche dans les fichiers *.py d'un Répertoire
- macro-commandes (enregistrement, modification, jouer)
- scriptable (partiellement) en Python
- quatre touches personnalisable ({F5} {F6} {F7} {F8})
- templates (blocs de code/exemples, à insérer)
- projets (juste des "ensembles de fichiers", avec une commande de bascule rapide ({F1}+{B})
- fichiers récents
- répétition de la dernière commande du menu (par {F2})
- aide python reliée
- lancement des scripts dans des consoles externes
- gratuit  (mais, éventuellement, je peux accepter un ou deux millions d'euros)
- mode monofichier (voir plus bas)
- forum en ligne (http://ponx.fr/messages?forum=Sapeur)
- module d'édition intégré, pour les menus, le fichier .ini, le fichier d'aide
- traduction possible des menus et de l'aide (voir ligne précédente)
- mise à jour en ligne (en fait, c'est la mise à jour de Ponx qui travaille)
 

Commandes de base

{Echap} Menu
{F1} Aide / Bascule
{F2} Répète la dernière action du menu (Très utile)
{F5} à {F8} Commandes personnalisées (scriptables en Python)


Conseils

Il est (fortement) conseillé de :
- sous Vista, désactiver l'UAC
- lisser les caractères à l'écran (avec Cleartype)
        XP :
            clic-droit sur le bureau
                propriétés
                    apparences
                    [Effets]
                        utiliser méthode... lisser / ClearType
        Vista :
            clic-droit sur le bureau
                personnaliser
                    couleurs et apparences des fenêtres
                        ouvrir les propriétés d'apparence classique... (en bas)
                            Effets
                                Utiliser méthode... lisser
                                    choisir "ClearType"
- vérifier que la police Arial Narrow est bien installée dans le système



Commandes au clavier (raccourcis-clavier de l'éditeur Scintilla)

se déplacer : les 4 flèches
début de ligne : Home
fin de ligne : End
va à la fin de la ligne : Alt + End
va au tout début de la ligne : Alt + Home
mot précédent (Shift étend la sélection) : Ctrl + Left
mot suivant (Shift étend la sélection) : Ctrl + Right
début du document (Shift étend la sélection) : Ctrl + Home
fin du document (Shift étend la sélection) : Ctrl + End

supprime le début du mot : Ctrl + BackSpace
supprime la fin du mot : Ctrl + Delete
supprime le début de ligne : Ctrl + Shift + BackSpace
supprime la fin de ligne : Ctrl + Shift + Delete

coupe (=> presse-papier) : Ctrl + X
copie (=> presse-papier) : Ctrl + C
colle (<= presse-papier) : Ctrl + V

annule (UnDO) : Ctrl + z

sélectionne tout le texte : Ctrl + a étend la sélection jusqu'au début de ligne : Alt+Shift+Home
étend la sélection jusqu'à la fin de ligne : Alt+Shift+End
étend la sélection jusqu'au début du document : Ctrl+Shift+Home
étend la sélection jusqu'à la fin du document : Ctrl+Shift+End

augmente le zoom : Ctrl + num_pad+ (sur mon portable: Ctrl + Fn + num_pad+)
diminue le zoom : Ctrl + num_pad- (sur mon portable: Ctrl + Fn + num_pad-)
zoom normal : Ctrl + num_pad/ (sur mon portable: Ctrl + Fn + num_pad/)

indente un bloc : Tab
dé-indente un bloc : Shift+Tab

scroll vers le haut : Ctrl+Up
scroll vers le bas : Ctrl+Down
coupe la ligne : Ctrl+L (=> presse-papier)
copie la ligne : Ctrl+Shift+T (=> presse-papier)
supprime la ligne : Ctrl+Shift+L
échange ligne avec la précédente : Ctrl+T
duplique la ligne : Ctrl+D

Sélection rectangulaire : Alt + Shift + (4flèches)

debut de paragraphe : Ctrl+]
selection depuis debut de paragraphe : Shift+Ctrl+]
début paragraphe suivant : Ctrl+^
selection jusqu'à début de paragraphe suivant : Shift+Ctrl+]

fin mot + début mot (suivants) : Ctrl+*
début mot + fin mot (prior) : Ctrl+:

paragraphe précédent (Shift étend la sélection) : Ctrl + °
paragraphe suivant (Shift étend la sélection) : Ctrl + ^


Projets

Les projets sont (pour l'instant ?) (très) limités à :
- un ensemble de fichiers-sources
- un répertoire de travail
- un descriptif (inutilisé)

La gestion des projets se fait (pour l'instant ?) par modification du fichier sapeur.proj.ini
Le choix du projet courant se fait par le sous-menu "ProJets". Cela entraine simplement la mise à jour du menu "F1 - Aide/Bascule", qui contient la liste des fichiers du projets. Ce menu peut être utilisé, pour basculer facilement entre les fichiers du projet.
A noter :
- les fichiers-sources peuvent se trouver dans des répertoires différents, mais ils seront exécutés dans
le répertoire de travail du projet
- il existe un projet "0" (zéro), qui veut dire "pas de projet". CE PROJET NE DOIT JAMAIS ÊTRE SUPPRIMÉ.


Menus, traduction et sapeur.menu.ini

Les éléments fixes du menu sont définis dans le fichier sapeur.menu.ini
Il est possible de modifier ce fichier, mais IL NE FAUT PAS SUPPRIMER DE LIGNE, SI TOUCHER AUX NOMS
DES CLEFS / SECTIONS
Cette possibilité ne doit être utilisée que pour traduire ou changer le nom des entrées. A noter que les changements effectués seront fusionnés lors des mises à jour (les modifs seront conservées).
Pour supprimer une entrée du menu, mettre le texte à vide (cela créera un séparateur).


Les fichiers .ini et de configuration

Ces fichiers servent à configurer Sapeur. Vous pouvez modifier ces fichiers. Il y a :
- sapeur.ini ; il contient les paramètres de base (taille, texte des fonctions python personnalisés) ; ne pas supprimer d'entrée
- sapeur.menu.ini ; il contient les entrées du menu ; ne pas supprimer d'entrée
- sapeur.proj.ini ; il contient la définition des projets ; ne pas supprimer la section [0]
- sapeur.tmpl.txt ; il contient tous les templates pour sapeur
- sapeur_help.htm ; fichier d'aide (le fichier que vour être en train de lire)


Divers

Barre de titre
La barre de titre indique :
- le nom du fichier (précédé d'une étoile s'il est modifié)
- le nom du projet courant
- le répertoire de travail

Informations
Dans les infos (en haut à droite), on a :
- la ligne courante
- la position dans le code-source
- les positions début et fin de la sélection courante
- le mot courant

Ne pas lancer de script qui redirige STDIN / STDOUT dans certains modes de Run

Le debogueur de Python (Pdb) ne fonctionne que dans certains modes de Run

Sauver + autre nom : le nouveau nom devient le fichier courant
Il y a beaucoup de sauvegardes automatique: en quittant, en run-nant, en ouvrant un autre fichier...
Sauve: supprime l'état "modifié" du script

Ouvrir: sauvegarde, MÊME si on abandonne l'ouverture

Attention : le fichier N'EST PAS SAUVÉ EN QUITTANT ; même s'il est en l'état modifié ; et aucun message ne le signale.
C'est d'ailleurs le seul moyen d'abandonner des modifications.

Pour créer un nouveau fichier/script, il suffit de l'ouvrir...


Appel de script Python

Cette fonctionnalité passe impérativement par l'utilisation du script persapeur.py
Le principe :
- sapeur appelle persapeur, a des moments particuliers. Pour l'instant, uniquement l'appui sur les touches F5 F6 F7 et F8 ; et aussi à l'ouverture d'un fichier (entre le choix du fichier et l'ouverture) et (juste avant) la sauvegarde
- Lors de l'appel, les paramètres suivants sont (systématiquement) passés :
      - event ; texte nom de l'évènement (par exemple "F5")
      - motcourant ; le mot sur lequel était le curseur au moment de l'appel
      - lignecourante ; le numéro de la ligne au moment de l'appel
      - pos ; la position dans le code-source, au moment de l'appel
      - selecd ; la position de début de sélection, au moment de l'appel
      - selecf ; la position de fin de sélection, au moment de l'appel
      - projetcourant ; le nom du projet courant
      - modified ; état du code source (1 = modifié ; 0 = non_modifié)

Il (pré)-existe une méthode, pour chaque évènement. C'est cette méthode qui est appelée par sapeur. A vous de la compléter, avec vote code.
Etant donné que c'est sapeur qui appelle, il n'y a pas de pilotage depuis persapeur.
Sauf que...
Sapeur gère des retours successifs. Comme un generator. D'ailleurs, ces retours sont provoqués par des "yield".
Cela permet de faire un "retro-pilotage" de sapeur. Les valeurs de retours possibles sont identiques au contenu possible des macro-commandes de sapeur.


Macro commandes

Les macrocommandes consistent en des fichiers textes (en UTF-8), dotés de l'extension .mac , et situés dans le même répertoire que sapeur.
Chaque macro contient des lignes. Normalement, il y a une instruction par ligne. Les lignes respectent les contraintes suivantes :
  - les lignes vides sont ignorées
  - les lignes commençant par # sont considérées comme des commentaires (ignorés à l'exécution)
  - chaque instruction peut être suivie de paramètres
  - les paramètres sont séparés par des virgules
  - une virgule littérale s'écrit : ","
  - une ligne terminant pas _ continue à la ligne suivante

Les instructions possibles sont les suivantes (attention, c'est sensible à la casse) :
MSGBOX   affiche une alerte ; deux paramètres: titre et texte (court)
CLOSE   ferme sapeur
INSERT_TEXT   insère le texte passé en paramètre (multi-ligne possible avec _ )
CHARLEFT   va à gauche
CHARRIGHT   va à droite
LINEDOWN   monte d'une ligne
LINEUP   descend d'une ligne
LINESCROLLDOWN   scroll d'une ligne
LINESCROLLUP   scroll d'une ligne
WORDLEFT   mot à gauche
WORDRIGHT   mot à droite
HOME   début de ligne
LINEEND   fin de ligne
DOCUMENTSTART   début de document
DOCUMENTEND   fin de document
PAGEDOWN   page vers le bas
PAGEUP   page vers le haut
DELETEBACK   supprime caractère à gauche du curseur
DELLINELEFT   supprime la partie de la ligne à gauche du curseur
DELLINERIGHT   supprime la partie de la ligne à droite du curseur
LINEDELETE   supprime la ligne
TAB   tabule
BACKTAB   dé-tabule

D'autres instructions seront possibles, dans un proche avenir.
Si vous voulez lancer plusieurs fois de suite une macro-commandes, souvenez-vous que {F2} répète le dernier choix du menu.



Templates

Les templates sont des blocs de code prédéfinis (blocs de lignes, en réalité), à insérer dans le source courant.
Tous les templates sont dans le même fichier texte : sapeur.tmpl.txt qui doit se trouver dans le même répertoire que sapeur.

Dans ce fichier, les templates sont les uns en dessous des autres (à la suite).
Chaque template est structuré de cette façon :
- en-tête
- corps du template (code-source)
- pied

L'en-tête est composé de plusieurs lignes commençant par @@@ :
@@@-------------------------------------------
@@@nom: NOM DU TEMPLATE
@@@classement: Global, Internet, Réseau
@@@-------------------------------------------

Explications :
@@@nom:   désigne le nom du template, qui sera utilisé comme ligne du menu
@@@classement:   contient les mots-clef, séparés par des virgules, utilisés pour classer le template dans les menus
Les autres lignes commençant par @@@ sont des commentaires.

Le corps du template est du texte (en UTF-8). Ce texte peut contenir des mots clefs. Les (deux) mots-clefs possibles sont :
--CURSOR--   (maxi une seule fois par template) ; indique où devra être positionné le curseur après l'insertion du template.
--SELECTION--   (autant de fois que désiré) ; si un texte est sélectionné, dans l'éditeur, au moment de l'appel du template, le contenu de cette sélection sera utilisé pour remplacer toutes les occurrences de --SELECTION-- dans le template, au moment de son insertion.

Le pied est une simple ligne commençant par @@@ . Cette ligne sert à connaitre la fin du template.



mode monofichier

En appelant SAPEUR avec un nom de fichier (avec son chemin) en paramètre, SAPEUR se comporte comme un éditeur interne.
Tous les fonctions de fichiers sont alors désactivées des menus. Seule la sauvegarde reste ; mais elle ne demande rien, et enregistre systématiquement dans le fichier d'origine.

Cela permet d'utiliser SAPEUR comme éditeur "simili" interne pour d'autres logiciels / applications.



L'organisaion du menu

Le menu est organisé pour être : rapide et simple.
Le menu est ouvert par  {Echap}, et fermé soit par {Echap}, soit par validation d'une fonction.
Les fonctions sont validées soit par un clic de souris, soit par appui sur {Entrée} en étant positionné sur la ligne, soit par appui de la touche-raccourci, matérialisée par une majuscule soulignée.

Les commandes les plus couramment utilisée sont positionnée sur le premier menu ouvert (menu principal), de façon à en rendre l'utilisation plus rapide.

Le menu principal

Il contient :

  • Edit   un sous-menu qui regroupe des fonctions sur l'édition en cours (voir plus bas)
  • UnDO  permet d'annuler la dernière modification
  • Chercher  ce sous-menu contient les différentes opérations de recherche
  • Imédiate Recherche  au premier appel, la chaîne à chercher est demandée, et cherchée. Les appels suivants continuent la recherche, avec la même chaîne. Après 30 secondes sans utilisation, l' immédiate-Recherche est ré-initialisée (la chaîne sera demandée à nouveau).
    Il est également possible de ré-initialiser à partir du sous-menu Chercher
  • Balise  permet de poser une (seule) balise, ou d'y retourner. La balise est un repère de ligne, matérialisé par un point rouge dans la marge de gauche. Le fonctionnement est le suivant :
          - si la balise n'est pas posée, elle est attribuée à la liggne courante. Un point rouge apparaît à gauche, et un (B) dans l'état (tout en haut à droite de la fenêtre).
          - si la balise est posée, et si le curseur n'est pas sur la ligne de la balise, on se déplace (le curseur aussi) jusqu'à cette ligne.
          - si la balise est posée, et si le curseur est sur la même ligne que la balise, la balise est enlevée.
          - la balise est enlevée (et perdue), lors d'un changement de fichier (ouverture, bascule, etc.)
  • Ouvrir / nouveau  permet d'ouvrir un fichier.  Pour créer un nouveau fichier, il suffit de taper un nom dui n'existe pas (encore). La boîte de dialogue de choix de fichier travaille sur le dossier de travail, qui est, en fait, le dossier du dernier fichier ouvert. Mais, on peut changer à volonté. A noter que SAPEUR peut servir à éditer des fichiers textes quelconques ; mais ces fichiers seront traités exactement comme des scripts Python (indentation, coloration, etc.)
    Rappelez-vous aussi que les possibilités étendues de cette boîte de dialogue a permit d'épurer le menu d'options peu utiles.
    Par exemple, pour supprimer un fichier, utiliser le clic-droit de la souris. Vous pouvez également créer de nouveaux dossiers, trier l'affichage, ou le modifier, etc.  Pour plus de détails, voir l'utilisation de Windows.
    Enfin,  {Echap} annule l'ouverture.
  • Sauvegarder  la sauvegarde propose toujours le nom du fichier. Cela permet :
          - d'avoir une confirmation, toujours utile
          - de grouper en une seule commande  Sauvegarder et Sauvegarder sous
    A noter que, si le fichier a été modifié, il suffit d'appuyer sur  {Entrée} ;  mais, si le fichier n'a pas été modifié, SAPEUR demande confirmation. Ceci, pour mieux distinguer 
    Comme pour l'ouverture,  {Echap} annule l'ouverture.
  • Fichiers (récents/autres commandes)  regroupe en un sous-menu les douze derniers fichiers ouverts, et quelques commandes moins courantes sur les fichiers.  Voir plus bas.
  • Projets  sous-menu contenant les différents projets (voir plus bas)
  • Templates  sous-menu contenant les différents templates (voir plus bas)
  • Run console orpheline faisant parler les morts  permet de lancer le script courant dans une console pilotée, avec interception des exceptions (erreurs) avec pdb, le débogueur standard de Python.
  • run consoLe orpheline sans lanceur  lance le script courant dans une console séparée.
  • Run console interne A(utoit)  lance le script courant dans une console gérée par SAPEUR.
  • Run console interne P(ython)  lance le script courant dans une console gérée par PONX
  • Divers et Spécial  sous-menu contenant des commandes moins courantes (voir plus bas)
  • Macro-commandes  sous-menu de gestiondes macroè-commandes (voir plus bas)


Le sous-menu  Edit
  

  • UnDO  annule la dernière modification / saisie.
  • ReDO  refait le dernier UnDO  (annule le dernier UnDO)
  • Wordwrap (passage à la ligne des longues lignes)  bascule entre mode "passage à la ligne" et "lignes prolongées à droite".
  • Colonne rémanente  Bascule du mode. Dans le mode "colonne rémanente", à chaque changement de ligne, le curseur est positionné dans la même colonne. C'est très utile, lorsqu'on a une série d'opérations à effectuer, sur une série de lignes, et toujours à la même position (de colonne).
  • Espaces visibles  Bascule entre espace invisible, et espaces visible (l'espace est alors matérialisé par un minuscule point).
  • Balance ; brace = { }  [ ]  <>     visualise le caractère équivalent au caractère courant, dans l'autre sens. Par exemple  (  pour  )   ou    ] pour [
  • Plie ou Déplie sous la ligne courante  réduit l'aspect visible d'une fonction, ou d'une classe, à sa seule première ligne. S'il s'agit d'un bloc de lignes déjà plié, ça rétablit la visualisation complète.
  • Tout Plier / Déplier  même chose que précédemment, pour toutes les fonctions et classes du script courant. Pour les gros scripts, cela peut prendre un peu de temps.
  • Aller à la ligne n° ...  demande un numéro de ligne, et y déplace le curseur.
  • Copier dans le presse-papier bufferisé (Ctrl+Alt+C)  Copie le texte sélectionné dans un presse-papier spécial, qui conserve les cinq (5) dernières copies. Ces données dont conservées tant que SAPEUR n'est pas fermé.
  • CoLler à partir du presse-papier bufferisé (Ctrl+Alt+V)  ouvre une fenêtre, montrant les cinq congtenus de presse-papier disponibles, pour choisir lequel copier.

Le sous-menu  Chercher  

  • Chercher  Demande quelle est la chaîne à chercher, puis effectue la recherche, à partir de la position courante.
  • Chercher début  Demande quelle est la chaîne à chercher, puis effectue la recherche, à partir du début du script courant.
  • Suivant  Continue la recherche précédente, à partir de la position courante (ne pose pas de question).
  • Précédent  Continue la recherche précédente, à partir de la position courante, mais en remontant vers le début du script.
  • Fonction  Recherche, dans le script courant, la definition de la fonction sous le curseur.
  • fichiers (d'un &Répertoire)  Demande la chaîne à rechercher, et le répertoire où trouver les fichiers. Ensuite, effectue la recherche dans tous les fichiers  .py  du répertoire indiqué. Le résultat est affiché sous la forme d'un arbre à deux niveaux, le premier indiquant le nom du script (du fichier), le deuxième les lignes où la chaîne a été trouvée. Il est alors possible d'ouvrir le script dans SAPEUR.
  • remise à &Zéro de la recherche immédiate  Ré-initialise la recherche immédiate. Au prochain appel de cette dernière, la question de la chaîne à chercher sera donc à nouveau posée. 

Le sous-menu  Navig  

  • Console (invite de commande)  ouvre l'invite de commande, dans le dossier du script courant.
  • Interpreteur Python  lance l'interpréteur de commande.
  • Edit sapeur.ini  ouve un mini-éditeur, sur le fichier sapeur.ini, qui contient de nombreux paramètres de SAPEUR.
  • Edit sapeur.menu.ini  ouve un mini-éditeur, sur le fichier des menus de SAPEUR. Il est possible de modifier les textes, mais il ne faut pas supprimer de lignes, ni modifier les clefs. L'usage principal est une traduction des menus dans une autre langue.
  • Edit sapeur.proj.ini  ouve un mini-éditeur, sur le fichier décrivant les projets. Voir le paragraphe consacré aux projets, ici.
  • Edit sapeur_help.htm  ouve un mini-éditeur, sur le fichier d'aide que vous êtres en trains de lire. 
  • Test  Usage réservé au développer (moi !). Sert pour évaluer/tester de nouvelles fonctions. 


Le sous-menu  Macro  

  • Macro immédiate (lance)  Execute la dernière macro enregistrée, ou celle nommée "immediate.mac". Cela évite la phase de sélection d'une macro. Le but est de rendre plus rapide l'utilisation d'une macro habituelle (il suffit de faire  {Echap} M M) 
  • Commence l'enregistrement (clavier) d'une macro  permet d'enregistrer une nouvelle macro-commande. Seules les commandes-clavier (raccourcis, déplacement, saisie) sont enregistrées.
  • Termine l'enregistrement (clavier) d'une macro  termine l'enregistrement en cours d'une macro-commande. La macro est systématiquement nommée "immediate.mac" ; le fichier se trouve dans le dossier de SAPEUR.
  • Editer une macro-commande lance un mini-éditeur, pour modifier le contenu d'une macro, ou en écrire une nouvelle. Une boîte de dialogue permet de choisir le fichier. La même boîte de dialogue permet de renommer / supprimer / déplacer des macros (clic-droit sur le nom du fichier ; fonctionnalité Windows).
  • Sélectionner une macro-commande  permet de sélectionner une macro, via une boîte de dialogue. Une seule macro est sélectionnable.
  • sélectionner une macro-commande par son &Nom  sélectionne une macro en donnant son nom (exemple: "toto.mac")
  • Lancer la macro-commande sélectionnée  exécute la macro-commande sélectionnée (courante).


Le sous-menu  Fichiers  

  • (les 12 fichiers récemment ouverts)  charge un des fichiers récemment ouverts. Le fichier courant est ensuite placé au début de la liste. Les fichiers récents sont sauvegardés lorsque l'on ferme SAPEUR.
  • Importer cp1252  permet de charger un fichier-source encodé en CP1252, en le convertissant en UTF-8 (format natif de SAPEUR).


Le sous-menu  Aide  

  • Bascule le fichier-projet-courant  charge le fichier suivant dans la liste des fichiers du projet courant.
  • aide &Python (mot-courant)  appelle l'aide de Python, en pré-sélectionnant le mot courant (sous le curseur) (ou sélectionné). Le fichier Python25.chm doit être c:\python25\doc. 
  • aide Python (&Accueil doc)  appelle l'aide de Python, sur la page d'accueil.
  • aide Python (&Modules index)  appelle l'aide de Python, sur l'index des modules.
  • aide Python (&Reference)  appelle l'aide de Python, sur la page de
  • aide Python (&Index)  appelle l'aide de Python, sur l'index.
  • aide Python (&Tutorial)  appelle l'aide de Python, sur le tutorial (hélas en anglais).
  • aide &Sapeur  appelle le fichier que vous êtes en train de lire.
  • aide au &Développement  Super méga-fun génial écran, pour obtenir une aide beaucoup plus importante.