ClangFormat est l'un des meilleurs outils pour formater automatiquement les codes source en C, C ++, Java, JavaScript, Objective-C, C #. Il existe des plugins pour les environnements de développement populaires (IDE), mais souvent vous devez formater rapidement un fichier ou une partie d'un fichier source sans exécuter un IDE encombrant, expérimenter avec des options de formatage et différentes versions de ClangFormat avec la possibilité d'annuler rapidement les modifications. L'utilisation de la version console de ClangFormat à cette fin n'est pas pratique. Une solution possible consiste à appeler ClangFormat à partir d'un éditeur de texte. Le
site officiel décrit les méthodes d'intégration avec Vim, Emacs et quelques autres, mais il n'y a aucune information sur l'intégration avec Notepad ++. Ce qui suit est une instruction simple pour Notepad ++ (pour Windows).
Exigences initiales
- formatage d'un fichier ouvert dans Notepad ++ avec ClangFormat;
- formater le fragment sélectionné dans le fichier;
- ignorer les modifications;
- changement de style (ensemble de rĂšgles) formatage;
- Passer Ă une autre version de ClangFormat
- utilisez des outils standard dans la mesure du possible, sans reconstruire ClangFormat et sans écrire un nouveau plugin pour Notepad ++.
Installation et configuration
1. Si Notepad ++ n'est pas déjà installé, téléchargez-le et installez-le
https://notepad-plus-plus.org2. Dans Notepad ++ installez le plugin NppExec
NppExec vous permet d'appeler des applications tierces à partir de Notepad ++ et d'interagir avec les composants de la bibliothÚque Scintilla, sur la base desquels Notepad ++ est écrit.
Plugins â> Plugin Admin... â> NppExec â> Install
Notepad ++ redémarrera, aprÚs quoi le
<Notepad++>/plugins/NppExec/
et l'élément de menu
Plugins â> NppExec
3. Téléchargez l'exécutable ClangFormat
Pour ce faire, sur la page
https://llvm.org/builds/ nous trouvons et téléchargeons le fichier d'installation pour Windows, par exemple
LLVM-XXX-rYYYYYY-win64.exe
. Vous ne pouvez pas installer le package complet, il suffit d'extraire le fichier
clang-format.exe
par
clang-format.exe
. Vous pouvez utiliser 7-zip: supprimez l'extension
.exe
du
.exe
, ouvrez le fichier avec 7-zip et extrayez
clang-format.exe
du sous
bin/
répertoire
bin/
. Nous
clang-format.exe
dans le
clang-format.exe
<Notepad++>/plugins/NppExec/clang-format/
.
4. Ajouter des fichiers de configuration pour ClangFormat
Les fichiers de configuration doivent ĂȘtre nommĂ©s
.clang-format
_clang-format
ou au
.clang-format
_clang-format
. Ils contiennent un ensemble de rÚgles de mise en forme (styles), dont le format est décrit dans le guide
Options de style de ClangFormat .
Par exemple, nous utilisons des fichiers des projets
Linux Kernel et
Qt .
Les fichiers au
.clang-format
téléchargés depuis GitHub sont placés dans les répertoires appropriés:
<Notepad++>/plugins/NppExec/clang-format/LINUX_KERNEL/
<Notepad++>/plugins/NppExec/clang-format/QT/
5. Créez un script pour NppExec
Ouvrez la fenĂȘtre de modification et d'exĂ©cution des scripts
Plugins â> NppExec â> Execute...
NppExec
Plugins â> NppExec â> Execute...
ou appuyez sur
F6
. Copiez et collez le texte du script ci-dessous dans la fenĂȘtre et enregistrez le script appelĂ©
clang-format
avec le bouton
Save...
Script NppExec // Hide console NPP_CONSOLE 0 //------------------------------------------------------------------------------ // Uncomment a line to select a style //set style = LINUX_KERNEL set style = QT //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ set clangformatexe = $(CWD)\plugins\NppExec\clang-format\clang-format.exe set clangformatcfgdir = $(CWD)\plugins\NppExec\clang-format set tmpdir = $(SYS.TEMP) set clangformatcfgfile = $(clangformatcfgdir)\$(style)\.clang-format set srcfiletmp = $(tmpdir)\~src.tmp //------------------------------------------------------------------------------ cmd.exe /c if exist "$(clangformatexe)" (exit 0) else (exit 1) if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR: "$(clangformatexe)" not found exit endif cmd.exe /c if exist "$(clangformatcfgfile)" (exit 0) else (exit 1) if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR: "$(clangformatcfgfile)" not found exit endif // Copy $(clangformatcfgfile) to $(tmpdir)\.clang-format if their temestamps are different cmd.exe /v /c " for %i in ("$(clangformatcfgfile)") do set date1="%~ti" && for %i in ("$(tmpdir)\.clang-format") do set date2="%~ti" && if not "!date1!"=="!date2!" ( echo !date1! != !date2! && echo COPYING $(clangformatcfgfile) to $(tmpdir)\ && copy "$(clangformatcfgfile)" "$(tmpdir)\" /Y )" if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR copying "$(clangformatcfgfile)" to "$(tmpdir)" exit endif // Get selected text length sci_sendmsg SCI_GETSELTEXT // If nothing is selected - select the current line if $(MSG_RESULT) == 1 then sci_sendmsg SCI_VCHOMEWRAP sci_sendmsg SCI_LINEENDWRAPEXTEND endif // Save selected text to $(srcfiletmp) sel_saveto "$(srcfiletmp)" :a cmd.exe /c if exist "$(srcfiletmp)" (exit 0) else (exit 1) if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR: "$(srcfiletmp)" not found exit endif // Run ClangFormat $(clangformatexe) -i -style=file "$(srcfiletmp)" if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR running "$(clangformatexe)" exit endif // Replace selected text with $(srcfiletmp) sel_loadfrom "$(srcfiletmp)" // Delete $(srcfiletmp) file cmd.exe /c del "$(srcfiletmp)"
AprÚs avoir démarré le script, en fonction du style de mise en forme sélectionné spécifié dans la variable de
style
, sélectionne le fichier au
.clang-format
souhaité, vérifie la date de sa modification et, si nécessaire, le copie dans un répertoire temporaire. Là , le fragment sélectionné du code source est copié dans le fichier temporaire, aprÚs quoi
clang-format.exe
. Le fragment formatĂ© est recopiĂ© dans la fenĂȘtre Notepad ++. Ensuite, le fichier temporaire est supprimĂ©.
Dans ClangFormat, il n'y a aucun moyen de spécifier le chemin d'accÚs au fichier de configuration au
.clang-format
. ClangFormat le recherchera dans le répertoire du fichier formaté et, s'il ne le trouve pas, il ira le chercher dans les répertoires parents. Une fois le script
.clang-format
fichier au
.clang-format
restera dans le répertoire temporaire afin de ne pas le copier à chaque démarrage du formatage.
Ă toutes les Ă©tapes du script, les erreurs sont vĂ©rifiĂ©es et lorsqu'elles se produisent, la fenĂȘtre de la console NppExec s'ouvre, dans laquelle un message s'affiche.
6. Dans Notepad ++, ajoutez un nouvel élément de menu pour exécuter le script
Ouvrez
Plugins â> NppExec â> Advanced Options...
, dans la liste déroulante
Associated script
, sélectionnez le nom du script au
clang-format
et cliquez sur le bouton
Add/Modify
.
Nous redémarrons Notepad ++, aprÚs quoi l'élément de menu
Plugins â> NppExec â> clang-format
apparaĂźtra.

