2009-09-25 31 views
14

Tôi thực sự muốn có VS2008 tự động thụt lề nội dung của một khu vực. Một mẫu có lẽ sẽ là tốt nhất.Làm cách nào để thụt lề nội dung của khu vực bằng C#?

là gì bây giờ:

#region [ Fields ] 
public int Count; 
public int Total; 
#endregion 

Những gì tôi muốn là:

#region [ Fields ] 
    public int Count; 
    public int Total; 
#endregion 

Làm thế nào tôi có thể nhận được VS để làm điều này?

EDIT: Đối với giá trị của nó, VS không làm điều này trong VB.NET.

+2

có thể đáng đọc: http://stackoverflow.com/questions/1476550/c-any-standard-way-to-divide-a-class-into-regions/1476582#1476582 –

+3

Nhận xét thú vị và Kinh dị mã hóa blog thật thú vị. Nhận xét mà tôi quan tâm nhất là sự tương đồng với một bác sĩ phẫu thuật. I E. bệnh nhân được bảo hiểm, ngoại trừ nơi bác sĩ phẫu thuật sẽ làm việc. Đó là cách tâm trí của tôi hoạt động tốt nhất, tập trung vào vấn đề trong tầm tay. Cảm ơn các quan điểm khác nhau mặc dù! –

+0

Nhận xét lập trình C# điển hình trong bài viết SO được liên kết này! Ngay cả khi bạn không thích khu vực (và tôi làm, và bỏ lỡ VB tự động thụt lề cho tôi), nó vẫn là một câu hỏi hợp lệ! –

Trả lời

4

Hết hộp? Bạn không thể.

+1

Bất kỳ addin/công cụ nào có thể làm điều này? –

+0

Không phải là tôi biết. Tôi không sử dụng khu vực! Tôi chỉ kiểm tra các tùy chọn ReSharper, nhưng không thấy gì cả. –

+0

Downvoter: xin vui lòng để lại một bình luận. Làm khác là không hiệu quả. –

-1

cụ Tùy chọn Text Editor C# Tabs Indent thông minh ident

+2

Điều này đã không thực sự thụt lề nội dung của một khu vực (ít nhất là đối với tôi). –

6

Macro này nên làm việc, đối với hầu hết các phần:

Public Sub IndentRegions() 
    'Assume that the document has been smart formatted 
    Dim TS As TextSelection = DTE.ActiveDocument.Selection 
    TS.SelectAll() 
    Dim lines As String() = TS.Text.Split(vbNewLine) 

    Dim level As Integer = 0 

    TS.StartOfDocument() 

    While Not TS.ActivePoint.AtEndOfDocument 

     If lines(TS.ActivePoint.Line - 1).Trim().StartsWith("#endregion") Then 
      level = level - 1 
     End If 

     For i = 1 To level 
      TS.Indent() 
     Next 

     If lines(TS.ActivePoint.Line - 1).Trim().StartsWith("#region") Then 
      level = level + 1 
     End If 

     TS.LineDown() 
     TS.StartOfLine() 
    End While 
End Sub 
+1

Cảm ơn macro. Điều này làm những gì được đề xuất (giả sử bạn thực sự tạo vùng chọn ... DOH!): Nó thụt lề các dòng dưới một vùng. Tuy nhiên, ngay sau khi tôi sử dụng Ctl + K + D để định dạng lại, công việc được hoàn tác! Vì vậy, bây giờ, tôi chỉ sống với nó. –

+0

Bạn có thể viết macro thực hiện định dạng thông minh và sau đó chạy các vùng thụt lề. Tôi không biết nếu bạn có thể tái bản đồ Ctrl + K D để vĩ mô (tôi chắc chắn bạn có thể bản đồ trình tự quan trọng khác, mặc dù). –

+0

Đó là một ý tưởng hay ... Tôi sẽ thử điều đó. –

1

Tôi có thể nói là cách duy nhất để mô phỏng này là sử dụng dấu ngoặc nhọn "{" và "}" bên trong vùng, phân định khối mã của bạn. Unfortunatelly này chỉ hoạt động bên trong hàm và phương thức mã, do đó điều này sẽ không làm việc cho ví dụ của bạn. Trong một số trường hợp, việc phân định các khối mã có thể không tương thích và yêu cầu điều chỉnh theo logic mã của bạn.

function Test(){ 

    #region Example 
    { 
     your code 
    } 
    #end region 

} 
3

Thay đổi màu nền thành màu khác với nền trang chính (tôi đã sử dụng màu bạc trên nền trắng) và nó sẽ cho cảm giác bạn đang tìm kiếm.

Options>Environment>Fonts and Colors> Hiển thị các mục: Preprocessor Keyword và sau đó thay đổi menu thả xuống item background.

+1

Tôi thích câu trả lời này. có indents và indents :) – timothy

+1

Điều này hoạt động tốt, không phải những gì đã được hỏi nhưng có những thủ thuật làm nổi bật các khu vực. – MaurGi

Các vấn đề liên quan