Visual Studio, por configurações de recuo de solução


89

Estou trabalhando em algumas coisas diferentes e alguns usam guias, alguns usam 2 espaços para indentações, outros usuários 4 espaços para indentações etc.

A opção de definir isso no Visual Studio está em Ferramentas-> Opções-> Editor de Texto-> <idioma> -> Guias

Existe alguma maneira de substituir essas configurações em uma base por solução?


14
Eu gostaria que ele pudesse detectar o estilo de tabulação / indentação por arquivo. ou seja, quando um arquivo é aberto, ele usa o estilo de tabulação / recuo para esse arquivo. Sublime Text faz isso.
IsmailS

Respostas:


20

Aqui está uma maneira (reconhecidamente hacky) de conseguir o que você está procurando:

1) criar uma macro que muda o recuo ( fonte )

 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 isso com o carregamento da sua solução: No macro explorer, escolha EnvironmentEvents, selecione SolutionEventsno primeiro menu suspenso, Openedno segundo. Agora você tem uma macro que será acionada sempre que você abrir uma solução. Você só precisa mapear suas soluções para o recuo necessário.


8
Hack, sim, mas funciona. Obrigado. Para desenvolvedores C #, é DTE.Properties ("TextEditor", "CSharp")
Mike Stockdale,

2
Se você colocar isso em uma solução, terá que colocá-lo em todas as soluções. Dificilmente utilizável, especialmente para projetos públicos. EditorConfig (próxima resposta abaixo) é melhor IMHO.
rustyx,

93

ATUALIZAÇÃO: o VS 2017 oferece suporte nativo a EditorConfig: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

No VS 2010 e acima, há uma extensão que define o recuo com base no arquivo .editorconfig na raiz da solução / projeto:

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

Também existe uma extensão semelhante para o Visual Studio Code .


2
Eu gosto disso - rápido de configurar, não tem o mesmo problema de desaceleração que algumas das outras opções e tem o bônus adicional de que você pode alterar as configurações em projetos individuais em uma solução, se necessário para.
karaken12

@ondatra Não consigo fazer funcionar quando coloco o arquivo na minha pasta Solution (concorrente com o .slnarquivo), apenas em cada pasta de projeto. Além disso, é compatível indent_brace_style?
drzaus

@ondatra só descobri que não suporta indent_brace_styleainda - Eu já abriu um problema para ele.
drzaus

obrigado. observe, eu tive que usar a atualização 0.4.0 de github.com/editorconfig/editorconfig/issues/116 para vs2012update3
SteelBytes

1
VS2017 v15.3 agora suporta muitas propriedades de estilo de codificação .
Frédéric


4

No site da extensão VS EditorConfig ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ):

O projeto EditorConfig define um formato de arquivo simples para configurar opções comuns do editor de texto , como tamanhos de indentação . Esses arquivos de configuração são projetados para ficar junto com o código-fonte de um projeto, permitindo que os editores de texto usem as opções corretas arquivo por arquivo. O projeto EditorConfig fornece plug-ins para muitos editores de texto comuns, tornando o formato totalmente multiplataforma.

(ênfase minha)

Divulgação completa: não pude testá-lo pessoalmente (porque o ReSharper assume).


2

VS2017 RC adicionou suporte para o formato .editorconfig.


5
sim, mas um exemplo do arquivo concluído seria bom :)
toddmo


0

ATUALIZAÇÃO: parece que o recuo não é gerenciado pelo Resharper, portanto, esta resposta não aborda realmente a questão específica. No entanto, ele se aplica em termos gerais; ou seja, "Visual Studio, por configurações de solução" no caso de alguém tropeçar aqui procurando por isso.


Se estiver usando o Resharper , você pode salvar as configurações de formatação (na verdade, quaisquer configurações) apenas para a solução. Você pode ainda especificar se é apenas para você (ou seja, não comprometido com o controle de origem) ou configurações específicas da solução compartilhada (ou seja, se compromete com o controle de origem).

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

Em seguida, na parte inferior da janela, Save Toescolha "Solução XYZ pessoal" (ou compartilhada, dependendo do seu objetivo).

Isso cria um arquivo xml YOURSOLUTION.sln.DotSettings.usercom 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>

