Tôi là người hâm mộ lớn về việc ghi lại hành vi đúng đắn của các tính năng IDE có tác động tinh tế nhưng quan trọng đối với luồng mã hóa - những thứ như lựa chọn tự động hoàn thành và mã nhận xét/uncommenting bạn có thể không nhận ra bạn tận dụng nhưng vào cuối ngày bạn đã làm được nhiều hơn một chút so với bạn có thể có. Tôi làm như vậy với hy vọng rằng các dịch vụ ngôn ngữ khác mà tôi phải sử dụng kết hợp (các) tính năng này, sau đó cải thiện cuộc sống mã hóa hàng ngày của tôi. "Indent thông minh" thực sự, tức là trình soạn thảo Visual Studio 2008 C#, là một trong những tính năng đó.Tài liệu thuật toán thông minh thụt lề?
Chấm lề mã khối cơ bản là hợp lý đơn giản và có thể bị tấn công cùng nhau trong một khoảng thời gian hợp lý đủ tốt để hoàn thành công việc. True Smart Indent, mặt khác, là một nhiệm vụ khó khăn nhất về mặt kỹ thuật mà tôi đã phải thực hiện trong IDE cho đến nay, và tôi đã thực hiện phần chia sẻ công bằng của mình. Thậm chí, định dạng mã tự động hoàn toàn tự động cũng dễ dàng hơn; nó chỉ chống lại Indent thông minh cho việc nâng hạng nặng.
Tôi đang tìm kiếm các cuộc thảo luận cấp cao về các thuật toán thông minh Indent mục đích chung. Cụ thể, tôi đang tìm kiếm một trong hai nghiên cứu về chiến lược thụt lề thông minh hoặc mô tả khách quan về tất cả các trường hợp thông thường và "cạnh" có thể được kiểm tra để đảm bảo kết quả lặp lại, không có lỗi. Cuối cùng, tôi muốn cung cấp cả quy trình chi tiết của chức năng, một nền tảng cụ thể để thực sự triển khai tính năng, và cuối cùng lắp ráp một phiên bản ngôn ngữ cụ thể từ đó và tích hợp nó vào các dịch vụ ngôn ngữ của tôi.
PS: Trình soạn thảo C# của Visual Studio 2010 có một số lỗi nhỏ trong tính năng này. Tự mình thực hiện, tôi hoàn toàn tôn trọng công việc cần thiết để đánh bóng nó.
Chỉnh sửa (8/25): Tôi đã quản lý write down a draft the rules vì cách tôi nghĩ mọi thứ sẽ được xử lý khi thụt lề thông minh nằm trong nhận xét mã. Có lẽ tôi sẽ làm việc từ góc độ C++/C# trên các quy tắc, nhưng sau đó chúng sẽ có thể được tham số hóa cho các khía cạnh của các ngôn ngữ khác.
@Chris: Nếu không có hai liên kết tôi đặt lại, bạn không thể nói phạm vi của hai tính năng này và cách tôi đã suy nghĩ cẩn thận. –
Với siêu liên kết, đây là spam imho. – ChrisW
@ Chris: Đó là lý do tại sao tôi để lại một, nhưng không phải là hai chỉ là sơ đồ dòng mã trên blog của tôi –