প্রকল্প সম্পর্কে

Nano Emacs (GNU Emacs / N Λ N O) হল GNU Emacs-এর জন্য কনফিগারেশন ফাইলের একটি সংগ্রহ, যার উদ্দেশ্য এডিটরকে একটি পরিষ্কার ও সামঞ্জস্যপূর্ণ চেহারা ও অনুভূতি দেওয়া। এটি লেখকের "On the design of text Editors" (arXiv) প্রবন্ধে বর্ণিত নকশা নীতির উপর ভিত্তি করে তৈরি। লাইট থিমটি Material রঙের উপর এবং ডার্ক থিমটি Nord রঙের উপর নির্ভর করে। উল্লিখিত দর্শন হলো যতটা সম্ভব vanilla Emacs-এর কাছাকাছি থাকা, অনেক নির্ভরতা (আদর্শভাবে কোনোটি নয়) প্রবর্তন এড়ানো এবং মডুলার থাকা যাতে ব্যবহারকারীরা নিজেদের কনফিগারেশনে শুধু পছন্দের অংশগুলো কপি করতে পারেন। প্রকল্পটিকে লেখকের পূর্ববর্তী Elegant Emacs-এর সাথে ঘনিষ্ঠভাবে সম্পর্কিত বলে বর্ণনা করা হয়েছে, যেটিকে একটি প্রাথমিক প্রোটোটাইপ হিসেবে উপস্থাপন করা হয়েছে। প্রয়োজনীয়তা হলো একটি সাম্প্রতিক GNU Emacs এবং সিস্টেমে ইনস্টল করা Roboto Mono ও Fira Code ফন্ট; অন্য কোনো নির্ভরতা তালিকাভুক্ত নেই। রিপোজিটরি ক্লোন করে এর ভেতর থেকে `emacs -q -l nano.el` চালিয়ে দ্রুত পরীক্ষা করা সম্ভব। ইনস্টলেশন ম্যানুয়ালি করা যায় nano.el-এর বিষয়বস্তু বিদ্যমান Emacs কনফিগারেশনে একীভূত করে এবং `load-path` সমন্বয় করে, অথবা straight.el প্যাকেজ ম্যানেজারের মাধ্যমে GitHub রিপোজিটরির দিকে নির্দেশ করা একটি `straight-use-package` ফর্ম ব্যবহার করে। ব্যবহারকারীরা ডিফল্ট nano কনফিগারেশন প্রয়োজন করতে পারেন অথবা পৃথক মডিউল লোড করতে পারেন; nano-faces হলো একমাত্র বাধ্যতামূলক মডিউল, যা অন্যদের দ্বারা ব্যবহৃত ছয়টি face সংজ্ঞায়িত করে। কাস্টমাইজেশনে ডিফল্ট মনোস্পেসড ফন্ট (`nano-font-family-monospaced`, ডিফল্ট Roboto Mono), একটি ঐচ্ছিক প্রপোরশনাল ফন্ট (`nano-font-family-proportional`) যা variable-width এবং mixed-pitch মোড সক্ষম করে, এবং ফন্ট সাইজ (`nano-font-size`) অন্তর্ভুক্ত। README-তে উল্লেখ করা হয়েছে যে এই ভেরিয়েবলগুলো `(nano-faces)` এবং `(nano-theme)` কল করার আগে সেট করতে হবে এবং পরে পরিবর্তন করলে সেই ফাংশনগুলো আবার কল করতে হবে। মডিউলগুলো বাধ্যতামূলক, ঐচ্ছিক এবং পরীক্ষামূলক হিসেবে গোষ্ঠীবদ্ধ। বাধ্যতামূলক মডিউল হলো nano-base-colors (মৌলিক থিম রং) এবং nano-faces (মৌলিক faces)। ঐচ্ছিক মডিউলের মধ্যে রয়েছে লাইট ও ডার্ক থিম, nano-theme (জনপ্রিয় Emacs মোডগুলোর জন্য faces তৈরি করে), nano-help (echo-area সাহায্য বার্তা), nano-splash (স্টার্টআপ স্প্ল্যাশ স্ক্রিন), nano-modeline (মোড-নির্ভর হেডার লাইন যা প্রয়োজন হলে মডেলাইন লুকিয়ে রাখে), nano-layout (ফ্রেম লেআউট, ফন্ট, fringes, margins), nano-defaults (যুক্তিসঙ্গত ডিফল্ট সেটিংস), nano-session (রানের মধ্যে সেশন স্থায়িত্ব), nano-bindings (সংক্ষিপ্ত কী-বাইন্ডিং সেট), nano-counsel (আলাদাভাবে ইনস্টল করা counsel প্যাকেজ কনফিগার করে) এবং nano-colors (Open Color, Material ও Nord থেকে প্যালেট এবং অ্যাক্সেসর ফাংশনসহ)। পরীক্ষামূলক মডিউলের মধ্যে রয়েছে nano-mu4e (mu4e-এর জন্য চেহারা ও অনুভূতি), nano-minibuffer (mini-frame ব্যবহার করে minibuffer), nano-command (হেডার লাইনে একটি পরীক্ষামূলক কমান্ড-লাইন প্রম্পট, ইতিহাস বা সমাপ্তি ছাড়া) এবং nano-agenda (টাইমস্ট্যাম্পযুক্ত org এন্ট্রির পাশে একটি মিনি ক্যালেন্ডারসহ একটি ইন্টারঅ্যাকটিভ মিনি এজেন্ডা)। README-তে একটি সম্পর্কিত প্রকল্প Bespoke theme-এর লিঙ্কও রয়েছে, যাকে nano emacs, elegant emacs, Nord এবং Solarized দ্বারা অনুপ্রাণিত কাস্টম মাঝারি-কনট্রাস্ট লাইট ও ডার্ক থিম হিসেবে বর্ণনা করা হয়েছে।