Configurações de recompactação - Salvar apenas para solução


1
Qual configuração de ressignificação é usada para definir o recuo para 2 ou 4 espaços?
Endy Tjahjono

@EndyTjahjono que é uma configuração do VS: Ferramentas> Opções> Editor de texto> (Idioma)> Guias> "Tamanho da guia" ou "Tamanho do recuo". E o bom do VS2012 é que você pode usar a pesquisa de início rápido ( CTRL+Q) e digitar "Abas" para ir direto para todas as configurações de idioma disponíveis.
drzaus de

Mas essa configuração de VS é global (não por solução / projeto) e você sugeriu usar resharper porque tem configurações por solução / projeto?
Endy Tjahjono

Você me pegou - eu estava no meio da alteração de algumas outras configurações no resharper, então presumi que ele também gerencie o recuo. Acabei de olhar o resharper novamente para as configurações da guia, mas não consegui encontrar. Portanto, a advertência é "para praticamente qualquer configuração, exceto aquelas que o redefinidor não gerencia, como o tamanho do recuo". Vou atualizar a resposta, fique à vontade para votar negativamente, pois não estou prestando atenção suficiente.
drzaus

Obrigado pela atualização. Para sua informação, eu não estava tentando corrigi-lo, mas na verdade esperava que resharper tivesse configuração de recuo por projeto e eu simplesmente não encontrei o lugar para configurá-lo.
Endy Tjahjono de

0

Então, a solução aceita diz "Você só precisa mapear suas soluções para o recuo necessário", o que é ótimo, exceto como você faz isso? Depois de perder muito tempo tentando descobrir isso, encontrei um método que prefiro aqui . Este método carrega qualquer número de configurações exportadas que podem ser diferentes para cada solução. As configurações podem incluir qualquer coisa, desde recuos a cores ou até mesmo layout de janela (eu acho).

  • No Visual Studio 2008, abra Ferramentas> Macros> Macro explorer
  • Clique duas vezes em MeusMacros> Módulo1 (se você não tiver Módulo1, clique com o botão direito em MeusMacros e escolha 'Novo módulo ...' para criá-lo).
  • Na janela do macro explorer, clique duas vezes em 'EnvironmentEvents' à esquerda.
  • No menu suspenso superior esquerdo, escolha 'SolutionEvents'.
  • No menu suspenso superior direito, escolha 'Aberto'.
  • O código para manipular o evento SolutionEvents.Opened é adicionado automaticamente. Altere esse código para o seguinte:

    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
    
  • Salve a macro.

  • Use Ferramentas> Opções para alterar sua IU para ter as configurações da guia e tudo o mais que você deseja definir.
  • Ferramentas> Importar e exportar configurações ...> Exportar configurações de ambiente selecionadas> Avançar
  • Para apenas exportar as configurações da guia, desmarque "Todas as configurações" e marque Opções> Editor de texto> C / C ++
  • Clique em Avançar e digite 'solution.vssettings' como 'Como você deseja nomear seu arquivo de configurações?' e salve o arquivo onde você tiver uma solução para usar essas configurações.
  • Arraste solution.vssettings para qualquer local na janela do Solution Explorer.
  • Saia do Visual Studio e da próxima vez que você abrir uma solução contendo solution.vssettings, ela deve carregar essas configurações.

Se a macro não funcionar, pode ser devido a um patch de segurança da MS. Com base nisso , adicione a seguinte string:

<AllowDComReflection enabled="true"/>

Abaixo da tag <runtime> nos três arquivos a seguir:

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

Certifique-se de iniciar o editor que você usa para editar esses arquivos com privilégios de administrador (ou seja, clique com o botão direito do mouse em Bloco de notas e escolha 'Executar como administrador').

Também encontrei um plug-in que deveria fazer a mesma coisa que a macro sugerida acima, mas por algum motivo não fez nada depois que executei o instalador.


0

clang-format fornece opções bastante sofisticadas para formatar seu código-fonte.

O plug-in do Visual Studio é bastante rudimentar, ou seja, não é executado automaticamente, mas faz bem seu trabalho (quando chamado manualmente).

http://llvm.org/builds/

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.