# تيكست مايت (محرر نصوص)

تيكست مايت هو محرر نصوص مبني على واجهة المستخدم الرسومية ومخصص للعمل على أنظمة ماك أو أس أكس وقد تم تطويره على يد آلان أودغارد، ومن مزاياه الملحوظة:
* دعم تخصيص نصوص لغات البرمجة التعريفية.
* دعم واجهة المستخدم المتعددة الألسن على الواجهة الرسومية.
* دعم الماكروات التسجيلية.
* دعم عملية طي النصوص.
* دعم تنفيذ الأوامر عن طريق واجهة سطر أوامر (القشرة) المدمجة مع المحرر.

## تاريخه

بدأ آلان أودغارد بتطوير تيكست مايت في عام 2004 وكانت نتيجة عمله هو إطلاق النسخة 1.0 من تيكست مايت في الخامس من أوكتوبر من العام 2004 وتم بعدها إطلاق النسخة 1.0.1 بتاريخ 21 أوكتوبر من نفس العام وقد تم التركيز في هذه الإطلاقة على وظائف بسيطة بحيث أنها لم تحوِ وظائف المفضلات أو شريط الأدوات ولم تحمل أي دعم لعملية نقل الملفات من خلال بروتوكول نقل الملفات بالإضافة إلى عدم توفر أي من وظائف الطباعة وعلى الرغم من كل تلك النواقص الوظيفية للمحرر إلا أنه قدم الدعم لتحرير نصوص الشيفرات المصدرية لعدد بسيط من لغات البرمجة ويعود السبب في ذلك إلى تطوير عدد من «حزم اللغات» - والتي أصبحت فيما بعد إحدى أهم خصائص المحرر تيكست مايت- ومن المثير للاهتمام أنه وفي تلك الفترة وجد عدد من المطورين اللذين أبدوا اهتمامهم بهذه النسخة المبسطة من تيكست مايت ووجدوا فيها منافساً جيداً لكسر احتكار محرر النصوص بي بي إديت الذي كان يهيمن على سوق البرمجيات الإحتكارية لمحررات النصوص على أنظمة ماك أو أس أكس.
وبتاريخ 10 ديسمبر من العام 2004 تم إطلاق النسخة الفرعية 1.0.2 والتي كانت جزءاً من سلسلة إطلاقات بيتا المخصصة للإطلاقة الرئيسية 1.1 وفي هذه المرحلة اكتسب تيكست مايت مزايا ووظائف جديدة ومنها:
* نافذة مفضلات مبنية على واجهة المستخدم الرسومية لإنشاء وتعديل السمات أو ما يعرف بالثيمات.
* شريط حالة مع قائمة رموز الوظائف.
* قوائم لاختيار لغة الواجهة مع تخصيصات تبويب ألسن النوافذ.
* «محرر حزم» لتحرير تخصيصات نصوص لغات البرمجة المدعومة.
وبتاريخ 6 يناير من العام 2006 أعلن آلان أودغارد عن إطلاق النسخة الرئيسية 1.5 من تيكست مايت وهي النسخة الرئيسية المستقرة منذ الإطلاقة 1.0.2، وتلقت هذه النسخة القبول والإستحسان من طرف العديد من المراجعين والمستخدمين للمحرر وبالأخص اللذين قاموا بنقد النسخة السابقة
واستمر التطوير على تيكست مايت حتى أواسط العام 2006، وفي الثامن من أغسطس من نفس العام تم منح تيكست مايت جائزة أبل للتصميم كأفضل أداة للمطورين (Apple Design Award for Best Developer Tool) وكان ذلك خلال مؤتمر آبل العالمي للمطورين الذي تم عقده في مدينة سان فرانسيسكو بولاية كاليفورنيا الأمريكية. وفي شهر شباط من العام 2006 تم نشر التوجهات المنوي العمل بها لتحديد مستقبل المحرر وكان ذلك من خلال تدوينة تم نشرها على مدونة تيكست مايت، وتشمل هذه التوجهات تحسين وظيفة مدير المشاريع، وتطوير نظام الإضافات لدعم بروتوكول نقل الملفات، بالإضافة إلى استقدام نظام تحكم بالمراجعات مثل أباتشي سبفيرجن بهدف ترتيب مراجعات الشيفرة المصدرية للمحرر، ولكن وعلى أيت حال فقد تم تطبيق هذه التغييرات بشكل بطيء ويدلل على ذلك صغر كم التغييرات الجوهرية المطبقة على المحرر خلال العام 2007 وذلك على الرغم من التركيز على تطوير خاصية «حزم اللغات».
و في شهر يونيو من العام 2009 تم الإعلان عن تطوير النسخة الرئيسية الثانية من المحرر تيكست مايت حيث تم الانتهاء من تسعة أعشار العمل عليها وعلى الرغم من ذلك لم يتم الكشف عن مزايا هذه النسخة، وفي شهر ديسمبر من العام 2011 تم إطلاق النسخة 2.0 الرئيسية من المرحلة ألفا وفتحها أمام الجمهور وتم ذلك من خلال تدوينة على مدونة تيكست مايت، وفي شهر أوكتوبر من العام 2012 تم إطلاق النسخة النهائية من الإصدارة 2.0 ومن الجدير بالذكر أنه وفي شهر أغسطس من العام 2012 تم نشر الشيفرة المصدرية للإصدارة 2.0 على منصة غيت هاب وتم إدراج نصوص استخدام هذه الشيفرة تحت بنود رخصة جنو العمومية.

