Visual Studio, par paramètres d'indentation de solution

89

Je travaille sur deux ou trois choses différentes et certains utilisent des onglets, certains utilisent 2 espaces pour les retraits, un autre utilisateur 4 espaces pour les retraits, etc.

L'option pour définir cela dans Visual Studio est dans Outils-> Options-> Éditeur de texte-> <langue> -> Onglets

Existe-t-il un moyen de remplacer ces paramètres sur une base par solution?

Lancer de feu
la source
14
Je souhaite qu'il puisse détecter le style de tabulation / indentation par fichier. c'est-à-dire que lorsqu'un fichier est ouvert, il utilisera un style de tabulation / indentation pour ce fichier. Sublime Text le fait.
IsmailS

Réponses:

20

Voici un moyen (certes piraté) d'atteindre ce que vous recherchez:

1) créer une macro qui change l'indentation ( source )

 Sub Set-Indent(indent As integer)
     Dim props As EnvDTE.Properties = DTE.Properties("TextEditor", "C/C++")
     Dim ts As EnvDTE.Property = props.Item("TabSize")
     Dim ins As EnvDTE.Property = props.Item("IndentSize")
     ts.Value = indent 
     ins.Value = indent 
 End Sub

2) Accrochez cela au chargement de votre solution: Dans l'explorateur de macros, choisissez EnvironmentEvents, sélectionnez SolutionEventsdans le premier menu déroulant, Openeddans le second. Vous disposez désormais d'une macro qui se déclenchera chaque fois que vous ouvrirez une solution. Il vous suffit de mapper vos solutions sur l'indentation requise.

Bahbar
la source
8
Hack, oui, mais ça marche. Merci. Pour les développeurs C #, il s'agit de DTE.Properties ("TextEditor", "CSharp")
Mike Stockdale
2
Si vous mettez cela dans une solution, vous devrez le mettre dans toutes les solutions. Peu utilisable, notamment pour les projets publics. EditorConfig (réponse suivante ci-dessous) est meilleur IMHO.
rustyx
93

MISE À JOUR: VS 2017 prend en charge EditorConfig de manière native: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

Dans VS 2010 et supérieur, il existe une extension qui définit l'indentation en fonction du fichier .editorconfig à la racine de la solution / du projet:

http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328

Il existe également une extension similaire pour Visual Studio Code .

Tereza Tomcova
la source
2
J'aime ceci - rapide à installer, il n'a pas le même problème de ralentissement que certaines des autres options, et il a l'avantage supplémentaire que vous pouvez modifier les paramètres de projets individuels dans une solution, si vous en avez besoin à.
karaken12
@ondatra Je n'arrive pas à le faire fonctionner lorsque je place le fichier dans mon dossier Solution (en même temps que le .slnfichier), uniquement dans chaque dossier de projet. Aussi, prend-il en charge indent_brace_style?
drzaus
@ondatra vient de découvrir qu'il ne prend pas indent_brace_styleencore en charge - j'ai ouvert un problème pour lui.
drzaus
Merci. veuillez noter que j'ai dû utiliser la mise à jour 0.4.0 de github.com/editorconfig/editorconfig/issues/116 pour vs2012update3
SteelBytes
1
VS2017 v15.3 prend désormais en charge de nombreuses propriétés de style de codage .
Frédéric
4

À partir du site Web de l' extension VS EditorConfig ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ):

Le projet EditorConfig définit un format de fichier simple pour configurer les options courantes de l'éditeur de texte telles que les tailles d'indentation . Ces fichiers de configuration sont conçus pour accompagner le code source d'un projet, permettant aux éditeurs de texte d'utiliser les bonnes options fichier par fichier. Le projet EditorConfig fournit des plugins pour de nombreux éditeurs de texte courants, ce qui rend le format entièrement multiplateforme.

(c'est moi qui souligne)

Divulgation complète: je n'ai pas pu le tester personnellement (car ReSharper prend le relais).

drzaus
la source
2

VS2017 RC a ajouté la prise en charge du format .editorconfig.

asm
la source
5
oui mais un exemple du fichier fini serait bien :)
toddmo
0

MISE À JOUR: semble que l'indentation n'est pas gérée par Resharper, donc cette réponse ne répond pas réellement à la question spécifique. Cependant, il s'applique en termes généraux; c'est-à-dire "Visual Studio, par paramètres de solution" au cas où quelqu'un trébucherait ici à la recherche de cela.


