إيماكس

إيماكس ( / ˈiːmæks / )، المسمى في الأصلEMACS(اختصار لـ "ماكرو المحرر")،[1][2][3]هي عائلة منمحررات النصوصالتي تتميز بإمكانيةالتوسعة.[4]الدليل الخاص بالإصدار الأكثر استخدامًا،[5] GNU Emacs، بأنه "محرر العرض في الوقت الفعلي القابل للتوسع والتخصيص والموثق ذاتيًا".[6]بدأ تطوير أول Emacs في منتصف السبعينيات،[7][8]والعمل على GNU Emacs، المنحدر مباشرة من الأصل، مستمر؛ أحدث إصدار منه هو 29.4[9] ، تم إصداره في يونيو 2024.

يحتوي برنامج Emacs على أكثر من 10000 أمر مدمج، وتسمح واجهة المستخدم الخاصة به للمستخدم بدمج هذه الأوامر في وحدات ماكرو لأتمتة العمل. تتميز تطبيقات Emacs عادةً بلهجة من لغة برمجة Lisp ، مما يسمح للمستخدمين والمطورين بكتابة أوامر وتطبيقات جديدة للمحرر. تمت كتابة ملحقات، من بين أشياء أخرى، لإدارة الملفات ، والوصول عن بُعد ، [10] والبريد الإلكتروني ، والمخططات التفصيلية ، والوسائط المتعددة ، وتكامل Git ، وموجزات RSS ، [11] والتحرير التعاوني ، [12] بالإضافة إلى تطبيقات ELIZA و Pong و Conway's Life و Snake و Dunnet و Tetris . [13]

تم كتابة EMACS الأصلي في عام 1976 بواسطة David A. Moon و Guy L. Steele Jr. كمجموعة من وحدات الماكرو لمحرر TECO . [14] [1] [2] [3] [15] وقد استوحيت من أفكار محرري وحدات الماكرو TECO TECMAC وTMACS. [16]

الإصدار الأكثر شيوعًا والأكثر نقلًا من Emacs هو GNU Emacs، الذي أنشأه ريتشارد ستالمان لمشروع GNU . [17] XEmacs هو متغير تفرّع من GNU Emacs في عام 1991. يستخدم GNU Emacs وXEmacs لهجات Lisp متشابهة ومتوافقة مع بعضها البعض في الغالب. تطوير XEmacs غير نشط.

يعد GNU Emacs ، إلى جانب vi ، أحد المتنافسين الرئيسيين في حرب المحررين التقليدية في ثقافة يونكس . يعد GNU Emacs من أقدم المشاريع الحرة والمفتوحة المصدر التي لا تزال قيد التطوير. [18]

تاريخ

تم إنشاء Emacs بواسطة Guy L. Steele Jr. كمشروع لتوحيد العديد من مجموعات أوامر TECO المتباينة وروابط المفاتيح في معهد ماساتشوستس للتكنولوجيا [2]
ديفيد أ. مون
تأثرت واجهة Emacs بتصميم لوحة مفاتيح Space-Cadet ، والتي سعت إلى تمكين المستخدمين من كتابة أكبر عدد ممكن من أنواع المدخلات المختلفة. [19]

بدأ تطوير Emacs خلال سبعينيات القرن العشرين في مختبر الذكاء الاصطناعي التابع لمعهد ماساتشوستس للتكنولوجيا ، والذي استخدمت أجهزة الكمبيوتر PDP-6 و PDP-10 فيه نظام التشغيل Incompatible Timesharing System (ITS) الذي يتميز بمحرر أسطر افتراضي يُعرف باسم Tape Editor and Corrector (TECO). وعلى عكس معظم محررات النصوص الحديثة، استخدم TECO أوضاعًا منفصلة حيث يضيف المستخدم نصًا أو يحرر نصًا موجودًا أو يعرض المستند. لا يمكن للمرء وضع الأحرف مباشرة في مستند عن طريق كتابتها في TECO، ولكن بدلاً من ذلك يدخل حرفًا ('i') في لغة أوامر TECO لإخباره بالتبديل إلى وضع الإدخال، وإدخال الأحرف المطلوبة، وخلال هذا الوقت لم يتم عرض النص المحرر على الشاشة، وأخيرًا إدخال حرف (<esc>) لتحويل المحرر مرة أخرى إلى وضع الأوامر. (تم استخدام تقنية مماثلة للسماح بالكتابة فوقها.) هذا السلوك مشابه لسلوك البرنامج ed .

بحلول سبعينيات القرن العشرين، كان TECO برنامجًا قديمًا بالفعل، حيث تم إصداره في البداية عام 1962. زار ريتشارد ستالمان مختبر ستانفورد للذكاء الاصطناعي عام 1976 [20] وشاهد محرر E الخاص بالمختبر ، والذي كتبه فريد رايت. [21] لقد أعجب بسلوك WYSIWYG (ما تراه هو ما تحصل عليه) البديهي للمحرر ، والذي أصبح منذ ذلك الحين السلوك الافتراضي لمعظم محرري النصوص الحديثة. عاد إلى معهد ماساتشوستس للتكنولوجيا حيث أضاف كارل ميكلسن، وهو أحد المتسللين في مختبر الذكاء الاصطناعي، إلى TECO وضع عرض/تحرير مشترك يسمى Control-R والذي يسمح بتحديث عرض الشاشة في كل مرة يدخل فيها المستخدم ضغطة مفتاح. أعاد ستالمان تنفيذ هذا الوضع ليعمل بكفاءة ثم أضاف ميزة ماكرو إلى وضع تحرير عرض TECO والتي سمحت للمستخدم بإعادة تعريف أي ضغطة مفتاح لتشغيل برنامج TECO. [3]

كان لدى E ميزة أخرى افتقرت إليها TECO: التحرير العشوائي. كان TECO محررًا متسلسلًا للصفحات تم تصميمه لتحرير شريط الورق على PDP-1 في وقت كانت فيه ذاكرة الكمبيوتر صغيرة بشكل عام بسبب التكلفة، وكانت ميزة TECO تسمح بالتحرير على صفحة واحدة فقط في كل مرة بشكل متسلسل حسب ترتيب الصفحات في الملف. بدلاً من تبني نهج E في هيكلة الملف للوصول العشوائي للصفحات على القرص، قام ستالمان بتعديل TECO للتعامل مع المخازن المؤقتة الكبيرة بكفاءة أكبر وتغيير طريقة إدارة الملفات الخاصة به لقراءة وتحرير وكتابة الملف بالكامل كمخزن مؤقت واحد. تستخدم جميع برامج التحرير الحديثة تقريبًا هذا النهج.

