Translation

(itstool) path: sect2/para
Instead of using a proprietary macro language for configuration, Emacs uses a version of Lisp specially adapted for editors, known as Emacs Lisp. Working with Emacs Lisp can be quite helpful if you want to go on and learn something like Common Lisp. Emacs Lisp has many features of Common Lisp, although it is considerably smaller (and thus easier to master).
354/3590
Context English Persian State
You can compile and debug programs within Emacs.
شما می‌توانید در Emacs برنامه‌ها را همگردانی و اشکال‌زدایی کنید.
On a compilation error, you can jump to the offending line of source code.
به‌هنگام یک خطای همگردانی، می‌توانید به سطر مخرب در کد منبع بروید.
Friendly-ish front-end to the <command>info</command> program used for reading GNU hypertext documentation, including the documentation on Emacs itself.
جلودار دوستانه‌ای به برنامهٔ <command>info</command> برای مطالعهٔ مستندات ابرمتن GNU، از جمله مستندات خود Emacs.
Friendly front-end to <command>gdb</command>, allowing you to look at the source code as you step through your program.
جلودار دوستانه‌ای به برنامهٔ <command>gdb</command>، که به شما اجازه می‌دهد کد منبع را به‌هنگام ورود به برنامه ببینید.
And doubtless many more that have been overlooked.
و بی‌شک بسیاری دیگر که اشاره نشد.
Emacs can be installed on FreeBSD using the <package>editors/emacs</package> port.
Emacs می‌تواند بر روی FreeBSD از طریق پورت <package>editors/emacs</package> نصب شود.
Once it is installed, start it up and do <literal>C-h t</literal> to read an Emacs tutorial—that means hold down <keycap>control</keycap>, press <keycap>h</keycap>, let go of <keycap>control</keycap>, and then press <keycap>t</keycap>. (Alternatively, you can use the mouse to select <guimenuitem>Emacs Tutorial</guimenuitem> from the <guimenu>Help</guimenu> menu.)
هنگامی‌که نصب شد، آن را اجرا کنید و به‌منظور مطالعهٔ آموزه‌ای از آن، <literal>C-h t2</literal> را بزنید—یعنی <keycap>control</keycap> را نگه دارید، <keycap>h</keycap> را فشار دهید، <keycap>control</keycap> را رها کنید، و سپس <keycap>t</keycap> را فشار دهید. (همچنین، می‌توانید با موشواره گزینهٔ <guimenuitem>Emacs Tutorial</guimenuitem> را از فهرست <guimenu>Help</guimenu> انتخاب کنید.)
Although Emacs does have menus, it is well worth learning the key bindings, as it is much quicker when you are editing something to press a couple of keys than to try to find the mouse and then click on the right place. And, when you are talking to seasoned Emacs users, you will find they often casually throw around expressions like <quote><literal>M-x replace-s RET foo RET bar RET</literal></quote> so it is useful to know what they mean. And in any case, Emacs has far too many useful functions for them to all fit on the menu bars.
گرچه Emacs دارای فهرست انتخاب هست، اما یادگیری کلید‌های ترکیبی بسیار ارزشمند است، زیرا فشردن چند کلید در هنگام ویرایش بسیار سریع‌تر از تلاش برای یافتن موشواره و سپس تلیک بر روی مکان درست است. و، هنگامی‌که در حال صحبت با کاربران باتجربهٔ Emacs هستید، شما متوجه می‌شوید که آنها اغلب جملاتی چون <quote><literal>M-x replace-s RET foo RET bar RET</literal></quote> را به‌کار می‌برند، از این رو فهمیدن منظور آنها بسیار مفید خواهد بود. و در هر حال، Emacs کارکردهای فراوانی دارد که نمی‌توان همهٔ آنها را در فهرست جای داد.
Fortunately, it is quite easy to pick up the key-bindings, as they are displayed next to the menu item. My advice is to use the menu item for, say, opening a file until you understand how it works and feel confident with it, then try doing C-x C-f. When you are happy with that, move on to another menu command.
خوشبختانه، استفاده از ترکیب کلیدها بسیار ساده است، چنانکه در کنار فهرست اجزا نشان داده شده‌اند. پیشنهاد من به استفادهٔ فهرست اجزا است، بر فرض، برای باز کردن یک پرونده تا نحوه کارکردش را به درستی درک کنید و با آن احساس راحتی کنید، سپس C-x C-f را امتحان کنید. زمانی که راضی بودید، بروید به دستور دیگری از فهرست.
If you cannot remember what a particular combination of keys does, select <guimenuitem>Describe Key</guimenuitem> from the <guimenu>Help</guimenu> menu and type it in—Emacs will tell you what it does. You can also use the <guimenuitem>Command Apropos</guimenuitem> menu item to find out all the commands which contain a particular word in them, with the key binding next to it.
اگر به یاد نمی‌آورید که ترکیب خاصی از کلیدها چه انجام می‌دهد، <guimenuitem>Describe Key</guimenuitem> را از فهرست <guimenu>Help</guimenu> انتخاب کنید و آن را بنویسید - Emacs کاربرد آن را به شما می‌گوید. همچنین می‌توانید از فهرست <guimenuitem>Command Apropos</guimenuitem> تمام دستوراتی که دارای واژه‌ای خاص هستند را به‌همراه ترکیب کلید مربوط به آنها در کنارش پیدا کنید.
By the way, the expression above means hold down the <keysym>Meta</keysym> key, press <keysym>x</keysym>, release the <keysym>Meta</keysym> key, type <userinput>replace-s</userinput> (short for <literal>replace-string</literal>—another feature of Emacs is that you can abbreviate commands), press the <keysym>return</keysym> key, type <userinput>foo</userinput> (the string you want replaced), press the <keysym>return</keysym> key, type bar (the string you want to replace <literal>foo</literal> with) and press <keysym>return</keysym> again. Emacs will then do the search-and-replace operation you have just requested.
به هر حال، منظور از جملهٔ بالا این است که کلید <keysym>Meta</keysym> را نگه دارید، <keysym>x</keysym> را فشار دهید، کلید <keysym>Meta</keysym> را رها کنید، وارد کنید <userinput>replace-s</userinput> (کوتاه‌شدهٔ <literal>replace-string</literal>—از دیگر امکانات Emacs کوتاه‌کردن دستورات است)، کلید <keysym>return</keysym> را فشار دهید، وارد کنید <userinput>foo</userinput> (رشته‌ای را که می‌خواهید جایگزین کنید)، کلید <keysym>return</keysym> را فشار دهید، بنویسید bar (رشته‌ای که می‌خواهید <literal>foo</literal> را با آن جایگزین کنید) و دوباره <keysym>return</keysym> را فشار دهید. سپس Emacs عملیات جست‌و‌جو و جایگزین را که شما درخواست کرده‌اید انجام می‌دهد.
If you are wondering what on earth <keysym>Meta</keysym> is, it is a special key that many <trademark class="registered">UNIX</trademark> workstations have. Unfortunately, PC's do not have one, so it is usually <keycap>alt</keycap> (or if you are unlucky, the <keysym>escape</keysym> key).
اگر تعجب کرده‌اید که <keysym>Meta</keysym> چیست، این یک کلید ویژه است که بسیاری از ایستگاه‌کارهای <trademark class="registered">UNIX</trademark> آن را دارند. متأسفانه، رایانه‌های شخصی فاقد این کلید هستند، از این رو معمولاً کلید <keycap>alt</keycap> (یا اگر بدشانس باشید، کلید <keysym>escape</keysym>) معادل آن هست.
Oh, and to get out of Emacs, do <command>C-x C-c</command> (that means hold down the <keysym>control</keysym> key, press <keysym>x</keysym>, press <keysym>c</keysym> and release the <keysym>control</keysym> key). If you have any unsaved files open, Emacs will ask you if you want to save them. (Ignore the bit in the documentation where it says <command>C-z</command> is the usual way to leave Emacs—that leaves Emacs hanging around in the background, and is only really useful if you are on a system which does not have virtual terminals).
اوه، و برای خروج از Emacs، بزنید <command>C-x C-c</command> (یعنی کلید <keysym>control</keysym> را نگه دارید، <keysym>x</keysym> را فشار دهید، <keysym>c</keysym> را فشار دهید و در نهایت کلید <keysym>control</keysym> را رها کنید). اگر پروندهٔ باز و ذخیره‌نشده دارید، Emacs جهت ذخیرهٔ آنها از شما خواهد پرسید. (آن بخش از مستندات که ذکر کرده است <command>C-z</command> روش معمول برای خروج از Emacs است را نادیده بگیرید—این کار Emacs را در پس‌زمینه نگه می‌دارد، و تنها زمانی‌که شما بر روی سامانه‌ای فاقد پایانه‌های مجازی هستید کاربرد خواهد داشت).
Configuring Emacs
پیکربندی Emacs
Emacs does many wonderful things; some of them are built in, some of them need to be configured.
Emacs کارهای فوق‌العادهٔ بسیاری انجام می‌دهد؛ برخی ذاتی هستند، و برخی نیازمند پیکربندی.
Instead of using a proprietary macro language for configuration, Emacs uses a version of Lisp specially adapted for editors, known as Emacs Lisp. Working with Emacs Lisp can be quite helpful if you want to go on and learn something like Common Lisp. Emacs Lisp has many features of Common Lisp, although it is considerably smaller (and thus easier to master).
به‌جای استفاده از یک زبان ماکروی اختصاصی برای پیکربندی، Emacs از نسخهٔ مخصوصاً سازگار شده‌ای از Lisp برای ویرایشگرها، به نام Emacs Lisp استفاده می‌کند. کار با Emacs Lisp می‌تواند بسیار مفید باشد اگر شما می‌خواهید چیزی مانند Common Lisp را یاد بگیرید. Emacs Lisp بسیاری از امکانات Common Lisp را دارد، گرچه در مقیاس بسیار کوچکتر (و در نتیجه تسلط آسان‌تر).
The best way to learn Emacs Lisp is to download the <link xlink:href="ftp://ftp.gnu.org/old-gnu/emacs/elisp-manual-19-2.4.tar.gz">Emacs Tutorial</link>
بهترین راه برای یادگیری Emacs Lisp دریافت <link xlink:href="ftp://ftp.gnu.org/old-gnu/emacs/elisp-manual-19-2.4.tar.gz">آموزش Emacs</link> است
However, there is no need to actually know any Lisp to get started with configuring Emacs, as I have included a sample <filename>.emacs</filename>, which should be enough to get you started. Just copy it into your home directory and restart Emacs if it is already running; it will read the commands from the file and (hopefully) give you a useful basic setup.
گرچه، هیچ نیازی به دانستن Lisp برای پیکربندی Emacs نیست، چنانکه یک <filename>.emacs</filename> ساده ضمیمه شده است، و برای شروع باید کافی باشد. تنها کافیست آن را در مسیر خانهٔ خود کپی کنید و Emacs را اگر در حال اجرا است، مجدد راه‌اندازی کنید؛ Emacs دستورات را از روی پرونده می‌خواند و (امیدوارانه) به شما تنظیماتی کاربردی و ابتدایی می‌دهد.
A Sample <filename>.emacs</filename>
یک نمونهٔ <filename>.emacs</filename>
Unfortunately, there is far too much here to explain it in detail; however there are one or two points worth mentioning.
متأسفانه، موارد زیادی برای توضیح جزئیات وجود دارد؛ با این حال چند نکته قابل ذکر است.
Everything beginning with a <literal>;</literal> is a comment and is ignored by Emacs.
هر چه که با <literal>;</literal> شروع شود یک یادداشت است و توسط Emacs نادیده گرفته می‌شود.
In the first line, the <literal>-*- Emacs-Lisp -*-</literal> is so that we can edit <filename>.emacs</filename> itself within Emacs and get all the fancy features for editing Emacs Lisp. Emacs usually tries to guess this based on the filename, and may not get it right for <filename>.emacs</filename>.
در اولین خط، <literal>-*- Emacs-Lisp -*-</literal> هست تا ما بتوانیم خود <filename>.emacs</filename> را داخل Emacs ویرایش کنیم و تمام امکانات پر زرق و برق برای ویرایش Emacs Lisp را دریافت کنیم. به‌طور معمول Emacs سعی می‌کند تا این را بر اساس نام پرونده حدس بزند، و این احتمال هست که در مورد <filename>.emacs</filename> دچار خطا شود.
The <keysym>tab</keysym> key is bound to an indentation function in some modes, so when you press the tab key, it will indent the current line of code. If you want to put a <token>tab</token> character in whatever you are writing, hold the <keysym>control</keysym> key down while you are pressing the <keysym>tab</keysym> key.
کلید <keysym>tab</keysym> مقید به نوعی عملکرد ایجاد فرورفتگی در برخی حالات است، در نتیجه زمانی‌که شما کلید tab را فشار می‌دهید، آن خط جاری از کد را فرو‌ می‌برد. اگر قصد دارید تا یک نویسهٔ <token>tab</token> را در هر متنی که در حال نوشتنش هستید قرار دهید، زمانی‌که دارید کلید <keysym>tab</keysym> را فشار می‌دهید، کلید <keysym>control</keysym> را نگه دارید.
This file supports syntax highlighting for C, C++, Perl, Lisp and Scheme, by guessing the language from the filename.
این پرونده از تشخیص قواعد نحوی برای C، C++، Perl، Lisp و Scheme، با حدس از روی نام پرونده، پشتیبانی می‌کند.
Emacs already has a pre-defined function called <function>next-error</function>. In a compilation output window, this allows you to move from one compilation error to the next by doing <command>M-n</command>; we define a complementary function, <function>previous-error</function>, that allows you to go to a previous error by doing <command>M-p</command>. The nicest feature of all is that <command>C-c C-c</command> will open up the source file in which the error occurred and jump to the appropriate line.
Emacs به‌طور پیش تعریف شده تابعی به نام <function>next-error</function> دارد. در یک پنجرهٔ خروجی همگردانی، این به شما اجازه می‌دهد تا با وارد کردن <command>M-n</command> از یک خطای همگردانی به خطای دیگر بروید؛ ما یک تابع مکمل را تعریف می‌کنیم، <function>previous-error</function>، که به شما این امکان را می‌دهد تا با وارد کردن <command>M-p</command> به خطای پیشین بروید. بهترین ویژگی این است که <command>C-c C-c</command> پروندهٔ منبعی که خطا در آن رخ داده است را باز می‌کند و مستقیم سراغ خط مربوطه می‌رود.
We enable Emacs's ability to act as a server, so that if you are doing something outside Emacs and you want to edit a file, you can just type in
ما قابلیت Emacs برای عمل کردن به عنوان یک کارساز را فعال می‌کنیم، پس اگر بیرون Emacs کاری انجام می‌دهدید و می‌خواهید پرونده‌ای را ویرایش کنید، می‌توانید تنها بنویسید
<prompt>%</prompt> <userinput>emacsclient <replaceable>filename</replaceable></userinput>
<prompt>%</prompt> <userinput>emacsclient <replaceable>filename</replaceable></userinput>
Many Emacs users set their <envar>EDITOR</envar> environment to <literal>emacsclient</literal> so this happens every time they need to edit a file.
بسیاری از کاربران Emacs متغیر محیطی <envar>EDITOR</envar> را برابر با <literal>emacsclient</literal> قرار می‌دهند که هر زمان نیاز به ویرایش یک پرونده دارند این اتفاق بیفتد.
and then you can edit the file in your Emacs!<_:footnote-1/>
و سپس می‌توانید پرونده را در Emacs خود ویرایش کنید!<_:footnote-1/>
;; -*-Emacs-Lisp-*-

