این ایمکس دوست داشتنی (مدیر بسته)

Mar 28, 2013·

5 min read

فعلا فکر کنم همین‌ها بودند که می‌خواستم بگویم. برویم سر اصل مطلب:

از نسخهٔ ۲۴ ایمکس به این‌طرف‌، یک مدیر بستهٔ عالی هم به آن اضافه شده. این یعنی این که نصب‌، نگهداری و بروزرسانی بسته‌های اضافه‌ای که روی ایمکس سوار می‌کنیم‌، فوق‌العاده آسان شده. پس برای شروع کار‌، چند مخزن بسته‌های ایمکس (جایی که ایمکس می‌تواند ابزار‌های جدید را پیدا‌، دانلود و نصب کند) را به این مدیر بسته می‌شناسانیم. برای این کار کافیست خطوط زیر را به فایل ‎.emacs اضافه کنیم. این فایل در سیستم‌عامل‌های یونیکس‌بیس (Linux, Mac, BSD و غیره) در پوشهٔ خانگی‌تان پیدا می‌شود. در مورد ویندوز نمی‌دانم این فایل کجاست و خود ویندوزی‌تان باید بروید پیدایش کنید. ولی روش کار غیر از پیدا کردن این فایل‌، برای‌تان مشابه با یونیکس‌بیس‌هاست ;-)

(require 'package)

(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
             ("marmalade" . "http://marmalade-repo.org/packages/")
             ("melpa" . "http://melpa.milkbox.net/packages/")))
(package-initialize)

در خط اول می‌گوییم که بستهٔ مدیر بسته‌ها (Package Manager) را لود کن. خط دوم‌، سه مخزن مختلف را به متغیر package-archives که مدیر بسته از آن برای دیدن لیست مخازن استفاده می‌کند نسبت می‌دهیم. و در خط سوم با صدا زدن تابع package-initialize به ایمکس می‌گوییم که بسته‌های نصب شده با Package Manager را در کجا پیدا کند.

تکه کد ارائه شدهٔ بالا به زبان Elisp است. زبانی که تنظیمات و بسته‌های ایمکس عموما با آن نوشته می‌شوند. وقتی ایمکس را اجرا می‌کنیم‌، ایمکس به صورت خودکار فایل ‎.emacs را برای یافتن تنظیماتش صدا می‌کند. اگر خدای ناکرده در حین انجام تنظیمات این‌چنینی‌، خرابکاری‌ای کردید و دیگر ایمکس‌تان لود نشد‌، لازم نیست که بروید یک ویرایشگر دیگر پیدا کنید و ‎.emacs را ویرایش کنید تا درست شود. کافیست ایمکس را به صورت emacs -Qاجرا کنید که دیگر فایل ‎.emacs را لود نکند. سپس به ویرایش‌تان بپردازید و ایمکس را دوباره لود کنید. در ادامهٔ‌ این سری پست‌ها‌، بار‌ها پیش می‌آید که ما فایل ‎.emacs را ویرایش می‌کنیم. و از آن‌جایی که ایمکس تنها در هنگام بالا آمدن آن را لود می‌کند‌، ممکن است خسته کننده به نظر بیاید که همیشه و بعد از هر تغییر‌، ایمکس را ببندید و دوباره باز کنید. برای این کار می‌توانید از یکی از دو روش زیر بهره بگیرید:

eval-buffer

