.TH "CHA-CONFIG" "5" .SH "نام (NAME)" cha-config \- راهنمای فایل پیکربندی مرورگر وب Chawan .SH "توضیحات (DESCRIPTION)" مرورگر Chawan از پیکربندی گزینه‌های مختلفی مانند کلیدهای میانبر، شیوه‌نامه‌های کاربر (user stylesheets)، ترجیحات اختصاصی سایت و غیره پشتیبانی می‌کند. قالب پیکربندی مشابه toml است، با استثناهای زیر: .IP \(bu 2 جدول‌های معمولی (\f[CR][table]\f[R]) و جدول‌های درون‌خطی (\f[CR]table = {}\f[R]) معناشناسی متفاوتی دارند. اولی افزایشی (additive) است، به این معنی که مقادیر پیش‌فرض حذف نمی‌شوند. دومی مخرب (destructive) است و تمام تعاریف پیش‌فرض را در جدول مشخص‌شده پاک می‌کند. .IP \(bu 2 عبارت \f[CR][[table\-array]]\f[R] یک ساختار ساده‌نویسی برای \f[CR][table\-array.n]\f[R] است، که در آن \f[CR]n\f[R] تعداد آرایه‌های جدول اعلام‌شده است. به عنوان مثال، می‌توانید پیکربندی‌های اختصاصی سایت (siteconf) بی‌نام را با نحو \f[CR][[siteconf]]\f[R] تعریف کنید. .PP مسیر استاندارد فایل پیکربندی \(ti/.chawan/config.toml است، اما مسیر جستجو با دایرکتوری‌های پایه XDG نیز سازگار است: .IP "1." 3 فایل پیکربندی مشخص‌شده با سوئیچ \-C \-> از آن استفاده می‌شود .IP "2." 3 متغیر \f[CR]$CHA_DIR\f[R] تنظیم شده باشد \-> از \f[CR]$CHA_DIR/config.toml\f[R] استفاده می‌شود .IP "3." 3 مسیر \f[CR]${XDG_CONFIG_HOME:\-\(ti/.config}/chawan/config.toml\f[R] وجود داشته باشد \-> از آن استفاده می‌شود .IP "4." 3 مسیر \f[CR]\(ti/.chawan/config.toml\f[R] وجود داشته باشد \-> از آن استفاده می‌شود .PP برای جزئیات درباره نحوه دسترسی به دایرکتوری پیکربندی، بخش \f[I]پردازش مسیرها (Path handling)\f[R] را ببینید. .PP برای دریافت یک الگوی پیکربندی نمونه، فایل bonus/config.toml را در توزیع سورس‌کد برنامه مشاهده کنید. .SS "راه‌اندازی (Start)" گزینه‌های راه‌اندازی باید در بخش \f[CR][start]\f[R] قرار گیرند. .PP در ادامه فهرستی از گزینه‌های راه‌اندازی آمده است: .TP visual\-home = \(lqabout:chawan\(rq \f[B]URL\f[R] .RS صفحه‌ای که هنگام فراخوانی Chawan با گزینه \-V و بدون ارسال هیچ صفحه دیگری به عنوان آرگومان، باز می‌شود. .RE .TP startup\-script = \(lq\(rq \f[B]کد JavaScript\f[R] .RS اسکریپتی که Chawan هنگام راه‌اندازی اجرا می‌کند. تا زمانی که این تابع خارج نشود، صفحات بارگذاری نخواهند شد. (البته توجه داشته باشید که توابع ناهمگام مانند setTimeout مانع بارگذاری نمی‌شوند.) .RE .TP headless = false \f[B]boolean\f[R] / \f[B]\(lqdump\(rq\f[R] .RS هنگامی که روی true یا \(lqdump\(rq تنظیم شود، مرورگر ورودی دریافت نمی‌کند؛ در عوض، نسخه‌ای رندرشده از تمام بافرها را به ترتیب چاپ کرده و سپس خارج می‌شود. تفاوت بین \f[CR]true\f[R] و \(lqdump\(rq در این است که \f[CR]true\f[R] ابتدا منتظر می‌ماند تا تمام اسکریپت‌ها و درخواست‌های شبکه تا انتها اجرا شوند، در حالی که \(lqdump\(rq منتظر نمی‌ماند. این بدان معناست که در صورت فعال بودن اسکریپت‌نویسی (مثلاً اگر اسکریپتی \f[CR]setInterval\f[R] را تنظیم کند)، \f[CR]true\f[R] ممکن است هرگز خارج نشود. ارسال خروجی \f[CR]cha\f[R] از طریق لوله (pipe) به یک برنامه خارجی یا ارسال سوئیچ \f[CR]\-d\f[R] تأثیری مشابه تنظیم این گزینه روی \(lqdump\(rq دارد. .RE .TP console\-buffer = true \f[B]boolean\f[R] .RS آیا Chawan باید در حالت غیر headless یک بافر کنسول باز کند یا خیر. هشدار: این گزینه فقط برای اشکال‌زدایی مفید است. غیرفعال کردن این گزینه بدون هدایت دستی خطای استاندارد (standard error)، منجر به ظاهر شدن تصادفی پیام‌های خطا روی صفحه نمایش شما می‌شود. .RE .SS "بافر (Buffer)" گزینه‌های بافر باید در بخش \f[CR][buffer]\f[R] قرار گیرند. .PP این گزینه‌ها برای تمام بافرها سراسری هستند. برای فیلتر کردن دقیق‌تر و تفکیک‌شده، از \f[CR][[siteconf]]\f[R] استفاده کنید. .PP مثال: .IP .EX \f[B][buffer]\f[R] \f[I]# نمایش تصاویر در تمام وب‌سایت‌ها\f[R] images = true \f[I]# غیرفعال‌سازی CSS وب‌سایت‌ها\f[R] styling = false \f[I]# مشخص کردن استایل‌های کاربر\f[R] user\-style = \(aq\(aq\(aq /* می‌توانید استایل‌های خارجی UA را این‌گونه وارد کنید: */ \(atimport \(aquser.css\(aq; /* یا استایل را به صورت درون‌خطی درج کنید. */ /* اعمال خط زیر پیوندها به صورت پیش‌فرض */ a[href] { text\-decoration: revert !important } \(atmedia (monochrome) { /* فقط در حالت رنگی \(dqmonochrome\(dq (یا \-M) */ /* غیرفعال کردن قلم برجسته در استایل UA */ a[href]:hover { font\-weight: initial } /* ...و مورب کردن قلم هنگام نگه داشتن ماوس */ a[href]:hover { font\-style: italic !important } } \(aq\(aq\(aq \f[I]# می‌توانید scripting را روی true بگذارید، اما پیشنهاد می‌شود\f[R] \f[I]# از [[siteconf]] برای فعال‌سازی به ازای هر سایت استفاده کنید.\f[R] .EE .PP در ادامه فهرستی از گزینه‌های بافر آمده است: .TP styling = true \f[B]boolean\f[R] .RS فعال/غیرفعال کردن شیوه‌نامه‌های نویسنده وب‌سایت (author style sheets). توجه داشته باشید که غیرفعال کردن این گزینه تأثیری بر استایل‌های کاربر ندارد. .RE .TP scripting = false \f[B]boolean\f[R] / \f[B]\(lqapp\(rq\f[R] .RS فعال/غیرفعال کردن JavaScript در \f[I]تمام\f[R] بافرها. مقدار \f[CR]\(dqapp\(dq\f[R] همچنین رابط‌های برنامه‌نویسی JavaScript را فعال می‌کند که می‌توانند برای انگشت‌نگاری (fingerprinting) کاربران استفاده شوند (مانند بررسی اندازه پنجره). این ممکن است سازگاری بهتری با وب‌سایت‌هایی که مانند برنامه کاربردی رفتار می‌کنند ایجاد کند، به بهای کاهش حریم خصوصی. به دلایل امنیتی و کارایی، به کاربران توصیه می‌شود به جای این تنظیم، JavaScript را به صورت انتخابی با \f[CR][[siteconf]]\f[R] فعال کنند. .RE .TP images = false \f[B]boolean\f[R] .RS فعال/غیرفعال کردن نمایش درون‌خطی تصاویر. .RE .TP cookie = false \f[B]boolean\f[R] / \f[B]\(lqsave\(rq\f[R] .RS فعال/غیرفعال کردن کوکی‌ها در سایت‌ها. اگر رشته \(lqsave\(rq مشخص شود، کوکی‌ها در \f[CR]external.cookie\-file\f[R] نیز ذخیره می‌شوند. مقدار \f[CR]true\f[R] همچنان cookies.txt را می‌خواند، اما آن را تغییر نمی‌دهد. در Chawan، هر وب‌سایت یک مخزن کوکی (cookie jar) جداگانه دریافت می‌کند، بنابراین وب‌سایت‌هایی که به کوکی‌های بین سایتی (cross\-site) متکی هستند ممکن است طبق انتظار کار نکنند. می‌توانید از تنظیم \f[CR]\(dqshare\-cookie\-jar\(dq\f[R] در \f[CR][[siteconf]]\f[R] برای تنظیم این رفتار برای سایت‌های خاص استفاده کنید. .RE .TP referer\-from = false \f[B]boolean\f[R] .RS فعال/غیرفعال کردن هدر \(lqReferer\(rq. پیش‌فرض false است. به دلایل حفظ حریم خصوصی، به کاربران توصیه می‌شود این گزینه را غیرفعال بگذارند و آن را فقط برای سایت‌های خاص در \f[CR][[siteconf]]\f[R] فعال کنند. .RE .TP autofocus = false \f[B]boolean\f[R] .RS هنگامی که روی true تنظیم شود، پس از بارگذاری بافر، فوکوس به طور خودکار روی عناصری با ویژگی \(lqautofocus\(rq قرار می‌گیرد. در صورت فعال بودن اسکریپت‌نویسی، این ویژگی به اسکریپت‌ها نیز اجازه می‌دهد روی عناصر فوکوس کنند. .RE .TP meta\-refresh = \(lqask\(rq \f[B]\(lqnever\(rq\f[R] / \f[B]\(lqalways\(rq\f[R] / \f[B]\(lqask\(rq\f[R] .RS آیا تگ‌های متای \f[CR]http\-equiv=refresh\f[R] باید رعایت شوند یا خیر. مقدار \(lqnever\(rq آن‌ها را کاملاً غیرفعال می‌کند، \(lqalways\(rq همه آن‌ها را به صورت خودکار می‌پذیرد و \(lqask\(rq یک منوی بازشو نمایش می‌دهد. .RE .TP history = true \f[B]boolean\f[R] .RS آیا تاریخچه مرور باید روی دیسک ذخیره شود یا خیر. .RE .TP mark\-links = false \f[B]boolean\f[R] .RS افزودن نشانگرهای عددی قبل از پیوندها. در حالت headless/dump، این کار همچنین فهرستی از URLها را بعد از صفحه چاپ می‌کند. .RE .TP user\-style = \(lq\(rq \f[B]CSS stylesheet\f[R] .RS یک شیوه‌نامه کاربر که به تمام بافرها اعمال می‌شود. شیوه‌نامه‌های خارجی را می‌توان با استفاده از نحو \f[CR]\(atimport \(aqfile.css\(aq;\f[R] وارد کرد. مسیرها نسبت به دایرکتوری پیکربندی هستند. دستور \f[CR]\(atimport\f[R] تودرتو هنوز پشتیبانی نمی‌شود. .RE .SS "جستجو (Search)" گزینه‌های جستجو باید در بخش \f[CR][search]\f[R] قرار گیرند. .PP در ادامه فهرستی از گزینه‌های جستجو آمده است: .TP wrap = true \f[B]boolean\f[R] .RS آیا جستجوهای درون صفحه پس از رسیدن به انتهای سند باید به ابتدا برگردند (wrap) یا خیر. .RE .TP ignore\-case = \(lqauto\(rq \f[B]\(lqauto\(rq\f[R] / \f[B]boolean\f[R] .RS هنگامی که روی true تنظیم شود، جستجوها در سراسر سند به صورت پیش‌فرض حساس به بزرگی و کوچکی حروف نیستند (case\-insensitive). هنگامی که روی \(lqauto\(rq تنظیم شود، جستجوها تنها زمانی به بزرگی و کوچکی حروف حساس می‌شوند که عبارت جستجو شامل یک حرف بزرگ باشد. نکته: این مورد را می‌توان در نوار جستجو (به سبک vim) با توالی‌های گریز \f[CR]\(rsc\f[R] (نادیده گرفتن بزرگی و کوچکی) و \f[CR]\(rsC\f[R] (حساسیت دقیق) لغو کرد. برای جزئیات، بخش حالت جستجو (Search mode) را ببینید. .RE .SS "کدگذاری (Encoding)" گزینه‌های کدگذاری باید در بخش \f[CR][encoding]\f[R] قرار گیرند. .PP در ادامه فهرستی از گزینه‌های کدگذاری آمده است: .TP document\-charset = [\(lqutf\-8\(rq, \(lqsjis\(rq, \(lqeuc\-jp\(rq, \(lqlatin2\(rq] \f[B]آرایه‌ای از رشته‌های برچسب مجموعه نویسه\f[R] .RS فهرستی از مجموعه‌های نویسه (character sets) برای بارگذاری اسناد. تمام مجموعه‌های نویسه فهرست‌شده تا زمانی که سند بدون خطا رمزگشایی شود، پیمایش می‌شوند. در HTML، تگ‌های متا و BOM ممکن است این مقدار را با یک مجموعه نویسه دیگر بازنویسی کنند، به شرطی که مجموعه نویسه مشخص‌شده بتواند سند را به درستی رمزگشایی کند. .RE .TP display\-charset = \(lqauto\(rq \f[B]رشته برچسب مجموعه نویسه\f[R] / \f[B]\(lqauto\(rq\f[R] .RS مجموعه نویسه برای ورودی صفحه‌کلید و نمایش اسناد. در حالت dump نیز استفاده می‌شود. (این بدان معناست که مثلاً \f[CR]cha \-I EUC\-JP \-O UTF\-8 a > b\f[R] تقریباً معادل \f[CR]iconv \-f EUC\-JP \-t UTF\-8\f[R] است.) .RE .SS "برنامه‌ها و مسیرهای خارجی (External)" گزینه‌های خارجی باید در بخش \f[CR][external]\f[R] قرار گیرند. .PP در ادامه فهرستی از گزینه‌های خارجی آمده است: .TP tmpdir = {معمولاً \(lq/tmp/cha\-tmp\-user\(rq} \f[B]مسیر\f[R] .RS دایرکتوری مورد استفاده برای ذخیره فایل‌های موقت. .RE .TP editor = \(lq${VISUAL:\-${EDITOR:\-vi}}\(rq \f[B]دستور پوسته\f[R] .RS دستور ویرایشگر خارجی. %s با نام فایل و %d با شماره خط جایگزین می‌شود. .RE .TP mailcap = [\(lq\(ti/.mailcap\(rq, \(lq/etc/mailcap\(rq, \(lq/usr/etc/mailcap\(rq, \(lq/usr/local/etc/mailcap\(rq] \f[B]آرایه‌ای از مسیرها\f[R] .RS مسیر جستجو برای فایل‌های mailcap. برای جزئیات بیشتر به \f[B]cha\-mailcap\f[R](5) مراجعه کنید. دایرکتوری‌هایی که ابتدا مشخص شده‌اند اولویت بالاتری دارند. .RE .TP mime\-types = [\(lq\(ti/.mime.types\(rq, \(lq/etc/mime.types\(rq, \(lq/usr/etc/mime.types\(rq, \(lq/usr/local/etc/mime.types\(rq] \f[B]آرایه‌ای از مسیرها\f[R] .RS مسیر جستجو برای فایل‌های mime.types. برای جزئیات به \f[B]cha\-mime.types\f[R](5) مراجعه کنید. .RE .TP auto\-mailcap = \(lq$CHA_DIR/mailcap\(rq \f[B]مسیر\f[R] .RS فایل mailcap برای مدخل‌هایی که به صورت خودکار اجرا می‌شوند. اعلان \(lqOpen as\(rq نیز مدخل‌ها را در این فایل ذخیره می‌کند. برای سازگاری با گذشته، اگر این مقدار روی \(lqmailcap\(rq باشد و فایل وجود نداشته باشد، Chawan همچنین \(lqauto.mailcap\(rq را بررسی خواهد کرد. .RE .TP cgi\-dir = [\(lq$CHA_DIR/cgi\-bin\(rq, \(lq$CHA_LIBEXEC_DIR/cgi\-bin\(rq] \f[B]آرایه‌ای از مسیرها\f[R] .RS مسیر جستجو برای اسکریپت‌های CGI محلی. برای جزئیات به \f[B]cha\-cgi\f[R](5) مراجعه کنید. .RE .TP urimethodmap = [\(lq$CHA_DIR/urimethodmap\(rq, \(lq\(ti/.urimethodmap\(rq, \(lq/etc/urimethodmap\(rq] \f[B]آرایه‌ای از مسیرها\f[R] .RS مسیر جستجو برای فایل‌های urimethodmap. برای جزئیات به \f[B]cha\-urimethodmap\f[R](5) مراجعه کنید. .RE .TP w3m\-cgi\-compat = false \f[B]boolean\f[R] .RS فعال‌سازی سازگاری CGI محلی با w3m. به طور خلاصه، \f[CR]file:///cgi\-bin/*\f[R] و \f[CR]file:///$LIB/cgi\-bin/*\f[R] را به \f[CR]cgi\-bin:*\f[R] هدایت می‌کند. برای جزئیات به \f[B]cha\-cgi\f[R](5) مراجعه کنید. .RE .TP download\-dir = \(lq${TMPDIR:\-/tmp}/\(rq \f[B]مسیر\f[R] .RS مسیری که به عنوان پیش‌فرض در اعلان‌های \(lqSave to:\(rq درج می‌شود. .RE .TP show\-download\-panel = true \f[B]boolean\f[R] .RS آیا \f[CR]about:downloads\f[R] باید پس از شروع بارگیری باز شود یا خیر. .RE .TP copy\-cmd = \(lqxsel \-bi\(rq \f[B]دستور پوسته\f[R] .RS دستور مورد استفاده برای عملیات \(lqکپی در کلیپ‌بورد\(rq. هنگامی که \f[CR]input.osc52\-copy\f[R] روی \(lqauto\(rq (پیش‌فرض) تنظیم شده باشد، در صورت شناسایی پشتیبانی از OSC 52، گزینه \f[CR]copy\-cmd\f[R] نادیده گرفته می‌شود. .RE .TP paste\-cmd = \(lqxsel \-bo\(rq \f[B]دستور پوسته\f[R] .RS دستور مورد استفاده برای عملیات \(lqخواندن از کلیپ‌بورد\(rq. .RE .TP bookmark = \(lq$CHA_DATA_DIR/bookmark.md\(rq \f[B]مسیر\f[R] .RS مسیر فایل bookmark.md. (فایلی که به آن اشاره می‌شود باید پسوند .md داشته باشد تا نوع آن به درستی تشخیص داده شود.) .RE .TP history\-file = \(lq$CHA_DATA_DIR/history.uri\(rq \f[B]مسیر\f[R] .RS مسیر فایل تاریخچه. .RE .TP history\-size = 100 \f[B]number\f[R] .RS حداکثر طول فایل تاریخچه. .RE .TP cookie\-file = \(lq$CHA_DATA_DIR/cookies.txt\(rq \f[B]مسیر\f[R] .RS مسیر فایل کوکی. قالب آن معادل قالب \(lqcookies.txt\(rq در curl است، به جز اینکه بخش \(lqjar\(at\(rq در ابتدای کوکی‌هایی که به مخزنی غیر از دامنه تعلق دارند، درج می‌شود. در صورتی که \(lqbuffer.cookie\(rq (یا بازنویسی معادل آن در siteconf) روی \f[CR]true\f[R] یا \f[CR]\(dqsave\(dq\f[R] تنظیم شده باشد، کوکی‌های این فایل استفاده می‌شوند. این بدان معناست که \f[CR]true\f[R] فایل cookie\-file را در حالت \(lqفقط‌خواندنی\(rq قرار می‌دهد. .RE .SS "ورودی (Input)" گزینه‌های ورودی باید در بخش \f[CR][input]\f[R] قرار گیرند. .TP vi\-numeric\-prefix = true \f[B]boolean\f[R] .RS آیا پیشوندهای عددی به سبک vi برای دستورها پذیرفته شوند یا خیر. فقط برای کلیدهای میانبر تعریف‌شده در \f[CR][page]\f[R] اعمال می‌شود. .RE .TP use\-mouse = \(lqauto\(rq \f[B]boolean\f[R] / \f[B]\(lqauto\(rq\f[R] .RS آیا Chawan مجاز به دریافت کلیک‌های ماوس است یا خیر. پیاده‌سازی فعلی از w3m تقلید می‌کند. هنگامی که روی \(lqauto\(rq (پیش‌فرض) تنظیم شود، Chawan تلاش می‌کند در دسترس بودن پشتیبانی از ماوس را شناسایی کند. .RE .TP osc52\-copy = \(lqauto\(rq \f[B]boolean\f[R] / \f[B]\(lqauto\(rq\f[R] .RS آیا Chawan باید از توالی گریز OSC 52 برای کپی مستقیم در کلیپ‌بورد از طریق ترمینال استفاده کند یا خیر. در صورت در دسترس بودن، OSC 52 بر \f[CR]external.copy\-cmd\f[R] اولویت دارد. هنگامی که روی \(lqauto\(rq (پیش‌فرض) تنظیم شود، Chawan تلاش می‌کند در زمان راه‌اندازی در دسترس بودن OSC 52 را شناسایی کند. .RE .TP osc52\-primary = \(lqauto\(rq \f[B]boolean\f[R] / \f[B]\(lqauto\(rq\f[R] .RS آیا Chawan باید تلاش کند انتخاب اولیه (primary selection) را از طریق OSC 52 تنظیم کند یا خیر. این کار هنگام انتخاب با ماوس و همچنین در تمام کپی‌های کلیپ‌بورد به صورت خودکار انجام می‌شود. هنگامی که روی \(lqauto\(rq (پیش‌فرض) تنظیم شود، Chawan تلاش می‌کند قابلیت ترمینال در تنظیم انتخاب اولیه را شناسایی کند. توجه داشته باشید که ترمینال‌های بسیار کمی OSC 52 را به درستی پیاده‌سازی کرده‌اند (تا جایی که مشخص است، فقط XTerm و Kitty)، و در سایر ترمینال‌ها این کار حتی ممکن است کپی کردن در کلیپ‌بورد را با اختلال مواجه کند. .RE .TP bracketed\-paste = \(lqauto\(rq \f[B]boolean\f[R] / \f[B]\(lqauto\(rq\f[R] .RS آیا Chawan باید حالت bracketed paste را درخواست کند یا خیر. در صورت فعال بودن (true)، ترمینال متن چسبانده‌شده را با توالی‌های گریز علامت‌گذاری می‌کند، که این امر: الف) تضمین می‌کند که چسباندن نویسه خط جدید در ویرایشگر خط، ویرایشگر را ارسال (submit) نکند، ب) به Chawan اجازه می‌دهد متنی را که در صفحه‌بند چسبانده شده است رهگیری کرده و آن را به طور خودکار در نوار آدرس URL مرورگر بارگذاری کند. هنگامی که روی \(lqauto\(rq (پیش‌فرض) تنظیم شود، Chawan تلاش می‌کند تنها در صورتی bracketed paste را فعال کند که مشخص باشد ترمینال هنگام انجام این کار رفتار نامناسبی نشان نمی‌دهد. .RE .TP wheel\-scroll = 5 \f[B]number\f[R] .RS تعداد خطوط برای پیمایش با چرخ ماوس. .RE .TP side\-wheel\-scroll = 5 \f[B]number\f[R] .RS تعداد ستون‌ها برای پیمایش با چرخ جانبی ماوس. .RE .TP link\-hint\-chars = \(lqabcdefghijklmnoprstuvxyz\(rq \f[B]string\f[R] .RS رشته‌ای از نویسه‌ها برای استفاده در \f[CR]toggleLinkHints\f[R]. هر نقطه کد یونیکد (Unicode codepoint) پذیرفته می‌شود و ترتیب آن‌ها مطابق با این گزینه مشخص می‌شود. .RE .PP مثال‌ها: .IP .EX [input] vi\-numeric\-prefix = true [page] # در اینجا، تابع پیکانی در صورت ورود پیشوند عددی vi با آن مقدار، # و در غیر این صورت بدون آرگومان فراخوانی می‌شود. # پیشوند عددی هرگز نمی‌تواند صفر باشد، بنابراین بررسی تعریف‌نشده بودن با عملگر سه‌تایی ایمن است. G = \(aqn => n ? pager.gotoLine(n) : pager.cursorLastLine()\(aq .EE .SS "شبکه (Network)" گزینه‌های شبکه باید در بخش \f[CR][network]\f[R] قرار گیرند. .TP max\-redirect = 10 \f[B]number\f[R] .RS حداکثر تعداد تغییر مسیرها (redirections) برای دنبال کردن. .RE .TP max\-net\-connections = 12 \f[B]number\f[R] .RS حداکثر تعداد اتصالات شبکه همزمان مجاز در یک بافر. اتصالات اضافی تا زمانی که تعداد به زیر آستانه برگردد، معلق نگه داشته می‌شوند. .RE .TP prepend\-scheme = \(lqhttps://\(rq \f[B]string\f[R] .RS پیشوند افزوده‌شده به URLهایی که بدون پیشوند طرح پروتکل (scheme) به Chawan ارسال می‌شوند (یا در نوار URL تایپ می‌شوند). توجه داشته باشید که فایل‌های محلی (پروتکل \f[CR]file:\f[R]) همیشه ابتدا بررسی می‌شوند؛ تنها در صورت عدم موفقیت، Chawan درخواست را با پروتکل تنظیم‌شده در \f[CR]prepend\-scheme\f[R] دوباره امتحان می‌کند. .RE .TP proxy = \(lq\(rq \f[B]URL\f[R] .RS مشخص کردن یک پروکسی برای تمام درخواست‌های شبکه‌ای که Chawan ارسال می‌کند. در حال حاضر، قالب‌های \f[CR]http://user:pass\(atdomain\f[R] و \f[CR]socks5://user:pass\(atdomain\f[R] پذیرفته می‌شوند. برخلاف curl، مقدار \f[CR]socks5h\f[R] نام مستعاری برای \f[CR]socks5\f[R] است و درخواست‌های DNS همیشه تونل می‌شوند. می‌تواند توسط siteconf لغو شود. .RE .TP default\-headers = {bonus/config.toml را ببینید} \f[B]table\f[R] .RS مشخص کردن یک جدول از هدرهای پیش‌فرض برای تمام درخواست‌های شبکه HTTP(S). می‌تواند توسط siteconf لغو شود. .RE .TP allow\-http\-from\-file = false \f[B]boolean\f[R] .RS \f[B]هشدار: قبل از فعال کردن این گزینه به عواقب آن فکر کنید.\f[R] اجازه ارسال درخواست‌های HTTP و HTTPS را از طرح‌های پروتکل \f[CR]file:\f[R] و \f[CR]stream:\f[R] می‌دهد. این به طور کلی ایده نامناسبی است، زیرا به فایل‌های محلی اجازه می‌دهد سرورهای راه دور را پینگ کنند (قابلیتی که معمولاً توسط ایمیل‌های HTML برای ردیابی فعالیت صندوق پستی شما سوءاستفاده می‌شود). از سوی دیگر، اگر پیامدهای حریم خصوصی برایتان اهمیتی ندارد، به بارگذاری تصاویر در ایمیل‌های HTML کمک می‌کند. .RE .SS "نمایش (Display)" گزینه‌های نمایش باید در بخش \f[CR][display]\f[R] قرار گیرند. .PP در ادامه فهرستی از گزینه‌های نمایش آمده است: .TP color\-mode = \(lqauto\(rq \f[B]\(lqmonochrome\(rq\f[R] / \f[B]\(lqansi\(rq\f[R] / \f[B]\(lqeight\-bit\(rq\f[R] / \f[B]\(lqtrue\-color\(rq\f[R] / \f[B]\(lqauto\(rq\f[R] .RS تنظیم حالت رنگ. مقدار \(lqauto\(rq برای تشخیص خودکار، \(lqmonochrome\(rq برای تک‌رنگ سیاه و سفید، \(lqansi\(rq برای هشت رنگ ANSI به علاوه هشت رنگ aixterm، مقدار \(lqeight\-bit\(rq برای حالت ۲۵۶ رنگ و \(lqtrue\-color\(rq برای رنگ‌های ۲۴ بیتی. .RE .TP format\-mode = \(lqauto\(rq \f[B]\(lqauto\(rq\f[R] / \f[B][\(lqbold\(rq, \(lqitalic\(rq, \(lqunderline\(rq, \(lqreverse\(rq, \(lqstrike\(rq, \(lqoverline\(rq, \(lqblink\(rq]\f[R] .RS حالت‌های قالب‌بندی خروجی مجاز را مشخص می‌کند. رشته \(lqauto\(rq یا آرایه‌ای از ویژگی‌های خاص را می‌پذیرد. مقدار \(lqauto\(rq (پیش‌فرض) سعی می‌کند حالت‌های قالب‌بندی پشتیبانی‌شده را هنگام راه‌اندازی بصری تشخیص دهد، و تمام حالت‌های قالب‌بندی را در حالت dump نادیده می‌گیرد. یک آرایه خالی (\f[CR][]\f[R]) قالب‌بندی را حتی در حالت بصری غیرفعال می‌کند. .RE .TP no\-format\-mode = [\(lqoverline\(rq] \f[B][\(lqbold\(rq, \(lqitalic\(rq, \(lqunderline\(rq, \(lqreverse\(rq, \(lqstrike\(rq, \(lqoverline\(rq, \(lqblink\(rq]\f[R] .RS غیرفعال کردن حالت‌های قالب‌بندی خاص. .RE .TP image\-mode = \(lqauto\(rq \f[B]\(lqauto\(rq\f[R] / \f[B]\(lqnone\(rq\f[R] / \f[B]\(lqsixel\(rq\f[R] / \f[B]\(lqkitty\(rq\f[R] .RS حالت خروجی تصویر را مشخص می‌کند. مقدار \(lqsixel\(rq از sixel برای خروجی استفاده می‌کند، \(lqkitty\(rq از پروتکل نمایش تصویر Kitty استفاده می‌کند و \(lqnone\(rq نمایش تصویر را کاملاً غیرفعال می‌کند. مقدار \(lqauto\(rq (پیش‌فرض) پشتیبانی از sixel یا kitty را به طور خودکار تشخیص می‌دهد و در صورت در دسترس نبودن هیچ‌کدام، به \(lqnone\(rq بازمی‌گردد. انتظار می‌رود این گزینه در تمام ترمینال‌های شناخته‌شده با پشتیبانی کاربردی از تصویر کار کند. توجه داشته باشید که برای بارگذاری تصاویر، گزینه \f[CR]buffer.images\f[R] باید فعال باشد. .RE .TP sixel\-colors = \(lqauto\(rq \f[B]\(lqauto\(rq\f[R] / \f[B]2..65535\f[R] .RS فقط زمانی اعمال می‌شود که \f[CR]display.image\-mode=\(dqsixel\(dq\f[R] باشد. تنظیم این گزینه روی یک عدد، تعداد ثبات‌های رنگ sixel گزارش‌شده توسط ترمینال را لغو می‌کند. .RE .TP alt\-screen = \(lqauto\(rq \f[B]\(lqauto\(rq\f[R] / \f[B]boolean\f[R] .RS فعال/غیرفعال کردن صفحه جایگزین (alternative screen). مقدار \(lqauto\(rq (پیش‌فرض) سعی می‌کند پشتیبانی از این ویژگی را تشخیص دهد. (با این حال، از آنجا که Chawan به terminfo متصل نیست، نباید انتظار داشته باشید ترفندهایی که توضیحات مربوطه را از terminfo حذف می‌کنند کار کنند.) .RE .TP highlight\-color = \(lq\-cha\-ansi(bright\-cyan)\(rq \f[B]CSS color\f[R] .RS تنظیم رنگ برجسته‌سازی برای جستجوی افزایشی و نشانه‌ها. نام رنگ‌های CSS، مقادیر هگزادسیمال و توابع رنگ همگی پذیرفته می‌شوند. در حالت تک‌رنگ (monochrome)، این تنظیم نادیده گرفته می‌شود؛ در عوض، از ویدیوی معکوس (reverse video) استفاده می‌شود. .RE .TP highlight\-marks = true \f[B]boolean\f[R] .RS فعال/غیرفعال کردن برجسته‌سازی نشانه‌ها. .RE .TP double\-width\-ambiguous = false \f[B]boolean\f[R] .RS فرض می‌کند ترمینال نویسه‌ها را در دسته مبهم شرق آسیا (East Asian Ambiguous) به عنوان نویسه‌هایی با عرض دوبرابر نمایش می‌دهد. زمانی مفید است که برای مثال ○ دو سلول را اشغال کند. .RE .TP minimum\-contrast = 100 \f[B]0..235\f[R] .RS حداقل تفاوت بین درخشندگی (Y) پس‌زمینه پیش‌فرض ترمینال و پیش‌زمینه را همان‌طور که در YUV نمایش داده می‌شود مشخص می‌کند. مقدار 0 این تابع را غیرفعال می‌کند (یعنی اجازه می‌دهد حروف سیاه روی پس‌زمینه سیاه و غیره نمایش داده شوند). نکته: در گذشته، این گزینه برای همه رنگ‌ها اعمال می‌شد، اما از نسخه v0.3 چاوان تصحیح کنتراست رنگ را فقط زمانی انجام می‌دهد که رنگ پیش‌زمینه یا پس‌زمینه پیش‌فرض ترمینال باشد. همچنین الگوریتم تصحیح کنتراست هنوز بی‌نقص نیست، بنابراین اعمال تغییرات در نسخه‌های آینده محتمل است. .RE .TP set\-title = true \f[B]boolean\f[R] .RS تنظیم عنوان پنجره شبیه‌ساز ترمینال بر اساس عنوان صفحه فعلی. .RE .TP default\-background\-color = \(lqauto\(rq \f[B]\(lqauto\(rq\f[R] / \f[B]RGB color\f[R] .RS رنگ پس‌زمینه فرضی ترمینال را لغو می‌کند. مقدار \(lqauto\(rq تشخیص رنگ پس‌زمینه را به Chawan واگذار می‌کند. .RE .TP default\-foreground\-color = \(lqauto\(rq \f[B]\(lqauto\(rq\f[R] / \f[B]RGB color\f[R] .RS رنگ پیش‌زمینه فرضی ترمینال را تنظیم می‌کند. مقدار \(lqauto\(rq تشخیص رنگ پیش‌زمینه را به Chawan واگذار می‌کند. .RE .TP columns = 80, lines = 24, pixels\-per\-column = 9, pixels\-per\-line = 18 \f[B]number\f[R] .RS مقادیر جایگزین (fallback) برای تعداد ستون‌ها، خطوط، پیکسل در هر ستون و پیکسل در هر خط برای مواردی که نمی‌توان آن‌ها را به طور خودکار تعیین کرد. (برای مثال، این مقادیر در حالت dump استفاده می‌شوند.) .RE .TP force\-columns = false, force\-lines = false, force\-pixels\-per\-column = false, force\-pixels\-per\-line = false \f[B]boolean\f[R] .RS تنظیم اجباری ستون‌ها، خطوط، پیکسل در هر ستون یا پیکسل در هر خط بر روی مقادیر جایگزین ارائه‌شده در بالا. .RE .SS "نوار وضعیت (Status)" گزینه‌های مربوط به نوار وضعیت (آخرین خط روی صفحه) باید در بخش \f[CR][status]\f[R] قرار گیرند. .PP در ادامه فهرستی از گزینه‌های نوار وضعیت آمده است: .TP show\-cursor\-position = true \f[B]boolean\f[R] .RS آیا شماره خط فعلی باید نمایش داده شود یا خیر. .RE .TP show\-hover\-link = true \f[B]boolean\f[R] .RS آیا پیوند زیر مکان‌نما باید نمایش داده شود یا خیر. .RE .TP format\-mode = \(lqreverse\(rq \f[B]{بخش [display] را ببینید}\f[R] .RS قالب‌بندی نوار وضعیت. .RE .SS "قوانین Omnibar (Omnirule)" نوار جامع یا omni\-bar (که به طور پیش‌فرض با C\-l باز می‌شود) می‌تواند برای انجام جستجوها با استفاده از omni\-rules استفاده شود. این موارد باید به عنوان زیرکلیدهایی در جدول \f[CR][omnirule]\f[R] مشخص شوند. (خود زیرکلید نادیده گرفته می‌شود؛ تا زمانی که با کلیدهای دیگر تداخل نداشته باشد، می‌توانید از هر نامی استفاده کنید.) .PP مثال‌ها: .IP .EX # جستجو با استفاده از DuckDuckGo Lite. # (این قانون در پیکربندی پیش‌فرض گنجانده شده است، اگرچه C\-k جستجوی Brave را فراخوانی می‌کند.) [omnirule.ddg] match = \(aq\(haddg:\(aq substitute\-url = \(aq(x) => \(dqhttps://lite.duckduckgo.com/lite/?kp=\-1&kd=\-1&q=\(dq + encodeURIComponent(x.split(\(dq:\(dq).slice(1).join(\(dq:\(dq))\(aq # برای استفاده از قانون فوق، نوار URL را با C\-k باز کنید، آن را با C\-u پاک کرده و ddg:keyword را تایپ کنید. # همچنین می‌توانید C\-k را این‌گونه بازتعریف کنید: [page] \(aqC\-k\(aq = \(aq() => pager.load(\(dqddg:\(dq)\(aq # جستجو در ویکی‌پدیا، به سبک فایرفاکس. # ساختار [[omnirule]] یک قانون omnirule بی‌نام تعریف می‌کند؛ این ساختار معادل حالت نام‌گذاری‌شده است. [[omnirule]] match = \(aq\(ha\(atwikipedia\(aq substitute\-url = \(aq(x) => \(dqhttps://en.wikipedia.org/wiki/Special:Search?search=\(dq + encodeURIComponent(x.replace(/\(atwikipedia/, \(dq\(dq))\(aq .EE .PP همان‌طور که در بالا ذکر شد، پیکربندی پیش‌فرض شامل برخی قوانین توکار است که بر اساس ترجیح نگهدارنده و این معیار حداقلی که باید بدون کوکی و JavaScript کار کنند، انتخاب شده‌اند. در حال حاضر، این موارد عبارتند از: .IP \(bu 2 \f[CR]ddg:\f[R] \- DuckDuckGo Lite. .IP \(bu 2 \f[CR]br:\f[R] \- جستجوی Brave. .IP \(bu 2 \f[CR]wk:\f[R] \- ویکی‌پدیای انگلیسی. .IP \(bu 2 \f[CR]wd:\f[R] \- ویکی‌واژه انگلیسی (English Wiktionary). .IP \(bu 2 \f[CR]mo:\f[R] \- Mojeek. .PP گزینه‌های Omnirule: .TP match \f[B]regex\f[R] .RS عبارت باقاعده مورد استفاده برای تطبیق رشته ورودی. توجه داشته باشید که وب‌سایت‌های ارسال‌شده به عنوان آرگومان نیز تطبیق داده می‌شوند. نکته: عبارات باقاعده بر اساس قوانین پردازش regex در حالت تطبیق (match mode) بررسی می‌شوند. .RE .TP substitute\-url \f[B]تابع JavaScript\f[R] .RS یک تابع JavaScript که Chawan رشته ورودی را به آن ارسال می‌کند. اگر یک رشته جدید بازگردانده شود، آن رشته به جای رشته قبلی پردازش خواهد شد. .RE .SS "پیکربندی اختصاصی سایت (Siteconf)" گزینه‌های پیکربندی را می‌توان برای سایت‌های مجزا مشخص کرد. مدخل‌ها باید به عنوان زیرکلیدهایی در جدول \f[CR][siteconf]\f[R] مشخص شوند. (خود زیرکلید نادیده گرفته می‌شود؛ تا زمانی که با کلیدهای دیگر تداخل نداشته باشد، می‌توانید از هر نامی استفاده کنید.) .PP بیشتر گزینه‌های siteconf را می‌توان به صورت سراسری نیز مشخص کرد؛ فیلد \(lqoverrides\(rq را ببینید. .PP مثال‌ها: .IP .EX # فعال‌سازی کوکی‌ها در وب‌سایت نارنجی (Hacker News) برای ورود به حساب. [siteconf.hn] url = \(aqhttps://news\(rs.ycombinator\(rs.com/.*\(aq cookie = true # تغییر مسیر npr.org به text.npr.org. [siteconf.npr] host = \(aq(www\(rs.)?npr\(rs.org\(aq rewrite\-url = \(aq\(aq\(aq (x) => { x.host = \(dqtext.npr.org\(dq; const s = x.pathname.split(\(aq/\(aq); x.pathname = s.at(s.length > 2 ? \-2 : 1); /* نیازی به بازگرداندن مقدار نیست؛ اشیاء URL با ارجاع ارسال می‌شوند. */ } \(aq\(aq\(aq # مجاز کردن اشتراک‌گذاری کوکی در دامنه‌های *sr.ht. [siteconf.sr\-ht] host = \(aq(.*\(rs.)?sr\(rs.ht\(aq # هم \(aqsomething.sr.ht\(aq و هم \(aqsr.ht\(aq cookie = true # فعال‌سازی کوکی‌ها (فقط‌خواندنی؛ از \(dqsave\(dq برای ذخیره دائم استفاده کنید) share\-cookie\-jar = \(aqsr.ht\(aq # استفاده از مخزن کوکی \(aqsr.ht\(aq برای تمام میزبان‌های منطبق # استفاده از پوسته \(dqvector\(dq در ویکی‌پدیا. # ساختار [[siteconf]] یک siteconf بی‌نام تعریف می‌کند؛ این معادل موارد بالا است. [[siteconf]] url = \(aq\(hahttps?://[a\-z]+\(rs.wikipedia\(rs.org/wiki/(?!.*useskin=.*)\(aq rewrite\-url = \(aqx => x.searchParams.append(\(dquseskin\(dq, \(dqvector\(dq)\(aq # وادار کردن imgur به ارسال تصاویر. [siteconf.imgur] host = \(aq(i\(rs.)?imgur\(rs.com\(aq default\-headers = { User\-Agent = \(dqMozilla/5.0 chawan\(dq, Accept = \(dq*/*\(dq, Accept\-Encoding = \(dqgzip, deflate\(dq, Accept\-Language = \(dqen;q=1.0\(dq, Pragma = \(dqno\-cache\(dq, Cache\-Control = \(dqno\-cache\(dq } .EE .PP گزینه‌های Siteconf: .TP url \f[B]regex\f[R] .RS عبارت باقاعده مورد استفاده برای تطبیق URL. یا این گزینه یا گزینه \f[CR]host\f[R] باید مشخص شود. نکته: عبارات باقاعده بر اساس قوانین پردازش regex در حالت تطبیق (match mode) مدیریت می‌شوند. .RE .TP host \f[B]regex\f[R] .RS عبارت باقاعده مورد استفاده برای تطبیق بخش میزبان URL (یعنی نام دامنه/آدرس IP). یا این گزینه یا گزینه \f[CR]url\f[R] (نه هر دو) باید مشخص شود. نکته: عبارات باقاعده بر اساس قوانین پردازش regex در حالت تطبیق (match mode) مدیریت می‌شوند. .RE .TP rewrite\-url \f[B]تابع JavaScript\f[R] .RS یک تابع JavaScript که Chawan شیء URL سایت را به آن ارسال می‌کند. اگر یک URL جدید بازگردانده شود یا شیء URL به هر نحوی تغییر یابد، Chawan کاربر را به صورت شفاف به این URL جدید هدایت می‌کند. .RE .TP cookie = buffer.cookie \f[B]boolean\f[R] / \f[B]\(lqsave\(rq\f[R] .RS آیا بارگذاری (و با \(lqsave\(rq، ذخیره‌سازی) کوکی‌ها برای این URL باید مجاز باشد یا خیر. .RE .TP share\-cookie\-jar \f[B]رشته میزبان (host)\f[R] .RS مخزن کوکی برای استفاده در این دامنه. برای مثال، برای به اشتراک‌گذاری کوکی‌ها با زیردامنه‌ها مفید است. .RE .TP referer\-from = buffer.referer\-from \f[B]boolean\f[R] .RS آیا Chawan هنگام باز کردن درخواست‌هایی که از این دامنه سرچشمه می‌گیرند، باید هدر Referer ارسال کند یا خیر. مثال ساده‌شده: اگر روی پیوندی در a.com کلیک کنید که به b.com اشاره دارد و referer\-from برابر true باشد، برای b.com هدر Referer با مقدار \(lqa.com\(rq ارسال می‌شود. .RE .TP scripting = buffer.scripting \f[B]boolean\f[R] / \f[B]\(lqapp\(rq\f[R] .RS فعال/غیرفعال کردن اجرای JavaScript در این سایت. برای جزئیات \f[CR]buffer.scripting\f[R] را ببینید. .RE .TP styling = buffer.styling \f[B]boolean\f[R] .RS فعال/غیرفعال کردن استایل‌های نویسنده (CSS) در این سایت. .RE .TP images = buffer.images \f[B]boolean\f[R] .RS فعال/غیرفعال کردن بارگذاری تصاویر در این سایت. .RE .TP document\-charset = encoding.document\-charset \f[B]رشته برچسب مجموعه نویسه\f[R] .RS مشخص کردن کدگذاری پیش‌فرض برای این سایت. .RE .TP proxy = network.proxy \f[B]رشته URL\f[R] .RS مشخص کردن پروکسی برای درخواست‌های شبکه‌ای که محتوای این بافر را دریافت می‌کنند. .RE .TP default\-headers = network.default\-headers \f[B]table\f[R] .RS مشخص کردن فهرستی از هدرهای پیش‌فرض برای درخواست‌های شبکه HTTP(S) به این بافر. .RE .TP insecure\-ssl\-no\-verify = false \f[B]boolean\f[R] .RS هنگامی که روی true تنظیم شود، اعتبارسنجی همتا (peer) و نام میزبان را برای کلیدهای SSL در این سایت غیرفعال می‌کند، دقیقاً مانند کاری که \f[CR]curl \-\-insecure\f[R] انجام می‌دهد. لطفاً از این گزینه استفاده نکنید مگر اینکه کاملاً مطمئن باشید چه کاری انجام می‌دهید. .RE .TP autofocus = buffer.autofocus \f[B]boolean\f[R] .RS هنگامی که روی true تنظیم شود، پس از بارگذاری بافر، فوکوس به طور خودکار روی عناصری با ویژگی \(lqautofocus\(rq قرار می‌گیرد. در صورت فعال بودن اسکریپت‌نویسی، این ویژگی به اسکریپت‌ها نیز اجازه می‌دهد روی عناصر فوکوس کنند. .RE .TP meta\-refresh = buffer.meta\-refresh \f[B]\(lqnever\(rq\f[R] / \f[B]\(lqalways\(rq\f[R] / \f[B]\(lqask\(rq\f[R] .RS آیا تگ‌ها و هدرهای متای \f[CR]http\-equiv=refresh\f[R] باید رعایت شوند یا خیر. مقدار \(lqnever\(rq آن‌ها را کاملاً غیرفعال می‌کند، \(lqalways\(rq همه آن‌ها را به صورت خودکار می‌پذیرد و \(lqask\(rq یک منوی بازشو نمایش می‌دهد. .RE .TP history = buffer.history \f[B]boolean\f[R] .RS آیا تاریخچه مرور برای این URL باید روی دیسک ذخیره شود یا خیر. .RE .TP mark\-links = buffer.mark\-links \f[B]boolean\f[R] .RS افزودن نشانگرهای عددی قبل از پیوندها. .RE .TP user\-style = buffer.user\-style \f[B]string\f[R] .RS مشخص کردن یک شیوه‌نامه کاربری خاص برای این سایت. برای جزئیات به \f[CR]buffer.user\-style\f[R] مراجعه کنید. .RE .SS "کلیدهای میانبر (Keybindings)" کلیدهای میانبر باید در این بخش‌ها قرار گیرند: .IP \(bu 2 برای تعامل با صفحه‌بند (pager): \f[CR][page]\f[R] .IP \(bu 2 برای ویرایش خط: \f[CR][line]\f[R] .PP کلیدهای میانبر با استفاده از نحو زیر پیکربندی می‌شوند: .IP .EX \(aq\(aq = \(aq\(aq .EE .PP که در آن \f[CR]\f[R] ترکیبی از نویسه‌های یونیکد با استفاده از نحو شرح داده شده در زیر است. .PP عبارت \f[CR]\f[R] یا دستوری است که در بخش \f[CR][cmd]\f[R] تعریف شده است، یا یک عبارت JavaScript است. این سند تنها عملیات‌های از پیش تعریف‌شده در پیکربندی پیش‌فرض را شرح می‌دهد؛ برای شرح API، به \f[B]cha\-api\f[R](7) مراجعه کنید. .PP مثال‌ها: .IP .EX \f[I]# نمایش تغییر URL هنگام فشردن Control، Escape و j\f[R] \(aqC\-M\-j\(aq = \(aqload\(aq \f[I]# رفتن به اولین خط صفحه با دو بار فشردن g بدون پیشوند عددی،\f[R] \f[I]# یا رفتن به خط مربوطه در صورت وارد کردن عدد پیشوند.\f[R] \(aqg g\(aq = \(aqgotoLineOrStart\(aq \f[I]# توابع و عبارات JS نیز پذیرفته می‌شوند. کد زیر موتور جستجوی پیش‌فرض\f[R] \f[I]# را با DuckDuckGo Lite جایگزین می‌کند.\f[R] \f[I]# (برای مشاهده فهرست توابع موجود به api.md مراجعه کنید.)\f[R] \(aqC\-k\(aq = \(aq() => pager.load(\(dqddg:\(dq)\(aq .EE .SS "قالب کلیدهای میانبر (Keybinding format)" یک کلید میانبر فهرستی از کلیدها است که با فاصله جدا شده‌اند و به صورت اختیاری با اصلاح‌کننده‌های \f[CR]S\-\f[R] (shift)، \f[CR]C\-\f[R] (control) یا \f[CR]M\-\f[R] (meta) پیشوندگذاری می‌شوند. .PP به طور کلی، کلیدهای ASCII/Unicode را می‌توان همان‌طور که هستند نوشت. استثنا کلید فاصله است که به صورت \f[CR]SPC\f[R] نوشته می‌شود. .PP سایر کلیدهای نام‌گذاری‌شده پشتیبانی‌شده عبارتند از: \f[CR]TAB\f[R]، \f[CR]ESC\f[R]، \f[CR]RET\f[R] (کلید return)، \f[CR]LF\f[R] (کلید enter/line feed)، \f[CR]Left\f[R]، \f[CR]Up\f[R]، \f[CR]Down\f[R]، \f[CR]Right\f[R] (کلیدهای جهت‌نما)، \f[CR]PageUp\f[R]، \f[CR]PageDown\f[R] (صفحه بالا/پایین)، \f[CR]Home\f[R]، \f[CR]End\f[R] و کلیدهای تابع \f[CR]F1\f[R] تا \f[CR]F20\f[R]. .PP برای سازگاری با گذشته، فاصله‌ها را می‌توان از توالی کلیدهایی که با یک حرف بزرگ شروع نمی‌شوند حذف کرد. به عنوان مثال، \f[CR]\(aqgg\(aq\f[R] و \f[CR]\(aqg g\(aq\f[R] معادل هستند. با این حال، مؤلفه‌هایی که با یک حرف بزرگ شروع می‌شوند (مانند \f[CR]\(aqGg\(aq\f[R]) برای نام‌های کلید رزرو شده‌اند، بنابراین برای جلوگیری از تجزیه مبهم، باید با فاصله جدا شوند (مانند \f[CR]\(aqG g\(aq\f[R]). .PP همچنین برای سازگاری با گذشته، فاصله‌های ابتدا/انتهای کلید میانبر به \f[CR]SPC\f[R] ترجمه می‌شوند. .SS "عملیات‌های صفحه‌بندی (Pager actions)" کلیدهای میانبر پیش‌فرض به صورت \f[B]برجسته (bold)\f[R] نمایش داده شده‌اند. .TP quit \f[B]q\f[R] .RS خروج از مرورگر. .RE .TP suspend \f[B]C\-z\f[R] .RS تعلیق موقت مرورگر. نکته: این کار فرایندهای بافر یا اسکریپت‌های CGI را نیز به حالت تعلیق درمی‌آورد؛ بنابراین اگر در حال بارگیری فایلی باشید، تا زمان از سرگیری فرایند به تعویق خواهد افتاد. .RE .TP load \f[B]C\-l\f[R] .RS باز کردن آدرس فعلی در نوار URL. .RE .TP loadCursor \f[B]M\-l\f[R] .RS باز کردن آدرس پیوند یا تصویری که نشانگر روی آن قرار دارد در نوار URL. اگر پیوند/تصویری زیر نشانگر نباشد، نوار URL خالی باز می‌شود. .RE .TP loadEmpty باز کردن یک نوار آدرس خالی. .TP webSearch \f[B]C\-k\f[R] .RS باز کردن نوار URL با یک موتور جستجوی دلخواه. در حال حاضر این موتور جستجوی Brave است، اما ممکن است در آینده تغییر کند. .RE .TP dupeBuffer \f[B]M\-u\f[R] .RS تکثیر بافر فعلی. این یک کپی سطحی (shallow clone) است، بنابراین تغییرات در یک بافر روی دیگری تأثیر می‌گذارد. .RE .TP reloadBuffer \f[B]U\f[R] .RS باز کردن بافر جدید با URL بافر فعلی و جایگزینی آن با بافر فعلی. .RE .TP lineInfo \f[B]C\-g\f[R] .RS نمایش اطلاعات مربوط به خط فعلی در خط وضعیت. .RE .TP toggleSource \f[B]\(rs\f[R] .RS در صورت مشاهده بافر HTML، بافر جدیدی حاوی سورس‌کد آن باز می‌کند. در غیر این صورت، محتوای بافر فعلی را به عنوان HTML باز می‌کند. .RE .TP saveScreen \f[B]s s\f[R] .RS ذخیره بافر رندرشده در یک فایل. .RE .TP saveSource \f[B]s S\f[R] .RS ذخیره سورس‌کد بافر در یک فایل. .RE .TP editScreen \f[B]s e\f[R] .RS باز کردن بافر رندرشده در یک ویرایشگر متنی. .RE .TP editSource \f[B]s E\f[R] .RS باز کردن سورس‌کد بافر در یک ویرایشگر متنی. .RE .TP discardBuffer \f[B]D\f[R] .RS بستن و دور انداختن بافر فعلی و بازگشت به بافر قبلی/بعدی بر اساس بافری که قبلاً مشاهده شده است. .RE .TP discardBufferPrev, discardBufferNext \f[B]d ,\f[R], \f[B]d .\f[R] .RS دور انداختن بافر فعلی و انتقال به بافر قبلی/بعدی، یا باز کردن پیوند زیر مکان‌نما. .RE .TP discardTree \f[B]M\-d\f[R] .RS دور انداختن تمام بافرهای فرزندِ بافر فعلی. .RE .TP nextBuffer, prevBuffer \f[B].\f[R], \f[B],\f[R] .RS رفتن به ترتیب به بافر بعدی یا قبلی. .RE .TP enterCommand \f[B]M\-c\f[R] .RS ورود مستقیم یک دستور JavaScript. توجه داشته باشید که این دستور با صفحه‌بند تعامل دارد، نه با وب‌سایت نمایش‌داده‌شده. .RE .TP searchForward, searchBackward جستجوی یک رشته در بافر فعلی، به سمت جلو یا عقب. .TP isearchForward, searchBackward \f[B]/\f[R], \f[B]?\f[R] .RS جستجوی افزایشی برای یک رشته با برجسته‌سازی اولین نتیجه، به سمت جلو یا عقب. .RE .TP searchNext, searchPrev \f[B]n\f[R], \f[B]N\f[R] .RS پرش به n-امین (یا در صورت عدم تعیین، اولین) نتیجه جستجوی بعدی/قبلی. .RE .TP peek نمایش پیامی حاوی URL بافر فعلی در خط وضعیت. .TP peekCursor \f[B]u\f[R] .RS نمایش پیامی حاوی URL یا عنوان زیر مکان‌نما در خط وضعیت. فراخوانی‌های مکرر امکان جابجایی بین این دو را فراهم می‌کند (یعنی به طور پیش‌فرض، یک بار فشردن u \-> عنوان، فشردن مجدد \-> URL). .RE .TP showFullAlert \f[B]s u\f[R] .RS نمایش آخرین هشدار در داخل ویرایشگر خط. همچنین می‌توانید هشدارهای قبلی را با استفاده از C\-p یا C\-n مشاهده کنید. .RE .TP copyURL \f[B]M\-y\f[R] .RS کپی کردن URL بافر فعلی در کلیپ‌بورد سیستم. .RE .TP copyCursorLink \f[B]y u\f[R] .RS کپی کردن پیوند زیر مکان‌نما در کلیپ‌بورد سیستم. .RE .TP copyCursorImage \f[B]y I\f[R] .RS کپی کردن URL تصویر زیر مکان‌نما در کلیپ‌بورد سیستم. .RE .TP gotoClipboardURL \f[B]M\-p\f[R] .RS رفتن به آدرس URL موجود در کلیپ‌بورد. .RE .TP openBookmarks \f[B]M\-b\f[R] .RS باز کردن فایل نشانک‌ها (bookmarks). .RE .TP addBookmark \f[B]M\-a\f[R] .RS افزودن صفحه فعلی به نشانک‌ها. .RE .TP toggleLinkHints \f[B]f\f[R] .RS نمایش راهنماها (hints) قبل از هر پیوند (یا دکمه). پس از تایپ یک راهنما، مکان‌نما روی پیوند مربوطه قرار می‌گیرد. مجموعه نویسه‌های راهنما را می‌توان با \f[CR]input.link\-hint\-chars\f[R] سفارشی‌سازی کرد. .RE .TP toggleLinkHintsAutoClick مشابه \f[CR]toggleLinkHints\f[R]، با این تفاوت که روی پیوند انتخاب‌شده نیز کلیک می‌کند. .SS "عملیات‌های بافر (Buffer actions)" عبارت \f[CR]n\f[R] به عددی اشاره دارد که پیش از عملیات وارد می‌شود. برای مثال در \f[CR]10gg\f[R] مقدار \f[CR]n\f[R] برابر ۱۰ است. اگر هیچ عددی وارد نشود، نامشخص در نظر گرفته می‌شود. .PP کلیدهای میانبر پیش‌فرض به صورت \f[B]برجسته (bold)\f[R] نمایش داده شده‌اند. .TP cursorUp, cursorDown \f[B]j\f[R]/\f[B]C\-p\f[R]/\f[B]Up\f[R], \f[B]k\f[R]/\f[B]C\-n\f[R]/\f[B]Down\f[R] .RS حرکت مکان‌نما به بالا/پایین به اندازه \f[CR]n\f[R] خط، یا در صورت نامشخص بودن \f[CR]n\f[R]، به اندازه ۱ خط. .RE .TP cursorLeft, cursorRight \f[B]h\f[R]/\f[B]Left\f[R], \f[B]l\f[R]/\f[B]Right\f[R] .RS حرکت مکان‌نما به چپ/راست به اندازه \f[CR]n\f[R] سلول، یا در صورت نامشخص بودن \f[CR]n\f[R]، به اندازه ۱ سلول. .RE .TP cursorLineBegin \f[B]0\f[R]/\f[B]Home\f[R] .RS حرکت مکان‌نما به اولین سلول خط. .RE .TP cursorLineTextStart \f[B]\(ha\f[R] .RS حرکت مکان‌نما به اولین نویسه غیرفاصله‌ای خط. .RE .TP cursorLineEnd \f[B]$\f[R]/\f[B]End\f[R] .RS حرکت مکان‌نما به آخرین سلول خط. .RE .TP cursorNextWord, cursorNextViWord, cursorNextBigWord \f[B]w\f[R], \f[B]W\f[R] .RS حرکت مکان‌نما به ابتدای n-امین کلمه بعدی. .RE .TP cursorPrevWord, cursorPrevViWord, cursorPrevBigWord حرکت مکان‌نما به انتهای n-امین کلمه قبلی. .TP cursorWordEnd, cursorViWordEnd, cursorBigWordEnd \f[B]e\f[R], \f[B]E\f[R] .RS حرکت مکان‌نما به انتهای کلمه فعلی، یا در صورت قرار داشتن در انتهای کلمه، به انتهای n-امین کلمه بعدی. .RE .TP cursorWordBegin, cursorViWordBegin, cursorBigWordBegin \f[B]b\f[R], \f[B]B\f[R] .RS حرکت مکان‌نما به ابتدای کلمه فعلی، یا در صورت قرار داشتن در ابتدای کلمه، به انتهای n-امین کلمه قبلی. .RE .TP cursorPrevLink, cursorNextLink \f[B][\f[R], \f[B]]\f[R] .RS حرکت مکان‌نما به انتهای/ابتدای عنصر قابل کلیک قبلی/بعدی (مانند پیوند، فیلد ورودی و غیره). .RE .TP cursorPrevParagraph, cursorNextParagraph \f[B]{\f[R], \f[B]}\f[R] .RS حرکت مکان‌نما به انتهای/ابتدای n-امین بند (paragraph) قبلی/بعدی. .RE .TP cursorRevNthLink حرکت مکان‌نما به n-امین پیوند سند، با شمارش معکوس از آخرین خط سند. .TP cursorNthLink حرکت مکان‌نما به n-امین پیوند سند. .TP pageUp, pageDown, pageLeft, pageRight \f[B]C\-b\f[R]/\f[B]PageUp\f[R], \f[B]C\-f\f[R]/\f[B]PageDown\f[R], \f[B]z H\f[R], \f[B]z L\f[R] .RS پیمایش به بالا/پایین/چپ/راست به اندازه \f[CR]n\f[R] صفحه، یا در صورت نامشخص بودن \f[CR]n\f[R]، به اندازه یک صفحه. .RE .TP halfPageUp, halfPageDown, halfPageLeft, halfPageUp \f[B]C\-u\f[R], \f[B]C\-d\f[R] .RS پیمایش به بالا/پایین/چپ/راست به اندازه \f[CR]n\f[R] نیم‌صفحه، یا در صورت نامشخص بودن \f[CR]n\f[R]، به اندازه یک صفحه. .RE .TP scrollUp, scrollDown, scrollLeft, scrollRight \f[B]K\f[R]/\f[B]C\-y\f[R], \f[B]J\f[R]/\f[B]C\-e\f[R], \f[B]z h\f[R], \f[B]z l\f[R] .RS پیمایش به بالا/پایین/چپ/راست به اندازه \f[CR]n\f[R] خط، یا در صورت نامشخص بودن \f[CR]n\f[R]، به اندازه یک خط. .RE .TP click \f[B]RET\f[R]/\f[B]LF\f[R] .RS کلیک روی عنصر HTML فعلی زیر مکان‌نما. مقدار \f[CR]n\f[R] تعداد کلیک‌ها را در رویدادهای JS مشخص می‌کند. .RE .TP rightClick \f[B]c\f[R] .RS ارسال کلیک راست به بافر. اگر رویداد دریافت نشود (یعنی هیچ منوی زمینه‌ای JS نشان داده نشود)، در عوض منو را باز و بسته (toggle) می‌کند. .RE .TP toggleMenu \f[B]C\f[R] .RS باز و بسته کردن منو. .RE .TP viewImage \f[B]I\f[R] .RS مشاهده تصویر زیر مکان‌نما در یک نمایش‌دهنده خارجی. .RE .TP reshape \f[B]R\f[R] .RS تغییر شکل و رندر مجدد بافر فعلی. زمانی مفید است که چیدمان صفحه با وجود لزوم به‌روزرسانی، تغییر نکرده باشد. .RE .TP redraw \f[B]r\f[R] .RS بازترسیم محتویات صفحه. زمانی مفید است که نمایشگر دچار به‌هم‌ریختگی بصری شده باشد. .RE .TP cursorFirstLine, cursorLastLine حرکت به ابتدا/انتهای بافر. .TP cursorTop, cursorMiddle, cursorBottom \f[B]H\f[R], \f[B]M\f[R], \f[B]L\f[R] .RS حرکت به اولین خط / خط میانی / آخرین خط روی صفحه. (معادل \f[CR]H\f[R]، \f[CR]M\f[R]، \f[CR]L\f[R] در vi.) .RE .TP raisePage, raisePageBegin, centerLine, centerLineBegin, lowerPage, lowerPageBegin \f[B]z t\f[R], \f[B]z RET\f[R], \f[B]z z\f[R], \f[B]z .\f[R], \f[B]z b\f[R], \f[B]z \-\f[R] .RS اگر \f[CR]n\f[R] مشخص شده باشد، مکان‌نما به خط \f[CR]n\f[R] منتقل می‌شود. سپس: .IP \(bu 2 دستور \f[CR]raisePage\f[R] به سمت پایین پیمایش می‌کند تا مکان‌نما در بالاترین خط صفحه قرار گیرد. (در vi دستور \f[CR]z RET\f[R]، در vim دستور \f[CR]z t\f[R].) .IP \(bu 2 دستور \f[CR]centerLine\f[R] صفحه را جابجا می‌کند تا مکان‌نما در وسط صفحه قرار گیرد. (در vi دستور \f[CR]z .\f[R]، در vim دستور \f[CR]z z\f[R].) .IP \(bu 2 دستور \f[CR]lowerPage\f[R] به سمت بالا پیمایش می‌کند تا مکان‌نما در پایین‌ترین خط صفحه قرار گیرد. (در vi دستور \f[CR]z \-\f[R]، در vim دستور \f[CR]z b\f[R].) حالت‌های دارای پسوند \-Begin همچنین مکان‌نما را مانند کلیدهای اصلی در vi به اولین نویسه غیرفاصله‌ای خط منتقل می‌کنند. .RE .TP nextPageBegin \f[B]z +\f[R] .RS اگر \f[CR]n\f[R] مشخص شده باشد، به صفحه قبل از خط n-ام رفته و صفحه را بالا می‌برد. در غیر این صورت، به اولین خط صفحه بعدی رفته و صفحه را بالا می‌برد. .RE .TP previousPageBegin \f[B]z \(ha\f[R] .RS اگر \f[CR]n\f[R] مشخص شده باشد، به صفحه قبل از خط n-ام رفته و صفحه را پایین می‌آورد. در غیر این صورت، به آخرین خط صفحه قبلی رفته و صفحه را پایین می‌آورد. .RE .TP cursorLeftEdge, cursorMiddleColumn, cursorRightEdge \f[B]g 0\f[R], \f[B]g c\f[R], \f[B]g $\f[R] .RS حرکت به اولین/میانی/آخرین ستون روی صفحه. .RE .TP centerColumn وسط‌چین کردن صفحه حول ستون فعلی. (در w3m کلید \f[CR]Z\f[R].) .TP gotoLineOrStart, gotoLineOrEnd \f[B]g g\f[R], \f[B]G\f[R] .RS اگر \f[CR]n\f[R] مشخص شده باشد، به خط \f[CR]n\f[R] می‌پرد. در غیر این صورت، به خط اول/آخر بافر می‌پرد. .RE .TP gotoColumnOrBegin, gotoColumnOrEnd \f[B]|\f[R] .RS اگر \f[CR]n\f[R] مشخص شده باشد، به ستون \f[CR]n\f[R] در خط فعلی می‌پرد. در غیر این صورت، به ستون اول/آخر می‌پرد. .RE .TP mark \f[B]m\f[R] .RS منتظر دریافت نویسه \f[CR]x\f[R] می‌ماند و سپس نشانه‌ای با شناسه \f[CR]x\f[R] تنظیم می‌کند. .RE .TP gotoMark, gotoMarkY \f[B]\(ga\f[R], \f[B]\(cq\f[R] .RS منتظر یک نویسه \f[CR]x\f[R] می‌ماند و سپس به نشانه با شناسه \f[CR]x\f[R] (در صورت وجود در صفحه) می‌پرد. دستور \f[CR]gotoMark\f[R] هر دو موقعیت افقی (X) و عمودی (Y) را تنظیم می‌کند؛ دستور gotoMarkY فقط موقعیت Y را تنظیم می‌کند. .RE .TP markURL \f[B]:\f[R] .RS تبدیل رشته‌های شبیه به URL به پیوند در صفحه فعلی. .RE .TP saveLink \f[B]s RET\f[R] .RS ذخیره منبع منتهی به URL اشاره‌شده توسط مکان‌نما روی دیسک. .RE .TP saveSource \f[B]s S\f[R] .RS ذخیره سورس‌کد بافر فعلی روی دیسک. .RE .TP saveImage \f[B]s I\f[R] .RS ذخیره تصویر فعلی زیر مکان‌نما. .RE .TP toggleImages \f[B]M\-i\f[R] .RS تغییر وضعیت نمایش تصاویر در بافر فعلی. .RE .TP toggleScripting \f[B]M\-j\f[R] .RS بارگذاری مجدد بافر فعلی با فعال/غیرفعال کردن اسکریپت‌نویسی. .RE .TP toggleCookie \f[B]M\-k\f[R] .RS بارگذاری مجدد بافر فعلی با فعال/غیرفعال کردن کوکی‌ها. .RE .TP cursorSearchWordForward \f[B]C\-a\f[R], \f[B]*\f[R] .RS جستجوی کلمه فعلی زیر مکان‌نما به سمت جلو. .RE .TP cursorSearchWordBackward \f[B]#\f[R] .RS جستجوی کلمه فعلی زیر مکان‌نما به سمت عقب. .RE .SS "عملیات‌های ویرایش خط (Line\-editing actions)" .TP line.submit \f[B]RET\f[R], \f[B]LF\f[R] .RS ارسال متن واردشده فعلی. .RE .TP line.cancel \f[B]C\-g\f[R] .RS بستن ویرایشگر و لغو عملیاتی که ویرایشگر برای آن باز شده بود. .RE .TP line.copyOrCancel \f[B]C\-c\f[R] .RS در صورت وجود متن انتخاب‌شده، آن را کپی می‌کند. در غیر این صورت، مانند \f[CR]line.cancel\f[R] عمل می‌کند. .RE .TP line.backspace, line.delete \f[B]C\-h\f[R], \f[B]C\-d\f[R] .RS حذف نویسه قبل (backspace) یا بعد (delete) از مکان‌نما. .RE .TP line.clear, line.kill \f[B]C\-u\f[R]/\f[B]C\-x C\-?\f[R], \f[B]C\-k\f[R] .RS حذف متن قبل (clear) یا بعد (kill) از مکان‌نما. .RE .TP line.openEditor \f[B]C\-x C\-e\f[R] .RS باز کردن محتویات ویرایشگر خط در $EDITOR. .RE .TP line.clearWord, line.killWord \f[B]C\-w\f[R], \f[B]M\-d\f[R] .RS حذف کلمه قبل (clear) یا بعد (kill) از مکان‌نما. .RE .TP line.backward, line.forward \f[B]C\-b\f[R], \f[B]C\-f\f[R] .RS حرکت مکان‌نما به اندازه یک نویسه به عقب/جلو. .RE .TP line.prevWord, line.nextWord \f[B]M\-b\f[R], \f[B]M\-f\f[R] .RS حرکت مکان‌نما به کلمه قبلی/بعدی. .RE .TP line.begin, line.end \f[B]C\-a\f[R]/\f[B]Home\f[R], \f[B]C\-e\f[R]/\f[B]End\f[R] .RS حرکت مکان‌نما به ابتدا/انتهای خط. .RE .TP line.escape \f[B]C\-v\f[R] .RS نادیده گرفتن کلیدهای میانبر برای نویسه بعدی. .RE .TP line.prevHist, line.nextHist \f[B]C\-p\f[R], \f[B]C\-n\f[R] .RS پرش به مدخل قبلی/بعدی در تاریخچه. .RE .PP نکته: برای تسهیل ویرایش URL، ویرایشگر خط تعریف متفاوتی از کلمه نسبت به صفحه‌بند دارد. برای ویرایشگر خط، یک کلمه یا دنباله‌ای از نویسه‌های حرفی‌عددی است یا هر تک‌نویسه غیر حرفی‌عددی. (این بدان معناست که برای مثال \f[CR]https://\f[R] از چهار کلمه تشکیل شده است: \f[CR]https\f[R]، \f[CR]:\f[R]، \f[CR]/\f[R] و \f[CR]/\f[R].) .IP .EX # کلید Control+A مکان‌نما را به ابتدای خط منتقل می‌کند. \(aqC\-a\(aq = \(aqline.begin\(aq # کلید Escape+D تمام محتوای بعد از مکان‌نما را تا رسیدن به نویسه فاصله‌انداز حذف می‌کند. \(aqM\-d\(aq = \(aqline.killWord\(aq .EE .SS "ضمیمه (Appendix)" .SS "پردازش عبارات باقاعده (Regex handling)" عبارات باقاعده در حال حاضر با استفاده از کتابخانه libregexp از QuickJS پردازش می‌شوند. این بدان معناست که تمام عبارات باقاعده مانند JavaScript کار می‌کنند. .PP دو حالت مختلف برای پیش‌پردازش عبارات باقاعده در Chawan وجود دارد: حالت \(lqجستجو\(rq (search) و حالت \(lqتطبیق\(rq (match). حالت تطبیق برای پیکربندی‌ها استفاده می‌شود (یعنی در تمام مقادیری که در این سند به عنوان \(lqregex\(rq توصیف شده‌اند). حالت جستجو برای قابلیت جستجوی درون صفحه استفاده می‌شود (با استفاده از searchForward/isearchForward و غیره). .SS "حالت تطبیق (Match mode)" عبارات باقاعده به عنوان تطبیق دقیق در نظر گرفته می‌شوند، مگر اینکه با علامت توان (\(ha) شروع شوند یا با علامت دلار بدون گریز ($) پایان یابند. .PP به عبارت دیگر، تبدیلات زیر رخ می‌دهد: .IP .EX \(haabcd \-> \(haabcd (بدون تغییر، فقط ابتدا تطبیق داده می‌شود) efgh$ \-> efgh$ (بدون تغییر، فقط انتها تطبیق داده می‌شود) \(haijkl$ \-> \(haijkl$ (بدون تغییر، کل خط تطبیق داده می‌شود) mnop \-> \(hamnop$ (تغییر به تطبیق دقیق، کل خط تطبیق داده می‌شود) .EE .PP حالت match mode راهی برای فعال/غیرفعال کردن پرچم‌های regex جاوااسکریپت مانند \f[CR]i\f[R] ندارد. .SS "حالت جستجو (Search mode)" برای جستجوی درون صفحه، تبدیلات فوق اعمال نمی‌شوند؛ جستجوی \f[CR]/abcd\f[R] به دنبال رشته \f[CR]abcd\f[R] درون تمام خطوط می‌گردد. .PP حالت جستجو همچنین دارای برخی تبدیلات تسهیل‌کننده دیگر است (این موارد در حالت match mode کار نمی‌کنند): .IP \(bu 2 رشته \f[CR]\(rsc\f[R] (بک‌اسلش + حرف c کوچک) درون regex حالت جستجو، تطبیق غیرحساس به بزرگی و کوچکی حروف را فعال می‌کند. .IP \(bu 2 برعکس، \f[CR]\(rsC\f[R] (بک‌اسلش + حرف C بزرگ) تطبیق غیرحساس به بزرگی و کوچکی حروف را غیرفعال می‌کند. (زمانی مفید است که گزینه \f[CR]ignore\-case\f[R] را روی true تنظیم کرده باشید که حالت پیش‌فرض است.) .IP \(bu 2 توالی‌های \f[CR]\(rs<\f[R] و \f[CR]\(rs>\f[R] به \f[CR]\(rsb\f[R] تبدیل می‌شوند (مانند vi، grep و غیره). .PP مانند حالت تطبیق، حالت جستجو روی تک‌تک خطوط عمل می‌کند. این بدان معناست که الگوهای جستجو با متنی که در چندین خط شکسته شده است (wrapped) تطبیق داده نمی‌شوند. .SS "پردازش مسیرها (Path handling)" قوانین پردازش مسیر مشابه نحوه برخورد پوسته با رشته‌ها است. .IP \(bu 2 از بسط مدک (tilde\-expansion) برای تعیین دایرکتوری خانگی کاربر استفاده می‌شود؛ بنابراین مثلاً \f[CR]\(ti/whatever\f[R] کار می‌کند. .IP \(bu 2 متغیرهای محیطی را می‌توان مانند \f[CR]$ENV_VAR\f[R] استفاده کرد. .IP \(bu 2 مسیرهای نسبی، نسبت به دایرکتوری پیکربندی Chawan هستند (یعنی \f[CR]$CHA_DIR\f[R]). .PP برخی از متغیرهای محیطی نیز توسط Chawan صادر (export) می‌شوند: .IP \(bu 2 \f[CR]$CHA_BIN_DIR\f[R]: دایرکتوری که فایل اجرایی \f[CR]cha\f[R] در آن قرار دارد. پیوندهای نمادین برای تعیین این مسیر به طور خودکار حل می‌شوند. .IP \(bu 2 \f[CR]$CHA_LIBEXEC_DIR\f[R]: دایرکتوری تمام فایل‌های اجرایی که Chawan برای عملکرد خود استفاده می‌کند. به طور پیش‌فرض این مقدار \f[CR]$CHA_BIN_DIR/../libexec/chawan\f[R] است. .IP \(bu 2 \f[CR]$CHA_DIR\f[R]: دایرکتوری پیکربندی. (این مورد توسط کاربر نیز قابل تنظیم است؛ برای جزئیات بخش بالای سند را ببینید.) .IP \(bu 2 \f[CR]$CHA_DATA_DIR\f[R]: اگر فایل پیکربندی از دایرکتوری‌های پایه XDG استفاده کند، این مقدار برابر با \f[CR]${XDG_DATA_HOME:\-$HOME/.local/share}/chawan\f[R] است. در غیر این صورت، همانند \f[CR]$CHA_DIR\f[R] خواهد بود. .RS 2 .IP \(bu 2 استثنا: اگر \f[CR]$CHA_DIR\f[R] پیش از فراخوانی \f[CR]cha\f[R] تنظیم شده باشد، \f[CR]$CHA_DATA_DIR\f[R] نیز خوانده می‌شود. این برای تضمین کارکرد فراخوانی‌های تودرتو در پیکربندی‌های دارای دایرکتوری‌های پایه XDG است. .RE .SS "انواع کلمه (Word types)" دستورهای صفحه‌بند مبتنی بر کلمه می‌توانند بر اساس تعاریف مختلفی از کلمات کار کنند. در حال حاضر این تعاریف عبارتند از: .IP \(bu 2 کلمات w3m .IP \(bu 2 کلمات vi .IP \(bu 2 کلمات بزرگ (Big words) .SS "کلمه w3m" یک کلمه w3m دنباله‌ای از نویسه‌های حرفی‌عددی است. با نمادها دقیقاً مانند نویسه‌های فاصله (whitespace) برخورد می‌شود. .SS "کلمه vi" یک کلمه vi دنباله‌ای از نویسه‌ها در یک دسته نویسه یکسان است. در حال حاضر دسته‌های نویسه عبارتند از: نویسه‌های حرفی‌عددی، نمادها، حروف han، هیراگانا، کاتاکانا و هانگول. .PP کلمات vi ممکن است با فاصله از هم جدا شوند؛ با این حال، کلمات vi متعلق به دسته‌های جداگانه نیازی به جداسازی با فاصله ندارند. برای مثال دنباله نویسه زیر شامل دو کلمه است: .IP .EX hello[]+{}\(at\(ga! .EE .SS "کلمه بزرگ (Big word)" یک کلمه بزرگ دنباله‌ای از نویسه‌های غیرفاصله‌ای است. .PP این نوع در واقع همانند یک کلمه w3m است، اما نمادها به عنوان غیرفاصله در نظر گرفته می‌شوند. .SH "همچنین ببینید (SEE ALSO)" \f[B]cha\f[R](1), \f[B]cha\-api\f[R](7)