;; This file is designed to be re-evaled; use the variable first-time
;; to avoid any problems with this.
(defvar first-time t
"Flag signifying this is the first time that .emacs has been evaled")

;; Meta
(global-set-key "\M- " 'set-mark-command)
(global-set-key "\M-\C-h" 'backward-kill-word)
(global-set-key "\M-\C-r" 'query-replace)
(global-set-key "\M-r" 'replace-string)
(global-set-key "\M-g" 'goto-line)
(global-set-key "\M-h" 'help-command)

;; Function keys
(global-set-key [f1] 'manual-entry)
(global-set-key [f2] 'info)
(global-set-key [f3] 'repeat-complex-command)
(global-set-key [f4] 'advertised-undo)
(global-set-key [f5] 'eval-current-buffer)
(global-set-key [f6] 'buffer-menu)
(global-set-key [f7] 'other-window)
(global-set-key [f8] 'find-file)
(global-set-key [f9] 'save-buffer)
(global-set-key [f10] 'next-error)
(global-set-key [f11] 'compile)
(global-set-key [f12] 'grep)
(global-set-key [C-f1] 'compile)
(global-set-key [C-f2] 'grep)
(global-set-key [C-f3] 'next-error)
(global-set-key [C-f4] 'previous-error)
(global-set-key [C-f5] 'display-faces)
(global-set-key [C-f8] 'dired)
(global-set-key [C-f10] 'kill-compilation)

;; Keypad bindings
(global-set-key [up] "\C-p")
(global-set-key [down] "\C-n")
(global-set-key [left] "\C-b")
(global-set-key [right] "\C-f")
(global-set-key [home] "\C-a")
(global-set-key [end] "\C-e")
(global-set-key [prior] "\M-v")
(global-set-key [next] "\C-v")
(global-set-key [C-up] "\M-\C-b")
(global-set-key [C-down] "\M-\C-f")
(global-set-key [C-left] "\M-b")
(global-set-key [C-right] "\M-f")
(global-set-key [C-home] "\M-&lt;")
(global-set-key [C-end] "\M-&gt;")
(global-set-key [C-prior] "\M-&lt;")
(global-set-key [C-next] "\M-&gt;")

;; Mouse
(global-set-key [mouse-3] 'imenu)

;; Misc
(global-set-key [C-tab] "\C-q\t") ; Control tab quotes a tab.
(setq backup-by-copying-when-mismatch t)

;; Treat 'y' or &lt;CR&gt; as yes, 'n' as no.
(fset 'yes-or-no-p 'y-or-n-p)
(define-key query-replace-map [return] 'act)
(define-key query-replace-map [?\C-m] 'act)

;; Load packages
(require 'desktop)
(require 'tar-mode)

;; Pretty diff mode
(autoload 'ediff-buffers "ediff" "Intelligent Emacs interface to diff" t)
(autoload 'ediff-files "ediff" "Intelligent Emacs interface to diff" t)
(autoload 'ediff-files-remote "ediff"
"Intelligent Emacs interface to diff")

(if first-time
(setq auto-mode-alist
(append '(("\\.cpp$" . c++-mode)
("\\.hpp$" . c++-mode)
("\\.lsp$" . lisp-mode)
("\\.scm$" . scheme-mode)
("\\.pl$" . perl-mode)
) auto-mode-alist)))

;; Auto font lock mode
(defvar font-lock-auto-mode-list
(list 'c-mode 'c++-mode 'c++-c-mode 'emacs-lisp-mode 'lisp-mode 'perl-mode 'scheme-mode)
"List of modes to always start in font-lock-mode")

(defvar font-lock-mode-keyword-alist
'((c++-c-mode . c-font-lock-keywords)
(perl-mode . perl-font-lock-keywords))
"Associations between modes and keywords")

(defun font-lock-auto-mode-select ()
"Automatically select font-lock-mode if the current major mode is in font-lock-auto-mode-list"
(if (memq major-mode font-lock-auto-mode-list)
(progn
(font-lock-mode t))
)
)

(global-set-key [M-f1] 'font-lock-fontify-buffer)

;; New dabbrev stuff
;(require 'new-dabbrev)
(setq dabbrev-always-check-other-buffers t)
(setq dabbrev-abbrev-char-regexp "\\sw\\|\\s_")
(add-hook 'emacs-lisp-mode-hook
'(lambda ()
(set (make-local-variable 'dabbrev-case-fold-search) nil)
(set (make-local-variable 'dabbrev-case-replace) nil)))
(add-hook 'c-mode-hook
'(lambda ()
(set (make-local-variable 'dabbrev-case-fold-search) nil)
(set (make-local-variable 'dabbrev-case-replace) nil)))
(add-hook 'text-mode-hook
'(lambda ()
(set (make-local-variable 'dabbrev-case-fold-search) t)
(set (make-local-variable 'dabbrev-case-replace) t)))

;; C++ and C mode...
(defun my-c++-mode-hook ()
(setq tab-width 4)
(define-key c++-mode-map "\C-m" 'reindent-then-newline-and-indent)
(define-key c++-mode-map "\C-ce" 'c-comment-edit)
(setq c++-auto-hungry-initial-state 'none)
(setq c++-delete-function 'backward-delete-char)
(setq c++-tab-always-indent t)
(setq c-indent-level 4)
(setq c-continued-statement-offset 4)
(setq c++-empty-arglist-indent 4))

(defun my-c-mode-hook ()
(setq tab-width 4)
(define-key c-mode-map "\C-m" 'reindent-then-newline-and-indent)
(define-key c-mode-map "\C-ce" 'c-comment-edit)
(setq c-auto-hungry-initial-state 'none)
(setq c-delete-function 'backward-delete-char)
(setq c-tab-always-indent t)
;; BSD-ish indentation style
(setq c-indent-level 4)
(setq c-continued-statement-offset 4)
(setq c-brace-offset -4)
(setq c-argdecl-indent 0)
(setq c-label-offset -4))

;; Perl mode
(defun my-perl-mode-hook ()
(setq tab-width 4)
(define-key c++-mode-map "\C-m" 'reindent-then-newline-and-indent)
(setq perl-indent-level 4)
(setq perl-continued-statement-offset 4))

;; Scheme mode...
(defun my-scheme-mode-hook ()
(define-key scheme-mode-map "\C-m" 'reindent-then-newline-and-indent))

;; Emacs-Lisp mode...
(defun my-lisp-mode-hook ()
(define-key lisp-mode-map "\C-m" 'reindent-then-newline-and-indent)
(define-key lisp-mode-map "\C-i" 'lisp-indent-line)
(define-key lisp-mode-map "\C-j" 'eval-print-last-sexp))

;; Add all of the hooks...
(add-hook 'c++-mode-hook 'my-c++-mode-hook)
(add-hook 'c-mode-hook 'my-c-mode-hook)
(add-hook 'scheme-mode-hook 'my-scheme-mode-hook)
(add-hook 'emacs-lisp-mode-hook 'my-lisp-mode-hook)
(add-hook 'lisp-mode-hook 'my-lisp-mode-hook)
(add-hook 'perl-mode-hook 'my-perl-mode-hook)

;; Complement to next-error
(defun previous-error (n)
"Visit previous compilation error message and corresponding source code."
(interactive "p")
(next-error (- n)))

;; Misc...
(transient-mark-mode 1)
(setq mark-even-if-inactive t)
(setq visible-bell nil)
(setq next-line-add-newlines nil)
(setq compile-command "make")
(setq suggest-key-bindings nil)
(put 'eval-expression 'disabled nil)
(put 'narrow-to-region 'disabled nil)
(put 'set-goal-column 'disabled nil)
(if (&gt;= emacs-major-version 21)
(setq show-trailing-whitespace t))

;; Elisp archive searching
(autoload 'format-lisp-code-directory "lispdir" nil t)
(autoload 'lisp-dir-apropos "lispdir" nil t)
(autoload 'lisp-dir-retrieve "lispdir" nil t)
(autoload 'lisp-dir-verify "lispdir" nil t)

;; Font lock mode
(defun my-make-face (face color &amp;optional bold)
"Create a face from a color and optionally make it bold"
(make-face face)
(copy-face 'default face)
(set-face-foreground face color)
(if bold (make-face-bold face))
)

(if (eq window-system 'x)
(progn
(my-make-face 'blue "blue")
(my-make-face 'red "red")
(my-make-face 'green "dark green")
(setq font-lock-comment-face 'blue)
(setq font-lock-string-face 'bold)
(setq font-lock-type-face 'bold)
(setq font-lock-keyword-face 'bold)
(setq font-lock-function-name-face 'red)
(setq font-lock-doc-string-face 'green)
(add-hook 'find-file-hooks 'font-lock-auto-mode-select)

(setq baud-rate 1000000)
(global-set-key "\C-cmm" 'menu-bar-mode)
(global-set-key "\C-cms" 'scroll-bar-mode)
(global-set-key [backspace] 'backward-delete-char)
; (global-set-key [delete] 'delete-char)
(standard-display-european t)
(load-library "iso-transl")))

;; X11 or PC using direct screen writes
(if window-system
(progn
;; (global-set-key [M-f1] 'hilit-repaint-command)
;; (global-set-key [M-f2] [?\C-u M-f1])
(setq hilit-mode-enable-list
'(not text-mode c-mode c++-mode emacs-lisp-mode lisp-mode
scheme-mode)
hilit-auto-highlight nil
hilit-auto-rehighlight 'visible
hilit-inhibit-hooks nil
hilit-inhibit-rebinding t)
(require 'hilit19)
(require 'paren))
(setq baud-rate 2400) ; For slow serial connections
)

;; TTY type terminal
(if (and (not window-system)
(not (equal system-type 'ms-dos)))
(progn
(if first-time
(progn
(keyboard-translate ?\C-h ?\C-?)
(keyboard-translate ?\C-? ?\C-h)))))

;; Under UNIX
(if (not (equal system-type 'ms-dos))
(progn
(if first-time
(server-start))))

;; Add any face changes here
(add-hook 'term-setup-hook 'my-term-setup-hook)
(defun my-term-setup-hook ()
(if (eq window-system 'pc)
(progn
;; (set-face-background 'default "red")
)))

;; Restore the "desktop" - do this as late as possible
(if first-time
(progn
(desktop-load-default)
(desktop-read)))

;; Indicate that this file has been read at least once
(setq first-time nil)

;; No need to debug anything now

(setq debug-on-error nil)

;; All done
(message "All done, %s%s" (user-login-name) ".")
;; -*-Emacs-Lisp-*-

;; This file is designed to be re-evaled; use the variable first-time
;; to avoid any problems with this.
(defvar first-time t
"Flag signifying this is the first time that .emacs has been evaled")

;; Meta
(global-set-key "\M- " 'set-mark-command)
(global-set-key "\M-\C-h" 'backward-kill-word)
(global-set-key "\M-\C-r" 'query-replace)
(global-set-key "\M-r" 'replace-string)
(global-set-key "\M-g" 'goto-line)
(global-set-key "\M-h" 'help-command)

;; Function keys
(global-set-key [f1] 'manual-entry)
(global-set-key [f2] 'info)
(global-set-key [f3] 'repeat-complex-command)
(global-set-key [f4] 'advertised-undo)
(global-set-key [f5] 'eval-current-buffer)
(global-set-key [f6] 'buffer-menu)
(global-set-key [f7] 'other-window)
(global-set-key [f8] 'find-file)
(global-set-key [f9] 'save-buffer)
(global-set-key [f10] 'next-error)
(global-set-key [f11] 'compile)
(global-set-key [f12] 'grep)
(global-set-key [C-f1] 'compile)
(global-set-key [C-f2] 'grep)
(global-set-key [C-f3] 'next-error)
(global-set-key [C-f4] 'previous-error)
(global-set-key [C-f5] 'display-faces)
(global-set-key [C-f8] 'dired)
(global-set-key [C-f10] 'kill-compilation)

;; Keypad bindings
(global-set-key [up] "\C-p")
(global-set-key [down] "\C-n")
(global-set-key [left] "\C-b")
(global-set-key [right] "\C-f")
(global-set-key [home] "\C-a")
(global-set-key [end] "\C-e")
(global-set-key [prior] "\M-v")
(global-set-key [next] "\C-v")
(global-set-key [C-up] "\M-\C-b")
(global-set-key [C-down] "\M-\C-f")
(global-set-key [C-left] "\M-b")
(global-set-key [C-right] "\M-f")
(global-set-key [C-home] "\M-&lt;")
(global-set-key [C-end] "\M-&gt;")
(global-set-key [C-prior] "\M-&lt;")
(global-set-key [C-next] "\M-&gt;")

;; Mouse
(global-set-key [mouse-3] 'imenu)

;; Misc
(global-set-key [C-tab] "\C-q\t") ; Control tab quotes a tab.
(setq backup-by-copying-when-mismatch t)

;; Treat 'y' or &lt;CR&gt; as yes, 'n' as no.
(fset 'yes-or-no-p 'y-or-n-p)
(define-key query-replace-map [return] 'act)
(define-key query-replace-map [?\C-m] 'act)

;; Load packages
(require 'desktop)
(require 'tar-mode)

;; Pretty diff mode
(autoload 'ediff-buffers "ediff" "Intelligent Emacs interface to diff" t)
(autoload 'ediff-files "ediff" "Intelligent Emacs interface to diff" t)
(autoload 'ediff-files-remote "ediff"
"Intelligent Emacs interface to diff")

(if first-time
(setq auto-mode-alist
(append '(("\\.cpp$" . c++-mode)
("\\.hpp$" . c++-mode)
("\\.lsp$" . lisp-mode)
("\\.scm$" . scheme-mode)
("\\.pl$" . perl-mode)
) auto-mode-alist)))

;; Auto font lock mode
(defvar font-lock-auto-mode-list
(list 'c-mode 'c++-mode 'c++-c-mode 'emacs-lisp-mode 'lisp-mode 'perl-mode 'scheme-mode)
"List of modes to always start in font-lock-mode")

(defvar font-lock-mode-keyword-alist
'((c++-c-mode . c-font-lock-keywords)
(perl-mode . perl-font-lock-keywords))
"Associations between modes and keywords")

(defun font-lock-auto-mode-select ()
"Automatically select font-lock-mode if the current major mode is in font-lock-auto-mode-list"
(if (memq major-mode font-lock-auto-mode-list)
(progn
(font-lock-mode t))
)
)

(global-set-key [M-f1] 'font-lock-fontify-buffer)

;; New dabbrev stuff
;(require 'new-dabbrev)
(setq dabbrev-always-check-other-buffers t)
(setq dabbrev-abbrev-char-regexp "\\sw\\|\\s_")
(add-hook 'emacs-lisp-mode-hook
'(lambda ()
(set (make-local-variable 'dabbrev-case-fold-search) nil)
(set (make-local-variable 'dabbrev-case-replace) nil)))
(add-hook 'c-mode-hook
'(lambda ()
(set (make-local-variable 'dabbrev-case-fold-search) nil)
(set (make-local-variable 'dabbrev-case-replace) nil)))
(add-hook 'text-mode-hook
'(lambda ()
(set (make-local-variable 'dabbrev-case-fold-search) t)
(set (make-local-variable 'dabbrev-case-replace) t)))

;; C++ and C mode...
(defun my-c++-mode-hook ()
(setq tab-width 4)
(define-key c++-mode-map "\C-m" 'reindent-then-newline-and-indent)
(define-key c++-mode-map "\C-ce" 'c-comment-edit)
(setq c++-auto-hungry-initial-state 'none)
(setq c++-delete-function 'backward-delete-char)
(setq c++-tab-always-indent t)
(setq c-indent-level 4)
(setq c-continued-statement-offset 4)
(setq c++-empty-arglist-indent 4))

(defun my-c-mode-hook ()
(setq tab-width 4)
(define-key c-mode-map "\C-m" 'reindent-then-newline-and-indent)
(define-key c-mode-map "\C-ce" 'c-comment-edit)
(setq c-auto-hungry-initial-state 'none)
(setq c-delete-function 'backward-delete-char)
(setq c-tab-always-indent t)
;; BSD-ish indentation style
(setq c-indent-level 4)
(setq c-continued-statement-offset 4)
(setq c-brace-offset -4)
(setq c-argdecl-indent 0)
(setq c-label-offset -4))

;; Perl mode
(defun my-perl-mode-hook ()
(setq tab-width 4)
(define-key c++-mode-map "\C-m" 'reindent-then-newline-and-indent)
(setq perl-indent-level 4)
(setq perl-continued-statement-offset 4))

;; Scheme mode...
(defun my-scheme-mode-hook ()
(define-key scheme-mode-map "\C-m" 'reindent-then-newline-and-indent))

;; Emacs-Lisp mode...
(defun my-lisp-mode-hook ()
(define-key lisp-mode-map "\C-m" 'reindent-then-newline-and-indent)
(define-key lisp-mode-map "\C-i" 'lisp-indent-line)
(define-key lisp-mode-map "\C-j" 'eval-print-last-sexp))

;; Add all of the hooks...
(add-hook 'c++-mode-hook 'my-c++-mode-hook)
(add-hook 'c-mode-hook 'my-c-mode-hook)
(add-hook 'scheme-mode-hook 'my-scheme-mode-hook)
(add-hook 'emacs-lisp-mode-hook 'my-lisp-mode-hook)
(add-hook 'lisp-mode-hook 'my-lisp-mode-hook)
(add-hook 'perl-mode-hook 'my-perl-mode-hook)

;; Complement to next-error
(defun previous-error (n)
"Visit previous compilation error message and corresponding source code."
(interactive "p")
(next-error (- n)))

;; Misc...
(transient-mark-mode 1)
(setq mark-even-if-inactive t)
(setq visible-bell nil)
(setq next-line-add-newlines nil)
(setq compile-command "make")
(setq suggest-key-bindings nil)
(put 'eval-expression 'disabled nil)
(put 'narrow-to-region 'disabled nil)
(put 'set-goal-column 'disabled nil)
(if (&gt;= emacs-major-version 21)
(setq show-trailing-whitespace t))

;; Elisp archive searching
(autoload 'format-lisp-code-directory "lispdir" nil t)
(autoload 'lisp-dir-apropos "lispdir" nil t)
(autoload 'lisp-dir-retrieve "lispdir" nil t)
(autoload 'lisp-dir-verify "lispdir" nil t)

;; Font lock mode
(defun my-make-face (face color &amp;optional bold)
"Create a face from a color and optionally make it bold"
(make-face face)
(copy-face 'default face)
(set-face-foreground face color)
(if bold (make-face-bold face))
)

(if (eq window-system 'x)
(progn
(my-make-face 'blue "blue")
(my-make-face 'red "red")
(my-make-face 'green "dark green")
(setq font-lock-comment-face 'blue)
(setq font-lock-string-face 'bold)
(setq font-lock-type-face 'bold)
(setq font-lock-keyword-face 'bold)
(setq font-lock-function-name-face 'red)
(setq font-lock-doc-string-face 'green)
(add-hook 'find-file-hooks 'font-lock-auto-mode-select)

(setq baud-rate 1000000)
(global-set-key "\C-cmm" 'menu-bar-mode)
(global-set-key "\C-cms" 'scroll-bar-mode)
(global-set-key [backspace] 'backward-delete-char)
; (global-set-key [delete] 'delete-char)
(standard-display-european t)
(load-library "iso-transl")))

;; X11 or PC using direct screen writes
(if window-system
(progn
;; (global-set-key [M-f1] 'hilit-repaint-command)
;; (global-set-key [M-f2] [?\C-u M-f1])
(setq hilit-mode-enable-list
'(not text-mode c-mode c++-mode emacs-lisp-mode lisp-mode
scheme-mode)
hilit-auto-highlight nil
hilit-auto-rehighlight 'visible
hilit-inhibit-hooks nil
hilit-inhibit-rebinding t)
(require 'hilit19)
(require 'paren))
(setq baud-rate 2400) ; For slow serial connections
)

;; TTY type terminal
(if (and (not window-system)
(not (equal system-type 'ms-dos)))
(progn
(if first-time
(progn
(keyboard-translate ?\C-h ?\C-?)
(keyboard-translate ?\C-? ?\C-h)))))

;; Under UNIX
(if (not (equal system-type 'ms-dos))
(progn
(if first-time
(server-start))))

;; Add any face changes here
(add-hook 'term-setup-hook 'my-term-setup-hook)
(defun my-term-setup-hook ()
(if (eq window-system 'pc)
(progn
;; (set-face-background 'default "red")
)))

;; Restore the "desktop" - do this as late as possible
(if first-time
(progn
(desktop-load-default)
(desktop-read)))

;; Indicate that this file has been read at least once
(setq first-time nil)

;; No need to debug anything now

(setq debug-on-error nil)

;; All done
(message "All done, %s%s" (user-login-name) ".")
Extending the Range of Languages Emacs Understands
گسترش دامنهٔ زبان‌هایی که Emacs می‌فهمد

Loading…

Instead of using a proprietary macro language for configuration, Emacs uses a version of Lisp specially adapted for editors, known as Emacs Lisp. Working with Emacs Lisp can be quite helpful if you want to go on and learn something like Common Lisp. Emacs Lisp has many features of Common Lisp, although it is considerably smaller (and thus easier to master).
به‌جای استفاده از یک زبان ماکروی اختصاصی برای پیکربندی، Emacs از نسخهٔ مخصوصاً سازگار شده‌ای از Lisp برای ویرایشگرها، به نام Emacs Lisp استفاده می‌کند. کار با Emacs Lisp می‌تواند بسیار مفید باشد اگر شما می‌خواهید چیزی مانند Common Lisp را یاد بگیرید. Emacs Lisp بسیاری از امکانات Common Lisp را دارد، گرچه در مقیاس بسیار کوچکتر (و در نتیجه تسلط آسان‌تر).
a month ago
Browse all component changes

Glossary

English Persian
Common Development and Distribution License پروانهٔ توسعه و توزیع مشترک FreeBSD Doc

Source information

Source string comment
(itstool) path: sect2/para
Labels
No labels currently set.
Source string location
book.translate.xml:2428
Source string age
2 months ago
Translation file
books/fa/developers-handbook.po, string 425