* Farsi/Persian Translation of Emacs Tutorial -- Ready for Inclusion in the Next Emacs
@ 2023-04-24 0:12 محسن بنان
2023-04-24 2:32 ` Eli Zaretskii
0 siblings, 1 reply; 7+ messages in thread
From: محسن بنان @ 2023-04-24 0:12 UTC (permalink / raw)
To: emacs-devel
Dear Colleagues,
I have translated the Emacs tutorial to Farsi/Persian.
The translated file is at:
https://github.com/bx-blee/tutorials/blob/main/emacs/TUTORIAL.fa
It includes various bidi markers.
Because of that, it would be great if Eli were to
take care of adding it to the git tree. Thanks in advance.
I have tested the inclusion in my own 29 branch
and in the process of doing so, I notices the
following:
------
Fix typo in lisp/language/misc-lang.el s/ZWMJ/ZWNJ/
Suggestions for lisp/language/misc-lang.el
In the first line of doc string spell out Zero Width Non-joiner
Position the Arabic comment box properly – not on top of coding system
Question: why are Arabic and Persian in Misc? Is it because they do not have a tutorial?
------
My own build involved addition of persian.el
https://github.com/bx-blee/tutorials/blob/main/emacs/persian.el
and addition of a line to loadup.el.
These are all mentioned in the readme at:
https://github.com/bx-blee/tutorials/blob/main/emacs/README.org
I have already received my $1 and the copyright
paper work is already in place.
I'll be happy to build and verify after the git push.
Thanks and regards,
---
Mohsen BANAN --- http://mohsen.1.banan.byname.net
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Farsi/Persian Translation of Emacs Tutorial -- Ready for Inclusion in the Next Emacs
2023-04-24 0:12 Farsi/Persian Translation of Emacs Tutorial -- Ready for Inclusion in the Next Emacs محسن بنان
@ 2023-04-24 2:32 ` Eli Zaretskii
2023-04-24 4:58 ` Mohsen BANAN
0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2023-04-24 2:32 UTC (permalink / raw)
To: محسن بنان; +Cc: emacs-devel
> From: محسن بنان <emacs@mohsen.1.banan.byname.net>
> Date: Sun, 23 Apr 2023 17:12:22 -0700
>
>
> Dear Colleagues,
>
> I have translated the Emacs tutorial to Farsi/Persian.
>
> The translated file is at:
> https://github.com/bx-blee/tutorials/blob/main/emacs/TUTORIAL.fa
>
> It includes various bidi markers.
>
> Because of that, it would be great if Eli were to
> take care of adding it to the git tree. Thanks in advance.
>
> I have tested the inclusion in my own 29 branch
> and in the process of doing so, I notices the
> following:
>
> ------
> Fix typo in lisp/language/misc-lang.el s/ZWMJ/ZWNJ/
> Suggestions for lisp/language/misc-lang.el
> In the first line of doc string spell out Zero Width Non-joiner
> Position the Arabic comment box properly – not on top of coding system
> Question: why are Arabic and Persian in Misc? Is it because they do not have a tutorial?
> ------
>
> My own build involved addition of persian.el
> https://github.com/bx-blee/tutorials/blob/main/emacs/persian.el
> and addition of a line to loadup.el.
>
> These are all mentioned in the readme at:
> https://github.com/bx-blee/tutorials/blob/main/emacs/README.org
>
> I have already received my $1 and the copyright
> paper work is already in place.
>
> I'll be happy to build and verify after the git push.
Thanks. Could you please submit the changes as patches for the
emacs-29 branch of the Emacs Git repository? The tutorial file is
new, so you could just send it as a separate attachment, but the rest
will be more convenient to install if you submit patches in the form
of "git format-patch" against the emacs-29 branch.
As for your question about misc-lang: there's no particular reason,
just that we didn't want to have too small files with one or two
language-environments in them. The name of the language files are not
important, since they all are preloaded into Emacs.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Farsi/Persian Translation of Emacs Tutorial -- Ready for Inclusion in the Next Emacs
2023-04-24 2:32 ` Eli Zaretskii
@ 2023-04-24 4:58 ` Mohsen BANAN
2023-04-25 9:29 ` Eli Zaretskii
0 siblings, 1 reply; 7+ messages in thread
From: Mohsen BANAN @ 2023-04-24 4:58 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 2751 bytes --]
Attached are three files:
1) TUTORIAL.fa --- NEW FILE
which goes in etc/tutorials/TUTORIAL.fa
2) persian.el --- NEW FILE
which goes in lisp/language/persian.el
3) 0001-Added-persian.el-to-loadup.el-and-minor-fixes-in-lis.patch
patches to lisp/loadup.el
which adds language/persian.el
patches to language/misc-lang.el
which are purely comment oriented.
This is how I did it for myself.
If you want to follow the same pattern, it is best
to take the persian part out of misc-lang.el and
perhaps create a separate file for arabic.
I leave the arrangement in your capable hands ...
From my side, TUTORIAL.fa is really the main piece.
Thanks and regards,
...Mohsen
Eli Zaretskii <eliz@gnu.org> writes:
>> From: محسن بنان <emacs@mohsen.1.banan.byname.net>
>> Date: Sun, 23 Apr 2023 17:12:22 -0700
>>
>>
>> Dear Colleagues,
>>
>> I have translated the Emacs tutorial to Farsi/Persian.
>>
>> The translated file is at:
>> https://github.com/bx-blee/tutorials/blob/main/emacs/TUTORIAL.fa
>>
>> It includes various bidi markers.
>>
>> Because of that, it would be great if Eli were to
>> take care of adding it to the git tree. Thanks in advance.
>>
>> I have tested the inclusion in my own 29 branch
>> and in the process of doing so, I notices the
>> following:
>>
>> ------
>> Fix typo in lisp/language/misc-lang.el s/ZWMJ/ZWNJ/
>> Suggestions for lisp/language/misc-lang.el
>> In the first line of doc string spell out Zero Width Non-joiner
>> Position the Arabic comment box properly – not on top of coding system
>> Question: why are Arabic and Persian in Misc? Is it because they do not have a tutorial?
>> ------
>>
>> My own build involved addition of persian.el
>> https://github.com/bx-blee/tutorials/blob/main/emacs/persian.el
>> and addition of a line to loadup.el.
>>
>> These are all mentioned in the readme at:
>> https://github.com/bx-blee/tutorials/blob/main/emacs/README.org
>>
>> I have already received my $1 and the copyright
>> paper work is already in place.
>>
>> I'll be happy to build and verify after the git push.
>
> Thanks. Could you please submit the changes as patches for the
> emacs-29 branch of the Emacs Git repository? The tutorial file is
> new, so you could just send it as a separate attachment, but the rest
> will be more convenient to install if you submit patches in the form
> of "git format-patch" against the emacs-29 branch.
>
> As for your question about misc-lang: there's no particular reason,
> just that we didn't want to have too small files with one or two
> language-environments in them. The name of the language files are not
> important, since they all are preloaded into Emacs.
[-- Attachment #2: TUTORIAL.fa --]
[-- Type: application/octet-stream, Size: 79461 bytes --]
آموزش Emacs «ایمکس». برای شرایط کپی به پایان مراجعه کنید.
فرمانهای Emacs عموماً شامل کلید CONTROL (گاهی اوقات با برچسب CTRL)
یا کلید META (معمولا با برچسب ALT) هستند. به جای هر بار بطور کامل نوشتن،
از خلاصه زیر استفاده خواهیم کرد:
C-<chr> به معنای نگه داشتن کلید CONTROL در حین تایپ کاراکترِ <chr> است.
بنابراین، C-f خواهد بود: کلید CONTROL را نگه دارید و f را تایپ کنید.
M-<chr> یعنی کلید META یا ALT را هنگام تایپ حرفِ <chr> پایین نگه دارید.
اگر کلید META، یا ALT وجود ندارد، به جای آن کلید ESC را فشار
داده و رها کنید، سپس <حرف> را تایپ کنید.
برای کلید ESC می نویسیم <ESC>.
نکته مهم: برای پایان دادن به جلسه Emacs، دو حرف C-x C-c را تایپ کنید.
برای خروج از یک فرمانِ ناکامل، C-g را تایپ کنید.
برای توقف آموزش، C-x k و سپس در پاسخ به نشانگر <Return> را تایپ کنید.
کاراکترهای ">>" در حاشیه سمت راست فرمانهایی را برای شمامشخص می کند. برای مثال:
[وسط صفحه برای اهداف آموزشی خالی مانده است. ادامه متن در زیر]
>> اکنون C-v را تایپ کنید (نمایش صفحه بعدی) تا یک صفحه کامل به پایین بروید.
(این کار را با نگه داشتن کلید CONTROL و فشار کلید v انجام دهید).
از این پس، لطفاً هر زمان که به انتهای صفحه رسیدید، این کار را انجام دهید.
توجه داشته باشید که وقتی یک صفحه کامل را اسکرول می کنید، دو خط همپوشانی دارند؛
این مقداری تداوم را فراهم می کند تا بتوانید به خواندن متن ادامه دهید.
این یک کپی از متن آموزشی Emacs است که کمی برای شما شخصی سازی شده است.
بعداً به شما آموزش خواهیم داد که فرمانهای مختلفی را برای تغییر این متن استفاده
کنید. اگر قبل از اینکه به شماگفته باشیم، این متن را تغییر داده اید،
نگران نباشید. این کار «ویرایش» نامیده می شود و Emacs برای همین است.
اولین چیزی که باید بدانید این است که چگونه از یک مکان به اطراف حرکت کنید.
شما از قبل می دانید که با C-v چگونه یک صفحه به جلو حرکت میکند.
برای حرکت یک صفحه به سمت عقب، M-v را تایپ کنید (کلید META را نگه دارید
و v را تایپ کنید، یا اگر کلید META، یا ALT را ندارید، <ESC>vرا تایپ کنید).
>> چند بار M-v و سپس C-v را تایپ و امتحان کنید.
شما می توانید این متن را با روش های دیگری که میدانید اسکرول کنید.
* خلاصه
---------
فرمانهای زیر برای مشاهده کل صفحه نمایش مفید هستند:
C-v یک صفحه نمایش به جلو حرکت کنید.
M-v یک صفحه نمایش به عقب حرکت کنید.
C-l پاک کردن صفحه و نمایش مجدد تمام متن،
جابجایی مکان نما و متن به مرکز صفحه نمایش
(این CONTROL-L است، نه CONTROL-1.)
>> مکاننما را پیدا کنید و توجه داشته باشید که چه متنی در نزدیکی آن است.
سپس C-l را تایپ کنید. دوباره مکان نما را پیدا کنید وتوجه کنید که هنوز
نزدیک همان متن است. اما مکان نما، اکنون در مرکز صفحه است.
اگر دوباره C-l را فشار دهید، این قطعه متن به بالای صفحه منتقل می شود.
مجددا C-l را فشار دهید، صفحه نمایش دوباره به پایین حرکت می کند.
اگر ترمینال شما کلیدهای PageUp و PageDn را دارد، میتوانید برای جابهجایی یک
صفحه کامل از آنها استفاده کنید.
اما در صورت استفاده از C-v و M-v شما می توانید کارآمدتر ویرایش کنید.
* کنترل مکان نما
----------------------
حرکت از یک صفحه نمایش به صفحه نمایش دیگر مفید است، اما چگونه
به مکان خاصی در متنِ روی صفحه حرکت کنید؟
چندین راه وجود دارد که می توانید این کار را انجام دهید. می توانید از
کلیدهای جهت دار استفاده کنید، اما کارآمدتر است که دستان خود را در وضعیت
استاندارد نگه دارید. از فرمانهایِ C-p، C-b، C-f و C-n استفاده کنید. این فرمان ها
معادل چهار کلید جهت دار هستند، مانند:
سطر قبل، C-p
:
:
به عقب، C-b .... موقعیت مکان نما فعلی .... به جلو، C-f
:
:
خط بعدی، C-n
>> با استفاده از C-n یا C-p مکان نما را به خط وسط نمودار بالا حرکت دهید.
سپس C-l را تایپ کنید تا کل نمودار را در مرکز صفحه نمایش ببینید.
به راحتی می توانید این حروف را با کلماتی که مخفف آنها هستند به خاطر بسپارید:
Previous) p) برای قبلی، Next) n) برای بعدی, Backward) b) برای عقب و
Forward) f) برای جلو. شما همیشه از این فرمانهایِ اصلی تعیین موقعیت مکان نما
استفاده خواهید کرد.
>> برای پایین آوردن مکان نما به این خط، چند C-n انجام دهید.
>> حرکت به جلو، روی خط با C-f و سپس به بالا با C-p.
ببینید C-p وقتی مکان نما در وسط خط قرار دارد چه می کند.
هر خط از متن با یک کاراکترِ Newline به پایان می رسد، که
آن را از خط زیر جدا میکند. (به طور معمول،یک فایل در پایان دارای
یک Newline خواهد بود، اما Emacs به آن نیاز ندارد.)
>> هنگامی که نشانگر در ابتدای خط است، از C-b استفاده کنید. باید به انتهای
خط قبلی حرکت کند. به این دلیل است که این حرکت از سراسر Newline میگذرد.
فرمان C-f می تواند مانند C-b روی خط جدید حرکت کند.
>> چند C-b دیگر انجام دهید، بنابراین می توانید نشانگر را در مکان مورد
نظر قرار دهید. سپس C-f را انجام دهید تا به انتهای خط برگردید.
سپس یک C-f دیگر انجام دهید تا به خط زیر بروید.
وقتی از بالا یا پایین صفحه عبور می کنید، متن فراتر می رود
لبه روی صفحه نمایش جابجا می شود. به این "پیمایش یا اسکرول" می گویند. این
Emacs را قادر می سازد تا مکان نما را به مکان مشخص شده در متن منتقل کند
بدون اینکه آن را از صفحه نمایش جدا کنید.
>> سعی کنید مکان نما را از پایین صفحه با C-n حرکت دهید و
ببیند چه اتفاقی می افتد.
اگر حرکت بر اساس کاراکترها خیلی کند است، می توانید با کلمات حرکت کنید. M-f
(META-f) یک کلمه را جلو می برد و M-b یک کلمه را به عقب می برد.
>> چند M-f و M-b تایپ کنید.
وقتی در وسط یک کلمه هستید، M-f به انتهای کلمه می رود.
هنگامی که در فضای خالی بین کلمات قرار دارید، M-f به انتهای کلمه بعدی منتقل
می شود. M-b نیز در جهت مخالف کار می کند.
>> فرمان M-f و M-b را چند بار با C-f و C-b در هم آمیخته تایپ کنید،
تا عمل M-f و M-b را از انواع مکان های درون و بین کلمات مختلف مشاهده کنید.
به موازات بین C-f و C-b از یک طرف و M-f و M-b از طرف دیگر توجه کنید.
عملیات مربوط به واحدهای تعریف شده توسط زبان (کلمات، جملات، پاراگراف ها)
اغلب با کاراکترهای متا انجام می شود،
در حالی که کاراکترهای Control بر روی واحدهای اصلی، مستقل از آنچه در حال
ویرایش هستید (حروف، خطوط و غیره) عمل می کنند.
این توازی بین خطوط و جملات اعمال می شود: C-a و C-e حرکت به
ابتدا یا انتهای یک خط، و M-a و M-e به ابتدا یا پایان یک جمله حرکت می کنند.
>>دو C-a، و سپس دو C-e را امتحان کنید.
چند M-a و سپس چند M-e را امتحان کنید.
ببینید چگونه C-a های تکراری هیچ کاری انجام نمی دهند، اما M-a های تکراری به
حرکت خود ادامه می دهند. اگرچه اینها کاملاً مشابه نیستند، اما هر یک طبیعی
به نظر می رسد.
به مکانِ مکان نما در متن "نقطه" نیز می گویند.
به عبارت دیگر، مکان نما روی صفحه نشان می دهد که نقطه در کجای متن قرار دارد.
در اینجا خلاصه ای از عملیات ساده حرکت مکان نما، از جمله
فرمانهایِ حرکت کلمه و جمله نشان داده می شود:
C-f یک کاراکتر را به جلو حرکت دهید
C-b یک کاراکتر را به عقب حرکت دهید
M-f یک کلمه را به جلو حرکت دهید
M-b یک کلمه را به عقب حرکت دهید
C-n به خط بعدی بروید
C-p به خط قبلی بروید
C-a حرکت به ابتدای خط
C-e حرکت به انتهای خط
M-a به ابتدای جمله برگردید
M-e حرکت به جلو تا پایان جمله
>> همه این فرمانها را اکنون چند بار برای تمرین امتحان کنید.
این فرمانها بیشترین استفاده را دارند.
دو فرمان مهم دیگر حرکت مکان نما عبارتند از M-< : (META کمتر از)،
که به ابتدای کل متن حرکت می کند و M-> (META بزرگتر از)،
که به انتهای کل متن می رود.
در اکثر ترمینالها، ">" بالای کاما است، بنابراین باید با استفاده از کلید
shift آن را تایپ کنید.
در این ترمینالها باید از کلید shift برای تایپ >-M نیز استفاده کنید.
بدون کلید shift، شما کاما، M را تایپ می کنید.
>> اکنون >-M را امتحان کنید تا به ابتدای آموزش بروید.
سپس از C-v مکرراً برای بازگشت به اینجا استفاده کنید.
>> اکنون <-M را امتحان کنید تا به انتهای آموزش بروید.
سپس از M-v مکرراً برای بازگشت به اینجا استفاده کنید.
همچنین می توانید مکان نما را با کلیدهای جهت دار حرکت دهید، اگر ترمینال شما
آن را داشته باشد. ما استفاده از C-b، C-f، C-n و C-p را به سه دلیل توصیه میکنیم.
اول، آنها بر روی انواع ترمینالها کار می کنند.
دوم, هنگامی که مهارت شما در استفاده از Emacs بیشتر شود، متوجه خواهید شد که
تایپ با کنترل کاراکترها، سریعتر از تایپ کلیدهای جهت دار است.
(زیرا احتیاج نیست که شما دستان خود را از موقعیت تایپ لمسی دور کنید).
سوم، وقتی شما عادت به استفاده از فرمانهایِ کاراکتر Control را دارید، می توانید
به راحتی یاد بگیرید که از دیگر فرمانهایِ پیشرفته حرکت مکان نما نیز استفاده کنید.
اکثر فرمانهایِ Emacs یک آرگومان عددی را می پذیرند. برای اکثر فرمانها، این
به عنوان یک شمارش تکرار عمل می کند.
نحویِ تحویل تعداد تکرار، با تایپ C-u و سپس اعداد قبل از تایپ فرمان است. اگر
شما یک کلید META (یا ALT) دارید، راه جایگزینی دیگری برای وارد کردن
آرگومان عددی وجود دارد: ارقام را در حالی که کلید META را نگه داشتهاید
تایپ کنید. ما توصیه می کنیم استفاده از C-u را یاد بگیرید زیرا در هر ترمینال
کار می کند. آرگومان عددی "آرگومان پیشوند" نیز نامیده می شود.
زیرا آرگومان را قبل از فرمانی که روی آن اعمال می شود تایپ می کنید.
به عنوان مثال، C-u 8 C-f هشت کاراکتر به جلو حرکت می کند.
>> سعی کنید فقط با یک فرمان، C-n یا C-p با آرگومان عددی برای حرکت مکان نما
از خط نزدیک به این خط استفاده کنید.
اکثر فرمانها از آرگومان عددی به عنوان تعداد تکرار استفاده می کنند،
اما برخی فرمانها از آن به روش دیگری استفاده می کنند.
چندین فرمان که از آن به عنوان یک علامت تعغیر استفاده میشود.
(اما هیچ کدام از فرمانهایِی که تا به حال آموخته اید نیستند.)
وجود یک آرگومان پیشوند، صرف نظر از مقدار آن، فرمان متفاوتی را انجام می دهد.
C-v و M-v استثناهای دیگری هستند. با تحویل آرگومان،
آنها متن را با این تعداد خط به بالا یا پایین اسکرول می کنند نه با یک
صفحه نمایش. برای مثال، C-u 8 C-v هشت خط پیمایش می کند.
>> اکنون C-u 8 C-v را تایپ کنید.
این فرمان باید متن را 8 خط به بالا اسکرول کند. اگر مایل باشید
دوباره به پایین برگردید، می توانید یک آرگومان به M-v بدهید.
اگر از یک سیستم نمایشِ گرافیکی مانند X یا MS-Windows استفاده می کنید،
باید یک ناحیه مستطیل شکل بلند به نام نوار پیمایش در یک طرف پنجره Emacs
وجود داشته باشد. با کلیک کردن بر روی نوار، متن را اسکرول کنید.
اگر ماوس شما دگمه چرخ دارد، می توانید از آن برای اسکرول نیز استفاده کنید.
* اگر EMACS پاسخ نمی دهد.
---------------------------
اگر Emacs به فرمانهایِ شما پاسخ نمی دهد، می توانید با خیال راحت با
تایپ کردن C-g آن را متوقف کنید. می توانید از C-g برای متوقف کردن فرمانی که
انجامش طولانی شده است استفاده کنید.
همچنین میتوانید از C-g برای حذف یک آرگومان عددی یا ابتدای فرمانی که
نمی خواهید آن را تمام کنید استفاده کنید.
>> با عمل C-u 100 یک آرگومان عددی 100 بسازید، سپس C-g وبعد از آن
C-f را تایپ کنید. بااین فرمانها فقط یک حرف به جلو حرکت می کنید، زیرا شما
آرگومان را با C-g لغو کرده اید.
اگر یک <ESC> را اشتباه تایپ کرده اید، می توانید با یک C-g از شر آن خلاص شوید.
* فرمانهایِ غیر فعال
-------------------
برخی از فرمانهایِ Emacs "غیرفعال" هستند تا کاربران مبتدی نتوانند
از آنها به طور تصادفی استفاده کنند.
اگر یکی از فرمانهایِ غیرفعال را تایپ کنید، Emacs پیامی را نمایش می دهد
که فرمان چیست و از شما می پرسد که آیامایل به اجرای آن هستید؟
اگر واقعاً می خواهید فرمان را اجرا کنید، <SPC> (نوار فاصله) را در پاسخ به
سوال تایپ کنید. به طور معمول، اگر نمی خواهید آن را اجرا کنید، به سوال با
"n" پاسخ دهید.
>> عمل C-x C-l (که یک فرمان غیرفعال است) را انجام دهید،
سپس n را در پاسخ به سوال تایپ کنید.
* پنجره ها
----------
با Emacs می تواند چندین "پنجره" داشته باشد که هر کدام متن خاص خود را نشان
می دهد. ما بعداً در مورد نحوه استفاده از چندین پنجره توضیح خواهیم داد. در
حال حاضر می خواهیم برای نحوه حذف پنجره های اضافی و بازگشت به حالت اولیه
ویرایش یک پنجره توضیح دهیم. این عمل آسان است:
C-x 1 یک پنجره (یعنی تمام پنجره های دیگر را حذف کنید).
فرمان C-x 1 پنجره ای تمام صفحه، که حاوی مکان نما است را باز می کند.
این فرمان تمام پنجره های دیگر را حذف میکند.
>> مکان نما را به این خط ببرید و C-u 0 C-l را تایپ کنید.
>> C-h k C-f را تایپ کنید.
ببینید چگونه این پنجره کوچک می شود، در حالی که یک پنجره جدید برای نمایش
اطلا عات در فرمان C-f ظاهر می شود.
>> با تایپ C-x 1 پنجره فهرست اسناد ناپدید می شود.
یک سری کامل از فرمانها با CONTROL-x شروع می شوند. بسیاری از
آنها با ویندوز، فایل ها، بافرها و موارد وابسته ارتباط دارند.
این فرمانها دو، سه یا چهار کاراکتر هستند.
* درج و حذف
------------
اگر می خواهید متن را وارد کنید، فقط متن را تایپ کنید. حروف معمولی،
مانند A، 7، *، و غیره، هنگام تایپ آنها نوشته می شوند. برای انجام نوشتن
خط جدید، <Return> را تایپ کنید (این کلید روی صفحه کلید است
که گاهی اوقات با عنوان "Enter" شناخته می شود).
برای حذف کاراکترِ قبل از مکان نمای فعلی ، <DEL> را تایپ کنید. این کلید روی
صفحه کلید است که معمولاً با برچسب "Backspace"است −− همان که معمولاً در خارج
از Emacs نیز برای حذف آخرین حرفِ نوشته شده استفاده می کنید.
همچنین ممکن است کلید دیگری روی صفحه کلید شما با عنوان <Delete> وجود داشته
باشد، اما این چیزی نیست که ما در Emacs به آن <DEL> می گوییم.
>> اکنون این کار را انجام دهید - چند کاراکتر را تایپ کنید، سپس آنها را حذف
کنید. چند بار <DEL> را تایپ کنید. نگران این فایل نباشید در حال تغییر؛
شما آموزش اصلی را تغییر نمی دهید. این کپی شخصی شما از آن است.
وقتی نوشتن یک خط در متن بیش از حد طولانی می شود، خط بر روی سطر دوم صفحه
"ادامه" می یابد. اگر از یک صفحه نمایش گرافیکی استفاده می کنید برای نشان
دادن جایی که یک خط ادامه یافته است فلش های منحنی کوچکی در فضاهای باریک در
دو طرف ناحیه متن (حاشیههای چپ و راست ) ظاهر می شوند. اگر از ترمینال متنی
استفاده می کنید، خطِ ادامه یافته با علامت معکوس ('\') در سمت راست ستون
صفحه نمایش نشان داده می شود.
>> به نوشتن متن پس از رسیدن به انتهای خط ادامه دهید.
خواهید دید که یک خطِ ادامه ظاهر می شود.
>> از <DEL > برای حذف متن استفاده کنید تا زمانی که نوشته مجدداً روی یک خط
صفحه قرار گیرد. خط ادامه از بین می رود.
شما می توانید حروف خط جدید را مانند هر حرف دیگری حذف کنید. حذف کاراکتر
Newline بین دو خط آنها را با هم ادغام می کند. اگر خط ترکیبی به دست آمده
بیش از حد طولانی باشد که در آن جا نمی شود، عرض صفحه نمایش، با یک خط ادامه،
نمایش داده می شود.
>> مکان نما را به ابتدای یک خط ببرید و <DEL> را تایپ کنید. این فرمان
آن خط را با خط قبلی ادغام می کند.
>> حالا <Return> را تایپ کنید تا خط جدیدی را که حذف کرده اید دوباره وارد کنید.
کلید <Return> ویژه است، زیرا با فشار دادن آن ممکن است بیش از این کار انجام شود.
فقط یک کاراکتر Newline وارد کنید. بسته به متن اطراف،
ممکن است بعد از کاراکتر Newline فضای خالی را وارد کند، به طوری که وقتی
شما شروع به تایپ کردن در خط جدید می کنید، متن با خط قبلی آن ردیف می شود.
ما به این رفتار (که در آن فشار دادن یک
کلید چیزی بیش از وارد کردن کاراکتر مربوطه انجام می دهد) می گوییم "electric".
>> در اینجا مثالی از الکتریکی بودن <Return> آورده شده است.
<Return> را در انتهای این خط تایپ کنید.
باید ببینید که بعد از درج Newline فاصله ها هم درج می شوند،
به طوری که مکان نمابه جای مناسب حرکت می کند.
به یاد داشته باشید که به اکثر فرمانهایِ Emacs می توان تعداد تکرار، داده شود.
این شامل کاراکترهای متنی نیز است. تکرار درج کاراکتر متنی برای چندین بار.
>> اکنون آن را امتحان کنید - C-u 8 * را برای درج ******** تایپ کنید.
شما اکنون ابتدایی ترین راه را برای تایپ با Emacs و تصحیح خطاها یاد گرفته اید.
شما می توانید کلمات یا خطوط را نیز حذف کنید.
در اینجا خلاصه ای از عملیات حذف آمده است:
<DEL> کاراکتر را درست قبل از مکان نما حذف می کنید.
C−d کاراکتر بعدی، بعد از مکان نما را حذف می کنید.
<M-<DEL کلمه را بلافاصله قبل از مکان نما حذف می کنید.
M-d کلمه بعدی را بعد از مکان نما حذف می کنید.
C-k از موقعیت مکان نما تا انتهای خط را حذف می کنید.
M-k از موقعیت مکان نما تا انتهای جمله را حذف میکنِید.
توجه داشته باشید که <DEL> و C-d در مقابل <M-<DEL و M-d موازاتی را گسترش می دهند
که با C-f و M-f شروع شده است (خوب، <DEL> واقعاً یک کاراکتر کنترلی نیست، اما
بیایید نگران این نباشیم). C-k و M-k مانند C-e و M-e هستند، به نوعی، در آن
خطوط با جملات جفت می شوند.
شما همچنین می توانید یک بخش از متن را با یک روش یکسان حذف کنید . به انتهای
یک قسمت حرکت کنید، و سپس <C-<SPC را تایپ کنید. (<SPC> کلید نوار Space
است.) سپس مکان نما را به انتهای دیگر متنی که قصد دارید حذف کنید، ببرید.
با انجام این کار، Emacs متن بین مکان نما وموقعیتی که با <C-<SPC تایپ کرده اید
را مشخص می کند. در نهایت C-w را تایپ کنید. با این عمل متنِ بین دو موقعیت
را حذف میکنید.
>> مکان نما را در ابتدای پاراگراف قبلی به «ش» حرکت دهید.
>> با تایپ <C-<SPC، در پایین صفحه نمایش Emacs باید یک پیام "Mark set" را
نمایش دهد.
>> در خط دوم ازمتن، مکان نما را به «ی» در "یک"، حرکت دهید.
>> C-w را تایپ کنید. با این کار متنی که از «ش» شروع می شود و درست قبل از
«ی» به پایان می رسد را از بین می برید.
تفاوت بین "کشتن" و "حذف" در همان متن این است که "کشته" را می توان دوباره
درج کرد (در هر موقعیتی)، در حالی که چیزهای "حذف شده" را نمی توانید به این
روش دوباره درج کنید (اما می توانید حذف را لغو کنید - در زیر ببینید.) درج
مجدد متن کشته شده "yanking" نامیده می شود. ( به عنوان عقب نشینی یا عقب
کشیدن متنی که برداشته شده است به آن فکرکن.)
به طور کلی، فرمانهایِی که می توانند متن زیادی را حذف کنند، متن را «میکشند».
(آنها به گونه ای تنظیم شده اند که بتوانید متن را باز گردانند)، در حالی که
فرمانهایِی که فقط یک کاراکتر را حذف می کند، یا فقط خطوط و فاصله های خالی را
حذف می کند، حذف را انجام می دهند (بنابراین نمی توانید آن متن را برگرداند).
<DEL> و C-d در ساده ترین حالت، بدون هیچ آرگومان حذف را انجام می دهند.وقتی
آرگومان به آنها داده می شود درعوض مکشند.
>> مکان نما را به ابتدای خطی که خالی نیست حرکت دهید.
سپس C-k را تایپ کنید تا متن روی آن خط حذف شود.
>> بار دوم C-k را تایپ کنید. خواهید دید که Newline را می کشد که بعد از آن
خط است.
توجه داشته باشید که یک C-k محتویات خط را می کشد و یک C-k ثانوی خود خط را
می کشد و همه خطوط دیگر را به سمت بالا حرکت می دهد. C-kبه طور خاص با یک
آرگومان عددی برخورد می کند: این تعداد خطوط و محتویات آنهارا میکشد. این
صرفا یک تکرار نیست. C-u 2 C-k دو خط و Newline آنها را می کشد. دو بار تایپ
کردن C-k این کار را نمی کند.
میتوانید متن کشتهشده را در همان مکانی که در آن قرار داشت، باز گردانید.
یا در جای دیگری از متنی که در حال ویرایش آن هستید، یا حتی در
یک فایل متفاوت میتوانید یک متن را چندین بار باز گردانید. که
چندین کپی از آن می سازد. با مراجعه به کتابچه راهنمایِ Emacs در موارد "کشتن" و
انحرافِ "برش" و "چسباندن" میتوانید اطلاعات بیشتری کسب کنید.
فرمانِ"yank" ,C-y است. آخرین متن کشته شده را در موقعیت مکان نما فعلی دوباره
درج می کند.
>> آن را امتحان کنید. C-y را تایپ کنید تا متن را به عقب برگردانید.
اگر چندین C-k را پشت سر هم انجام دهید، تمام متن کشته شده ذخیره می شود،
به طوری که یک C-y همه خطوط را به یکباره انحراف می دهد.
>> اکنون این کار را انجام دهید، C-k را چندین بار تایپ کنید.
حال برای بازیابی آن متن کشته شده:
>> C-y را تایپ کنید. سپس مکان نما را چند خط پایین ببرید و دوباره C-y را
تایپ کنید اکنون نحوه کپی کردن متن را مشاهده می کنید.
اگر متنی داشته باشید که می خواهید به عقب برگردید، چه کار می کنید چیز دیگری
می کشید؟ C-y کشتن اخیر را از بین می برد. ولی متن قبلی گم نمی شود می توانید
با استفاده از M-y به آن برگردید فرمان بعد از اینکه C-y را برای دریافت
آخرین kill انجام دادید، تایپ کنید M-y آن متن یاک شده را با kill قبلی
جایگزین می کند. تایپ کردن M-y بارها و بارها کشتارهای قبلی و قبلی را به
ارمغان می آورد. وقتی به متن مورد نظر رسیدید، لازم نیست کاری انجام دهید تا
نگهش دارید. فقط به ویرایش خود ادامه دهید و متن انحرافی را رها کنید.
اگر تعداد M-y به دفعات کافی داشته باشید، به نقطه شروع باز می گردید
(بیشترین کشتن اخیر).
>> یک خط را بکشید، در اطراف حرکت کنید، یک خط دیگر را بکشید.
سپس C-y را انجام دهید تا دومین خط کشته شده را برگردانید.
سپس M-y را انجام دهید تا اولین خط کشته شده جایگزین آن شود.
M-y های بیشتری انجام دهید و ببینید چه چیزی به دست می آورید. به انجام
آنها ادامه دهید تا زمانی که خط کشتن دوم برمی گردد، و سپس چند بار دیگر.
اگر دوست دارید، میتوانید امتحان کنیدو به M-y آرگومانهای مثبت و منفی
بدهید.
* لغو
------
اگر تغییری در متن ایجاد کنید و سپس تصمیم به برگرداندن آن تغییر بگیرید،
شما می توانید تغییر را با فرمان (undo) C-/ لغو کنید.
به طور معمول، C-/ تغییرات ایجاد شده توسط یک فرمان را خنثی می کند.
اگر C-/ را چندین بار پشت سر هم، تکرار کنید هر تکرار یک فرمان دیگر
را خنثی می کند.
اما دو استثنا وجود دارد: فرمانهایِی که متن را تغییر نمی دهند
به حساب نمی آیند (این شامل فرمانهایِ حرکت مکان نما و فرمانهایِ اسکرول می شود.)
و کاراکترهای خود درج معمولاً در گروهای، تا ۲۰ تایی رسیدگی می شوند.
(این برای کاهش تعداد C-/ هایی است که باید برای لغو درج متن) تایپ کنید.
>> این خط را با C-k بکشید، سپس /-C را تایپ کنید تا دوباره ظاهر شود. ـ-C یک
فرمان لغو جایگزین است. دقیقاً مانند C-/ کار می کند. در برخی از پایانه
های متنی، تایپ C-/ در واقع _-C را به Emacs ارسال می کند. از طرف
دیگر، C-x u نیز دقیقاً مانند C-/ کار می کند، اما کمی کمتر است و راحتر
تایپ میشود.
یک آرگومان عددی /-C-_ ، C, یا C-x u به عنوان یک تعداد تکرار عمل می کند.
همانطور که می توانید حذف متن را لغو کنید، می توانید کشتن متن رانیز لغو کنید.
تمایز بین کشتن چیزی و حذف آن در مورد C-y تأثیر می گذارد، برای لغو فرقی نمی کند.
* فایل ها
---------
برای اینکه متنی را که ویرایش می کنید دائمی کنید، باید آن را در یک فایل
قرار دهید. در غیر این صورت، با خروج از Emacs از بین می رود. برای اینکه متن
خود را در یک فایل قرار دهید، قبل از وارد کردن فایل باید آن را "پیدا کنید".
(به این "بازدید از فایل" نیز گفته می شود.)
پیدا کردن یک فایل به این معنی است که شما محتویات فایل را در داخل Emacs
می بینید از بسیاری جهات، گویی در حال ویرایش خود فایل هستید. با این حال،
تغییراتی که با استفاده از Emacs ایجاد می کنید دائمی نمی شوند تا زمانی که
فایل را "ذخیره" کنید. این به این دلیل است که شما بتوانید از ذخیره کردن
فایل نیمه کامل اجتناب کنید. حتی هنگامی که فایل را ذخیره کردید Emacs فایل
اصلی را با نام دیگری برایتان نگه میدارد، چون ممکن است بعداً تصمیم بگیرید که
تغییرات شما اشتباه بوده است.
اگر به پایین صفحه نگاه کنید، خطی را خواهید دید که
با حروف "−" شروع می شود و چیزی مانند: "TUTORIAL ---:-" در آن را نشان می دهد.
این قسمت از صفحه نمایش معمولاً نام فایلی که در حال حاضر از آن بازدید می
کنید را نشان میدهد. شما اکنون در حال بازدید از کپی شخصی آموزش Emacs خود که
"TUTORIAL" نام دارد هستید. وقتی شما یک فایل را با Emacs پیدا کردید، نام آن
فایل بطور دقیق در همان نقطه ظاهر می شود.
یک مورد خاص در مورد فرمان برای یافتن یک فایل این است که شما باید بگویید چه
نام فایلی را می خواهید. ما می گوییم فرمان "خواندن یک ارگومان"
(در این مورد، آرگومان نام فایل است.)بعد از تایپ فرمان.
با C-x C-f یک فایل را پیدا کنید. Emacs از شما می خواهد که نام فایل را تایپ
کنید. نام فایلی که تایپ می کنید در خط پایین صفحه نمایش ظاهر می شود. خط
پایین زمانی که برای این نوع ورودی استفاده می شود، «مینی بافر» نامیده می
شود. شما می توانید ازفرمانهایِ ویرایش معمولی Emacs برای ویرایش نام فایل
استفاده کنید.
در حالی که نام فایل (یا هر ورودی مینی بافر دیگر) را وارد می کنید،
می توانید با C-g فرمان را لغو کنید.
>> فرمانِ C-x C-f را تایپ کنید، سپس C-g را تایپ کنید. این فرمانِ مینی بافر
را لغو می کند، و همچنین فرمان C-x C-f را که مینی بافر از آن استفاده می
کرد را لغو می کند، بنابراین شما هیچ فایلی را پیدا نمی کنید.
وقتی نام فایل را وارد کردید، <Return> را تایپ کنید تا
آن را خاتمه دهید. مینی بافر ناپدید می شود و فرمان C-x C-f
برای یافتن فایلی که انتخاب کرده اید اعمال میشود.
محتویات فایل اکنون روی صفحه ظاهر می شود و می توانید آن را ویرایش کنید.
هنگامی که می خواهید تغییرات خود را دائمی کنید، فرمان
C-x C-s فایل را ذخیره کنید
این فرمان متن را در فایل درون Emacs کپی می کند. اولین باری که این
کار را انجام دهید، Emacs نام فایل اصلی را به نام جدید تغییر می دهد بنابر این
گم نمی شود. نام جدید با افزودن "~" به انتهای نام فایل اصلی ساخته می شود.
هنگامی که ذخیره به پایان رسید، Emacs نام فایل نوشته شده را نمایش می دهد.
>> <C-x C-s TUTORIAL <Return را تایپ کنید.
این فرمان باید این آموزش را در فایلی به نام TUTORIAL ذخیره کند و
و " Wrote...TUTORIAL " را در پایین صفحه نشان دهد.
می توانید یک فایل موجود را پیدا کنید، آن را مشاهده یا ویرایش کنید. شما
همچنین می توانید فایلی را پیدا کنید که قبلاً وجود ندارد. این راه ایجاد یک
فایل با Emacs است: فایل را پیدا کنید که خالی شروع می شود و سپس شروع به درج
متن در آن کنید، وقتی شما درخواست ذخیره فایل را می کنید، Emacs در واقع فایل
را با متنی که شما درج کرده اید ایجاد می کند. از آن به بعد، می توانید خود
را در حال ویرایش فایل موجود بدانید.
* بافرها
---------
اگر فایل دومی را با C-x C-f پیدا کردید، فایل اول داخل Emacs باقی می ماند.
برای برگشت مجدد به آن شما میتوانید با C-x C-f ، دو باره آن را پیدا کنید.
با این روش می توانید تعداد زیادی فایل را در داخل Emacs باز کنید.
ایمکس متن هر فایل را در یک مکان به نام "بافر" ذخیره می کند.
پیدا کردن یک فایل، یک بافر جدید در Emacs ایجاد می کند. برای دیدن لیستی از
بافرهایی که در حال حاضر وجود دارند، تایپ کنید
C-x C-b لیست بافرها
>> اکنون C-x C-b را امتحان کنید.
ببینید که چگونه هر بافر یک نام دارد و همچنین ممکن است نام فایلی که محتویات
آن را نگه می دارد داشته باشد. هر متنی که در پنجره Emacs می بینید همیشه
بخشی از یک بافر است.
>> با تایپ C-x 1 میتوانید از شر لیست بافر خلاص شوید.
هنگامی که چندین بافر دارید، در هر زمان تنها یکی از آنها "جاری" است. آن
بافر همان بافری است که شما ویرایش می کنید. اگر می خواهید بافر دیگری را
ویرایش کنید، باید به آن "سوئیچ" کنید. اگر می خواهید به یک بافر سوئیچ کنید
که مربوط به یک فایل است، می توانید با مراجعه مجدد به آن فایل با C-x C-f
این کار را انجام دهید. اما یک راه ساده تر وجود دارد: از فرمان C-x b
استفاده کنید. در آن فرمان باید نام بافر را تایپ کنید.
>> با تایپ C-x C-f foo <Return> فایلی به نام "foo" ایجاد کنید.
سپس C-x b TUTORIAL <Return> را تایپ کنید تا به این آموزش بازگردید.
اغلب اوقات، نام بافر با نام فایل یکی است(بدون قسمت پوشه فایل). به هر حال،
این همیشه درست نیست. لیست بافری که با C-x C-b ایجاد می کنید، نام هر دو
بافر و نام فایل هر بافر را به شما نشان می دهد.
برخی از بافرها با فایل ها مطابقت ندارند. بافری با نام "*Buffer List*" که
حاوی لیست بافری است که شما آن را با C-x C-b ساخته اید هیچ فایلی ندارد. این
TUTORIAL buffer که در ابتدا انجام شد فایلی ندارد، اما اکنون دارد، زیرا
قبلا شما C-x C-s را تایپ کردید و آن را در یک فایل ذخیره کرده اید.
بافر ی با نام "*Messages*" نیز با هیچ فایلی مطابقت ندارد. این بافر حاوی
پیام هایی است که در در طول جلسه Emacs شما، در خط پایین ظاهر شده اند.
>> حالا < C-x b *Messages* <Return را تایپ کنید تا به بافر پیام ها نگاه کنید.
سپس < C-x b TUTORIAL <Return را تایپ کنید تا به این آموزش بازگردید.
اگر در متن یک فایل تغییراتی ایجاد کردید و سپس فایل دیگری را پیدا کنید، این
فایل اول را ذخیره نمی کند. آن تغییرات در Emacs در بافر آن فایل باقی می ماند.
ایجاد یا ویرایش فایل دوم بافر، هیچ تاثیری روی بافر فایل اول ندارد.
این بسیار مفید است، اما این بدان معناست که شما به یک راه راحت برای ذخیره
بافر فایل اول نیاز دارید. نیاز به برگشت به بافِر اول برای ذخیره آن توسط
C-x C-s کمی دردسرامیز است. بنابراین فرمانِ زیر را داریم.
C-x s برخی از بافرها را ذخیره کنید
فرمان C-x s در مورد هر بافری که حاوی تغییراتی که ذخیرِه
نشده است از شما می پرسد.
>> یک خط متن وارد کنید، سپس C-x s را تایپ کنید.
باید از شما بپرسد که آیا بافر با نام TUTORIAL را ذخیره می کنید یا خیر.
با تایپ "y" به سوال پاسخ مثبت دهید.
* گسترش مجموعه فرمانها
---------------------------
فرمانهایِ Emacs بسیار بسیار بیشتر است از آنچه که امکان قراردادن همه آنها
با کاراکترها ی کنترل و متا باشد.
Emacs با فرمان( X (eXtend این کار را میسر میکند.
دو حالت برای این وجود دارد:
C-x کاراکتر برای eXtend. بعد از یک کاراکتر.
M-x فرمانی با نام eXtend. بعد از یک نام طولانی.
اینها فرمانهایی هستند که عموما مفید هستند، اما کمتر ازفرمانهایی که قبلاً در
مورد آنها آموخته اید استفاده می شوند. شما قبلاً چند مورد از انها را
دیدهاید: برای مثال فرمان فایل C-x C-f را برای یافتن و C-x C-s را برای
ذخیره کردن در نظر بگیرید. مثال دیگر، فرمان C-x C-c فرمان پایان دادن به جلسه
Emacs است. (نگران از دست دادن تغییراتی که ایجاد کرده اید نباشید C-x C-c
پیشنهاد می کند هر فایل تغییر یافته را ذخیره کنید قبل از اتمام جلسه Emacs.)
اگر از صفحه نمایش گرافیکی استفاده می کنید، نیازی به فرمان خاصی برای انتقال
از Emacs به برنامه دیگر ندارید. شما می توانید این کار رابا ماوس یا با
فرمانهای مدیر پنجره انجام دهید. با این حال،اگر شمااز ترمینال متنی که می
تواند تنها یک برنامه را در یک زمان نشان دهد، استفاده می کنیدباید Emacs را
"تعلیق" کنید تا به هر برنامه دیگری بروید.
فرمان C-z خروج *موقت*--- از Emacs است تا بتوانید به همان جلسه Emacs
برگردید. هنگامی که Emacs روی یک ترمینال متنی اجرا می شود، C-z، Emacs را به
حالت تعلیق در می آورد. یعنی به shell برمی گردد اما کار Emacs را از بین نمی
برد. در رایج ترین shell ها، شما می تواند Emacs را با فرمان "fg" یا با
"%emacs" از سر بگیرد.
زمان استفاده از C-x C-c زمانی است که می خواهید از سیستم خارج شوید. همچنین
برای خروج از Emacs و ویرایش سریع استفاده می شود، همانند یک ابزار مدیریت
ایمیل.
فرمانهای C-x زیادی وجود دارد. در اینجا لیستی از مواردی که یاد گرفته اید است:
C-x C-f فایل را پیدا کنید
C-x C-s ذخیره فایل
C-x s برخی از بافرها را ذخیره کنید
C-x C-b لیست بافرها
C-x b سوئیچ بافر
C-x C-c از Emacs خارج شوید
C-x 1 تمام پنجره ها را به جز یک حذف کنید
C-x u لغو فرمان
فرمانهایی با نام eXtended فرمانهایی هستند که به طور مکرر کمتر مورد استفاده
قرار می گیرند یا فرمانهایی که فقط در حالت های خاصی استفاده می شوند.
به عنوان یک مثال فرمان replace-string است که یک رشته حروف را جایگزین رشته
حروف دیگری در بافر می کند. وقتی M-x را تایپ میکنید، Emacs درپایین صفحه با
نشان دادنِ M-x از شما میخواهد نام فرمان را تایپ کنید؛ در اینجا یعنی
"replace-string". فقط " <repl s<TAB" را تایپ کنید و Emacs نام فرمان را
تکمیل می کند. (<TAB> کلید Tab است که معمولاً جایگاهش بالای کلید CapsLock یا
Shift نزدیک لبه سمت چپ کیبورد است.) نام کامل شده فرمان را با <Return>
ارسال کنید.
فرمان replace-string به دو آرگومان نیاز دارد -- رشته جایگزین شونده
و رشته ای که جایگزین آن شود.شما باید هر آرگومان رابا <Return> پایان دهید.
>> مکان نما را به خط خالی دو خط زیر این یکی ببرید.
سپس < M-x repl s<Return>changed<Return>altered<Return را تایپ کنید.
توجه کنید که این خط چگونه تغییر کرده است: شما کلمه "changed" را با"altered"
جایگزین کرده اید. هر جایی که بعد از موقعیت اولیه مکان نما رخ داد.
* ذخیره خودکار
---------------
وقتی تغییراتی در فایلی ایجاد کرده اید، اما هنوز آنها را ذخیره نکرده اید،
اگر کامپیوتر شما خراب شود، ممکن است از بین بروند. برای محافظت شما از آن،
Emacs به صورت دوره ای برای هر فایلی که شما در حال ویرایش آن هستید یک فایل
"ذخیره خودکار" می نویسد. نام فایل ذخیره خودکار دارای یک # در ابتدا و در
پایان است؛ به عنوان مثال، اگر فایل شما "hello.c" نام دارد، ذخیره خودکار نام
فایل "#hello.c#" است.وقتی فایل را به روش عادی ذخیره می کنید، Emacs فایل
ذخیره خودکار خود را حذف می کند.
اگر رایانه خراب شد، میتوانید ویرایش ذخیرهشده خودکار خود را توسط
یافتن فایل به طور معمول (فایلی که در حال ویرایش آن بودید، نه ذخیره فایل خودکار)
و سپس تایپ M-x recover-this-file <Return> بازیابی کنید . هنگامی که
تأیید آن را می خواهد،< yes<Return را تایپ کنید تابه ذخیره خودکار داده ها
ادامه دهید و آن را بازیابی کنید.
* منطقه اکو
-----------
اگر Emacs ببیند که به آرامی فرمانهای چند کاراکتری را تایپ می کنید، آن را
انجام می دهد آنها را در پایین صفحه در ناحیه ای به نام "منطقه اکو" به شما
نشان می دهد. ناحیه اکو حاوی خط پایین صفحه نمایش است.
* خط حالت ( MODE LINE)
-----------------------
خط بلافاصله بالای ناحیه اکو "mode line" نامیده می شود.
خط حالت چیزی شبیه به این می گوید:
TUTORIAL 63% L749 (Fundamental) −**:−
این خط، اطلاعات مفیدی در مورد وضعیت Emacs
و متنی که در حال ویرایش آن هستید می دهد.
شما از قبل می دانید که نام فایل به چه معناست -- این فایلی است که شما دارید.
NN% موقعیت فعلی شما را در متن بافر نشان می دهد. این
به این معنی است که NN درصد از بافر بالای صفحه نمایش است.
اگر بالای بافر روی صفحه باشد، به آن "Top" بجای "0٪" می گوید.
اگر پایین بافر روی صفحه باشد، "Bot" می گوید.
اگر به بافری نگاه می کنید که آنقدر کوچک است که همه آن روی صفحه جا می شود,
خط مد می گوید, "All".
حرف L و ارقام، موقعیت را به طریق دیگری نشان می دهند: آنها شماره خط فعلیِ
نقطه را نشان می دهند.
ستاره های نزدیک به جلو به این معنی است که شما تغییراتی در متن ایجاد کرده
اید. درست پس از بازدید یا ذخیره یک فایل، آن قسمت از خط حالت، با خطوط تیره
و بدون ستاره نمایش داده می شود.
آن بخشی از خط حالت که در داخل پرانتز است گویایِ
حالتهای ویرایشی فعلی هستند. حالتی که الان استفاده می کنید Fundamental است.
این نمونه ای از "مد ماژر (major mode)" است.
ایمکس حالت های اصلی مختلف فراوان دارد. برخی از آنها برای
ویرایش زبان های برنامه ریزی مختلف مثل Lisp هستند و برخی برای
ویرایش متن هستند، و غیره.
در هر زمان یک و تنها یک مد ماژر فعال است، و نام آن را همیشه می توان در خط
حالت، دقیقاً در جایی که اکنون "Fundamental" است، یافت.
هر مد ماژر باعث می شود که برخی از فرمانها متفاوت عمل کنند. مثلا، فرمانهایی
برای ایجاد comment در یک برنامه وجود دارد و از آنجایی که هر کدام از
زبانهای برنامه نویسی ایده متفاوتی در مورد آنچه که یک comment باید باشد
دارند هر مد ماژر باید comment رابه طور متفاوتی درج کند. هر یک از مدهای
ماژر نام یک فرمان توسعه یافته است، که چگونه می توانید به آن حالت تغییر
دهید. برای مثال، M-x fundamental-mode فرمانی است که به حالت اساسی بروید.
اگر قرار است متنی به زبان انسانی مانند: این فایل را ویرایش کنید، شما
احتمالا باید از حالت متن استفاده کنید.
>> تایپ کنید < M-x text-mode <Return
نگران نباشید، هیچ یک از فرمانهایِ Emacs که یاد گرفته اید تغییر نمی کند اما
می توانید مشاهده کنید که M-f و M-b اکنون آپاستروف ها به عنوان بخشی از
کلمات رفتارمی کنند.قبلاً در حالت بنیادی، M-f و M-b مانند آپاستروف ها به عنوان
جداکننده کلمات رفتار می کردند.
اکثر فرمانها در هر مد ماژر "همان کار" را انجام می دهند، امادرمواردی مانند
مثال بالا کمی متفاوت عمل می کنند.
برای مشاهده اطلاعات امدادی در مد ماژر فعلی خود، C-h m را تایپ کنید.
>> مکان نما را به خط زیر این خط ببرید.
>> C-l C-l را تایپ کنید تا این خط به بالای صفحه نمایش داده شود.
>> C-h m را تایپ کنید تا ببینید مدِ Text با مدِ Fundamental چه تفاوتی دارد.
>> C-x 1 را تایپ کنید تا اطلاعات امدادی را از روی صفحه حذف کنید.
مد ماژور را ماژر می نامند زیرا مد ماینور نیز وجود دارد. مدهای ماینور
جایگزینی برای مدهای ماژور نیستند، فقط آنها را تغیر و تبدیل می کنند. هر مد
ماینور می تواند خودش مستقلانه روشن یا خاموش گردد، مستقل ازتمام مدهای
ماینور دیگر،و مستقل از مد ماژر فعلی شما. بنابراین می توانید از هیچ مد
ماینور، یک مد ماینور و یاترکیبی از چند مد ماینور استفاده کنید.
یک مد ماینور که بسیار مفید است، به خصوص برای ویرایش متن به زبان انسانی
(human-language)، مد ماینورِ خود−پر کن (Auto Fill mode) است. وقتی این مد
روشن است, و شما با نوشتن متن، خطی بوجود می آورد که خیلی طولانی است،Emacs
خط بین کلمات را به طور خودکار می شکند.
شما می توانید با انجام <M-x auto-fill-mode <Return, مد ماینور خودکار را
روشن کنید. وقتی مد روشن است، می توانید با انجام < M-x auto-fill-mode
<Return دوباره آن را خاموش کنید. اگر مد خاموش باشد، با این فرمان روشن می
شود واگر مد روشن است، این فرمان آن را خاموش می کند. ما به این فرمان "تغییر
مد" می گوییم.
>>اکنون <M-x auto-fill-mode <Return را تایپ کنید.
سپس یک خط "asdf" را وارد کنید،آن را تکرار کنید تا زمانی که ببینید که به
دو خط تقسیم شده است. شماباید فاصله (spaces) بین آنها بوجود آورید، زیرا
Auto Fill خطوط را فقط درفواصل می شکند.
حاشیه معمولاً از 70 کاراکتر تشکیل می شود، اما شما می توانید آن را با فرمان
C-x f تغییر دهید. شما باید تنظیمات حاشیه ای را که می خواهید بدهید،همراه با
استدلال عددی باشد.
> C-x f را با آرگومان 20 تایپ کنید. (C-u 2 0 C-x f).
سپس مقداری متن را تایپ کنید و سپس ببینید Emacs، خطوط 20 کاراکتری را با
آن پر می کنید. سپس با استفاده از C-x f، دوباره حاشیه را به 70
برگردانید.
اگر در وسط پاراگراف تغییراتی ایجاد کردید، حالت پر کردن خودکار دوباره آن را
برای شماپر نمی کند. برای پر کردن مجدد پاراگراف، M-q (META-q) رابا مکان نما
در داخل آن پاراگراف تایپ کنید.
>> مکان نما را به پاراگراف قبلی ببرید و M-q را تایپ کنید.
* جستجوکردن
-----------
با Emacs می توانید رشته ها را جستجو کند («رشته:string » گروهی از
کاراکترهای به هم پیوسته است). جستجو به جلو در متن یا به عقب در متن.
جستجوی برای یک string یک فرمان حرکت مکان نما است. آن مکان نما را به مکان
بعدی که آن رشته ظاهر می شود حرکت می دهد.
فرمان جستجوی Emacs "افزایشی" است. این بدان معنی است که
جستجو زمانی اتفاق می افتد که رشته مورد نظر را برای جستجو تایپ می کنید.
فرمان شروع جستجو C-s برای جستجوی جلو و C-r برای جستجوی معکوس است.
اما صبر کنید! اکنون آنها را امتحان نکنید.
وقتی C-s را تایپ می کنید متوجه خواهید شد که رشته "I-search" به صورت یک
اعلان در ناحیه اکو ظاهر می شود. این به شما می گوید که Emacs مشغول کاری است
که یک جستجوی افزایشی نامیده می شود و در آن حالت منتظر شماست تامورد جستجو
را تایپ کنید. <Return> یک جستجو را خاتمه می دهد.
>> اکنون C-s را برای شروع جستجو تایپ کنید
کلمه"مکان نما" را به آرامی، با تک تک حروف تایپ کنید، پس از تایپ
هر کاراکتر مکث کنید, تا متوجه آنچه برای مکان نما اتفاق می افتد شوید.
اکنون یک بار "مکان نما" را جستجو کرده اید.
>> دوباره تایپ کنید C-s، برای جستجوی رخداد بعدی "مکان نما".
>> اکنون <DEL> را چهار بار تایپ کنید و ببینید مکان نما چگونه حرکت می کند.
>> برای پایان یافتن جستجو، <Return> را تایپ کنید.
دیدید چه اتفاقی افتاد؟ Emacs، در یک جستجوی افزایشی، سعی می کند
به رخداد رشته ای که تاکنون تایپ کرده اید بروید.
برای رفتن به رخداد بعدی "مکان نما"، فقط C-s را دوباره تایپ کنید. اگر چنین
رخدادی وجود ندارد، Emacs بوق میزند و به شما میگوید جستجو در حال حاضر
"شکست" خرده است. C-g نیز جستجو را خاتمه می دهد.
اگر در وسط یک جستجوی افزایشی هستید و <DEL> را تایپ کنید،
جستجو، "عقب نشینی" به مکان قبلی میکند. اگر برای پیشرفت جستجوی رشته ای بعدی،
بعد از اینکه C-s را تایپ کردید <DEL> را تایپ کنید،
<DEL> مکان نما را به یک اتفاق قبلی برمی گرداند. اگر
هیچ مورد قبلی در رشته جستجو وجود نداشته باشد، <DEL> آخرین کاراکتر را
در رشته جستجوپاک می کند.
برای مثال، فرض کنید "م" را تایپ کرده اید
برای اولین بار "م" را جستجو کنید. حالا اگر "ک" را تایپ کنید،
مکان نما به اولین رخداد "مک" حرکت می کند. حالا <DEL> را تایپ کنید.
این "ک" را از رشته جستجو پاک می کند و مکان نما به به اولین وقوع "م" در
رشته جستجو به عقب برمی گردد.
اگر در وسط یک جستجو هستید و کاراکتر کنترل یا متا را تایپ کنید،
شخصیت (به استثنای معدود کاراکتر هایی که در یک جستجو خاص هستند،
مانند C-s و C-r)، جستجو خاتمه می یابد.
با C-s جستجو را بعد از موقعیت مکان نمای فعلی شروع می کنید و هر رخدادی از رشته
بعد از مکان نما جستجو می شود. اگر می خواهید چیزی در متن قبل از مکان نما جستجو
شود، به جای آن، C-r را تایپ کنید. همه چیزهایی که ما در مورد C-s
گفته ایم برای C-r نیز صدق می کند، با این تفاوت که جهت جستجو معکوس می شود.
* پنجره های چندگانه
--------------------
یکی از ویژگی های خوب Emacs این است که می توانید در یک زمان بیشتر ازیک
پنجره روی صفحه نمایش نشان دهید. (توجه داشته باشید که Emacs ازاصطلاح
"frames"-- که در بخش بعدی توضیح داده شده است -- برای برخی کاربرد دیگر
"windows" گفته می شود. کتابچه راهنمای Emacs حاوی واژه نامه ای ازشرایط
استفاده Emacs.)
>> مکان نما را به این خط ببرید و C-l C-l را تایپ کنید.
>> حالا C-x 2 را تایپ کنید که صفحه را به دو پنجره تقسیم می کند. هر دو
پنجره این آموزش را نمایش می دهند. مکان نمای ویرایش در پنجره بالا باقی
می ماند.
>> تایپ C-M-v برای رفتن به پایین پنجره .
(اگر کلید META واقعی ندارید، <ESC> C-v را تایپ کنید.)
>> تایپ کنید C-x o ("o" برای "other"دیگر ) برای حرکت مکان نما به پنجره پایین.
>> از C-v و M-v در پنجره پایین برای پیمایش استفاده کنید.
به خواندن این فرمانهای عمل، در پنجره بالا ادامه دهید.
>> دوباره C-x o را تایپ کنید تا مکان نما را به پنجره بالا برگردانید.
مکان نما در پنجره بالا دقیقاً همان جایی است که قبلا بود.
می توانید از C-x o برای جابجایی بین پنجره ها استفاده کنید. "پنجره انتخاب
شده" جایی که بیشترین ویرایش در آن صورت می گیرد، همان پنجره ای است که مکان
نما برجسته است، و زمانی که تایپ نمی کنید چشمک می زند. پنجره های دیگر
موقعیت مکان نمای خود را دارند. اگر Emacs را به صورت گرافیکی اجرا می کنید،
آن مکان نماها به صورت کادرهای توخالی بدون چشمکزن ترسیم میشوند.
فرمان C-M-v هنگامی که متن را در یک پنجره ویرایش می کنید و از پنجره دیگر
فقط برای مرجع استفاده میکند، بدون ترک پنجره انتخاب شده، بسیار مفید است.
می توانید متن را باC-M-v در پنجره دیگر پیمایش کنید.
مثال C-M-v نمونه ای از یک کاراکتر CONTROL-META است. اگر یک کلید META
(Alt یا) دارید با نگه داشتن هر دو کلید CONTRO و META و تایپ v,
میتوانید C-M-v را تایپ کنید. مهم نیست که CONTROL اول باشد یا META.
زیرا هر دوی این کلیدها با تغییر کاراکترهای شما عمل می کنند.
اگر کلید META ندارید و به جای آن از <ESC> استفاده می کنید، مهم است که
ترتیب را انجام دهید: باید <ESC> و سپس CONTROL-v را تایپ کنید، زیرا
CONTROL-<ESC> v کار نخواهد کرد. این به این دلیل است که <ESC> در نوع خود
یک کاراکتر است، نه یک کلید اصلاح کننده.
>> با تایپ C-x 1 (در پنجره بالا) از شر پنجره پایین خلاص شوید.
(اگر C-x 1 را در پنجره پایین تایپ کرده بودید، پنجره بالا خلاص می شد. این
فرمان را به صورت «فقط یک پنجره را -- هم آنکه هم اکنون در آن هستم نگه دار»
در نظر بگیرید.
شما مجبور نیستید یک بافر را در هر دو پنجره نمایش دهید. اگر شما از C-x C-f
برای پیدا کردن فایل در یک پنجره استفاده کنید، در پنجره دیگر تغییر ایجاد
نمی شود. شما می توانید یک فایل را در هر پنجره به طور مستقل پیدا کنید.
در اینجا روش دیگری برای استفاده از دو پنجره برای نمایش دو چیز مختلف وجود دارد:
>> فرمان C-x 4 C-f و سپس نام یکی از فایل های خود را تایپ کنید.
با <Return> خاتمه دهید. ببینید فایل مشخص شده در پایین ظاهر می شود و
پنجره مکان نما نیز به آنجا می رود.
>> برای بازگشت به پنجره بالا C-x o و برای حذف پنجره پایین C-x 1 را تایپ کنید.
*فریم های چندگانه (MULTIPLE FRAMES)
----------------------------------
با Emacs همچنین می توانید چندین "فریم" ایجاد کنید. یک فریم، مجموعه ای
ازپنجره ها است که فهرست آن: اسکرول بارها، اکو بار، و غیره است. در
نمایشگرهای گرافیکی، چیزی که Emacs آن را "فریم" می نامد همان چیزی است که
اکثر برنامه های کاربردی دیگر "پنجره" می نامند. فریم های گرافیکی متعدد را
می توان همزمان بر روی صفحه نمایش نشان داد. در یک ترمینال متنی فقط یک فریم
را می توان در یک زمان نشان داد.
>> C-x 5 2 را تایپ کنید.
مشاهده می کنید که یک فریم جدید روی صفحه نمایش شما ظاهر می شود.
شما می توانید هر کاری را که در فریم اصلی انجام داده اید در فریم جدید
انجام دهید. هیچ چیز خاصی در فریم اول وجود ندارد.
>> C-x 5 0 را تایپ کنید.
این فریم انتخاب شده را حذف می کند.
شما همچنین می توانید یک فریم را با استفاده از روش معمولی ارائه شده توسط
سیستم گرافیکی (اغلب با کلیک روی دکمه ای با نشان "X" در گوشه بالای فریم)بردارید.
اگر آخرین فریمِ کار Emacs را به این ترتیب حذف کنید،از Emacs خارج می شود.
* سطوح ویرایش بازگشتی
----------------------
گاهی اوقات وارد چیزی می شوید که«سطوح ویرایش بازگشتی» نامیده می شود.
این با کروشه های مربع در خط حالت اطراف پرانتزهای نام مد ماژر
نشان داده می شود. برای مثال، ممکن است [(اساسی)] را به جای (اساسی) ببینید.
برای خارج شدن از سطح ویرایش بازگشتی، <ESC> <ESC> <ESC> را تایپ کنید.
این یک فرمان همه منظوره "برو بیرون" است. همچنین می توانید از آن برای
حذف پنجره های اضافی و خارج شدن از مینی بافر استفاده کنید.
>> تایپ M-x، تا وارد یک مینی بافر شوید. سپس برای بیرون رفتن
<ESC> <ESC> <ESC> را تایپ کنید.
شما نمی توانید از C-g برای خارج شدن از یک سطح ویرایش بازگشتی استفاده کنید.
زیرا C-g برای لغو فرمانها و آرگومان ها در داخل سطح ویرایش بازگشتی
استفاده می شود.
* دریافت کمک بیشتر
-------------------
در این آموزش سعی شده است اطلاعات کافی برای شروع به استفاده از Emacs در
اختیار شما قرار گیرد. اطلاعات موجود در مورد Emacs آنقدر زیاد است که توضیح
همه چیز در اینجا غیرممکن است. با این حال، ممکن است بخواهید اطلاعات بیشتری
در مورد Emacs کسب کنید زیرا Emacs دارای بسیاری از ویژگی های مفید دیگر است.
Emacs فرمانهایی رابرای خواندن اسناد در مورد Emacs ارائه می دهد. فرمانهای
"help" همه با کاراکتر CONTROL-h که " کارکتر Help" نامیده می شود شروع
می شوند.
برای استفاده از ویژگی های Help، کاراکتر C-h و سپس کارکتری که می گوید شما
چه نوع کمکی می خواهید را تایپ کنید. اگر شما واقعاً گم شده اید، ? C-h را
تایپ کنید و Emacs به شما خواهد گفت که چه نوع کمکی می تواند ارائه دهد. اگر
C-h را تایپ کرده اید و به این نتیجه رسیده اید که هیچ کمکی نمی خواهید، فقط
برای لغو آن، C-g را تایپ کنید.
(اگر C-h پیامی در مورد راهنما در پایین صفحه نمایش نمی دهد،
روی صفحه به جای آن کلید F1 یا< M-x help <Return را تایپ کنید.)
اساسی ترین ویژگی HELP یا کمک، C-h c است. تایپ کنید C-h، کاراکتر c و یک
کاراکتر یا دنباله فرمان؛ سپس Emacs یک خلاصه بسیار کوتاه از شرح فرمان نمایش
می دهد.
>> C-h c C-p را تایپ کنید.
پیام باید چیزی شبیه این باشد:
C-p runs the command previous-line
این "نام فرمان -- function" را به شما می گوید. نام فرمان از بابت کاری که
فرمان انجام می دهد انتخاب می شود. نام فرمان می تواند به عنوان اطلاعات
امدادی بسیار مختصر باشد - برای یادآوری فرمانهایی که شما قبلا یاد گرفته اید.
فرمانهایی چند کاراکتری مانند C-x C-s و ESC>v> (به جای M-v،اگر کلید META یا
ALT ندارید) همچنین پس از C-h c نیز مجاز هستند.
برای دریافت اطلاعات بیشتر در مورد یک فرمان، به جای C-h c از C-h k استفاده
کنید.
>> C-h k C-p را تایپ کنید.
این مستندات تابع و همچنین نام آن را در یک پنجره ایمکس نمایش می دهد.
وقتی خواندن خروجی تمام شد، برای خلاص شدن از شر آن پنجره C-x 1 را تایپ کنید.
شما مجبور نیستید این کار را به سرعت انجام دهید.
می توانید در حین مراجعه به متن راهنما مقداری ویرایش انجام دهید
و سپس C-x 1 را تایپ کنید.
در اینجا چند گزینه مفید دیگر C-h وجود دارد:
C-h x یک فرمان را توصیف کنید. شما نام آن فرمان را تایپ می کنید.
>> فرمانِ <C-h x previous-line <Return را تایپ کنید.
این تمام اطلاعات ایمکس را در مورد آن نمایش می دهد.
تابعی که فرمان C-p را پیاده سازی می کند.
یک فرمان مشابه C-h v اطلاعات امدادیِ متغیرها "variables" را نمایش می دهد, و
گاهی اجازه میدهد تا بتوانید مقادیر متغیرها را برای خاص کردن رفتار ایمکس
تنظیم کنید. زمانی که ایمکس از آن درخواست کرد، باید نام متغیر را تایپ کنید.
C-h a فرمان Apropos.
یک کلمه کلیدی را تایپ کنید و ایمکس تمام فرمانهایی که نام
آنها حاوی آن کلمه کلیدی است لیست میکند. همه این فرمانها
را می توان با META-x احضار کرد. برای برخی از فرمانها،
Command Apropos نیز یک فهرست دنباله ای است از یک یا چند
کاراکتر که بافرمان یکسان اجرا می شود.
>> فرمان <c-h a file <Return راتایپ کنید.
در پنجره ای دیگر لیستی از تمام فرمانهایی M-x با "file" به نام آنها نمایش
داده می شود. شما فرمانهای کاراکتر را در کنار آن نام فرمانهای مربوطه (مانند
C-x C-f در کنار find-file) خواهید دید.
>> برای پیمایش پنجره راهنما، C-M-v را تایپ کنید. این را چند بار انجام دهید.
>> C-x 1 را تایپ کنید تا پنجره راهنما را حذف کنید.
C-h i خواندن کتابچه راهنمای همراه (با نام مستعار اطلاعات Info).
این فرمان شما را به یک بافر ویژه به نام "*info*" یا
اطلاعات قرار می دهد که در آن شما می توانید کتابچه
راهنمای بسته های نصب شده روی سیستم خود را بخوانید. برای
خواندن کتابچه راهنما < m emacs<Return را تایپ کنید. اگر
قبلاً از Info استفاده نکردهاید، Emacs و h را تایپ کنید,
آن شما را به یک راهنمای تور از امکانات حالت info می برد.
پس از اتمام این آموزش، باید به کتابچه راهنمای
Emacs Info به عنوان مستندات اصلی خود مراجعه کنید.
* ویژگی های بیشتر
------------------
شما میتوانید با مطالعه کتابچه راهنمای ایمکس اطلاعات بیشتری کسب کنید. مانند
یک کتاب چاپ شده، یا داخل Emacs (از منوی Help یا C-h r استفاده کنید). دو
ویژگی که ممکن است به خصوص دوست داشته باشید، توانایی تکمیل "Completion" که
باعث کمتر تایپ کردن میشود و dired، که مدیریت رسیدگی به فایل را ساده می کند.
تکمیل راهی برای جلوگیری از تایپ غیر ضروری است. به عنوان مثال، اگر شما
میخواهید به بافر *Messages* بیاید، میتوانید< C-x b *M<Tab را تایپ کنید، و
Emacs بقیه نام بافر را تا جایی که می تواند از آنچه قبلاً تایپ کرده اید پر
می کند. تکمیل کردن هم چنین برای نام فرمانها ونام فایل ها به کار می آید. در
کتابچه راهنمای ایمکس، در بخشی به نام "تکمیل Completion " توضیح داده شده
است.
با Dired شما قادر هستید تا فایل ها (و به صورت اختیاری زیر شاخه های آن) را
در یک فهرست کنید. در اطراف آن لیست حرکت کنید، بازدید کنید، نام خود را
تغییر دهید، حذف کنید و به صورت دیگر روی فایل ها کار کنید. در کتابچه
راهنمای ایمکس در بخشی به نام "Dired" توضیح داده شده است.
این کتابچه راهنمای بسیاری از ویژگی های دیگر ایمکس را نیز توضیح می دهد.
* جمع بندی
------------
برای خروج از Emacs از C-x C-c استفاده کنید.
این آموزش برای همه کاربران جدید باید قابل درک باشد، بنابراین اگر
چیز مبهمی پیدا کردید، ننشینید و تو سر خودتان نزنید - شکایت کنید!
* کپی برداری
--------------
این آموزش حاصل زنجیره ای طولانی از آموزش های Emacs است که با کتابی به نوشته
Stuart Cracraft سر چشمه گرفت.
این نسخه از آموزش بخشی از GNU Emacs است. دارای حق چاپ است
و با مجوز برای توزیع کپی در شرایط خاص همراه است:
Copyright (C) 1985, 1996, 1998, 2001-2022 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
لطفاً فایل COPYING را بخوانید و سپس کپی هایی از GNU Emacs را به دوستانتان بدهید.
کمک کنید تا از شر قاعدیِ اشتباهِ کپی رایت غربی راحت شویم.
--- end of TUTORIAL.fa ---
;;; Local Variables:
;;; coding: utf-8
;;; bidi-display-reordering: t
;;; sentence-end-double-space: nil
;;; bidi-paragraph-direction: nil
;;; fill-column: 74
;;; End:
[-- Attachment #3: persian.el --]
[-- Type: application/emacs-lisp, Size: 1145 bytes --]
;;; persian.el --- support for Persian -*- coding: utf-8; lexical-binding: t -*-
;; Copyright (C) 2022 Free Software Foundation, Inc.
;; Author: Mohsen Banan
;; Keywords: multilingual, Persian, i18n
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Standard coding system.
;;; Code:
(set-language-info-alist
"Persian" '((tutorial . "TUTORIAL.fa")
(sample-text . "Persian فارسی")
(documentation . "Bidirectional editing is supported.")))
(provide 'persian)
;;; persian.el ends here
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0001-Added-persian.el-to-loadup.el-and-minor-fixes-in-lis.patch --]
[-- Type: text/x-diff, Size: 1932 bytes --]
From a79b0885c0f6fc010e7e200ad7591e32620a4e82 Mon Sep 17 00:00:00 2001
From: Mohsen Banan <form@mohsen.banan.1.byname.net>
Date: Sun, 23 Apr 2023 21:26:06 -0700
Subject: [PATCH] Added persian.el to loadup.el and minor fixes in
lisp/language/misc-lang.el
---
lisp/language/misc-lang.el | 10 ++++++----
lisp/loadup.el | 1 +
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/lisp/language/misc-lang.el b/lisp/language/misc-lang.el
index 5a7867f14e8..cb3c19f563f 100644
--- a/lisp/language/misc-lang.el
+++ b/lisp/language/misc-lang.el
@@ -41,9 +41,6 @@
IPA is International Phonetic Alphabet for English, French, German
and Italian.")))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Arabic
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-coding-system 'iso-8859-6
"ISO-8859-6 based encoding (MIME:ISO-8859-6)."
@@ -60,6 +57,10 @@ and Italian.")))
:mime-charset 'windows-1256)
(define-coding-system-alias 'cp1256 'windows-1256)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Arabic
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
(set-language-info-alist
"Arabic" '((charset unicode)
(coding-system utf-8 iso-8859-6 windows-1256)
@@ -77,8 +78,9 @@ and Italian.")))
(documentation . "Bidirectional editing is supported.")))
(defcustom arabic-shaper-ZWNJ-handling nil
- "How to handle ZWMJ in Arabic text rendering.
+ "How to handle ZWNJ in Arabic text rendering.
This variable controls the way to handle a glyph for ZWNJ
+(Zero Width Non-joiner)
returned by the underling shaping engine.
The default value is nil, which means that the ZWNJ glyph is
diff --git a/lisp/loadup.el b/lisp/loadup.el
index 1cc70348267..734376acd63 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -242,6 +242,7 @@
(load "language/cham")
(load "language/philippine")
(load "language/indonesian")
+(load "language/persian")
(load "indent")
(load "emacs-lisp/cl-generic")
--
2.30.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: Farsi/Persian Translation of Emacs Tutorial -- Ready for Inclusion in the Next Emacs
2023-04-24 4:58 ` Mohsen BANAN
@ 2023-04-25 9:29 ` Eli Zaretskii
2023-04-25 22:05 ` Mohsen BANAN
0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2023-04-25 9:29 UTC (permalink / raw)
To: Mohsen BANAN; +Cc: emacs-devel
> From: Mohsen BANAN <emacs@mohsen.1.banan.byname.net>
> Cc: emacs-devel@gnu.org
> Date: Sun, 23 Apr 2023 21:58:09 -0700
>
> Attached are three files:
>
> 1) TUTORIAL.fa --- NEW FILE
> which goes in etc/tutorials/TUTORIAL.fa
>
> 2) persian.el --- NEW FILE
> which goes in lisp/language/persian.el
>
> 3) 0001-Added-persian.el-to-loadup.el-and-minor-fixes-in-lis.patch
> patches to lisp/loadup.el
> which adds language/persian.el
> patches to language/misc-lang.el
> which are purely comment oriented.
>
> This is how I did it for myself.
>
> If you want to follow the same pattern, it is best
> to take the persian part out of misc-lang.el and
> perhaps create a separate file for arabic.
>
> I leave the arrangement in your capable hands ...
Thanks. I added the tutorial to the emacs-29 branch, and updated the
existing Persian language environment with the tutorial information
(and made also other minor relevant changes due to this addition).
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Farsi/Persian Translation of Emacs Tutorial -- Ready for Inclusion in the Next Emacs
2023-04-25 9:29 ` Eli Zaretskii
@ 2023-04-25 22:05 ` Mohsen BANAN
2023-04-26 6:01 ` Eli Zaretskii
0 siblings, 1 reply; 7+ messages in thread
From: Mohsen BANAN @ 2023-04-25 22:05 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 2241 bytes --]
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Mohsen BANAN <emacs@mohsen.1.banan.byname.net>
>> Cc: emacs-devel@gnu.org
>> Date: Sun, 23 Apr 2023 21:58:09 -0700
>>
>> Attached are three files:
>>
>> 1) TUTORIAL.fa --- NEW FILE
>> which goes in etc/tutorials/TUTORIAL.fa
>>
>> 2) persian.el --- NEW FILE
>> which goes in lisp/language/persian.el
>>
>> 3) 0001-Added-persian.el-to-loadup.el-and-minor-fixes-in-lis.patch
>> patches to lisp/loadup.el
>> which adds language/persian.el
>> patches to language/misc-lang.el
>> which are purely comment oriented.
>>
>> This is how I did it for myself.
>>
>> If you want to follow the same pattern, it is best
>> to take the persian part out of misc-lang.el and
>> perhaps create a separate file for arabic.
>>
>> I leave the arrangement in your capable hands ...
>
> Thanks. I added the tutorial to the emacs-29 branch, and updated the
> existing Persian language environment with the tutorial information
> (and made also other minor relevant changes due to this addition).
Thank you very much Eli.
I rebuilt and noticed a couple of problems.
If you enter the Help Persian tutorial and then try
to immediately exit emacs, you get an error.
Here is my *Messages* buffer after that:
------
Preparing tutorial ...
help-with-tutorial: Search failed: "
<<"
run-hook-with-args-until-failure: Symbol’s value as variable is void: tutorial--starting-point
-------
I looked into it and the problem turns out to be
in my TUTORIAL.fa file which then triggers the
void tutorial--starting-point in tutorial.el.
I had missed the invisible
<<Blank lines inserted around following line by help-with-tutorial>>
line, as I had translated from the Help command
and not the TUTORIAL file.
I have added the translation of that line and have
tested it. Please apply the attached file, thanks.
As for the void: tutorial--starting-point: you may
want to look into that and make it more robust.
And perhaps issue an error saying the
<<Blank lines ...>> is missing.
But, if no other translator had made that mistake,
then it is just me and we can leave it as is.
My apologies for that sloppiness and thanks again.
...Mohsen
[-- Attachment #2: 0001-Missing-inserted-by-help-with-tutorial-line.patch --]
[-- Type: text/x-diff, Size: 1283 bytes --]
From 19b77cf11d2d7054dd2ca754779bdab9070803a5 Mon Sep 17 00:00:00 2001
From: Mohsen Banan <form@mohsen.banan.1.byname.net>
Date: Tue, 25 Apr 2023 14:49:28 -0700
Subject: [PATCH] Missing <<inserted by help-with-tutorial>> line.
---
etc/tutorials/TUTORIAL.fa | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/etc/tutorials/TUTORIAL.fa b/etc/tutorials/TUTORIAL.fa
index 5c9c0e1941a..a26b292be9f 100644
--- a/etc/tutorials/TUTORIAL.fa
+++ b/etc/tutorials/TUTORIAL.fa
@@ -17,11 +17,10 @@
کاراکترهای ">>" در حاشیه سمت راست فرمانهایی را برای شمامشخص می کند. برای مثال:
-
+<<خطهای خالی بعد از خط بعدی توسط help-with-tutorial درج میشود>>
[وسط صفحه برای اهداف آموزشی خالی مانده است. ادامه متن در زیر]
-
>> اکنون C-v را تایپ کنید (نمایش صفحه بعدی) تا یک صفحه کامل به پایین بروید.
(این کار را با نگه داشتن کلید CONTROL و فشار کلید v انجام دهید).
از این پس، لطفاً هر زمان که به انتهای صفحه رسیدید، این کار را انجام دهید.
--
2.30.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: Farsi/Persian Translation of Emacs Tutorial -- Ready for Inclusion in the Next Emacs
2023-04-25 22:05 ` Mohsen BANAN
@ 2023-04-26 6:01 ` Eli Zaretskii
2023-04-27 1:44 ` Mohsen BANAN
0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2023-04-26 6:01 UTC (permalink / raw)
To: Mohsen BANAN; +Cc: emacs-devel
> From: Mohsen BANAN <emacs@mohsen.1.banan.byname.net>
> Cc: emacs-devel@gnu.org
> Date: Tue, 25 Apr 2023 15:05:41 -0700
>
> I rebuilt and noticed a couple of problems.
>
> If you enter the Help Persian tutorial and then try
> to immediately exit emacs, you get an error.
>
> Here is my *Messages* buffer after that:
> ------
> Preparing tutorial ...
> help-with-tutorial: Search failed: "
> <<"
> run-hook-with-args-until-failure: Symbol’s value as variable is void: tutorial--starting-point
> -------
This was caused indirectly by the other problem: the missing
"invisible" line. When it is added, the problem disappears, at least
with the latest tutorial.el.
> I looked into it and the problem turns out to be
> in my TUTORIAL.fa file which then triggers the
> void tutorial--starting-point in tutorial.el.
>
> I had missed the invisible
> <<Blank lines inserted around following line by help-with-tutorial>>
> line, as I had translated from the Help command
> and not the TUTORIAL file.
>
> I have added the translation of that line and have
> tested it. Please apply the attached file, thanks.
Done, thanks.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Farsi/Persian Translation of Emacs Tutorial -- Ready for Inclusion in the Next Emacs
2023-04-26 6:01 ` Eli Zaretskii
@ 2023-04-27 1:44 ` Mohsen BANAN
0 siblings, 0 replies; 7+ messages in thread
From: Mohsen BANAN @ 2023-04-27 1:44 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Mohsen BANAN <emacs@mohsen.1.banan.byname.net>
>> I have added the translation of that line and have
>> tested it. Please apply the attached file, thanks.
>
> Done, thanks.
I have rebuilt and verified.
From my side, it is all good and I consider
this thread complete.
Thanks.
...Mohsen
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-04-27 1:44 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-24 0:12 Farsi/Persian Translation of Emacs Tutorial -- Ready for Inclusion in the Next Emacs محسن بنان
2023-04-24 2:32 ` Eli Zaretskii
2023-04-24 4:58 ` Mohsen BANAN
2023-04-25 9:29 ` Eli Zaretskii
2023-04-25 22:05 ` Mohsen BANAN
2023-04-26 6:01 ` Eli Zaretskii
2023-04-27 1:44 ` Mohsen BANAN
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).