## المزايا والوظائف
### النطاقات المتداخلة

يسمح تيكست مايت للمستخدمين بالقيام بإنشاء أنماط تمييز الصيغة الخاصة بهم وذلك باستخدام نسخة معدلة من نظام أسكي الخاص بأبل وهو ما يعرف بقائمة الخصائص وذلك بهدف تعريف قواعد اللغة المستهدفة، وتسمح هذه القواعد بتعريف قوانين النطاقات المتداخلة ويتم ذلك عن طريق المكتبة البرمجية المسمى (أونيغوروما) -و هي مكتبة برمجية للتعابير النمطية تندرج بنود استخدامها تحت رخصة بي أس دي- ومن ثم يتم تعيين نطاقات محددة لهذه القواعد وهذه النطاقات يتم تحديدها عن طريق علامات مركبة بهدف تمييزها عن طريق الألوان. ولهذا السبب يتم تعيين كل منطقة في شاشة التحرير بنطاق واحد على الأقل بهدف التمييز والذي يعمل بدوره على تحديد المنطقة المراد تمييزها وكيفية تلوينها بالإضافة إلى تحديد السلوك الذي سيقوم تيكست مايت بتطبيقه على تلك المنطقة من شاشة المحرر، فعلى سبيل المثال العنوان المخصص لأحد الروابط في مقطع «الروابط الخارجية» يمكن تعيينه بالنطاق التالي:
حيث يخبرنا هذا النطاق أننا نبحث عن عنوان رابط (link title) متداخل مع رابط آخر (link) والذي بدوره يتداخل مع قائمة (list) والتي بدورها تتداخل مع وثيقة ميدياويكي (MediaWiki document).
تستطيع سمات تيكست مايت وضع علامات على أي نطاق وذلك على أي مستوى من مستويات الضبط، فعلى سبيل المثال تستطيع إحدى السمات القيام بتلوين جميع الثوابت (constant.*) -و الثابت هو قيمة محفوظة في الذاكرة الرئيسية للنظام ولا تتغير هذه القيمة أثناء تنفيذ البرنامج ويمكن أن تحمل أي نوع من أنواع البيانات- وذلك بشكل مماثل لجميع الثوابت المكتوبة على وثيقة التحرير، بينما تقوم سمة أخرى بتلوين الثوابت العددية (constant.numeric.*) بلون مختلف عن ما قامت به السمة السابقة (لاحظ هنا أن السمة الأولى تصرفت بجميع أنواع الثوابت -بما فيها العددية- وأن السمة الثانية قامت بتمييز الثوابت العددية فقط ومن هنا يأتي معنى النطاقات المتداخلة).

### الأوامر

يدعم تيكست مايت أوامر المستخدم المعرفة (user-defined commands) وأوامر المستخدم المعدلة (user-editable commands) والتي يتم تنفيذها عن طريق مفسر سطر الأوامر باش أو المفسر الذي يتم تحديده عن طريق علامة شي بانغ (Shebang أو ما يعرف بعلامة "!#")، ويمكن للمستخدمين القيام بإرسال أنواع عديدة من المدخلات لهذه الأوامر عبر المحرر تيكست مايت وتشمل أنواع هذه المدخلات (الملف الذي يتم تحريره، والنصوص المحددة «التي يتم تحديدها بواسطة فأرة»، والكلمة الحالية) وغيرها من أنواع المدخلات بالإضافة إلى متغيرات البيئة التنفيذية، وأما بالنسبة إلى المخرجات فيتم التعامل معها وعلاجها بشكل مماثل وبطرق متعددة، وكمثال بسيط لتطبيق خاصية الأوامر في تيكست مايت يتم تحديد إحدى الكلمات كمدخلة للأمر المراد تنفيذه ويقوم الأمر بمعالجة هذه الكلمة ومن ثم يقوم باستبدال الكلمة المدخلة بمخرجات عملية التنفيذ ووضعها في الملف الذي يتم تحريره في مكان الكلمة المدخلة، وهناك أوامر أخرى تقوم باظهار تلميح وظيفي، ويمكن أيضاً استخدام مخرجات الأوامر لإنشاء ملف جديد أو اظهاره على شكل صفحة ويب باستخدام مفسر لغة أتش تي أم أل الخاص بتيكست مايت والمضمن معه.
هناك العديد من حزم لغات البرمجة مثل باش وبي أتش بي وروبي التي تحوي أوامر لترجمة الشيفرة المصدرية وتنفيذ برامجها وذلك من خلال نفس ملف التحرير وفي حالات عديدة يتم إظهار نتيجة تنفيذ هذه البرامج على نافذة مضمنة بتيكست مايت.

