2009-07-31 12 views
71

que estoy trabajando en un par de cosas diferentes y algunas fichas de uso, algunos utilizan 2 espacios para guiones, otros usuarios 4 espacios de guiones, etc.Studio, por solución de ajustes de Visual sangría

la opción de configurar esto en visual Studio se encuentra en Herramientas- Opciones- > > texto Editor-> <lenguaje> - > aquí

¿hay alguna manera de anular esta configuración en una solución por las bases?

+11

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

Respuesta

14

Aquí es una forma (la verdad hacky) para lograr lo que busca:

1) crear una macro que cambia la sangría (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) gancho que con su solución de carga: En el macro explorer, elija EnvironmentEvents, seleccione SolutionEvents en el primer menú desplegable, Opened en el segundo. Ahora tiene una macro que se activará cada vez que abra una solución. Solo necesita asignar sus soluciones a la sangría requerida.

+7

Hack, sí, pero funciona. Gracias. Para los desarrolladores de C#, es DTE.Properties ("TextEditor", "CSharp") –

+2

Si pone esto en una solución, tendrá que ponerlo en todas las soluciones. Poco utilizable, especialmente para proyectos públicos. [EditorConfig] (http://editorconfig.org/) (próxima respuesta a continuación) es mejor en mi humilde opinión. – rustyx

+0

Parece que las macros ya no existen en VS 2013 ... –

71

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

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

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

También hay productos similares extension for Visual Studio Code.

+1

Me gusta: rápido de configurar, no tiene el mismo problema de desaceleración que algunas de las otras opciones, y tiene el agregado Además, puede cambiar la configuración de proyectos individuales en una solución, si es necesario. – karaken12

+0

@ondatra No puedo hacer que funcione cuando coloco el archivo en mi carpeta de Solución (al mismo tiempo que el archivo '.sln'), solo en cada carpeta del proyecto. Además, ¿admite ['indent_brace_style'] (https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties#ideas-for-domain-specific-properties)? – drzaus

+0

@ondatra acaba de descubrirlo [no admite 'indent_brace_style' aún] (https://github.com/editorconfig/editorconfig-visualstudio#supported-properties) - He [abierto un problema] (https: // github.com/editorconfig/editorconfig/issues/112) para ello. – drzaus

0

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


Si está utilizando Resharper, puede guardar los ajustes de formato (en realidad, cualquier ajuste) por sólo la solución. Puede especificar más si solo para usted (es decir, no comprometido con el control de origen) o configuraciones compartidas específicas de la solución (es decir, se compromete con el control de origen).

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

A continuación, en la parte inferior de la ventana, debajo Save To elegir "Solución XYZ personal" (o compartido, dependiendo de su propósito).

Esto crea un archivo XML YOURSOLUTION.sln.DotSettings.user con 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> 

Resharper Settings - Save for Solution Only

+0

¿Qué configuración de reafilar se usa para establecer la sangría en 2 espacios o 4 espacios? –

+0

@EndyTjahjono que 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

+0

Pero esa configuración VS es global (no por solución/proyecto) y usted sugirió usar el reajuste porque tiene configuraciones de solución/proyecto. –

3

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

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

(el énfasis es mío)

Full Disclosure: No he podido comprobar personalmente (porque se hace cargo de ReSharper).

0

Por lo tanto, la solución aceptada dice "Solo necesita asignar sus soluciones a la sangría requerida", lo cual es genial, excepto ¿cómo lo hace? Después de perder mucho tiempo tratando de resolver eso, encontré un método que prefiero here. 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 MyMacros> módulo 1 (si usted no tiene el módulo 1, haga clic derecho MyMacros y seleccione 'Nuevo módulo ...' para crearlo)
  • En la ventana de macro explorer, haga doble clic en 'EnvironmentEvents' a la izquierda.
  • En el menú desplegable de la esquina superior izquierda, seleccione 'Eventos de solución'.
  • En la lista desplegable superior derecha, 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 que tenga la configuración de las pestañas y cualquier otra cosa que desee establecer.
  • Herramientas> Importar y Exportar configuración ...> Exportar seleccionado la configuración del entorno> Siguiente
  • aquí para configuración de la ficha de exportación, desactive 'Todos Settings' y después comprobar las opciones> Editor de texto> C/C++
  • Haga clic en Siguiente y, a continuación escriba 'solution.vssettings' como '¿A qué nombre desea ponerle el archivo de configuración?' y guarde el archivo en cualquier lugar donde tenga una solución que desee usar.
  • Arrastre solución.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. Sobre la base de this, agregue la siguiente cadena:

<AllowDComReflection enabled="true"/> 

Por debajo de la > etiqueta < tiempo de ejecución en los tres archivos siguientes:

"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 se utiliza para editar esos archivos con privilegios de administrador (es decir, haga clic con el botón derecho en el Bloc de notas y seleccione 'Ejecutar como administrador').

También encontré a plug-in 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

sonido metálico de formato ofrece opciones muy sofisticadas para dar formato a su código fuente.

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

http://llvm.org/builds/

3

VS2017 RC añadió soporte para el formato .editorconfig.

+1

sí, pero un ejemplo del archivo terminado sería agradable :) – toddmo

Cuestiones relacionadas