EditorConfig לסגנון קוד אחיד
שמירה על סגנון תכנות אחיד (רווחים מול טאבים, גודל טאב וכד’) בין כל המפתחים העובדים על פרוייקט מסויים אינו משימה פשוטה, במיוחד כאשר לוקחים בחשבון את ריבוי עורכי הטקסט וסביבות הפיתוח המשמשים אותנו.
גם אם לוקחים בחשבון תכונות כמו Vim modelines או Emacs Local Variables (כאשר כלים אחרים מגדירים תחביר משלהם), זה בד"כ מוגדר ברמת קובץ בודד ולא בפרוייקט כולו ולוקה בתמיכה מצד מגוון כלי־הפיתוח האחרים. בנוסף אבטחה מהווה בעיה בשימוש ב־modelines ו־Local Variables.
EditorConfig מספק פתרון אפשרי לבעיה. הוא מחפש קובץ INI בשם .editorconfig במעלה התיקיות (ממוקם בד"כ בשורש הפרוייקט).
יש ספריית ליבה (מויישמת ב־C, פייתון, ג’‘אווהסריפט וג’אווה) המשמשת לפתח תוספים עבור מגוון עורכים וסביבות פיתוח. בהינתן נתיב מוחלט לקובץ בפרוייקט יתבצע איתור קובץ ה-.editorconfig והמדורים הרלוונטים בו עבורו כאשר התוצאה היא פלט המכיל את ההגדרות המתאימות עבור הקובץ.
ניקח לדוגמא את קובץ ה־.editorconfig הבא:
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
הרצת הפקודה editorconfig
עבור קובץ מסויים בפרוייקט תפיק:
$ editorconfig ./src/app/app.js
indent_style=space
indent_size=2
end_of_line=lf
charset=utf-8
trim_trailing_whitespace=true
insert_final_newline=true
tab_width=2
EditorConfig תומך בתבניות להתאמת שמות קבצים ומאפשר הגדרת המאפיינים הבאים:
- indent_style
- indent_size
- tab_width
- end_of_line
- charset
- trim_trailing_whitespace
- insert_final_newline
תוספים, אשר משתמשים באחת מספריות הליבה, קיימים עבור העורכים וסביבות הפיתוח הבאים:
- Atom
- Code::Blocks
- Emacs
- Geany
- Gedit
- JetBrain
- jEdit
- Notepad++
- Sublime Text
- TextMate
- Vim
- Visual Studio
נחמד לראות מחוללי פרוייקטים כוללים את הקובץ הזה בתבניות שלהם, לדוגמא: slush-angular ו־yeoman generator-angular.
נ"ב הסכמה על סגנון תכנות המקובל על כולם זו מלחמת קודש נפרדת
ננ"ב לא נשכח את ה-XKCD המתבקש:
Translations