### المقاطع النصية

بأبسط أشكالها تعتبر المقاطع النصية مجموعة من الكلمات التي يتم ادخالها إلى الملف المحرر في مكان تواجد المؤشر ولكنها قد تبلغ درجة أكبر من التعقيد، ومن أنواع المقاطع النصية في تيكست مايت ما يلي:
* النصوص العادية.
* متغيرات البيئة التنفيذية.
* تضمين نتيجة تنفيذ أمر خارجي داخل النص.
* نقاط توقف الإزاحة التلقائية.

### حزم اللغات (لغات البرمجة)

يمكن حصر قواعد اللغات والمقاطع النصية والماكروات والأوامر والقوالب في وظيفة واحدة لحزمة لغة بحيث يمكن تنفيذ أي أمر أو مقطع نصي أو ماكرو من خلال اختصارات لوحة المفاتيح فعلى سبيل المثال يمكن للمستخدم القيام بكتابة كلمة محددة ومن ثم الضغط على زر Tab ↹ لتنفيذ الأوامر أو الماكروات أو تضمين المقاطع النصية المحددة في الحزمة.
يتضمن تيكست مايت وبشكل افتراضي 36 حزمة ولكن يوجد أكثر من 120 حزمة إضافية في مستودع سبفيرجن المخصص لتيكست مايت وتشمل العديد من الوظائف المعروفة.

### مدير المشاريع

يستطيع المستخدمون القيام بفتح أكثر من ملف وأكثر من مجلد باستخدام نافذة نظام مدير المشاريع والذي يقدم بدوره خاصية فتح الملفات باستخدام عملية السحب والافلات من قائمة العرض التي تعرض أسماء الملفات والمجلدات والمتواجدة على جانب نافذة المحرر ويتم فتح هذه الملفات والمجلدات باستخدام خاصية نوافذ الألسن وعرضها على المقطع العلوي من نافذة المحرر، ويستطيع المستخدمون أيضاً القيام بعمليات البحث (و البحث والاستبدال) على مستوى المشاريع بالإضافة إلى قابلية تنفيذ الأوامر على مستوى الملفات أو المجلدات التي يتم سردها على قائمة العرض الجانبية.

### مزايا ووظائف أخرى

يحوي تيكست مايت العديد من المزايا والوظائف الأخرى والتي يتم إيجادها عادةً في معظم محررات النصوص الحديثة ومنها:
* طي النصوص: حيث يستطيع المستخدمون القيام بطي النصوص (اخفاء المقاطع النصية واعادة إظهارها) في ملف التحرير وهذه الخاصية مفيدة في حالة قيام المستخدمين بكتابة نصوص شيفرة مصدرية بهدف اظهار النصوص بطريقة مدمجة مما يسهل عملية قراءتها ومتابعتها ويقلل من نسبة التشويش على المطورين أثناء كتابة نصوص شيفرات البرامج، ويستطيع المستخدمون اختيار المقاطع المراد طيها بفأرة الحاسوب أو من خلال السياق النصي بحيث تصبح مقاطع النصوص قابلة للطي بشكل تلقائي كما هو الحال عند كتابة نصوص الروتينات الفرعية.
* التعابير النمطية: يدعم تيكست مايت التعابير النمطية في بعض الوظائف ومنها وظيفة البحث والاستبدال مما يسهل عملية استبدال الكلمات والنصوص في الحالات المعقدة والتي تحتاج الكثير من الوقت في حال تطبيقها باليد، وكما أشرنا سابقاً يستخدم تيكست مايت مكتبة أونيغوروما لتطبيق التعابير النمطية والتي تم تطويرها على يد كيه كوساكو.
* التلميح الوظيفي: يدعم تيكست مايت إظهار قائمة من المقاطع والروتينات الفرعية في الملف المحرر على هيئة تلميح وظيفي.
* حافظة تاريخية: يدعم تيكست مايت خاصية الحافظة التاريخية بحيث تسمح للمستخدمين القيام بقص العديد من المقاطع النصية بنفس الوقت ومن ثم لصقها.
* نمط التحرير العامودي: وتسمح هذه الخاصية للمستخدمين القيام بعملية بتحرير النصوص بشكل عامودي مما يسهل عليهم تكرار عملية التحرير على العديد من السطور بشكل أفقي وهي خاصية مفيدة للغاية خصوصاً عند التعامل مع البيانات المجدولة.
* أدوات الويب: يحوي تيكست مايت في جعبته مفسره الخاص الذي يستخدم لاظهار صفحة الويب أثناء تحرير الشيفرة المصدرية للغة أتش تي أم أل في الملف المستهدف.

