بدأ استخدام محرّر نصوص قوي يدعم التخصيص الكامل والتحكم العميق في بيئة التطوير بتحوّل كبير في طريقة عمل المطورين. إذا كنت تبحث عن أداة توفر سرعة تشغيل عالية، بنية واضحة للتوسّع، وتكاملًا سلسًا مع أدوات مثل Org‑mode، Magit أو أنظمة الـ LSP، فإن Doom Emacs تُوفّر ذلك وأكثر.
يتميّز Doom Emacs بأنه يُقدّم تجربة Emacs مُعَدّة مسبقًا بشكل ذكي مع ضمانات للأداء والتخصيص. من خلال هذه المقالة سنستعرض أبرز الأسباب التي تجعله الخيار المثالي لمشاريعك البرمجية، ونسلّط الضوء على كيف يمكن أن يُساعدك في تحسين الإنتاجية، وتقليل الأعباء البشرية، وإعداد بيئة عمل فعالة ومتّسقة.
سواء كنت مبرمجاً مخضرماً أو مطوراً يبحث عن الانتقال إلى مستوى أعلى من المرونة، فتابع القراءة معي لاكتشاف ما يجعله مختلفاً ولماذا قد يكون استثماراً حكيماً لوقتك.
ليس من الممتع تهيئة محرر نصوص، ولكنك هنا، وربما تبحث عن مشروع جديد. يُسهّل Doom الانتقال إلى Emacs بشكل كبير، وللمُجرّبين، يتمتع Emacs بإمكانيات لا حصر لها. لديّ أربعة أسباب تجعل Doom Emacs مشروعك التالي.
يُسهّل بدء استخدام Emacs
من أكثر الشكاوى شيوعًا حول محررات النصوص المتقدمة الوقت اللازم للتهيئة. يُعالج Doom Emacs هذه المشكلة، مما يُسهّل عملية تهيئة Emacs بشكل كبير. باختصار، يعمل Doom Emacs كإطار عمل للتهيئة يُبسّط العديد من الجوانب التقنية لـ Emacs.
ملاحظة
الخطوات التالية هي لأغراض التوضيح فقط، وهي مكتوبة من منظور مستخدم لينكس. على الرغم من أنها ليست شائعة، إلا أنه من الممكن تثبيت Doom Emacs على نظام ويندوز، ولكن هذا ليس دليلًا إرشاديًا، بل هو عرض توضيحي لمدى سهولة بدء استخدام Doom Emacs. إذا كنت ترغب في تثبيت Doom Emacs على نظام Windows، فراجع قسم البدء في الوثائق الرسمية.
أولًا، عليك تثبيت Emacs، لذا راجع وثائق مدير الحزم في توزيعتك للحصول على المساعدة. أنصح بتثبيت حزمة Lucid Emacs، لأن أداءها أفضل بكثير من GTK Emacs القياسي. إذا كنت تستخدم نظام Windows، فانتقل إلى صفحة تنزيلات Emacs واتبع التعليمات هناك.
بافتراض أن Emacs مثبت لديك، فإن عملية تثبيت Doom Emacs سهلة للغاية. بخطوتين وخمس دقائق انتظار، يكون تثبيت Doom Emacs الجديد جاهزًا.
git clone --depth 1 https://github.com/doomemacs/doomemacs ~/.config/emacs
~/.config/emacs/bin/doom install
إضافة مسار بن Emacs إلى مسار shell يُسهّل عليك الأمر، إذ يُمكنك الوصول إلى سكربت Doom دون الحاجة لكتابة مساره الكامل. راجع أدلة تحديث متغير المسار على لينكس أو ويندوز. لمستخدمي لينكس، ضع الكود التالي في ملف .bashrc وأعد تحميل shell.
export PATH="$PATH:$HOME/.config/emacs/bin"
بعد تثبيت Doom Emacs، يمكنك تعديل الإعدادات الافتراضية إن رغبت. يأتي Doom Emacs مزودًا بمجموعة واسعة من الحزم المُعدة مسبقًا (تُسمى وحدات نمطية)، والتي سأشرحها بالتفصيل في القسم التالي. في الوقت الحالي، يمكنك تكوين حزم Emacs في ملفين بسيطين موجودين في مجلد ~/.config/doom.
- init.el: ملف التكوين الرئيسي المستخدم لتفعيل أو تعطيل الوحدات النمطية.
- packages.el: الملف الذي تُحدد فيه أي حزم خارجية مخصصة ترغب في تثبيتها.
تُظهر الصورة السابقة ملف inti.el الافتراضي. الوحدات النمطية المعطلة مُعلّق عليها.
باستخدام كلا الملفين، يمكنك تفعيل أو تعطيل أي حزمة ترغب بها. إذا كنت ترغب في تثبيت حزم مخصصة لا يتضمنها Doom Emacs، يمكنك زيارة مستودع برامج MELPA للبحث عن ملف packages.el وتحديثه (كما هو موضح في القسم السابق). عند تحديد الحزم في ملف packages.el وإعادة تحميل Doom Emacs، سيستخدم مدير الحزم المدمج (المسمى Straight) لتثبيتها بسرعة. يتميز Straight بالمرونة، ويمكنه تثبيت الحزم من مصادر متعددة.
بعد تعديل ملف init.el أو packages.el، نفّذ أمر doom sync. إذا كان Emacs مفتوحًا بالفعل، فستحتاج إلى إعادة تحميل إعداداته. داخل Emacs، اضغط على Alt+X (المعروف أيضًا باسم M-x في لغة Emacs)، ثم اكتب doom/reload ونفّذ الأمر.
نصيحة
إذا بدا Emacs غير مُحسّن عند بدء التشغيل (كما هو موضح في الصورة أدناه)، فمن المرجح أن يكون السبب هو وجود مجلد ~/.emacs.d فارغ. يُعطي Emacs الأولوية لهذا المجلد على ~/.config/emacs. إذا لم تُنشئه عمدًا، يُمكنك حذفه بأمان.
بالإضافة إلى ملفي التكوين هذين، يوجد ملف config.el ثالث بالغ الأهمية. بمجرد اكتسابك خبرة كافية في Emacs، قد ترغب في البدء بحل مشاكلك الخاصة باستخدام Elisp. ملف config.el هو المكان الذي تضع فيه شيفرة Elisp المخصصة عندما تكون مستعدًا لخوض هذا التحدي. يمكن اعتبار Emacs بمثابة قاعدة برمجية، ومن خلال إطار عمل Doom Emacs للتكوين، تتمتع بالقدرة والمرونة لتوسيع Emacs (الذي سأتناوله لاحقًا) كما لو كنت توسع أي قاعدة برمجية أخرى.
Emacs قوي، وإذا كنت ترغب في الاستفادة من نظام بيئي ناضج لتشغيل سير عمل متقدم، فإن Doom Emacs يجعل البدء بسيطًا نسبيًا. دائمًا ما تحدث مشاكل غير متوقعة، لذا سأحيلك إلى وثائق Doom Emacs الرسمية أو منتدى Doom Emacs Discourse لمزيد من المساعدة.
يأتي مع بطاريات مدمجة
يأتي Emacs الأصلي افتراضيًا بميزات أساسية نسبيًا، بينما يأتي Doom Emacs مزودًا بالعديد من الميزات الإضافية (تسمى وحدات) التي تجعله مفيدًا فورًا. يتيح لك هذا النهج القائم على البطاريات المدمجة التركيز على أهدافك طويلة المدى بدلًا من التعثر عند أول عقبة.
كما ذكرنا سابقًا، يمكنك تفعيل أو تعطيل الوحدات باستخدام ملف init.el. تحتفظ الوثائق الرسمية بقائمة بالوحدات التي يدعمها Doom Emacs. تدعم العديد من الوحدات علامات اختيارية تُمكّن من تكامل إضافي مع حزم أخرى. على سبيل المثال، يمكنك تفعيل تكامل Org-Roam مع Org-Mode – وهما حزمتان شائعتان لتدوين الملاحظات – بإضافة “(org +roam)” إلى ملف init.el. سأشرح كلتا الحزمتين في القسم التالي.
يأتي Doom Emacs أيضًا بميزات خاصة بالبرمجة، مثل تمييز بناء الجملة ودعم بروتوكول خادم اللغة (LSP). مع أنني لا أستخدم Emacs شخصيًا للبرمجة، إلا أن الكثيرين يستخدمونه، وهو بيئة تطوير فعّالة للغاية، تدعم مجموعة واسعة من لغات البرمجة. بالإضافة إلى ذلك، يوفر Doom Emacs دعمًا مدمجًا لعميل البريد الإلكتروني، وعميل IRC، وبرامج المحاسبة مثل Ledger وBeancount، ووضع Vim (المعروف أيضًا باسم Evil)، وغيرها.
مع Doom Emacs، لستَ بحاجة للبدء من الصفر، لأنه يوفر بالفعل مجموعة كبيرة من الحزم المدمجة. ونظرًا لإمكانية توسيع Emacs، يُعد هذا أساسًا متينًا للبناء عليه والتعلم منه أثناء تطوير مشروعك ليصبح سير عمل متقدمًا.
التكامل مع المشروع وسير عمل تدوين الملاحظات
مع أن Doom Emacs يوفر دعمًا للعديد من الأدوات الجاهزة للاستخدام، إلا أن فوائده الحقيقية قد لا تكون واضحة. لماذا عليك الاهتمام بوجود OneNote وتطبيقات تدوين الملاحظات التقليدية الأخرى؟ Emacs نظام متكامل، وحزم مثل Org-Mode تجعل تنظيم المعلومات أمرًا سهلاً للغاية. على سبيل المثال، لنفترض أنك تعمل على ميزة ما؛ قد يحتوي متتبع المشكلات لديك على تفاصيل كافية، ولكنه لا يعمل كذاكرة عاملة. بدلاً من ذلك، غالبًا ما أنشئ ملفات مشاريع خاصة بفرع ميزة، وأنظم مهامي وملاحظات المشروع هناك. لا أحاول تذكر كل شيء أو إنشاء مشكلة منفصلة للمهام الصغيرة والكبيرة، بل أستخدم Org-Mode كذاكرة عاملة.
Org-Roam مبني على Org-Mode، وقد شرحتُ سابقًا كيفية استخدامه لتدوين الملاحظات. باختصار: Org-Roam هو نظام لتدوين الملاحظات قائم على الرسوم البيانية، ومتكامل تمامًا مع ميزات التنظيم القوية في Org-Mode. عندما أعمل داخل ملف مشروعي (ذاكرتي العاملة)، يمكنني الاستفادة من قاعدة معارف شخصية واسعة باستخدام Org-Roam. هذا يدمج الذاكرة طويلة المدى والذاكرة قصيرة المدى في مكان واحد. يُتيح لي التركيز على البرمجة بدلاً من عناء تحديد مسارٍ للمضي قدمًا في التحديات الصعبة.
يأتي Org-Mode مزودًا بالعديد من الميزات، بما في ذلك نظام إدارة المهام Org Agenda. أنصح بشدة بتجربته.
يُسهّل Doom Emacs بدء استخدام كلٍّ من Org-Mode وOrg-Roam. بسطر واحد فقط في ملف التكوين، يُمكنني الوصول إلى حزمٍ ساعدتني كثيرًا، وقد غيّرت طريقة عملي وتفكيري جذريًا.
إنه قويّ وقابل للتوسعة اختياريًا
في النهاية، قد ترغب في توسيع Emacs باستخدام شيفرة برمجية مُخصّصة، تمامًا كما تفعل مع أي مشروع آخر. ولكن بما أن Doom Emacs يأتي مع مجموعة واسعة من الوحدات النمطية المُعدّة مسبقًا، فإن توسيعه اختياري تمامًا. يترك Doom لك المجال مفتوحًا للتجربة عندما تكون مستعدًا. وعندما تفعل ذلك، فإن نهجه المُشابه لإطار العمل يُسهّل العملية.
على الأرجح ستكون أول خطوة هي تثبيت حزم مُخصّصة غير مُضمنة افتراضيًا في Doom Emacs. الأمر بسيطٌ للغاية، يكفي إدخال سطر واحد في ملف packages.el.
(package! rg)
يستدعي مقطع الكود السابق دالة (في الواقع، ماكرو) تُسمى package!، والتي تُثبّت حزمة تُسمى “rg” – وهي حزمة ripgrep لبرنامج Emacs. يقوم البرنامج بجلب الحزمة من MELPA ويستخدم مدير الحزم Straight لتثبيتها. تذكر فقط مزامنة Doom وإعادة تحميله بعد ذلك.
يمكنك أيضًا تثبيت الحزم مباشرةً من GitHub، أو فقط بعد تثبيت حزمة أخرى.
(when (package! org-roam)
(package! org-roam-bibtex
:recipe (:host github :repo "org-roam/org-roam-bibtex")))
يقول المقطع السابق: “عند توفر حزمة org-roam، ثبّت org-roam-bibtex” (مدير ببليوغرافيا لـ Org-Roam).
مهمتك التالية على الأرجح هي إضافة دوال مخصصة لحل مشاكل معينة قد تواجهها. ببساطة، أضف الكود إلى ملف config.el، ثم أعد تحميل Doom. على سبيل المثال، تطبع الدالة التالية رسالة “مرحبًا بالعالم!”.
(defun my/hello-world ()
"Print the universal standard programmer greeting."
(interactive)
(message "Hello, World!"))
ملاحظة
يضمن استدعاء الدالة “التفاعلية” ظهور “my/hello-world” في قائمة أوامر M-x (يمكن الوصول إليها بالضغط على Alt+X).
كما هو الحال مع أي قاعدة برمجية أخرى، ستستدعي دوالك المخصصة واجهة برمجة تطبيقات داخلية. توفر ثلاثة مصادر هذه الواجهة: Emacs نفسه، وDoom Emacs، والحزم المُثبّتة. توسيع الحزم بهذه الطريقة أمر شائع جدًا.
يقول البعض إن بذل الكثير من الجهد على محررات النصوص المتقدمة مضيعة للوقت. أنا لا أتفق معهم، لأنني أزيد من إنتاجيتي بشكل كبير، وقد غيّرت حزم مثل Org-Roam طريقة تفكيري وإدارتي للعمل بشكل جذري. بصراحة، لا أعرف كيف استطعت الاستغناء عنها، لأنه لا توجد طريقة لتذكر كل ما فعلته خلال السنوات الخمس الماضية. لذا، فإن Emacs يستحق كل هذا الجهد. Doom Emacs يُبسط هذا المسار كثيرًا؛ أشك في أنني كنت لأتمكن من تهيئة Emacs بنجاح بدونها. يأتي مزودًا بالعديد من الميزات الجاهزة للاستخدام، وسهل التثبيت، وكل ما عليك فعله هو استخدامه وأخذ وقتك في تعلم كيفية تطويره بما يناسبك.
Doom Emacs توزيعة رائعة من Emacs للمبتدئين، على الرغم مما قد يدّعيه منتقدوه المتشددون. فهو يجعل دخول عالم Emacs أسهل بكثير لمعظم المطورين.
باختصار، Doom Emacs يقدم مجموعة قوية من الميزات التي تجعله أكثر من مجرد محرّر نصوص — إنه منصة قابلة للتخصيص، مركّزة على الأداء، ومهيّأة للمشاريع الحقيقية. ومع ذلك، يجدر التنويه إلى أن الانتقال إليه يتطلّب وقتًا لتعلّم التكوينات والتخصيص، وقد لا يكون الخيار الأمثل إذا كنت تفضّل إعداداً بسيطاً بدون أي تخصيص عميق. إذا قرّرت تجربته، فابدأ بخطوات صغيرة، جرّب وحدات محددة، وابنِ تكوينك تدريجيًا.