Visual Studio, для настроек отступов для каждого решения - PullRequest
84 голосов
/ 31 июля 2009

Я работаю над несколькими разными вещами, и некоторые используют вкладки, некоторые используют 2 пробела для отступов, другие пользователи 4 пробела для отступов и т. Д.

Параметр для установки этого в Visual Studio находится в Инструменты-> Параметры-> Текстовый редактор -> -> Вкладки

Есть ли способ переопределить эти настройки для каждого решения?

Ответы [ 9 ]

86 голосов
/ 12 июля 2012

ОБНОВЛЕНИЕ: VS 2017 изначально поддерживает EditorConfig: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

В VS 2010 и выше есть расширение, которое устанавливает отступ на основе файла .editorconfig в корне решения / проекта:

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

Существует также аналогичное расширение для кода Visual Studio .

18 голосов
/ 31 июля 2009

Вот один (по общему признанию, хакерский) способ достичь того, что вы ищете:

1) создать макрос, который изменяет отступ ( 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) Подключите это решение к загрузке вашего решения: В проводнике макросов выберите EnvironmentEvents, выберите SolutionEvents в первом раскрывающемся меню, Opened во втором. Теперь у вас есть макрос, который будет срабатывать при каждом открытии решения. Вам просто нужно сопоставить ваши решения с требуемым отступом.

7 голосов
/ 06 августа 2014

Теперь есть еще одна надстройка под названием "Rebracer" ... ссылка здесь: http://visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58

4 голосов
/ 23 сентября 2013

Из расширения VS EditorConfig (http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328) веб-сайт:

Проект EditorConfig определяет простой формат файла для настройки общие параметры текстового редактора , такие как размеры отступов . Эти конфигурационные файлы предназначены для размещения рядом с источником проекта код, позволяющий текстовым редакторам использовать правильные параметры для файла за файлом основа. Проект EditorConfig предоставляет плагины для многих распространенных текстов. редакторы, делающие формат полностью кроссплатформенным.

(акцент мой)

Полное раскрытие: я не смог лично проверить его (потому что ReSharper вступает во владение).

2 голосов
/ 28 ноября 2016

VS2017 RC добавлена ​​поддержка формата .editorconfig.

0 голосов
/ 08 июля 2016

clang-format предоставляет довольно сложные опции для форматирования вашего исходного кода.

Плагин Visual Studio является довольно элементарным, то есть он не запускается автоматически, но он хорошо выполняет свою работу (то есть, когда вызывается вручную).

http://llvm.org/builds/

0 голосов
/ 24 мая 2014

Итак, принятое решение гласит: «Вам просто нужно сопоставить ваши решения с требуемым отступом», и это здорово, кроме как это сделать? Потратив много времени, пытаясь выяснить это, я нашел способ, который я предпочитаю здесь . Этот метод загружает любое количество экспортируемых настроек, которые могут отличаться для каждого решения. Настройки могут включать что угодно, от отступов до цветов или даже от макета окна (я думаю).

  • В Visual Studio 2008 откройте Инструменты> Макросы> Проводник макросов
  • Дважды щелкните MyMacros> Module1 (если у вас нет Module1, щелкните правой кнопкой мыши MyMacros и выберите «Новый модуль ...», чтобы создать его).
  • В окне обозревателя макросов дважды щелкните «EnvironmentEvents» слева.
  • В верхнем левом раскрывающемся списке выберите SolutionEvents.
  • В правом верхнем раскрывающемся списке выберите «Открыто».
  • Код для обработки события SolutionEvents.Opened добавляется автоматически. Измените этот код на следующий:

    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
    
  • Сохранить макрос.

  • Используйте Инструменты> Параметры, чтобы изменить свой пользовательский интерфейс, чтобы иметь настройки вкладки и все остальное, что вы хотите установить.
  • Инструменты> Импорт и экспорт настроек ...> Экспорт выбранных настроек среды> Далее
  • Чтобы просто экспортировать настройки вкладок, снимите флажок «Все настройки», затем выберите «Параметры»> «Текстовый редактор»> C / C ++
  • Нажмите Далее, затем введите «solution.vssettings» как «Как вы хотите назвать свой файл настроек?» и сохраните файл там, где у вас есть решение, для которого вы хотите использовать эти настройки.
  • Перетащите solution.vssettings в любое место в окне обозревателя решений.
  • Выйдите из Visual Studio и в следующий раз, когда вы откроете решение, содержащее solution.vssettings, он должен загрузить эти настройки.

Если макрос не запускается, это может быть из-за исправления безопасности MS. На основе this добавьте следующую строку:

<AllowDComReflection enabled="true"/>

Ниже тега в следующих трех файлах:

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

Обязательно запустите редактор, который вы используете для редактирования этих файлов с правами администратора (т.е. щелкните правой кнопкой мыши Блокнот и выберите «Запуск от имени администратора»).

Я также нашел плагин , который должен делать то же самое, что и макрос, предложенный выше, но по какой-то причине он ничего не сделал после того, как я запустил его установщик.

0 голосов
/ 09 июля 2013

ОБНОВЛЕНИЕ: похоже, что отступом не управляет Resharper, поэтому этот ответ фактически не затрагивает конкретный вопрос. Тем не менее, он применяется в общих чертах; т. е. "Visual Studio, в соответствии с настройками решения" на случай, если кто-то споткнется здесь в поисках этого.


Если вы используете Resharper , вы можете сохранить настройки форматирования (на самом деле, любые настройки) только для решения. Кроме того, вы можете указать, предназначены ли они только для вас (т. Е. Не привязаны к управлению исходным кодом) или для общих параметров, относящихся к решению (т. Е. Зафиксированы для управления исходным кодом).

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

Затем в нижней части окна в разделе Save To выберите «Solution XYZ personal» (или общий доступ, в зависимости от вашей цели).

Это создает XML-файл YOURSOLUTION.sln.DotSettings.user со значениями, такими как:

<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 голосов
/ 04 мая 2012

Вы можете установить параметр Вставить вкладки / Пробелы с помощью props.Item("InsertTabs") = bool

Проверьте это: https://github.com/jamesfoster/VS-Whitespace-Macros

...