### المحدوديات

كغيره من محررات النصوص يحوي تيكست مايت أيضاً بعض المحدوديات ومنها:
* عدم وجود دعم للغات اليابانية والصينية والكورية لأن حروف هذه اللغات تحتاج إلى قدر من الذاكرة الرئيسية أكثر مما يدعمه تيكست مايت.
* عدم دعمه للغات التي تكتب نصوصها من اليمين إلى اليسار كما هو الحال في اللغة العربية واللغة العبرية (و لكن تم حل هذه المشكلة في النسخة الثانية من تيكست مايت).
* عدم وجود دعم لبروتوكول نقل الملفات ولكن وعلى الرغم من ذلك تم إيجاد بعض الحلول لهذه المشكلة وقد تم سردها على صفحة الويكي الخاصة بتيكست مايت.
* بسبب عدم اقتران تيكست مايت بشكل محكم مع إحدى لغات البرمجة التفسيرية (كما هو الحال في المحرر إيماكس ولغة البرمجة ليسب) فإنه من المستحيل على المستخدمين القيام بالتحكم بوظائف بعض الأوامر الرئيسية في المحرر مثل تلك الوظائف التي تقوم بعمليات الإزاحة للمقاطع النصية أو التي تتحكم بالتحريك العامودي للنصوص، وعلى جميع الأحوال يوجد الكثير من الوظائف المفيدة التي يمكن التحكم بها عن طريق الماكروات أو الأوامر حيث قام آلان أودغارد بتوضيح هذا الأمر عن طريق رسالة بالبريد الإلكتروني تم توجييها للمجموعة البريدية المخصصة لمستخدمي تيكست مايت.
* عدم وجود مدقق مضمن في المحرر لشيفرة الأتش تي أم أل ويعود السبب في ذلك إلى اعتماد تيكست مايت على خدمة مدقق رابطة الشبكة العالمية (W3C Markup Validation Service) وبالتالي يجب على المستخدم أن يكون متصلاً بالشبكة العنكبوتية لتدقيق شيفرة الأتش تي أم أل في حال تحريرها.
* عدم وجود القدرة على تقسيم شاشة التحرير (كما هو الحال مع محرر النصوص فيم) إلا أن هناك محاولات لتطبيق هذه الخاصية في المرحلة ألفا من النسخة الثانية.
* عدم وجود القدرة على عملية الإكمال التلقائي الموجه، حيث يحتاج المطورون هذه الخاصية خصوصاً عند تعلمهم لمفردات لغة جديدة.
* لا يعتبر تيكست مايت من محررات النصوص التي يتم فيها تحرير الملفات الثنائية بشكل آمن.
* لا يمكن الولوج لنافذة التحرير في تيكست مايت عن طريق برنامج فويس أوفر (VoiceOver) أو برنامج موندو ماوس (MondoMouse)، إلا أن هناك محاولات لتطبيق هذه الخاصية في المرحلة ألفا من النسخة الثانية.

## مجتمع المطورين والمستخدمين

يوجد لدى تيكست مايت مجتمع مكون من المطورين والمستخدمين اللذين يقومون بالمساهمة في حزم اللغات المفتوحة المصدر ويقومون برفع هذه المساهمات على مستودع سبفيرجن المخصص لتيكست مايت.، ويوجد أيضاً لدى مجتمع تيكست مايت موقع ويكي مخصص للتلميحات والنصائح والاقتراحات والروابط للمصادر الخارجية، كما ويوجد كذلك نظام للتبليغ عن العلل والأخطاء البرمجية باللإضافة إلى وجود قناة آي آر سي مخصصة للنقاش والتحاور وتقديم المساعدة حول تيكست مايت (و عادةً ما تكون قناة textmate# فعالة).
ويقوم مستخدمو تيكست مايت بكتابة النصوص البرمجية باستخدام العديد من لغات البرمجة ومن البديهي أن يوجد لكل لغة برمجة حزمة خاصة بها، ومن المثير للاهتمام أن معظم حزم اللغات يتم دعمها بواسطة مستخدمين رئيسيين فعلى سبيل المثال يقوم دافيد هاينماير هانسون (مبتكر إطار روبي أون ريلز) بدعم الحزمة الخاصة بلغة روبي.

## انظر أيضاً

* قائمة محررات النصوص