Visual Studio, por configuración de sangría de solución


89

Estoy trabajando en un par de cosas diferentes y algunos usan pestañas, algunos usan 2 espacios para sangrías, otros usan 4 espacios para sangrías, etc.

La opción para configurar esto en Visual Studio está en Herramientas-> Opciones-> Editor de texto-> <idioma> -> Pestañas

¿Hay alguna forma de anular esta configuración por solución?


14
Me gustaría que pudiera detectar el estilo de tabulación / sangría por archivo. es decir, cuando se abre un archivo, se utilizará el estilo de tabulación / sangría para ese archivo. Sublime Text lo hace.
IsmailS

Respuestas:


20

Aquí hay una forma (ciertamente hacky) de lograr lo que está buscando:

1) cree una macro que cambie la sangría ( fuente )

 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) Conecte eso con la carga de su solución: en el explorador de macros, elija EnvironmentEvents, seleccione SolutionEventsen el primer menú desplegable, Openeden el segundo. Ahora tiene una macro que se activará cada vez que abra una solución. Solo necesita mapear sus soluciones a la sangría requerida.


8
Hackear, sí, pero funciona. Gracias. Para los desarrolladores de C #, es DTE.Properties ("TextEditor", "CSharp")
Mike Stockdale

2
Si pone esto en una solución, tendrá que ponerlo en todas las soluciones. Difícilmente utilizable, especialmente para proyectos públicos. EditorConfig (la siguiente respuesta a continuación) es mejor en mi humilde opinión.
rustyx

93

ACTUALIZACIÓN: VS 2017 admite EditorConfig de forma nativa: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

En VS 2010 y superior, hay una extensión que establece la sangría basada en el archivo .editorconfig en la raíz de la solución / proyecto:

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

También hay una extensión similar para Visual Studio Code .


2
Me gusta esto: rápido de configurar, no tiene el mismo problema de ralentización que algunas de las otras opciones, y tiene la ventaja adicional de que puede cambiar la configuración en proyectos individuales en una solución, si lo necesita a.
karaken12

@ondatra No puedo hacer que funcione cuando coloco el archivo en mi carpeta Solución (al mismo tiempo que el .slnarchivo), solo en cada carpeta del proyecto. Además, ¿es compatible indent_brace_style?
drzaus

@ondatra se acaba de enterar que no admite indent_brace_styletodavía - He abierto un problema para él.
drzaus

gracias. tenga en cuenta que tuve que usar la actualización 0.4.0 de github.com/editorconfig/editorconfig/issues/116 para vs2012update3
SteelBytes

1
VS2017 v15.3 ahora admite muchas propiedades de estilo de codificación .
Frédéric


4

Desde el sitio web EditorConfig de la extensión VS ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ):

El proyecto EditorConfig define un formato de archivo simple para configurar opciones comunes del editor de texto , como tamaños de sangría . Estos archivos de configuración están diseñados para colocarse junto al código fuente de un proyecto, lo que permite a los editores de texto utilizar las opciones correctas archivo por archivo. El proyecto EditorConfig proporciona complementos para muchos editores de texto comunes, lo que hace que el formato sea completamente multiplataforma.

(énfasis mío)

Divulgación completa: no he podido probarlo personalmente (porque ReSharper se hace cargo).


2

VS2017 RC agregó soporte para el formato .editorconfig.


5
sí, pero un ejemplo del archivo terminado sería bueno :)
toddmo


0

ACTUALIZACIÓN: parece que Resharper no administra la sangría, por lo que esta respuesta en realidad no aborda la pregunta específica. Sin embargo, se aplica en términos generales; es decir, "Visual Studio, según la configuración de la solución" en caso de que alguien se tropiece aquí buscando eso.


Si está utilizando Resharper , puede guardar la configuración de formato (en realidad, cualquier configuración) solo para la solución. Puede especificar aún más si es solo para usted (es decir, no comprometido con el control de fuente) o configuraciones específicas de la solución compartida (es decir, comprometido con el control de fuente).

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

Luego, en la parte inferior de la ventana, seleccione Save To"Solución XYZ personal" (o compartida, según su propósito).

Esto crea un archivo xml YOURSOLUTION.sln.DotSettings.usercon valores como:

<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>

Configuración de Resharper - Guardar solo para solución


