Visual Studio, per pengaturan indentasi solusi

89

Saya sedang mengerjakan beberapa hal yang berbeda dan beberapa menggunakan tab, beberapa menggunakan 2 spasi untuk indentasi, pengguna lain 4 spasi untuk indentasi, dll.

Opsi untuk mengatur ini di Visual Studio ada di Tools-> Options-> Text Editor-> <language> -> Tabs

Adakah cara untuk mengganti pengaturan ini pada basis per solusi?

Fire Lancer
sumber
14
Saya berharap itu bisa mendeteksi gaya tab / indentasi per file. yaitu ketika sebuah file dibuka akan menggunakan gaya tab / indentasi untuk file tersebut. Sublime Text melakukannya.
IsmailS

Jawaban:

20

Berikut adalah salah satu cara (memang hacky) untuk mencapai apa yang Anda cari:

1) buat makro yang mengubah indentasi ( sumber )

 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) Hubungkan itu dengan pemuatan solusi Anda: Di penjelajah makro, pilih EnvironmentEvents, pilih SolutionEventsdi drop-down pertama, Openeddi yang kedua. Anda sekarang memiliki makro yang akan terpicu setiap kali Anda membuka solusi. Anda hanya perlu memetakan solusi Anda ke lekukan yang diperlukan.

Bahbar
sumber
8
Retas, ya, tetapi berhasil. Terima kasih. Untuk C # devs, ini adalah DTE.Properties ("TextEditor", "CSharp")
Mike Stockdale
2
Jika Anda memasukkan ini ke dalam satu solusi, Anda harus memasukkannya ke dalam semua solusi. Hampir tidak dapat digunakan, terutama untuk proyek publik. EditorConfig (jawaban selanjutnya di bawah) adalah IMHO yang lebih baik.
rustyx
93

UPDATE: VS 2017 mendukung EditorConfig secara native: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

Di VS 2010 dan yang lebih baru, ada ekstensi yang menetapkan indentasi berdasarkan file .editorconfig di root solusi / proyek:

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

Ada juga ekstensi serupa untuk Visual Studio Code .

Tereza Tomcova
sumber
2
Saya suka ini - cepat untuk mengatur, tidak memiliki masalah perlambatan yang sama seperti beberapa opsi lainnya, dan memiliki bonus tambahan bahwa Anda dapat mengubah pengaturan pada masing-masing proyek dalam sebuah solusi, jika Anda perlu untuk.
karaken12
@ondatra Saya tidak bisa membuatnya berfungsi ketika saya meletakkan file di folder Solusi saya (bersamaan dengan .slnfile), hanya di setiap folder proyek. Juga, apakah itu mendukung indent_brace_style?
drzaus
@ondatra baru tahu itu tidak mendukung indent_brace_stylebelum - Saya sudah membuka masalah untuk itu.
drzaus
Terima kasih. harap dicatat, saya harus menggunakan pembaruan 0.4.0 dari github.com/editorconfig/editorconfig/issues/116 untuk vs2012update3
SteelBytes
1
VS2017 v15.3 sekarang mendukung banyak properti gaya pengkodean .
Frédéric
4

Dari situs web VS extension EditorConfig ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ):

Proyek EditorConfig mendefinisikan format file sederhana untuk mengkonfigurasi opsi editor teks umum seperti ukuran indentasi . File konfigurasi ini dirancang untuk ditempatkan di samping kode sumber proyek, memungkinkan editor teks untuk menggunakan opsi yang tepat berdasarkan file-by-file. Proyek EditorConfig menyediakan plugin untuk banyak editor teks umum, menjadikan formatnya sepenuhnya lintas platform.

(penekanan saya)

Pengungkapan Penuh: Saya belum dapat mengujinya secara pribadi (karena ReSharper mengambil alih).

drzaus
sumber
2

VS2017 RC menambahkan dukungan untuk format .editorconfig.

asm
sumber
5
ya tapi contoh file yang sudah selesai akan bagus :)
toddmo
0

PEMBARUAN: sepertinya lekukan tidak dikelola oleh Resharper, jadi jawaban ini sebenarnya tidak menjawab pertanyaan spesifik. Namun, itu berlaku secara umum; yaitu "Visual Studio, per pengaturan solusi" jika ada yang tersandung di sini mencari itu.


Jika Anda menggunakan Resharper , Anda dapat menyimpan pengaturan pemformatan (sebenarnya, pengaturan apa pun) hanya untuk solusinya. Anda selanjutnya dapat menentukan apakah hanya untuk Anda (yaitu tidak berkomitmen pada kontrol sumber) atau pengaturan khusus solusi bersama (yaitu berkomitmen pada kontrol sumber).

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

Kemudian di bagian bawah jendela, di bawah Save Topilih "Solusi XYZ pribadi" (atau dibagikan, tergantung pada tujuan Anda).