سرعان ما اكتسبت النسخة الجديدة من TECO شعبية كبيرة في مختبر الذكاء الاصطناعي وسرعان ما تراكمت مجموعة كبيرة من وحدات الماكرو المخصصة التي غالبًا ما تنتهي أسماؤها بـ MAC أو MACS ، والتي تعني macro . بعد عامين، تولى جاي ستيل مشروع توحيد وحدات الماكرو المتنوعة في مجموعة واحدة. [22] تضمن التنفيذ النهائي لستيل وستالمان تسهيلات لتوسيع وتوثيق مجموعة الماكرو الجديدة. [3] أطلق على النظام الناتج اسم EMACS، والذي يرمز إلى Editing MACroS أو، بدلاً من ذلك، E مع MACroS . اختار ستالمان اسم Emacs "لأن <E> لم يكن قيد الاستخدام كاختصار في ITS في ذلك الوقت." [23] يزعم أحد أساطير القراصنة أن البرنامج سمي على اسم Emack & Bolio's ، وهو متجر آيس كريم شهير في بوسطن . [24] كان أول نظام EMACS تشغيلي موجودًا في أواخر عام 1976. [25]

رأى ستالمان مشكلة في التخصيص المفرط والتفرع الفعلي وحدد شروطًا معينة للاستخدام. [ بحاجة لمصدر ] وكتب لاحقًا: [25]

تم توزيع EMACS على أساس المشاركة المجتمعية، مما يعني أنه يجب إرجاع جميع التحسينات إليّ حتى يتم دمجها وتوزيعها.

كان برنامج Emacs الأصلي، مثل TECO، يعمل فقط على PDP-10 الذي يعمل بنظام ITS. وكان سلوكه مختلفًا بدرجة كافية عن سلوك TECO بحيث يمكن اعتباره محرر نصوص في حد ذاته، وسرعان ما أصبح برنامج التحرير القياسي على ITS. نقل مايك ماكماهون برنامج Emacs من ITS إلى أنظمة التشغيل TENEX و TOPS-20 . ومن بين المساهمين الآخرين في الإصدارات المبكرة من Emacs Kent Pitman وEarl Killian وEugene Ciccarelli. وبحلول عام 1979، أصبح Emacs هو المحرر الرئيسي المستخدم في مختبر الذكاء الاصطناعي التابع لمعهد ماساتشوستس للتكنولوجيا ومختبر علوم الكمبيوتر التابع له. [26]

التنفيذات

التنفيذات المبكرة

Zmacs ، وهو Emacs لآلات Lisp ، وهو تطور لـ EINE وZWEI
كتب جيمس جوسلينج محررًا شبيهًا بـ Emacs ليعمل على نظام Unix ( Gosling Emacs ) في عام 1981