اگر راهنمای همراه ایمکس را خوانده باشید‌، حتما می‌دانید که چطور توابع تعریف شدهٔ ایمکس را صدا کنید. اگر نه‌، من بهتان می‌گویم (ولی تنبلی

موقعیت خط اعلان در فریم ایمکس. موقعیت خط اعلان در فریم ایمکس.

را کنار بگذارید و یک بار هم که شده‌، سر سری آن راهنما را بخوانید. ضرر نمی‌کنید) کافیست Meta-x را وارد کنید (منظور از Meta عموما کلید Alt است‌. بعضی کامپیوتر‌ها کلید دیگری برای این کار دارند که من فکر نمی‌کنم شما از آن‌ها داشته باشید. اگر هم دارید حتما خودتان می‌دانی

د آن کلید کدام است ;-)). پس از وارد کردن این دستور‌، در محل اعلان فریم ایمکس (پایین‌ترین خط فریم) نشان‌گرتان را می‌بینید که منتظر است دستوری برایش اعلام کنید. این دستور در واقع اسم یک تابع از ایمکس‌تان است. تابع eval-buffer کارش این است که کد Elisp موجود در بافر حاضر (بافری که وقتی درون آن هستید تابع را صدا کرده‌اید) را اجرا کند. این اجرا بلافاصله روی تنظیمات ایمکس‌تان اعمال می‌شود و می‌توانید نتیجه‌اش را در ایمکس‌تان ببینید. البته گاها تغییرات آن‌قدر بزرگ است که بهتر است ایمکس را دوباره اجرا کنید تا عواقبش را ببینید. ولی برای خالی نبودن عریضه‌، این دستور می‌تواند کمک حال خوبی باشد.

C-x C-e

حتما توجه کرده‌اید که هر دستور ایمکس درون یک جفت پرانتز نوشته می‌شود. شما می‌توانید‌، بعد از نوشتن هر دستور‌، با انتقال نشانگر به آخر آن (بعد از پرانتز) و زدن دستور C-x C-e اجرایش کنید و نتیجه را ببینید. برای مثال دستور زیر را وارد کنید:

(+ 1 2)

نشانگر را به آخرش ببرید و C-x C-e را وارد کنید. در خط اعلان نتیجهٔ جمع ۱ و ۲ را می‌بینید. از این روش می‌توانید برای تغییرات کوچک و زمانی که بافر‌تان زیادی بزرگ است و نیاز به زمان زیادی برای لود کامل دارد بهره ببرید. دیگر زیاده گویی نمی‌کنم و به سراغ راهنمای مدیر بسته می‌روم:

مدیر بسته

کار با این بسته فوق‌العاده آسان است. بعد از کانفیگی که نشان‌تان دادم‌، کافیست تابع package-list-packages را صدا بزنید ( M-x package-list-packages ). امیدوارم این را بدانید که نیازی نیست همهٔ اسم تابع را تایپ کنید و با دکمهٔ Tab می‌توانید اسم تابع را کامل کنید D: بعد از چند ثانیه‌، ایمکس لیست آخرین بسته‌ها را از اینترنت دریافت می‌کند و بهتان نشان می‌دهد. در ادامهٔ این لیست شما بسته‌هایی که با استفاده از این ابزار نصب کرده‌اید (می‌کنید) و لیست بسته‌های پیش‌فرض ایمکس را می‌بینید.

برای دیدن توضیحات مربوط به هر بسته‌، کافیست به روی نامش رفته وRET(اینتر خودمان) را بزنید. برای نصبش کافیست وقتی نشانگر روی نام بسته است کلید i را بزنید تا برای نصب انتخاب شود. توجه کنید که فعلا فقط انتخابش کرده‌اید و بسته نصب نشده. با این کار کنار نام بسته (سمت چپ) یک I اضافه می‌شود که یعنی بسته برای نصب انتخاب شده. همینطور با زدن U (حرف U بزرگ) مدیر بسته به صورت خودکار بسته‌هایی که نیاز به به روز رسانی دارند را انتخاب می‌کند. بس از انتخاب بسته برای نصب یا به روز رسانی‌، کافیست که یک x تایپ کنید. مدیر بسته شروع به نصب بسته‌ها می‌کند.

تابع package-install

با استفاده از این تابع می‌توانید بدون لود کردن لیست بسته‌ها‌، اقدام به نصب بسته‌ای جدید کنید. روش کار خیلی ساده است:

M-x package-install RET PACKAGE_NAME RET

M-x package-install PACKAGE_NAME RET

ولی من عموما ترجیح می‌دهم که به لیست بسته‌ها بروم و از آن‌جا نصب‌شان کنم. چون با این کار از آخرین تغییرات لیست و توضیحات بسته آگاه می‌شوم. تا همین‌جای کار کافیست‌. کمی در بین بسته‌ها چرخ بزنید و چند‌تایی از آن‌ها را امتحان کنید.