Ini membuat file xml YOURSOLUTION.sln.DotSettings.userdengan nilai seperti:

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

Pengaturan Resharper - Simpan untuk Solusi Saja

drzaus
sumber
1
Pengaturan pencar gambar mana yang digunakan untuk mengatur indentasi menjadi 2 atau 4 spasi?
Endy Tjahjono
@EndyTjahjono itu adalah pengaturan VS: Tools> Options> Text Editor> (Language)> Tabs> "Tab Size" atau "Indent Size". Dan hal yang menyenangkan tentang VS2012 adalah Anda dapat menggunakan pencarian luncur cepat ( CTRL+Q) dan mengetik "Tab" untuk melompat langsung ke semua pengaturan bahasa yang tersedia.
drzaus
Tetapi pengaturan VS itu bersifat global (bukan per solusi / proyek) dan Anda menyarankan menggunakan resharper karena memiliki pengaturan per solusi / proyek?
Endy Tjahjono
Anda mendapatkan saya - saya sedang mengubah beberapa pengaturan lain di resharper, jadi saya berasumsi itu juga akan mengelola indentasi. Saya baru saja melihat melalui resharper lagi untuk pengaturan tab, tetapi saya tidak dapat menemukannya. Jadi peringatannya adalah "untuk hampir semua pengaturan kecuali yang tidak dikelola oleh penjawab, seperti ukuran indentasi". Saya akan memperbarui jawabannya, jangan ragu untuk memberi suara negatif karena saya kurang memperhatikan.
drzaus
Terima kasih atas pembaruannya. FYI, saya tidak mencoba mengoreksi Anda, tetapi sebenarnya berharap resharper memiliki pengaturan indentasi per proyek dan saya belum menemukan tempat untuk mengaturnya.
Endy Tjahjono
0

Jadi, solusi yang diterima mengatakan "Anda hanya perlu memetakan solusi Anda ke indentasi yang diperlukan", yang bagus, kecuali bagaimana Anda melakukannya? Setelah membuang banyak waktu mencoba mencari tahu, saya menemukan metode yang saya sukai di sini . Metode ini memuat sejumlah pengaturan yang diekspor yang dapat berbeda untuk setiap solusi. Pengaturan dapat mencakup apa saja, dari indentasi hingga warna atau bahkan tata letak jendela (menurut saya).

  • Dalam Visual Studio 2008, buka Tools> Macros> Macro explorer
  • Klik dua kali MyMacros> Module1 (jika Anda tidak memiliki Module1, klik kanan MyMacros dan pilih 'New module ...' untuk membuatnya).
  • Di jendela makro explorer, klik dua kali 'EnvironmentEvents' di sebelah kiri.
  • Di menu tarik-turun kiri atas, pilih 'SolutionEvents'.
  • Di menu tarik-turun kanan atas, pilih 'Terbuka'.
  • Kode untuk menangani acara SolutionEvents.Opened secara otomatis ditambahkan. Ubah kode itu menjadi yang berikut:

    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
    
  • Simpan makro.

  • Gunakan Tools> Options untuk mengubah UI Anda agar memiliki pengaturan tab dan apa pun yang ingin Anda atur.
  • Alat> Pengaturan Impor dan Ekspor ...> Ekspor pengaturan lingkungan yang dipilih> Berikutnya
  • Untuk hanya mengekspor pengaturan tab, hapus centang 'Semua Pengaturan' lalu centang Opsi> Editor Teks> C / C ++
  • Klik Next, lalu ketik 'solution.vssettings' sebagai 'What you want to name your settings file?' dan simpan file ke mana pun Anda memiliki solusi yang Anda inginkan untuk menggunakan pengaturan tersebut.
  • Seret solution.vssettings ke lokasi mana pun di jendela Solution Explorer.
  • Keluar dari Visual Studio dan lain kali Anda membuka solusi yang berisi solution.vssettings, itu harus memuat pengaturan tersebut.

Jika makro tidak berjalan, itu mungkin karena patch keamanan MS. Berdasarkan ini , tambahkan string berikut:

<AllowDComReflection enabled="true"/>

Di bawah tag <runtime> dalam tiga file berikut:

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

Pastikan untuk menjalankan editor yang Anda gunakan untuk mengedit file tersebut dengan hak istimewa Administrator (yaitu klik kanan Notepad dan pilih 'Run as Administrator').

Saya juga menemukan plug-in yang seharusnya melakukan hal yang sama seperti makro yang disarankan di atas tetapi untuk beberapa alasan itu tidak melakukan apa pun setelah saya menjalankan penginstalnya.

Naga Musim Dingin
sumber
0

clang-format menyediakan opsi yang cukup canggih untuk memformat kode sumber Anda.

Plugin Visual Studio sangat sederhana, yaitu tidak berjalan secara otomatis, tetapi melakukan tugasnya dengan baik (jika dipanggil secara manual).

http://llvm.org/builds/

Rondom
sumber