في السنوات التالية، كتب المبرمجون مجموعة متنوعة من محررات البرامج المشابهة لـ Emacs لأنظمة الكمبيوتر الأخرى. وشملت هذه EINE ( EINE Is Not EMACS ) و ZWEI [27] ( ZWEI Was EINE Initially )، والتي كتبها مايك ماكماهون ودانييل وينرب لجهاز ليسب ، و Sine ( Sine Is Not Eine[28] الذي كتبه أوين ثيودور أندرسون. كان EINE الخاص بوينرب هو أول برنامج Emacs مكتوب بلغة ليسب. في عام 1978، كتب برنارد جرينبيرج برنامج Multics Emacs بالكامل تقريبًا بلغة ليسب في مختبر أنظمة المعلومات التابع لشركة هانيويل في كامبريدج. تمت صيانة برنامج Multics Emacs لاحقًا بواسطة ريتشارد سولي ، الذي واصل تطوير محرر NILE المشابه لـ Emacs لمشروع NIL، وباري مارغولين. ستتبنى العديد من إصدارات Emacs، بما في ذلك GNU Emacs، لاحقًا لغة ليسب كلغة توسعة.

كتب جيمس جوسلينج ، الذي اخترع لاحقًا NeWS ولغة البرمجة Java ، Gosling Emacs في عام 1981. Gosling Emacs هو أول محرر شبيه بـ Emacs يعمل على Unix [ بحاجة لمصدر ] ، وقد كُتب بلغة C واستخدم Mocklisp ، وهي لغة ذات بناء جملة يشبه Lisp، كلغة توسعة.

ظهرت الإعلانات المبكرة لبرنامج CCA EMACS التابع لشركة Computer Corporation of America (Steve Zimmerman) [29] في عام 1984. [30] وفي عام 1985، ذكرت المقارنات بين برنامج GNU Emacs، عندما صدر، أنه مجاني مقابل 2400 دولار. [31] [ اقتباس غير ذي صلة ]

جنو إيماكس

تشغيل GNU Emacs في وحدة تحكم نصية
GNU Emacs يعمل على نظام التشغيل Microsoft Windows

بدأ ريتشارد ستالمان العمل على جنو إيماكس في عام 1984 لإنتاج بديل برمجي حر لبرنامج جوسلينج إيماكس. كان جنو إيماكس في البداية مبنيًا على جوسلينج إيماكس، لكن استبدال ستالمان لمترجم موكليسب الخاص به بمترجم ليسب حقيقي تطلب إعادة كتابة كل الكود الخاص به تقريبًا. أصبح هذا أول برنامج يصدره مشروع جنو الناشئ. تمت كتابة جنو إيماكس بلغة سي ويوفر إيماكس ليسب ، والتي تم تنفيذها أيضًا بلغة سي، كلغة توسعة. تم إصدار الإصدار 13، أول إصدار عام، في 20 مارس 1985. كان أول إصدار واسع الانتشار من جنو إيماكس هو الإصدار 15.34، والذي تم إصداره لاحقًا في عام 1985. تم ترقيم الإصدارات المبكرة من جنو إيماكس بـ 1.xx ، حيث يشير الرقم الأولي إلى إصدار نواة سي. تم حذف الرقم 1 بعد الإصدار 1.12، حيث كان يُعتقد أن الرقم الرئيسي لن يتغير أبدًا، وبالتالي تم تخطي الترقيم من 1 إلى 13. [32] في سبتمبر 2014، تم الإعلان في قائمة بريد GNU emacs-devel أن GNU Emacs سوف يتبنى استراتيجية الإصدار السريع وأن أرقام الإصدارات سوف تتزايد بشكل أسرع في المستقبل. [33]

قدم GNU Emacs ميزات أكثر من Gosling Emacs، وخاصة لغة Lisp كاملة الميزات كلغة توسعة، وسرعان ما حل محل Gosling Emacs كمحرر Emacs الفعلي لنظام Unix. استغل ماركوس هيس ثغرة أمنية في نظام البريد الإلكتروني الفرعي لبرنامج GNU Emacs في حملة الاختراق التي قام بها عام 1986 والتي حصل من خلالها على حق الوصول إلى أجهزة الكمبيوتر التي تعمل بنظام Unix. [34]

يتم تنفيذ معظم وظائف GNU Emacs من خلال لغة برمجة نصية تسمى Emacs Lisp . نظرًا لأن حوالي 70% من GNU Emacs مكتوب بلغة امتداد Emacs Lisp، [35] فإن المرء يحتاج فقط إلى نقل نواة C التي تنفذ مفسّر Emacs Lisp. وهذا يجعل نقل Emacs إلى منصة جديدة أقل صعوبة إلى حد كبير من نقل مشروع مكافئ يتكون من كود أصلي فقط.

كان تطوير GNU Emacs مغلقًا نسبيًا حتى عام 1999 واستُخدم كمثال لأسلوب تطوير الكاتدرائية في The Cathedral and the Bazaar . ومنذ ذلك الحين، تبنى المشروع قائمة بريدية عامة للتطوير وإمكانية وصول CVS مجهولة . تم التطوير في جذع CVS واحد حتى عام 2008 ثم تم تحويله إلى Bazaar DVCS . في 11 نوفمبر 2014، تم نقل التطوير إلى Git . [36]

ملف C في Emacs 27 مع موضوع modus-operandi

ظل ريتشارد ستالمان هو المسؤول الرئيسي عن صيانة جنو إيماكس، لكنه تراجع عن الدور في بعض الأحيان. وكان ستيفان مونير وتشونج ييدونج مسؤولين عن الصيانة من عام 2008 إلى عام 2015. [37] [38] تم تعيين جون ويجلي مسؤول صيانة في عام 2015 بعد اجتماع مع ستالمان في معهد ماساتشوستس للتكنولوجيا. [39] اعتبارًا من أوائل عام 2014، كان لدى جنو إيماكس 579 فردًا ملتزمًا طوال تاريخه. [40]

إكس إيماكس

XEmacs 21.5 على Linux

تم تطوير Lucid Emacs، المستند إلى إصدار ألفا مبكر من GNU Emacs 19، في بداية عام 1991 بواسطة Jamie Zawinski وآخرين في Lucid Inc. حدث أحد أشهر الانقسامات المبكرة في تطوير البرمجيات الحرة عندما تباعدت قواعد التعليمات البرمجية لإصداري Emacs وتوقفت فرق التطوير المنفصلة عن الجهود الرامية إلى دمجها مرة أخرى في برنامج واحد. [41] تمت إعادة تسمية Lucid Emacs منذ ذلك الحين باسم XEmacs . تطويره غير نشط حاليًا، مع إصدار أحدث إصدار مستقر 21.4.22 في يناير 2009 (بينما تم إصدار نسخة تجريبية في عام 2013)، بينما نفذ GNU Emacs العديد من الميزات التي كانت مخصصة سابقًا لـ XEmacs فقط. [42] [ مصدر أفضل مطلوب ]

شوك أخرى من GNU Emacs

تشمل الشوكات الأخرى الجديرة بالملاحظة ما يلي:

  • Aquamacs – يعتمد على GNU Emacs (يعتمد Aquamacs 3.2 على GNU Emacs الإصدار 24 ويعتمد Aquamacs 3.3 على GNU Emacs الإصدار 25) والذي يركز على التكامل مع واجهة مستخدم Apple Macintosh
  • Meadow – نسخة يابانية لنظام التشغيل Microsoft Windows [43]

محررات Emacs المختلفة

uEmacs/Pk 4.0.15 على Linux
محرر mg tiny المشابه لمحرر Emacs في OpenBSD 5.3 . تحرير كود مصدر Ruby
تشغيل JOVE في صندوق Debian

في الماضي، انتشرت المشاريع التي تهدف إلى إنتاج إصدارات صغيرة من Emacs. كان GNU Emacs يستهدف في البداية أجهزة الكمبيوتر ذات مساحة عنوان مسطحة 32 بت وذاكرة وصول عشوائي لا تقل عن 1  ميجا بايت . [44] كانت مثل هذه الأجهزة عبارة عن محطات عمل وأجهزة كمبيوتر صغيرة عالية الجودة في الثمانينيات، وهذا ترك الحاجة إلى إعادة تنفيذ أصغر حجمًا يمكن تشغيلها على أجهزة الكمبيوتر الشخصية الشائعة . تتمتع أجهزة الكمبيوتر اليوم بقوة وسعة أكثر من كافية لإزالة هذه القيود، ولكن تم تصميم نسخ صغيرة مؤخرًا لتناسب أقراص تثبيت البرامج أو للاستخدام على أجهزة أقل قدرة. [45]

تهدف مشاريع أخرى إلى تنفيذ Emacs بلغة مختلفة من لغة Lisp أو لغة برمجة مختلفة تمامًا. ورغم أن جميع هذه المشاريع لا تزال قيد الصيانة النشطة، فإن هذه النسخ تشمل:

  • MicroEMACS ، الذي كتبه في الأصل ديف كونروي وتم تطويره بعد ذلك بواسطة دانييل لورانس والذي يوجد في العديد من الاختلافات.
  • mg ، والذي كان يسمى في الأصل MicroGNUEmacs، ثم mg2a لاحقًا، وهو فرع من MicroEMACS في المجال العام يهدف إلى التشابه بشكل أكبر مع GNU Emacs. يتم تثبيته الآن افتراضيًا على OpenBSD .
  • JOVE (نسخة جوناثان الخاصة من Emacs)، وهي تنفيذ غير قابل للبرمجة لـ Emacs من ابتكار جوناثان باين لأنظمة تشبه UNIX .
  • MINCE (MINCE ليس برنامج Emacs كاملاً)، وهو إصدار خاص بنظام CP/M وDOS لاحقًا، من Mark of the Unicorn . تطور MINCE إلى Final Word، الذي أصبح في النهاية معالج الكلمات Borland Sprint .
  • Perfect Writer ، وهو تطبيق CP/M مشتق من MINCE تم تضمينه في عام 1982 تقريبًا كمعالج كلمات افتراضي مع الإصدارات الأولى من Kaypro II وKaypro IV. تم توفيره لاحقًا مع Kaypro 10 كبديل لـ WordStar .
  • Freemacs ، إصدار DOS يستخدم لغة توسعة تعتمد على توسيع وحدات الماكرو النصية ويتناسب مع حد الذاكرة المسطح الأصلي الذي يبلغ 64 كيلوبايت .
  • Zmacs ، لـ MIT Lisp Machine وأحفادها، تم تنفيذه في ZetaLisp .
  • Epsilon ، [46] نسخة طبق الأصل من Emacs من إنتاج Lugaru Software. تم تضمين إصدارات لأنظمة DOS وWindows وLinux وFreeBSD وMac OS X وOS/2 في الإصدار. يستخدم لغة امتداد غير Lisp مع بناء جملة C واستخدم تنفيذًا مبكرًا جدًا لمخزن أوامر متزامن تحت نظام MS-DOS أحادي المهمة.
  • PceEmacs هو محرر يعتمد على Emacs لـ SWI-Prolog .
  • Hemlock ، مكتوبة في الأصل بلغة Spice Lisp ، ثم Common Lisp . جزء من CMU Common Lisp . متأثرة بلغة Zmacs . تم تقسيمها لاحقًا بواسطة Lucid Common Lisp (مثل Helix)، ومشاريع LispWorks و Clozure CL . يوجد أيضًا مشروع Portable Hemlock، والذي يهدف إلى توفير Hemlock، والذي يعمل على العديد من تطبيقات Common Lisp.
  • edwin ، محرر نصوص شبيه بـ Emacs متضمن مع MIT/GNU Scheme.

المحررون مع محاكاة Emacs

سمات

يعد Emacs في الأساس محرر نصوص وهو مصمم للتعامل مع أجزاء من النص، على الرغم من أنه قادر على تنسيق المستندات وطباعتها مثل معالج الكلمات من خلال التفاعل مع برامج خارجية مثل LaTeX أو Ghostscript أو متصفح الويب. يوفر Emacs أوامر للتعامل مع وحدات النص الدلالية وعرضها بشكل تفاضلي مثل الكلمات والجمل والفقرات وبناءات التعليمات البرمجية المصدرية مثل الوظائف . كما يتميز أيضًا بوحدات ماكرو لوحة المفاتيح لأداء دفعات محددة من أوامر التحرير من قبل المستخدم.

GNU Emacs هو محرر عرض في الوقت الفعلي ، حيث يتم عرض تعديلاته على الشاشة أثناء حدوثها. هذا هو السلوك القياسي لمحرري النصوص الحديثين، لكن EMACS كان من أوائل المحررين الذين طبقوا هذا. البديل هو إصدار أمر مميز لعرض النص، (على سبيل المثال قبل أو بعد تعديله). كان هذا شائعًا في محررات السطور والسياقات الأقدم (أو الأبسط فقط)، مثل QED (BTS وCTSS وMultics)، وed (Unix)، وED (CP/M)، و Edlin (DOS).

الهندسة المعمارية العامة

يتم تحقيق كل الوظائف تقريبًا في Emacs، بما في ذلك عمليات التحرير الأساسية مثل إدراج الأحرف في ملف، من خلال وظائف مكتوبة بلهجة من لغة البرمجة Lisp . تُعرف اللهجة المستخدمة في GNU Emacs باسم Emacs Lisp (Elisp)، وقد تم تطويرها خصيصًا لنقل Emacs إلى GNU و Unix . تقع طبقة Emacs Lisp فوق نواة مستقرة من الخدمات الأساسية وتجريد المنصة المكتوبة بلغة البرمجة C ، مما يتيح نقل GNU Emacs إلى مجموعة كبيرة ومتنوعة من أنظمة التشغيل والهندسة المعمارية دون تعديل دلالات التنفيذ لنظام Lisp حيث يوجد معظم المحرر. في بيئة Lisp هذه، يمكن تعديل المتغيرات والوظائف دون الحاجة إلى إعادة بناء Emacs أو إعادة تشغيله، حتى مع تجميع الإصدارات المعاد تعريفها حديثًا من ميزات المحرر الأساسية بشكل غير متزامن وتحميلها في البيئة الحية لاستبدال التعريفات الموجودة. يتميز GNU Emacs الحديث بكل من البايت كود وتجميع الكود الأصلي لـ Emacs Lisp.

يتم تخزين كل التكوين في المتغيرات والفئات وهياكل البيانات، ويتم تغييرها ببساطة عن طريق تحديث هذه العناصر مباشرةً. يعد استخدام لهجة Lisp في هذه الحالة ميزة رئيسية، حيث يتكون بناء جملة Lisp من ما يسمى بالتعبيرات الرمزية (أو sexprs)، والتي يمكن أن تعمل كتعبيرات كود قابلة للتقييم وكتنسيق تسلسل بيانات مشابه، ولكنه أبسط وأكثر عمومية، من التنسيقات المعروفة مثل XML و JSON و YAML . وبهذه الطريقة، لا يوجد فرق كبير في الممارسة العملية بين تخصيص الميزات الحالية وكتابة ميزات جديدة، وكلاهما يتم بنفس الطريقة الأساسية. وهذا يختلف تشغيليًا عن معظم محرري البرامج القابلة للتوسعة الحديثة، على سبيل المثال مثل VS Code ، حيث يتم استخدام لغات منفصلة لتنفيذ واجهة وميزات المحرر وترميز تكوينه وخياراته المحددة من قبل المستخدم. الهدف من التصميم المفتوح لـ Emacs هو عرض محتويات Emacs الداخلية بشكل شفاف لمستخدمي Emacs أثناء الاستخدام العادي بنفس الطريقة التي يتم بها عرضها لمطور Emacs الذي يعمل على شجرة git ، ولتقليص التمييز بين استخدام Emacs وبرمجة Emacs قدر الإمكان، مع الاستمرار في توفير بيئة تحرير مستقرة وعملية وسريعة الاستجابة للمستخدمين المبتدئين.

البيانات التفاعلية

البنية الأساسية لتحرير النصوص هي المخزن المؤقت ، وهي منطقة ذاكرة تحتوي على بيانات (نص عادةً) مع السمات المرتبطة بها. وأهم هذه السمات هي:

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

تعد الأوضاع ، على وجه الخصوص، مفهومًا مهمًا في Emacs، حيث توفر آلية لتفكيك وظائف Emacs إلى مجموعات من السلوكيات واختصارات المفاتيح ذات الصلة ببيانات المخازن المؤقتة المحددة. توفر الأوضاع الرئيسية حزمة عامة من الوظائف والأوامر ذات الصلة ببيانات المخزن المؤقت والطريقة التي قد يتفاعل بها المستخدمون معها (على سبيل المثال تحرير الكود المصدر بلغة معينة، وتحرير نظام hex ، وعرض نظام الملفات، والتفاعل مع git ، وما إلى ذلك)، وتحدد الأوضاع الثانوية مجموعات فرعية من الوظائف القابلة للتطبيق عبر العديد من الأوضاع الرئيسية (مثل auto-save-mode). يمكن تشغيل الأوضاع الثانوية أو إيقاف تشغيلها محليًا لكل مخزن مؤقت وكذلك عالميًا عبر جميع المخازن المؤقتة، بينما لا يمكن تشغيل الأوضاع الرئيسية إلا لكل مخزن مؤقت. يمكن التعامل مع أي بيانات أخرى ذات صلة بمخزن مؤقت ولكنها غير مجمعة في وضع ما ببساطة عن طريق التركيز على هذا المخزن المؤقت وتعديل البيانات ذات الصلة مباشرةً.

يتم تحقيق أي تفاعل مع المحرر (مثل ضغطات المفاتيح أو النقر فوق زر الماوس) من خلال تقييم كود Emacs Lisp، وعادةً ما يكون الأمر ، وهو وظيفة مصممة صراحةً للاستخدام التفاعلي. يمكن إعادة تعريف المفاتيح بشكل تعسفي ويمكن أيضًا الوصول إلى الأوامر بالاسم؛ تقوم بعض الأوامر بتقييم كود Emacs Lisp التعسفي الذي يقدمه المستخدم بطرق مختلفة (على سبيل المثال مجموعة من eval-الوظائف، التي تعمل على buffer، regionأو فردي expression). حتى أبسط مدخلات المستخدم (مثل الأحرف القابلة للطباعة ) يتم تنفيذها كوظائف Emacs Lisp، مثل self-insert-command، المرتبطة افتراضيًا بمعظم مفاتيح لوحة المفاتيح في مخزن تحرير نص نموذجي، والذي يحدد معلمات نفسه باستخدام الحرف المحدد محليًا المرتبط بالمفتاح المستخدم لاستدعائه.

على سبيل المثال، يؤدي الضغط على fالمفتاح في المخزن المؤقت الذي يقبل إدخال النص إلى تقييم الكود ، الذي يُدرج نسخة واحدة من ثابت الحرف عند النقطة . يتم تحديد ، في هذه الحالة، من خلال ما يطلق عليه Emacs الوسيطة العالمية : تقبل جميع أكواد أوامر Emacs قيمة عددية تشير، في أبسط استخدام لها، إلى تكرار إجراء ما، ولكن في الحالات الأكثر تعقيدًا (حيث لا يكون التكرار منطقيًا) يمكن أن تسفر عن سلوكيات أخرى. يمكن توفير هذه الحجج عبر مقدمات الأوامر، مثل + ، أو بشكل أكثر إحكامًا + ، والتي تتوسع إلى . عندما لا يتم توفير أي بادئة، تكون الحجة العالمية هي : يتم تشغيل كل أمر ضمنيًا مرة واحدة، ولكن يمكن استدعاؤه مضاعفًا، أو بطريقة مختلفة، عند تزويده بمثل هذه البادئة. قد تكون مثل هذه الحجج غير إيجابية أيضًا حيث يكون من المنطقي أن تكون كذلك - الأمر متروك للوظيفة التي تقبل الحجة لتحديد، وفقًا لدلالاتها الخاصة، ما يعنيه رقم معين لها. أحد الاستخدامات الشائعة للوظائف هو تنفيذ الإجراءات في الاتجاه المعاكس ببساطة عن طريق التحقق من علامة الوسيطة العالمية، مثل أمر الفرز الذي يفرز في الاتجاه المعاكس افتراضيًا وفي الاتجاه المعاكس عند استدعائه بحجة سلبية، باستخدام القيمة المطلقة لحجته كمفتاح فرز (على سبيل المثال الفرز في الاتجاه المعاكس حسب مؤشر العمود (أو الفاصل) 7)، أو التراجع/الإعادة، والتي هي ببساطة سلبيات لبعضها البعض (الانتقال للأمام والخلف من خلال تاريخ متكرر من الاختلافات من خلال عدد معين من الخطوات في وقت واحد). (self-insert-command 1 ?f)?f 1Controlu 7 fMeta7 f(self-insert-command 7 ?f)1-7

لغة الأوامر

نظرًا لمفرداتها الكبيرة نسبيًا من الأوامر، تتميز Emacs بلغة أوامر راسخة منذ فترة طويلة ، للتعبير بإيجاز عن ضغطات المفاتيح اللازمة لأداء إجراء ما. تتعرف لغة الأوامر هذه على مفاتيح التحويل والتعديل التالية: و و و و و و . قد لا تكون كل هذه المفاتيح موجودة على لوحة مفاتيح على غرار IBM، على الرغم من أنه يمكن عادةً تكوينها حسب الرغبة. يتم تمثيلها في لغة الأوامر على هيئة المقدمات المقابلة: و و و و و و و . المفاتيح التي يمكن طباعة أسمائها بأكثر من حرف واحد محاطة بأقواس زاوية. وبالتالي، سيتم عرض اختصار لوحة المفاتيح مثل + + + (التحقق من الصيغ التابعة وحساب جميع الخلايا في جميع المصنفات المفتوحة في Excel ) في لغة أوامر Emacs على هيئة ، بينما سيتم التعبير عن أمر Emacs مثل + + + (البحث التدريجي عن الملفات عن طريق التعبير العادي المطابق لاسم الملف) على هيئة . تُستخدم لغة الأوامر أيضًا للتعبير عن الإجراءات اللازمة لاستدعاء الأوامر بدون اختصار معين: على سبيل المثال، الأمر (الذي يقوم بتهيئة مخزن مؤقت في الذاكرة لتخزين النص المؤقت والتلاعب به)، عندما يستدعيه المستخدم، سيتم الإبلاغ عنه مرة أخرى على أنه ، مع قيام Emacs بمسح مساحة اسم الأوامر المتاحة سياقيًا لإرجاع أقصر تسلسل من ضغطات المفاتيح التي تفسرها بشكل فريد. CtrlAlt⇧ ShiftMetaSuperHyperC-A-S-M-s-H-CtrlAlt⇧ ShiftF9C-A-S-<f9>Metas f CtrlMetasM-s f C-M-sscratch-bufferM-x scra <return>

عرض ديناميكي

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

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

تمامًا كما لا تتطلب المخازن المؤقتة وجود نوافذ، فإن تشغيل عمليات Emacs لا يتطلب أي إطارات، وأحد أنماط الاستخدام الشائعة هو نشر Emacs كخادم تحرير : تشغيله كخادم بدون رأس والاتصال به عبر عميل توليد الإطارات. يمكن بعد ذلك توفير هذا الخادم في أي موقف يتطلب محررًا، وذلك ببساطة عن طريق إعلان برنامج العميل ليكون برنامج المستخدم أو المتغير. يستمر مثل هذا الخادم في العمل في الخلفية، وإدارة أي عمليات فرعية، وتجميع stdin من الأنابيب المفتوحة أو المنافذ أو fifos، وتنفيذ إجراءات دورية أو مبرمجة مسبقًا، وتذكر سجل التراجع عن المخزن المؤقت، ومقاطع النص المحفوظة، وسجل الأوامر، وحالة المستخدم الأخرى بين جلسات التحرير. في وضع التشغيل هذا، يتداخل Emacs مع وظائف برامج مثل screen و tmux . EDITORVISUAL

بسبب فصل اهتمامات العرض عن وظيفة التحرير، يمكن لـ Emacs العرض بشكل مشابه تقريبًا على أي جهاز أكثر تعقيدًا من محطة طرفية غبية ، بما في ذلك توفير عناصر WIMP رسومية نموذجية على محطات نصية ذات ميزات كافية - على الرغم من أن الإطارات الرسومية هي وضع العرض المفضل، مما يوفر مجموعة فرعية صارمة من ميزات إطارات المحطة النصية.

قابلية التخصيص والتوسعة

  • يمكن تسجيل إجراءات المستخدم في وحدات ماكرو وإعادة تشغيلها لأتمتة المهام المعقدة المتكررة. يتم ذلك غالبًا على أساس مخصص، مع تجاهل كل وحدة ماكرو بعد الاستخدام، على الرغم من أنه يمكن حفظ وحدات الماكرو واستدعاؤها لاحقًا.
    • نظرًا لتوحيد تعريف ميزات Emacs من حيث Emacs Lisp، فإن ما يعد "إجراءً للمستخدم" لأغراض أتمتة الماكرو مرن: قد تتضمن الماكرو، على سبيل المثال، ضغطات المفاتيح والأوامر ونقرات الماوس وماكرو أخرى وأي شيء يمكن تنفيذه عبرها. وبالتالي يمكن أن تكون الماكرو متكررة، ويمكن تعريفها واستدعاؤها داخل الماكرو.
  • عند بدء التشغيل، ينفذ Emacs نص Emacs Lisp المسمى ~/.emacs (تبحث الإصدارات الحديثة أيضًا عن ~/emacs.el و ~/.emacs.d/init.el و ~/.config/emacs/init.el ، [50] بالإضافة إلى الاختلافات المماثلة في ~/.config/emacs/early-init.el . [51] يقرأ Emacs ملف early-init.el أولاً إذا كان موجودًا، ويمكن استخدامه لتكوين ميزات Emacs الأساسية أو تعطيلها قبل تحميلها، مثل نظام العرض الرسومي أو مدير الحزم . ثم يقوم بتنفيذ أول إصدار .emacs أو init.el يجده، متجاهلاً الباقي. يمكن أن يكون ملف التخصيص الشخصي هذا طويلًا ومعقدًا بشكل تعسفي، ولكن المحتوى النموذجي يتضمن:
    • تعيين متغيرات عالمية أو استدعاء وظائف لتخصيص سلوك Emacs، على سبيل المثال(set-default-coding-systems 'utf-8)
    • روابط المفاتيح لتجاوز الروابط القياسية وإضافة اختصارات للأوامر التي يجدها المستخدم ملائمة ولكنها لا تحتوي على رابط مفاتيح افتراضيًا. مثال:(global-set-key (kbd "C-x C-b") 'ibuffer)
    • تحميل الإضافات وتمكينها وتهيئتها (يأتي Emacs مع العديد من الإضافات، ولكن يتم تحميل عدد قليل منها بشكل افتراضي.)
    • تكوين خطافات الأحداث لتشغيل تعليمات برمجية عشوائية في أوقات محددة، على سبيل المثال لإعادة تجميع التعليمات البرمجية المصدرية تلقائيًا بعد حفظ المخزن المؤقت ( after-save-hook)
    • تنفيذ ملفات عشوائية، عادةً لتقسيم ملف تكوين طويل للغاية إلى أجزاء متجانسة وقابلة للإدارة ( ~/.emacs.d/ و ~/elisp/ هي مواقع تقليدية لهذه البرامج النصية الشخصية)
  • يتيح ملحق التخصيص للمستخدم تعيين خصائص التكوين مثل مخطط الألوان بشكل تفاعلي، من داخل Emacs، بطريقة أكثر سهولة في الاستخدام من تعيين المتغيرات في .emacs : فهو يوفر البحث والوصف ونص المساعدة وإدخالات الاختيارات المتعددة والعودة إلى الإعدادات الافتراضية وتعديل مثيل Emacs قيد التشغيل دون إعادة التحميل وغير ذلك من المزايا المشابهة لوظيفة التفضيلات في البرامج الأخرى. يتم حفظ القيم المخصصة في .emacs (أو ملف مخصص آخر) تلقائيًا.
  • يتم تعريف السمات ، التي تؤثر على اختيار الخطوط والألوان، على أنها ملفات Emacs Lisp ويتم اختيارها من خلال امتداد التخصيص.
  • الأوضاع التي تدعم تحرير مجموعة من لغات البرمجة (على سبيل المثال، emacs-lisp-mode، c-mode، java-mode، ESS for R) عن طريق تغيير الخطوط لتسليط الضوء على الكود واختصارات المفاتيح المعدلة (foreword-function مقابل forward-page). تتضمن الأوضاع الأخرى أوضاعًا تدعم تحرير جداول البيانات (dismal) والنص المنظم.

توثيق ذاتي

احتوى أول إصدار من Emacs على مكتبة مساعدة تضمنت توثيقًا لكل أمر ومتغير ووظيفة داخلية. وبسبب هذا، وصف مؤيدو Emacs البرنامج بأنه موثق ذاتيًا من حيث أنه يقدم للمستخدم معلومات حول ميزاته العادية وحالته الحالية. تتضمن كل وظيفة سلسلة توثيق يتم عرضها للمستخدم عند الطلب، وهي الممارسة التي انتشرت لاحقًا إلى لغات البرمجة بما في ذلك Lisp و Java و Perl و Python . يمكن لنظام المساعدة هذا أن يأخذ المستخدمين إلى الكود الفعلي لكل وظيفة، سواء من مكتبة مدمجة أو مكتبة خارجية مضافة.

يحتوي Emacs أيضًا على برنامج تعليمي مدمج . يعرض Emacs تعليمات لأداء أوامر تحرير بسيطة واستدعاء البرنامج التعليمي عند تشغيله دون وجود ملف لتحريره. البرنامج التعليمي من تأليف Stuart Cracraft وRichard Stallman.

ثقافة

كنيسة إيماكس

كنيسة إيماكس ، التي أسسها ريتشارد ستالمان ، هي دين ساخر تم إنشاؤه لمستخدمي إيماكس. [52] وبينما تشير إلى vi كمحرر للوحش (vi-vi-vi هو 6-6-6 في الأرقام الرومانية)، فإنها لا تعارض استخدام vi؛ بل إنها تصفه بأنه لعنة البرمجيات الاحتكارية . ("استخدام نسخة مجانية من vi ليس خطيئة بل كفارة . " [53] ) تمتلك كنيسة إيماكس مجموعة إخبارية خاصة بها ، alt.religion.emacs ، [54] تحتوي على منشورات تدعي دعم هذا الدين الساخر. أنشأ مؤيدو vi طائفة معارضة من vi .

أشار ستالمان إلى نفسه مازحًا باسم القديس الأول  جنو  سيوس ، وهو قديس في كنيسة إيماكس. [55] وهذا في إشارة إلى إغناطيوس الأنطاكي ، أحد آباء الكنيسة الأوائل الموقرين في المسيحية.

مصطلحات

يتم أحيانًا تحويل كلمة emacs إلى صيغة الجمع emacsen ، عن طريق القياس الصوتي مع boxen و VAXen ، للإشارة إلى أنواع مختلفة من Emacs. [56]

انظر أيضا

مراجع

  1. ^ أ ب جرينبيرج، برنارد س. (1979). مولتيكس إيماكس: التاريخ والتصميم والتنفيذ.
  2. ^ abc "الأسئلة الشائعة حول GNU Emacs".
  3. ^ abcd Adrienne G. Thompson. "MACSimizing TECO". مؤرشف من الأصل في 2013-10-24 . تم الاسترجاع في 2012-02-26 .
  4. ^ "مقدمة تعليمية إلى GNU Emacs". لكي يُطلق على المحرر اسم "emacs"، فإن الشرط الأساسي هو أن يكون قابلاً للتوسع بالكامل باستخدام لغة برمجة حقيقية، وليس مجرد لغة ماكرو.
  5. ^ "GNU Emacs Pocket Reference". GNU Emacs هو محرر GNU Emacs الأكثر شهرة وانتشارًا في عائلة محررات Emacs.
  6. ^ "GNU Emacs Manual". FSF . تم الاسترجاع في 24 نوفمبر 2012 .
  7. ^ Zawinski, Jamie (2007-10-29). "Emacs Timeline". www.jwz.org . تم الاسترجاع في 2023-07-31 .
  8. ^ "حول أصل إيماكس في عام 1976 (مقالات مدونة إيماكس)". onlisp.co.uk . تم الاسترجاع في 2024-07-24 .
  9. ^ "إصدار Emacs 29.4".
  10. ^ "دليل مستخدم Tramp". مؤسسة البرمجيات الحرة . تم استرجاعه في 2009-04-04 .
  11. ^ "مقدمة Elfeed، قارئ موجز ويب Emacs".
  12. ^ "التحرير التعاوني باستخدام أنواع البيانات المتماثلة الخالية من التعارض".
  13. ^ "التسلية". أخيرًا، إذا شعرت بالإحباط، فحاول وصف مشاكلك للمعالجة النفسية الشهيرة إليزا. فقط قم بما يفعله الطبيب.
  14. ^ Zawinski, Jamie (2005-06-21) [1999]. "Emacs Timeline" . تم الاسترجاع في 11 أغسطس 2015 .
  15. ^ غالبًا ما يُنسب الفضل إلى ريتشارد ستالمان باعتباره أحد المشاركين في إنشاء البرنامج، ولكن كما كتب دانييل وينرب ، "تم إنشاء وتصميم برنامج إيماكس الأصلي (المستند إلى TECO) بواسطة جاي إل ستيل جونيور وديفيد مون. وبعد أن نجحا في تشغيله، وأصبح محرر النصوص القياسي في مختبر الذكاء الاصطناعي، تولى ستالمان صيانته". ورد مون نفسه قائلاً "كل هذا صحيح، بقدر ما أتذكر. ولكن من باب الإنصاف، يجب أن أقول إن ستالمان قام بتحسين برنامج إيماكس بشكل كبير بعد أن "حرره" من جاي ومني". انظر وينرب، دان (11 نوفمبر 2007)، "رد على قصة ستالمان حول تشكيل الرموز وLMI"، مدونة دان وينرب: البرمجيات والابتكار ، مؤرشفة من الأصل في 1 يناير 2009{{citation}}:CS1 maint: عنوان URL غير مناسب ( الرابط ).
  16. ^ "تاريخ Emacs". دليل XEmacs الداخلي . 2006-12-11 . تم الاسترجاع في 2007-08-22 .
  17. ^ Allombert, Bill. "مسابقة شعبية دبيان". تقرير المحررين . دبيان . تم الاسترجاع في 22 نوفمبر 2011 .
  18. ^ "أقدم 10 برامج مفتوحة المصدر وأكثرها أهمية". ZDNet .
  19. ^ رايموند، إيريك س.؛ كاميرون، ديبرا؛ روزنبلات، بيل (1996). تعلم جنو إيماكس، الطبعة الثانية. سيباستوبول، كاليفورنيا: أوريلي. ص 408-409. رقم ISBN 1-56592-152-6.
  20. ^ ويليامز، سام (2002). حر كما في الحرية: حملة ريتشارد ستالمان من أجل البرمجيات الحرة. سيباستوبول، كاليفورنيا: أوريلي ميديا. ص. 82. رقم ISBN 0-596-00287-4.
  21. ^ آرثر صموئيل (مارس 1980). "Essential E" (PDF) . تم الاسترجاع في 2020-04-19 .
  22. ^ "EMACS vs. vi: The endless geek 'holy war'". مؤرشف من الأصل في 2014-11-26 . تم الاسترجاع في 2014-05-30 ."بدأت EMACS في الواقع كمشروع معايير"، وفقًا لرسائل البريد الإلكتروني التي أرسلها جاي ستيل
  23. ^ ستالمان، ريتشارد م. (1987). "محرر الشاشة الكاملة لبرنامج EMACS". GARB . رقم ماج 1987. ليساتور، جامعة لينشوبينج. ص. 8-11 . تم الاسترجاع في 14 سبتمبر 2007 .
  24. ^ رينولدز، كريج (1992-02-10). وايزمان، ديفيد ج. (محرر). "كوين اسم إيماك بوليو". ديفيد ج. وايزمان: قصص الفولكلور الحاسوبي . مؤرشف من الأصل في 16 يناير 2003. قال مبتدئ مغرور ذات يوم لستالمان: "أستطيع أن أخمن لماذا يُسمى المحرر إيماكس، ولكن لماذا يُسمى المبرر بوليو؟". رد ستالمان بقوة، "الأسماء مجرد أسماء، إيماك وبوليو هو اسم محل آيس كريم شهير في مدينة بوسطن. لا علاقة لأي من هذين الرجلين بالبرنامج". أجاب على سؤاله، ولكن دون إجابة، استدار المبتدئ ليذهب، لكن ستالمان صاح به، "لا إيماكس ولا بوليو لهما أي علاقة بمتجر الآيس كريم أيضًا".
  25. ^ ab Stallman, Richard (26 مارس 1981). EMACS: The Extensible, Customizable, Self-Documenting, Display Editor (PDF) (تقرير فني). MIT AI Lab. AI Memo 519a . تم الاسترجاع في 2011-01-07 .
  26. ^ لي كلوتز (2007-08-29). "البريد الإلكتروني مقتبس في "كن حذرًا مما تسخر منه"". نيويورك تايمز . تم الاسترجاع في 2010-05-01 .
  27. ^ "تعليق من مؤلف ZWEI، دان وينرب". لقد كتبت ثاني إصدار من Emacs على الإطلاق: تنفيذ آلة Lisp، الذي كانت مواصفاته "يفعل ما يفعله Emacs PDP-10 (الأصلي) الخاص بـ Stallman"، ثم تقدمت من هناك. هناك الكثير جدًا من ذلك. لقد استغرق الأمر مني ومن Mike McMahon ساعات لا حصر لها لتنفيذ العديد من الأوامر لإنشاء ZWEI/Zmacs.
  28. ^ أوين ثيودور أندرسون (يناير 1979). "تصميم وتنفيذ نظام كتابة محرر موجه للعرض" (PDF) . تم الاسترجاع في 2012-09-09 .
  29. ^ كريستوفر كيلتي؛ ماريو بياجولي؛ بيتر جازي؛ مارثا وودمانسي (2015). صنع الملكية الفكرية وتفكيكها . شركة كمبيوتر أمريكا (CCA) EMACS، بقلم ستيف زيمرمان
  30. ^ "Emacs". 17 ديسمبر 2017.
  31. ^ "الفرق بين GNU Emacs وCCA Emacs".
  32. ^ "تاريخ إيماكس".
  33. ^ "emacs-devel msg 00872 (2014-09-29)". في الماضي، كان ينبغي تسمية الإصدار 24.3 باسم 25.1 وكان ينبغي تسمية الإصدار 24.4 باسم 26.1. كان ينبغي الاحتفاظ بالملف .N فقط لإصدارات إصلاح الأخطاء، ولا تعد إصدارات 24.3 و24.4 و24.5 المخطط لها مسبقًا إصدارات لإصلاح الأخطاء.
  34. ^ ستول، كليفورد (1988). "ملاحقة الهاكر الماكر". اتصالات رابطة مكائن ​​الحوسبة . 31 (5): 484–497. doi : 10.1145/42411.42412 . S2CID  6956966.
  35. ^ "GNU Emacs". Open Hub . تم الاسترجاع في 2017-11-25 .
  36. ^ رايموند، إيريك (2014-11-12). "مستودع Git الجديد جاهز" . تم الاسترجاع في 2017-11-25 .
  37. ^ ستالمان، ريتشارد (2008-02-22). "Re: البحث عن مشرف أو فريق جديد لـ Emacs". قائمة بريدية gnu.org . تم الاسترجاع في 2017-11-25 .
  38. ^ ماكنمارا، بول (2008-02-25). "ستالمان حول تسليم جنو إيماكس ومستقبله وأهمية التسمية". شبكة العالم . مؤرشف من الأصل في 2008-05-23 . تم الاسترجاع في 2017-11-25 .
  39. ^ تشيرغوين، ريتشارد (2015-11-05). "إيماكس يحصل على صيان جديد بعد توقيع ريتشارد ستالمان". ذا ريجيستر . تم الاسترجاع في 2017-11-25 .
  40. ^ رايموند، إيريك (2014-03-29). "أبشع... مستودع... تحويل... على الإطلاق" . تم الاسترجاع في 2017-11-25 . تسعة وعشرون عامًا من التطوير المستمر من قبل ما لا يقل عن 579 شخصًا
  41. ^ Stephen J., Turnbull. "XEmacs vs. GNU Emacs" . تم الاسترجاع في 2012-10-02 .
  42. ^ "XEmacs مات. عاش XEmacs!".
  43. ^ الصفحة الرئيسية - Meadow Wiki أرشيف 2012-02-16 على موقع Wayback Machine
  44. ^ "تجربتي مع لغة Lisp وتطوير GNU Emacs". كان هناك أشخاص في تلك الأيام، في عام 1985، لديهم أجهزة كمبيوتر بحجم ميغا بايت واحد بدون ذاكرة افتراضية. أرادوا أن يتمكنوا من استخدام GNU Emacs. وهذا يعني أنني كان عليّ أن أبقي البرنامج صغيرًا قدر الإمكان.
  45. ^ "GNU Zile (Zile is Lossy Emacs) - Summary". تمتلك أجهزة الكمبيوتر الحديثة موارد أكثر من كافية لبدء وتشغيل Emacs كامل في جزء من الثانية، وربما يكون Emacs هو ما تريده. Zile هو استنساخ Emacs صغير وسريع وقوي. وهو مفيد للتثبيتات ذات المساحة الصغيرة (على سبيل المثال على قرص مرن)، أو الأجهزة ذات الذاكرة الصغيرة، أو جلسات التحرير السريعة، وخاصة على الأجهزة البعيدة أو كمستخدم مختلف، مثل الجذر.
  46. ^ "الصفحة الرئيسية لبرنامج Lugaru".
  47. ^ "نظام نص الكاكاو".
  48. ^ "إعداد اختصارات لوحة المفاتيح لنافذة الأوامر والمحرر". مدونات Mathworks . 2007-05-11 . تم الاسترجاع في 2019-08-18 .
  49. ^ Bolsky, Morris I.; Korn, David G. (1989). "Acknowledgements". The KornShell Command and Programming Language. Englewood Cliffs, NJ: Prentice Hall. ص. xii. ISBN 0-13-516972-0.
  50. ^ "ملف التهيئة".
  51. ^ "ملف التهيئة المبكرة".
  52. ^ "القديس إغنوسيوس - ريتشارد ستالمان" . تم الاسترجاع في 29 يناير 2015 .
  53. ^ "النص الكامل المختار لمحاضرة ريتشارد م. ستالمان في الجامعة الوطنية الأسترالية". مؤرشف من الأصل في 4 أكتوبر 2011. تم الاسترجاع في 29 يناير 2015 .
  54. ^ مجموعة أخبار alt.religion.emacs
  55. ^ "Saint IGNUcius - Richard Stallman". www.stallman.org . تم الاسترجاع في 27 مارس 2018 .
  56. ^ “فاكسين”. كاتب.org . تم الاسترجاع 2009-11-08 .

فهرس

  • تشيكاريلي، يوجين (1978). مقدمة إلى محرر إيماكس . كامبريدج، ماساتشوستس: مختبر الذكاء الاصطناعي التابع لمعهد ماساتشوستس للتكنولوجيا. AIM-447.بي دي إف
  • ستالمان، ريتشارد م. (1981) [1979]. EMACS: محرر العرض القابل للتوسعة والتخصيص والتوثيق الذاتي . كامبريدج ماساتشوستس: مختبر الذكاء الاصطناعي التابع لمعهد ماساتشوستس للتكنولوجيا. AIM-519A.بي دي اف اتش تي ام ال
  • ستالمان، ريتشارد م. (2002). دليل GNU Emacs (الطبعة الخامسة عشرة). مطبعة GNU. رقم ISBN 1-882114-85-X.
  • ستالمان، ريتشارد م. (2002). "تجربتي مع لغة ليسب وتطوير برنامج جنو إيماكس" . تم الاسترجاع في 2007-02-01 .
  • شاسل، روبرت ج. (2004). مقدمة في البرمجة بلغة إيماكس ليسب. دار نشر جنو. رقم ISBN 1-882114-56-6.
  • جليكستين، بوب (أبريل 1997). كتابة امتدادات GNU Emacs . O'Reilly & Associates. ISBN 1-56592-261-1.
  • كاميرون، ديبرا؛ إليوت، جيمس؛ لوي، مارك؛ رايموند، إيريك؛ روزنبلات، بيل (ديسمبر 2004). تعلم GNU Emacs، الطبعة الثالثة. أوريلي وشركاؤه. رقم ISBN 0-596-00648-9.
  • فينسيث، كريج أ. (1991). حرفة تحرير النصوص -أو- إيماكس للعالم الحديث. دار نشر سبرينغر وشركاه. رقم ISBN 978-1-4116-8297-9.
  • تومسون، أدريان جي. (2009). "MACSimizing TECO" . تم الاسترجاع في 2012-02-26 .
  • الموقع الرسمي
  • قائمة تنفيذات Emacs
  • نظرة عامة على الهندسة المعمارية
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=Emacs&oldid=1252643809"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate