وقایع نگاری شخصی سازی emacs قسمت اول
اول این که جهت چینش هر پاراگراف را مثل مرورگرهای جدید بر اساس نوع نوشتار تعیین میکند. این یعنی متن فارسی را میتوان مثل آدمیزاد درش نوشت و درد نگرفت!
دوم مدیر بستههاست که کلی چیز جدید میتواند به emacsتان اضافه کند. بحث ما هم سر همین دومیست.
ایمکس به صورت پیشفرض خیلی خوب است، خیلی. ولی میتوان با دستکاری خیلی چیز بهتر و کاراتری هم از تویش در آورد. این است که میخواهم چند تا بسته برای کارهایم توش اضافه کنم. اما اول از همه باید یک مخزن درست و درمان به مدیر بستههایم اضافه کنم تا برای نصب بستهها درد کمتری متحمل شوم (بماند که خود این مدیر بسته کلی دردناک میشود به وقتش!). پس اگر فایل .emacs در پوشهٔ خانگیام ندارم یکی میسازم و به صورت زیر مخزنهایم را اضافه میکنم:
(setq package-archives '(("ELPA" . "http://tromey.com/elpa/")
("gnu" . "http://elpa.gnu.org/packages/")
("marmalade" . "http://marmalade-repo.org/packages/")))
خوب گل سر سبد این مخازن اسمش [Marmalade](marmalade-repo.org "Marmalade repo") است که از [فرود](cyberrabbits.net "یادداشتهای بیت نیمسوز") عزیز بابت معرفیش تشکر میکنم ;-). خوب بستهها اضافه شد و کافیست بعد از باز کردن ایمکس کلید M + x را فشار دهیم. (M مخفف Meta است و منظور در اینجا کلید Alt و یا اگر نداریدش کلید Esc هست) و در اعلان ظاهر شده بنویسیم package-list-packages (اعلان ایمکس قابلیت Auto Completion دارد پس با Tab کارتان را در نوشتن دستوراتش راحتتر کنید). پس از مدتی انتظار لیستی از بستههای قابل نصب یا نصب شده روی سیستمتان نمایش داده میشود. نشانگر را روی هر بسته ببرید. Enter را فشار دهید تا توضیحاتش را بخوانید. اما فعلا بیخیال این بخش شوید و همراه من بیایید تا چند بستهٔ حیاتی به درد بخور را نصب کنیم:
اولین نیاز من برای یک ادیتور به درد بخور همین قابلیت تکمیل خودکار متن است. اول این که سرعتم را بالاتر میبرد. دوم هم این که خیالم را در خطاهای املایی در برنامهنویسی راحتتر میکند ;-) این میشود که در ایمکس دستور زیر را وارد میکنم M + x package-install RET auto-complete و بسته نصب میشود. آنوقت فایل .emacs را باز میکنم و خطهای زیر را به آن اضافه میکنم:
;;Start Auto-complete config
(add-to-list 'load-path "~/.emacs.d/elpa/auto-complete-1.4")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/elpa/auto-complete-1.4/dict")
(ac-config-default)
;;End Auto-complete config
حالا عملا کار باید تمام شده باشد. اما یک مشکل وجود دارد که حدود دو سه ساعت وقتم را نابود کرد تا بفهمم از کجاست. بستهٔ Auto-complete برای نمایش دادن آن جعبهٔ خوشگلش برای کلمات پیشنهادی از یک بستهٔ دیگر به اسم popup استفاده میکند که خوشبختانه مدیر بستهها هم این بسته را به عنوان پیشنیاز نصب میکند. اما در یک پوشهٔ جدا. حالا بستهٔ Auto-complete هر چه میگردد در پوشهٔ خودش نمیتواند popup.el را پیدا کند. این میشود که مینویسیم:
cp ~/emacs.d/elpa/popup/popup.el ~/emacs.elpa/auto-complete-1.4
حالا این بسته نصب شده و در همهجا فعال است. این بسته در شاخهٔ dict در محل نصبش یک سری فایل با شناسهٔ Modeهای مختلف ایمکس دارد که در واقع لغتهای پیشنهادی را از آنجا مییابد. لغات در بعضی از دیکشنریهای مخصوصا برای C++ خیلی ناقص است. میتوانید دستی فایل را باز کنید و کاملش کنید.
این تم را [قبلا](shahinism.com/blog/1391/01/12/%d8%aa%d8%ba%.. "تغییر پوسته Emacs با بسته color-theme") معرفی کردهام. برای نصبش مینویسیم M + x package-install RET zenburn-theme RET و کار تمام است. حالا برای لود شدن این تم به صورت پیشفرض خطوط زیر را به .emacs اضافه میکنیم:
;;Start: config theme
(add-to-list 'custom-theme-load-path "~/.emacs.d/elpa/zenburn-theme-1.5")
(load-theme 'zenburn t)
;;End: config theme
این تم در حالت گرافیکی به راحتی لود میشود. اما در حالت متنی emacs -nw به خاطر کم بودن رنگها ممکن است مشکل داشته باشید. برای حل این مشکل فعلا الالحساب این خط را به فایل .bashrc یا .zshrc تان اضافه کنید تا بعدا در یک پست مجزا در موردش توضیح دهم:
export TERM=xterm-256color
بعله. الان دیگر تمتان هم خیلی میزان است و همهجا قابل استفاده ;-)
php-mode, js2-mode, css-mode:
مهمترین چیز برای برنامهنویسهایی که میخواهند از ایمکس برای توسعهٔ پروژههایشان استفاده کنند همین مدهای ایمکس هستند. در اینجا سه مد مختلف برای زبانهای php, javascript و CSS معرفی شدهاند که به نظرم خیلی عالی هستند. مخصوصا js2-mode که یک IDE به تمام معنا برایتان مهیا میکند! برای نصب که دیگر باید بدانید چه کار کنید. هیچ خطی هم نیاز نیست به .emacsتان اضافه کنید. تنها برای رفتن به هر مد کافیست تایپ کنید M + x mode-name RET همین. فعلا برای قسمت اول کافیست. در قسمت بعد با چیزهای هیجانانگیزتری بر میگردیم D: