Doom Emacs হলো একটি ডিস্ট্রিবিউশন যা Emacs-এ শুরু করার একটি সহজ এবং আপনিহিত পথ তৈরি করার লক্ষ্যে তৈরি। yüzা পৃষ্ঠার ডকুমেন্টেশন এর বিভিন্ন ফাংশন ডিটেইল করে। Emacs নিজে থেকেই ভয়ঙ্কর লাগতে পারে।
এটি ইতিমধ্যে পরিচিত ইউজার এবং বই-প্রেমীদের জন্য সহায়ক। কিন্তু এই হ্যান্ডস-অফ পদ্ধতি সেটি শুধু ট্রাই করতে চাইলে সাহায্য করে না।
Doom Emacs চর্বি কেটে Emacs অভিজ্ঞতাকে এর মূল শক্তির সাথে ডিস্টিল করার লক্ষ্য রাখে। এটি ইউজারকে এক্সটেনসিবিলিটি ব্যবহার করতে দেয় ম্যানুয়াল বারবার চেক না করে বেসিক কাজগুলো করার জন্য। এর ফলাফল হলো একটি Emacs ভার্সন যা সহজে পরিবর্তন ও মডিফাই করা যায় ইউজারের প্রয়োজন অনুযায়ী।
Doom Emacs ইনস্টল করা তুলনামূলকভাবে সহজ। আমাদের পূর্বশর্ত তিনটি জিনিস:
- একটি ভ্যানিলা Emacs ২৭.১ ইনস্টলেশন
- ripgrep
- Git
Emacs এবং ripgrep ইনস্টল করা
Emacs এবং ripgrep প্রায় সব বড় লিনাক্স ডিস্ট্রিবিউশনের রিপোজিটরিতে উপলব্ধ। উদাহরণস্বরূপ, Debian এবং Ubuntu ২১.১০-এ Emacs এবং ripgrep ইনস্টল করতে apt ব্যবহার করতে পারেন:
sudo apt install emacs-gtk ripgrep
Arch Linux-এ pacman ব্যবহার করুন:
sudo pacman -Syu emacs ripgrep
Fedora-এ dnf ব্যবহার করুন:
sudo dnf install emacs ripgrep
Void Linux-এ xbps ব্যবহার করুন:
sudo xbps-install emacs-gtk2 ripgrep
আমার কেসে, আমি আমার Void Linux সিস্টেমে Emacs এবং ripgrep ইনস্টল করছি।
এটি লক্ষ্য করা গুরুত্বপূর্ণ যে Emacs অনেক ফ্লেভারে আসে। অধিকাংশ ক্ষেত্রে প্যাকেজ ম্যানেজার উপযুক্ত Emacs ভার্সনটি ইনস্টল করার জন্য বেছে নেয়, কিন্তু বিরল ক্ষেত্রে এই প্রক্রিয়া ব্যর্থ হয়।
তাই আমাদের ইনস্টল করা ভার্সন সম্পর্কে সচেতন থাকা উচিত। আমরা একটি গ্রাফিক্যাল এনভায়রনমেন্টে চলতে পারা Emacs ভার্সন খুঁজছি, যা বাকি থাকে:
- X11
- GTK-2
- GTK-3
এরপর আমরা Git ইনস্টলেশনের দিকে যেতে পারি।
Git ইনস্টল করা
Doom Emacs ইনস্টল করতে, আমাদের ইন্টারনেট থেকে একটি রিমোট কোড রিপোজিটরি পেতে হবে। সেটির জন্য Git ইনস্টল করুন। এটি আমাদের কোড কপি করতে দেয় এবং সবচেয়ে গুরুত্বপূর্ণ, মেজর ভার্সনগুলোর মধ্যে আপডেট করতে দেয়।
Emacs-এর মতো, Git প্রতিটি লিনাক্স ডিস্ট্রিবিউশনে সাধারণ। Debian এবং Ubuntu-তে ইনস্টল করতে apt ব্যবহার করুন:
sudo apt install git
Arch Linux-এ pacman ব্যবহার করুন:
sudo pacman -Syu git
Fedora-এ dnf ব্যবহার করুন:
sudo dnf install git
Void Linux-এ xbps ব্যবহার করুন:
sudo xbps-install git
আমার কেসে, আমি Void Linux-এ Git ইনস্টল করছি।
Doom Emacs ইনস্টল করা
Doom Emacs ইনস্টল করতে আমাদের শুধু কয়েকটি কমান্ড চালাতে হবে:
git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d
এটি একটি Git কমান্ড যা আমাদের মেশিনের জন্য Doom Emacs রিপোজিটরি ফেচ করে।
cloneফাংশন মানে আমরা কমান্ড চালালে লেটেস্ট রিপোজিটরি কপি করছি।depthঅপশনটি রিপোজিটরির ইতিহাসকে রিপোজিটরির দুটি সর্বশেষ ভার্সনে কাটে দেয়।
এই কমান্ডে, আমরা রিপোজিটরিটি ডিফল্ট Emacs কনফিগারেশন ডিরেক্টরিতে সেভ করছি। তাই আমাদের নিশ্চিত করতে হবে ডিরেক্টরিটি অস্তিত্ব নেই এই কমান্ড টাইপ করে:
rm -rf /home/$USER/.emacs.d/
এরপর ইনস্টলেশন শুরু করতে হবে। এর জন্য নিচের কমান্ড টাইপ করুন:
/home/$USER/.emacs.d/bin/doom install
এই কমান্ডটি Doom Emacs ইনস্টল করে Emacs ইনস্টলেশনের উপরে।
ইনস্টলেশন-পর কনফিগারেশন
এরপর, আমাদের ইনস্টলেশন কোন সমস্যায় না পড়ে তা নিশ্চিত করতে আরও কিছু কাজ আছে।
প্রথমে, PATH ভেরিয়েবল সেট আপ করুন যাতে এটি /home/$USER/.emacs.d/doom/bin/ ডিরেক্টরিটি ডিটেক্ট করতে পারে। এর জন্য /home/$USER/.profile ফাইলে নিচের লাইনটি যোগ করুন:
export PATH=$PATH:$HOME/.emacs.d/doom/bin
এটি PATH ভেরিয়েবলকে Doom-এর bin ডিরেক্টরি অন্তর্ভুক্ত করতে আপডেট করবে। এরপর আমাদের শুধু লগ আউট করে লগ ইন করতে হবে এনভায়রনমেন্ট ভেরিয়েবল রিলোড করার জন্য।
PATH ভেরিয়েবল /home/$USER/.emacs.d/doom/bin ডিরেক্টরিটি ডিটেক্ট করছে কিনা তা টেস্ট করতে কমান্ডটি চালান:
doom doctor
এটি নিশ্চিত করে যে ইনস্টলেশন সঠিকভাবে হয়েছে। প্রক্রিয়ায় কোন সমস্যা থাকলে doom doctor ফাংশনটি জানাবে।
Doom ইউটিলিটি: Doom Emacs-এ আপনার সাথী
doom doctor শুধু doom ইউটিলিটিতে উপলব্ধ ফাংশনগুলোর একটি। এটি মূল প্রোগ্রাম যা আমাদের Doom Emacs মডিফাই, আপডেট এবং রিপেয়ার করতে দেয়।
তাই, জানার যোগ্য সবচেয়ে সাধারণ ফাংশনগুলো হলো:
doom doctorআমাদের প্রাথমিক ইনস্টলেশনের সাথে যেকোনো ইনকনসিস্টেন্সি চেক করে। এটি তখনো বিশেষভাবে উপকারী যখন আমরা Doom Emacs ব্যবহার করার সময় সমস্যায় পড়ি। এটি সকল Doom-সম্পর্কিত ডিরেক্টরি এবং কনফিগারেশন চেক করে পোটেনশিয়াল এরর দিয়ে।doom upgradeআমাদের ইনস্টলেশন বес্বাদে আপগ্রেড করতে দেয়। এটি রিপোজিটরিতে যেকোনো আপডেট চেক করে এবং আমাদের কপিকে লেটেস্টটির সাথে সিঙ্ক্রোনাইজ করে এবং ভার্সনগুলোর মধ্যে মাইগ্রেশন হ্যান্ডেল করে। সেটির জন্য doom upgrade আমাদের বর্তমান Doom কনফিগারেশন ক্লিন করে এবং আপগ্রেড স্টেজ করে।doom purgeপুরনো প্যাকেজ এবং মডিউল যা আমাদের ইনস্টলেশনে ইনস্টল করা ছিল সেগুলো নিয়ে কাজ করে। যেহেতু আমরা অনেক প্যাকেজ রিমুভ করি, এটি সব অনব্যবহৃত ডিপেন্ডেন্সি রিমুভ করে। এছাড়া এটি-gফ্ল্যাগ দিয়ে রান করলে এক্সিস্টিং রিপোজিটরিগুলো কমপ্রেস করতে পারে।doom syncআমাদের কাস্টম কনফিগারেশন ফিক্স করতে দেয়। Doom Emacs ইনস্টল করলে এটি পারসোনাল কনফিগারেশনের জন্য আলাদা একটি ফাইল তৈরি করে/home/$USER/.doom.d/-এ। sync ফাংশন রান করলে .emacs.d-এ করা কনফিগারেশনগুলো .doom.d ডিরেক্টরিতে ইনেবল হয়।
Doom Emacs কনফিগার করা
.doom.d ডিরেক্টরিটি হলো যেখানেই সকল Doom কনফিগারেশন থাকে। এতে তিনটি ফাইল থাকে:
packages.elফাইলটি বলে কী প্যাকেজ ইনস্টল করতে হবে এবং কোথা থেকে।config.elফাইলটি হলো যেখানেই আমাদের কাস্টম কনফিগারেশনগুলো থাকে। এতে Doom এবং ইনস্টল করা অতিরিক্ত প্যাকেজ দুটির কনফিগারেশন থাকে।init.elফাইলটি Doom Emacs-এর মাংস এবং আলু। এটি হলো যেখানেই ডিস্ট্রিবিউশনের সকল ফিচার ইনেবল বা ডিজেবল করা যায়।
Doom মডিউল
Doom Emacs আপনাকে ১৫০টির অধিক মডিউলের চয়েস দেয়। আমরা সেগুলো থেকে যেগুলো চাই সেগুলো পিক করে ইনেবল করতে পারি। এটি আমাদের Doom কে নিজস্ব কম্পিউটিং এনভায়রনমেন্ট বানাতে দেয়।
Doom Emacs-এ মডিউল যোগ ও রিমুভ করা শুধু .doom.d/init.el ফাইলে doom! ফাংশন মডিফাই করার ব্যাপার। জেনারেল সিনট্যাক্স কিছুটা এভাবে দেখায়:
(doom! :checkers (syntax) :editor (evil) :lang (org +journal))
একটি মডিউল ইনেবল করতে, ক্যাটাগরি লেবেল করতে হবে। এই উদাহরণে, syntax মডিউল যোগ করতে, প্রথমে checkers ক্যাটাগরি যোগ করতে হবে।
আরও, এই মডিউলগুলোর ফ্ল্যাগও থাকে যেগুলো স্পেসিফিক মডিউলের জন্য এক্টিভেট করা যায়। এটি Gentoo-এর USE ফ্ল্যাগের মতো যা আপনাকে একটি প্রোগ্রাম ফাইন-টিউন করতে দেয় শুধু চাহিদামতো ফিচার ইনেবল করে।
একটি মডিউলের জন্য ফ্ল্যাগ যোগ করতে, + চিহ্ন যোগ করুন ফ্ল্যাগ নামের সাথে। এই উদাহরণে, journal ফ্ল্যাগ org-এ যোগ করা হয়েছে journal সাপোর্ট ইনেবল করার জন্য।
হয়ে গেলে, doom sync রান করুন Doom Emacs কে সেটিংসসহ রি-ইনিশিয়ালাইজ করার জন্য।
অতিরিক্ত প্যাকেজ ইনস্টল করার পদ্ধতি
ডিফল্টভাবে, Doom Emacs ইতিমধ্যে ইনস্টলেশনের সাথে একাধিক প্যাকেজ নিয়ে আসে। তারপরও, আমরা রিপোজিটরি থেকে অতিরিক্ত সফটওয়্যার সহজেই ইনস্টল করতে পারি। সেটি করতে হলে .doom.d/packages.el ফাইলে package! ফাংশন ব্যবহার করুন।
Doom-এ প্যাকেজ ইনস্টল করার অনেক পদ্ধতি আছে। সবচেয়ে সাধারণ পদ্ধতি হলো ELPA এবং MELPA থেকে প্যাকেজ সোর্স করা। সেটির জন্য শুধু এই লিস্প কোড packages.el-এ যোগ করুন:
(package! name-of-package)
এটি package! ফাংশনকে বলে যেকোনো কমন রিপোজিটরি চেক করতে যেটি আমরা ইন্ডিকেট করেছি।
তবে, আপনার প্যাকেজ যদি Emacs-এর যেকোনো রিপোজিটরিতে না থাকে, তবে আপনি সরাসরি এর git রিপোজিটরি থেকে ইনস্টল করতে পারেন:
(package! name-of-git-package :recipe (:host github :repo "username/package"))
এটি package! ফাংশনকে বলে github থেকে সেই নির্দিষ্ট প্যাকেজটি username/package রিপোজিটরির অধীনে থেকে পুল করতে।
আমরা রিমোট রিপোজিটরির কোন জায়গা থেকে প্যাকেজ পুল করতে চাই সেটিও স্পেসিফাই করতে পারি। উদাহরণস্বরূপ, একটি রিপোজিটরির নির্দিষ্ট জায়গা থেকে প্যাকেজ পুল করতে পারি:
(package! another-git-package :recipe (:host github :repo "username/package" :files ("package.el" "path/of/*.el")))
এটি উপকারী যখন আমরা একটি রিপোজিটরি থেকে ইনস্টল করি যেটে অনেক প্যাকেজ সাবডিরেক্টরিতে সর্ট করা থাকে। এটি ব্যবহার করে আমরা স্পেসিফাই করতে পারি কী ইনস্টল করতে চাই প্যাকেজ হিসেবে।
হয়ে গেলে, doom sync চালাতে হবে Doom Emacs কে সেটিংসসহ রি-ইনিশিয়ালাইজ করার জন্য।
অভিনন্দন! এখন আপনার Doom Emacs-এর একটি বেসিক ইনস্টলেশন আছে এবং এটি কীভাবে কাজ করে, কীভাবে কনফিগার ও এক্সটেন্ড করতে হয় সেটির বেসিক ধারণা। লিনাক্সে প্রোডাক্টিভিটি অ্যাপ্লিকেশন খুঁজছিলে, আমাদের সেটি জন্য আর্টিকেল আছে।
প্রশ্নোত্তর
১. আমি Doom Emacs ইনস্টল করলাম, এবং খোলার সময় শুধু ব্ল্যাঙ্ক স্ক্রিন দেখায়।
এটি সম্ভবত কারণ আপনার .doom.d ডিরেক্টরিতে সমস্যা আছে, এবং Doom Emacs সেটিংস লোড করতে পারছে না। একটা উপায় হলো চেক করা .doom.d ডিরেক্টরি এক্সিস্ট করে কিনা এবং তিনটি ফাইল - init.el, packages.el এবং config.el - এক্সিস্ট করে কিনা।
এটি ঘটতে পারে কারণ জেনারেট হওয়া init.el ফাইল ম্যালফর্মড ছিল বা Doom-এর ফাংশন ছিল না। সেটি ফিক্স করতে, আপনাকে Doom-এর ফাংশন ব্লক তৈরি করতে হবে যেটি মডিউলগুলো থাকে যেগুলো আপনি Doom Emacs-এ রান করতে চান।
২. আমি package.el ব্যবহার করি আমার প্যাকেজ ম্যানেজ করার জন্য, কি আমি এটিকে Doom Emacs-এ ব্যবহার করতে পারি?
না। Doom Emacs একটি ভিন্ন ম্যানেজার ব্যবহার করে তার প্যাকেজ মেইনটেইন করার জন্য। আপনাকে Doom Emacs দ্বারা প্রদত্ত package ফাংশন ব্যবহার করতে হবে অতিরিক্ত সফটওয়্যার ইনস্টল করার জন্য।
৩. আমি Doom Emacs-এ এই প্যাকেজ ইনস্টল করেছি আর চাই না। কীভাবে আনইনস্টল করব?
Doom Emacs-এ প্যাকেজ রিমুভ করা তুলনামূলকভাবে ত্রিবিয়াল। আপনার .doom.d/packages.el-এ এই লিস্প কোড রান করাতে হবে:
(package! some-package :disable t)
এরপর doom sync চালাতে হবে Doom Emacs রিলোড করার জন্য। আবার লগ ইন করলে, সেটি প্যাকেজ আনইনস্টল হয়ে থাকবে।