1
¿Qué configuración de reajuste se utiliza para establecer la sangría en 2 espacios o 4 espacios?
Endy Tjahjono

@EndyTjahjono es una configuración de VS: Herramientas> Opciones> Editor de texto> (Idioma)> Pestañas> "Tamaño de pestaña" o "Tamaño de sangría". Y lo bueno de VS2012 es que puede usar la búsqueda de inicio rápido ( CTRL+Q) y escribir "Pestañas" para ir directamente a todas las configuraciones de idioma disponibles.
drzaus

Pero esa configuración de VS es global (no por solución / proyecto) y sugirió usar resharper porque tiene configuraciones por solución / proyecto.
Endy Tjahjono

Me entendiste, estaba en medio de cambiar algunas otras configuraciones en resharper, así que asumí que también manejaría la sangría. Volví a mirar a través del nuevo enfoque para ver la configuración de las pestañas, pero no pude encontrarlo. Por lo tanto, la advertencia es "para prácticamente cualquier configuración, excepto las que el resharper no administra, como el tamaño de sangría". Actualizaré la respuesta, siéntete libre de votar en contra ya que no presté suficiente atención.
drzaus

Gracias por la actualización. Para su información, no estaba tratando de corregirlo, pero en realidad esperaba que el resharper tuviera una configuración de sangría por proyecto y simplemente no he encontrado el lugar para configurarla.
Endy Tjahjono

0

Entonces, la solución aceptada dice "Solo necesita mapear sus soluciones a la sangría requerida", lo cual es genial, excepto ¿cómo lo hace? Después de perder mucho tiempo tratando de averiguarlo, encontré un método que prefiero aquí . Este método carga cualquier cantidad de configuraciones exportadas que pueden ser diferentes para cada solución. La configuración puede incluir cualquier cosa, desde sangrías hasta colores o incluso diseño de ventana (creo).

  • En Visual Studio 2008, abra Herramientas> Macros> Explorador de macros
  • Haga doble clic en MyMacros> Module1 (si no tiene Module1, haga clic con el botón derecho en MyMacros y elija 'Nuevo módulo ...' para crearlo).
  • En la ventana del explorador de macros, haga doble clic en 'EnvironmentEvents' a la izquierda.
  • En el menú desplegable superior izquierdo, elija 'SolutionEvents'.
  • En el menú desplegable superior derecho, elija 'Abierto'.
  • El código para manejar el evento SolutionEvents.Opened se agrega automáticamente. Cambie ese código a lo siguiente:

    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
    
  • Guarde la macro.

  • Use Herramientas> Opciones para cambiar su interfaz de usuario para tener la configuración de la pestaña y cualquier otra cosa que desee configurar.
  • Herramientas> Importar y exportar configuraciones ...> Exportar configuraciones de entorno seleccionadas> Siguiente
  • Para exportar la configuración de la pestaña, desmarque 'Todas las configuraciones' y luego marque Opciones> Editor de texto> C / C ++
  • Haga clic en Siguiente, luego escriba 'solution.vssettings' como '¿Cómo desea nombrar su archivo de configuración?' y guarde el archivo donde tenga una solución para la que desee utilizar esa configuración.
  • Arrastre solution.vssettings a cualquier ubicación en la ventana del Explorador de soluciones.
  • Salga de Visual Studio y la próxima vez que abra una solución que contenga solution.vssettings, debería cargar esa configuración.

Si la macro no se ejecuta, podría deberse a un parche de seguridad de MS. En base a esto , agregue la siguiente cadena:

<AllowDComReflection enabled="true"/>

Debajo de la etiqueta <runtime> en los siguientes tres archivos:

"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"

Asegúrese de iniciar el editor que utiliza para editar esos archivos con privilegios de administrador (es decir, haga clic con el botón derecho en el Bloc de notas y elija 'Ejecutar como administrador').

También encontré un complemento que se supone que hace lo mismo que la macro sugerida anteriormente, pero por alguna razón no hizo nada después de ejecutar su instalador.


0

clang-format proporciona opciones bastante sofisticadas para formatear su código fuente.

El complemento de Visual Studio es bastante rudimentario, es decir, no se ejecuta automáticamente, pero hace bien su trabajo (es decir, cuando se invoca manualmente).

http://llvm.org/builds/

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.