Si vous utilisez Resharper , vous pouvez enregistrer les paramètres de formatage (en fait, tous les paramètres) uniquement pour la solution. Vous pouvez en outre spécifier s'il s'agit uniquement pour vous (c'est-à-dire non engagé dans le contrôle de source) ou des paramètres spécifiques à la solution partagés (c'est-à-dire de s'engager dans le contrôle de source).

Resharper > Options > Code Editing > C# (or whatever language) > Formatting Style > Braces Layout

Puis en bas de la fenêtre, sous Save Tochoisissez «Solution XYZ personnelle» (ou partagée, selon votre objectif).

Cela crée un fichier xml YOURSOLUTION.sln.DotSettings.useravec des valeurs telles que:

<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/CASE_BLOCK_BRACES/@EntryValue">NEXT_LINE</s:String>

Paramètres de réaffectation - Enregistrer pour la solution uniquement

drzaus
la source
1
Quel paramètre de réaffûtage est utilisé pour définir le retrait à 2 ou 4 espaces?
Endy Tjahjono
@EndyTjahjono qui est un paramètre VS: Outils> Options> Éditeur de texte> (Langue)> Onglets> "Taille de l'onglet" ou "Taille du retrait". Et la bonne chose à propos de VS2012 est que vous pouvez utiliser la recherche de lancement rapide ( CTRL+Q) et taper "Tabs" pour accéder directement à tous les paramètres de langue disponibles.
drzaus
Mais ce paramètre VS est global (pas par solution / projet) et vous avez suggéré d'utiliser le resharper car il a des paramètres par solution / projet?
Endy Tjahjono
Vous m'avez compris - j'étais en train de changer d'autres paramètres dans le réaffûtage, donc j'ai supposé qu'il gérerait également l'indentation. Je viens de regarder à nouveau dans le resharper pour les paramètres de l'onglet, mais je ne l'ai pas trouvé. La mise en garde est donc "pour à peu près tous les paramètres, sauf ceux que le réaffutage ne gère pas, comme la taille de l'indentation". Je vais mettre à jour la réponse, n'hésitez pas à voter car je n'y prêtais pas assez attention.
drzaus
Merci pour la mise à jour. Pour info, je n'essayais pas de vous corriger, mais j'espérais en fait que le resharper a un paramètre d'indentation par projet et je n'ai tout simplement pas trouvé l'emplacement pour le définir.
Endy Tjahjono
0

Ainsi, la solution acceptée dit "Il vous suffit de mapper vos solutions sur l'indentation requise", ce qui est génial, sauf comment faire cela? Après avoir perdu beaucoup de temps à essayer de comprendre cela, j'ai trouvé une méthode que je préfère ici . Cette méthode charge n'importe quel nombre de paramètres exportés qui peuvent être différents pour chaque solution. Les paramètres peuvent inclure n'importe quoi, des retraits aux couleurs ou même à la disposition des fenêtres (je pense).

  • Dans Visual Studio 2008, ouvrez Outils> Macros> Explorateur de macros
  • Double-cliquez sur MyMacros> Module1 (si vous n'avez pas Module1, cliquez avec le bouton droit sur MyMacros et choisissez 'Nouveau module ...' pour le créer).
  • Dans la fenêtre de l'explorateur de macros, double-cliquez sur «EnvironmentEvents» sur la gauche.
  • Dans la liste déroulante en haut à gauche, choisissez «SolutionEvents».
  • Dans la liste déroulante en haut à droite, choisissez «Ouvert».
  • Le code pour gérer l'événement SolutionEvents.Opened est automatiquement ajouté. Modifiez ce code comme suit:

    Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened
        Dim item As ProjectItem = DTE.Solution.FindProjectItem("solution.vssettings")
        If Not item Is Nothing Then
            'MsgBox("Uncomment this to see a message when settings are loaded")
            Dim name = item.FileNames(1)
            DTE.ExecuteCommand("Tools.ImportandExportSettings", "/import:""" & name & """")
        End If
    End Sub
    
  • Enregistrez la macro.

  • Utilisez Outils> Options pour modifier votre interface utilisateur afin que les paramètres de l'onglet et tout ce que vous souhaitez définir.
  • Outils> Importer et exporter les paramètres ...> Exporter les paramètres d'environnement sélectionnés> Suivant
  • Pour simplement exporter les paramètres de l'onglet, décochez `` Tous les paramètres '', puis cochez Options> Éditeur de texte> C / C ++
  • Cliquez sur Suivant, puis tapez «solution.vssettings» sous «Comment voulez-vous nommer votre fichier de paramètres?» et enregistrez le fichier là où vous avez une solution pour laquelle vous souhaitez utiliser ces paramètres.
  • Faites glisser solution.vssettings vers n'importe quel emplacement dans la fenêtre Explorateur de solutions.
  • Quittez Visual Studio et la prochaine fois que vous ouvrez une solution contenant solution.vssettings, il doit charger ces paramètres.

Si la macro ne s'exécute pas, cela peut être dû à un correctif de sécurité MS. Sur cette base , ajoutez la chaîne suivante:

<AllowDComReflection enabled="true"/>

Sous la balise <runtime> dans les trois fichiers suivants:

"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr.exe.config"
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv.exe.config"
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe.config"

Assurez-vous de démarrer l'éditeur que vous utilisez pour éditer ces fichiers avec les privilèges d'administrateur (c'est-à-dire cliquez avec le bouton droit sur le Bloc-notes et choisissez «Exécuter en tant qu'administrateur»).

J'ai également trouvé un plug-in censé faire la même chose que la macro suggérée ci-dessus, mais pour une raison quelconque, il n'a rien fait après avoir exécuté son programme d'installation.

Dragoness d'hiver
la source
0

clang-format fournit des options assez sophistiquées pour formater votre code source.

Le plugin Visual Studio est assez rudimentaire, c'est-à-dire qu'il ne s'exécute pas automatiquement, mais il fait bien son travail (lorsqu'il est appelé manuellement, c'est-à-dire).

http://llvm.org/builds/

Rondom
la source