7. Dans Notepad ++, configurez le raccourci clavier pour exécuter le script
Nous utiliserons la combinaison
Ctrl + I
par analogie avec QtCreator. Ouvrez
Settings â> Shortcut Mapper
.
Par défaut, la combinaison
Ctrl + I
occupée, vous devez donc la libérer avec le bouton
Clear
dans l'onglet
Main Menu
(ligne 38
Split Lines
de
Split Lines
dans la version actuelle de Notepad ++). AprĂšs cela, dans l'onglet
Plugin commands
du
Plugin commands
, affectez la combinaison
Ctrl + I
au script au
clang-format
.
Terminé, nous pouvons l'utiliser!
Instruction d'utilisation
Ouvrez le fichier source dans Notepad ++, sélectionnez le fragment souhaité ou tout le texte et appuyez sur
Ctrl + I
Si rien n'est sélectionné, la ligne actuelle sera formatée.

Pour annuler les modifications, utilisez les outils d'édition standard (
Ctrl + Z
).
Pour modifier les rĂšgles de formatage, modifiez les fichiers de configuration au
.clang-format
dans le répertoire
<Notepad++>/plugins/NppExec/clang-format/
Si vous devez utiliser une autre version de ClangFormat, modifiez le chemin d'accÚs au fichier exécutable dans le script
set clangformat = "\path\to\clang-format.exe"
Pour sélectionner un style de mise en forme différent, appuyez sur
F6
et dans le texte du script au
clang-format
sélectionnez le style souhaité en décommentant l'une des lignes
set style = STYLE_NAME
.
Tous les fichiers nécessaires sont dans l'
archive .
Bon formatage!