aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--admin/ChangeLog5
-rw-r--r--admin/FOR-RELEASE29
-rw-r--r--admin/bzrmerge.el20
-rw-r--r--admin/grammars/python.wy3
-rw-r--r--admin/grammars/wisent-grammar.el4
-rw-r--r--doc/emacs/ChangeLog4
-rw-r--r--doc/emacs/anti.texi95
-rw-r--r--doc/lispintro/ChangeLog9
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi4
-rw-r--r--doc/lispref/ChangeLog51
-rw-r--r--doc/lispref/control.texi10
-rw-r--r--doc/lispref/elisp.texi2
-rw-r--r--doc/lispref/eval.texi24
-rw-r--r--doc/lispref/intro.texi23
-rw-r--r--doc/lispref/lists.texi163
-rw-r--r--doc/lispref/modes.texi12
-rw-r--r--doc/lispref/numbers.texi124
-rw-r--r--doc/lispref/objects.texi207
-rw-r--r--doc/lispref/sequences.texi120
-rw-r--r--doc/lispref/strings.texi13
-rw-r--r--doc/lispref/symbols.texi176
-rw-r--r--doc/lispref/variables.texi7
-rw-r--r--doc/lispref/windows.texi57
-rw-r--r--doc/misc/ChangeLog8
-rw-r--r--doc/misc/pcl-cvs.texi10
-rw-r--r--doc/misc/tramp.texi15
-rw-r--r--etc/ChangeLog13
-rw-r--r--etc/NEWS43
-rw-r--r--etc/NEWS.2314
-rw-r--r--etc/TODO6
-rw-r--r--etc/tutorials/TUTORIAL.bg692
-rw-r--r--etc/tutorials/TUTORIAL.de746
-rw-r--r--etc/tutorials/TUTORIAL.sl1323
-rw-r--r--etc/tutorials/TUTORIAL.translators8
-rw-r--r--lisp/ChangeLog144
-rw-r--r--lisp/calc/calc-units.el19
-rw-r--r--lisp/cedet/semantic/wisent/js-wy.el2
-rw-r--r--lisp/cedet/semantic/wisent/python-wy.el3
-rw-r--r--lisp/color.el5
-rw-r--r--lisp/dired.el46
-rw-r--r--lisp/eshell/em-unix.el2
-rw-r--r--lisp/eshell/esh-util.el2
-rw-r--r--lisp/files.el309
-rw-r--r--lisp/gnus/ChangeLog4
-rw-r--r--lisp/gnus/mm-decode.el2
-rw-r--r--lisp/help-macro.el9
-rw-r--r--lisp/international/mule-cmds.el5
-rw-r--r--lisp/international/mule.el3
-rw-r--r--lisp/isearch.el2
-rw-r--r--lisp/jka-cmpr-hook.el12
-rw-r--r--lisp/jka-compr.el9
-rw-r--r--lisp/net/tramp-cache.el11
-rw-r--r--lisp/net/tramp-sh.el24
-rw-r--r--lisp/net/tramp.el28
-rw-r--r--lisp/progmodes/cc-cmds.el7
-rw-r--r--lisp/progmodes/cc-engine.el143
-rw-r--r--lisp/progmodes/cc-fonts.el48
-rw-r--r--lisp/progmodes/cc-mode.el4
-rw-r--r--lisp/subr.el22
-rw-r--r--lisp/vc/pcvs.el16
-rw-r--r--lisp/vc/vc-dav.el5
-rw-r--r--lisp/windmove.el18
-rw-r--r--lisp/window.el78
-rw-r--r--src/ChangeLog22
-rw-r--r--src/character.c67
-rw-r--r--src/floatfns.c2
-rw-r--r--src/process.c10
-rw-r--r--src/window.c36
68 files changed, 2924 insertions, 2235 deletions
diff --git a/admin/ChangeLog b/admin/ChangeLog
index 597beb60ce2..2178df6caf0 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,8 @@
12012-01-19 Glenn Morris <rgm@gnu.org>
2
3 * bzrmerge.el (bzrmerge-missing): Allow a definitive "no" answer to the
4 "skip?" question, since there can be multiple such for any revision.
5
12012-01-14 Eli Zaretskii <eliz@gnu.org> 62012-01-14 Eli Zaretskii <eliz@gnu.org>
2 7
3 * FOR-RELEASE (Check the Emacs Tutorial): Mark TUTORIAL.he as 8 * FOR-RELEASE (Check the Emacs Tutorial): Mark TUTORIAL.he as
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index daf8e33d041..f704a3c9397 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -100,10 +100,10 @@ names of the people who have checked it.
100SECTION READERS 100SECTION READERS
101---------------------------------- 101----------------------------------
102TUTORIAL cyd 102TUTORIAL cyd
103TUTORIAL.bg 103TUTORIAL.bg ogi
104TUTORIAL.cn 104TUTORIAL.cn
105TUTORIAL.cs 105TUTORIAL.cs
106TUTORIAL.de 106TUTORIAL.de wl
107TUTORIAL.eo 107TUTORIAL.eo
108TUTORIAL.es 108TUTORIAL.es
109TUTORIAL.fr 109TUTORIAL.fr
@@ -117,7 +117,7 @@ TUTORIAL.pt_BR
117TUTORIAL.ro 117TUTORIAL.ro
118TUTORIAL.ru 118TUTORIAL.ru
119TUTORIAL.sk 119TUTORIAL.sk
120TUTORIAL.sl 120TUTORIAL.sl Primoz PETERLIN
121TUTORIAL.sv 121TUTORIAL.sv
122TUTORIAL.th 122TUTORIAL.th
123TUTORIAL.zh 123TUTORIAL.zh
@@ -187,25 +187,25 @@ backups.texi
187buffers.texi 187buffers.texi
188commands.texi 188commands.texi
189compile.texi 189compile.texi
190control.texi 190control.texi cyd
191customize.texi 191customize.texi
192debugging.texi 192debugging.texi
193display.texi 193display.texi
194edebug.texi 194edebug.texi
195elisp.texi 195elisp.texi
196errors.texi 196errors.texi
197eval.texi 197eval.texi cyd
198files.texi 198files.texi
199frames.texi 199frames.texi
200functions.texi 200functions.texi
201hash.texi 201hash.texi cyd
202help.texi 202help.texi
203hooks.texi 203hooks.texi
204index.texi 204index.texi
205internals.texi 205internals.texi
206intro.texi 206intro.texi cyd
207keymaps.texi 207keymaps.texi
208lists.texi 208lists.texi cyd
209loading.texi 209loading.texi
210locals.texi 210locals.texi
211macros.texi 211macros.texi
@@ -214,17 +214,17 @@ markers.texi
214minibuf.texi 214minibuf.texi
215modes.texi 215modes.texi
216nonascii.texi 216nonascii.texi
217numbers.texi 217numbers.texi cyd
218objects.texi 218objects.texi cyd
219os.texi 219os.texi
220package.texi 220package.texi
221positions.texi 221positions.texi
222processes.texi 222processes.texi
223searching.texi 223searching.texi
224sequences.texi 224sequences.texi cyd
225streams.texi 225streams.texi
226strings.texi 226strings.texi cyd
227symbols.texi 227symbols.texi cyd
228syntax.texi 228syntax.texi
229text.texi 229text.texi
230tips.texi 230tips.texi
@@ -232,8 +232,7 @@ variables.texi
232windows.texi 232windows.texi
233 233
234* PLANNED ADDITIONS 234* PLANNED ADDITIONS
235 235* pov-mode (probably not for Emacs-23: waiting for a Free POV-Ray).
236** pov-mode (probably not for Emacs-23: waiting for a Free POV-Ray).
237** gas-mode ? 236** gas-mode ?
238 237
239 238
diff --git a/admin/bzrmerge.el b/admin/bzrmerge.el
index 2efb17603cd..cb63d5b16ba 100644
--- a/admin/bzrmerge.el
+++ b/admin/bzrmerge.el
@@ -133,9 +133,23 @@ are both lists of revnos, in oldest-first order."
133 (setq str (substring str (match-end 0)))) 133 (setq str (substring str (match-end 0))))
134 (when (string-match "[.!;, ]+\\'" str) 134 (when (string-match "[.!;, ]+\\'" str)
135 (setq str (substring str 0 (match-beginning 0)))) 135 (setq str (substring str 0 (match-beginning 0))))
136 (if (save-excursion (y-or-n-p (concat str ": Skip? "))) 136 (let ((help-form "\
137 (setq skip t)))) 137Type `y' to skip this revision,
138 (if skip 138`N' to include it and go on to the next revision,
139`n' to not skip, but continue to search this log entry for skip regexps,
140`q' to quit merging."))
141 (case (save-excursion
142 (read-char-choice
143 (format "%s: Skip (y/n/N/q/%s)? " str
144 (key-description (vector help-char)))
145 '(?y ?n ?N ?q)))
146 (?y (setq skip t))
147 (?q (keyboard-quit))
148 ;; A single log entry can match skip-regexp multiple
149 ;; times. If you are sure you don't want to skip it,
150 ;; you don't want to be asked multiple times.
151 (?N (setq skip 'no))))))
152 (if (eq skip t)
139 (push revno skipped) 153 (push revno skipped)
140 (push revno revnos))))) 154 (push revno revnos)))))
141 (delete-region (point) (point-max))) 155 (delete-region (point) (point-max)))
diff --git a/admin/grammars/python.wy b/admin/grammars/python.wy
index 65f317145a0..f7808fd20b8 100644
--- a/admin/grammars/python.wy
+++ b/admin/grammars/python.wy
@@ -1,7 +1,8 @@
1;;; python.wy -- LALR grammar for Python 1;;; python.wy -- LALR grammar for Python
2 2
3;; Copyright (C) 2002-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2002-2012 Free Software Foundation, Inc.
4;; Copyright (C) 2001-2010 Python Software Foundation 4;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
5;; 2009, 2010 Python Software Foundation; All Rights Reserved
5 6
6;; Author: Richard Kim <ryk@dspwiz.com> 7;; Author: Richard Kim <ryk@dspwiz.com>
7;; Maintainer: Richard Kim <ryk@dspwiz.com> 8;; Maintainer: Richard Kim <ryk@dspwiz.com>
diff --git a/admin/grammars/wisent-grammar.el b/admin/grammars/wisent-grammar.el
index be014a56906..714b5211127 100644
--- a/admin/grammars/wisent-grammar.el
+++ b/admin/grammars/wisent-grammar.el
@@ -470,13 +470,13 @@ Menu items are appended to the common grammar menu.")
470 "srecode/srt-wy") 470 "srecode/srt-wy")
471 ("wisent-javascript-jv-wy.el" 471 ("wisent-javascript-jv-wy.el"
472 "semantic/wisent/js-wy" 472 "semantic/wisent/js-wy"
473 "Copyright (C) 1998-2011 Ecma International" 473 "Copyright (C) 1998-2011 Ecma International."
474 ,wisent-make-parsers--ecmascript-license) 474 ,wisent-make-parsers--ecmascript-license)
475 ("wisent-java-tags-wy.el" 475 ("wisent-java-tags-wy.el"
476 "semantic/wisent/javat-wy") 476 "semantic/wisent/javat-wy")
477 ("wisent-python-wy.el" 477 ("wisent-python-wy.el"
478 "semantic/wisent/python-wy" 478 "semantic/wisent/python-wy"
479 "Copyright (C) 2001-2010 Python Software Foundation" 479 "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software Foundation; All Rights Reserved."
480 ,wisent-make-parsers--python-license))) 480 ,wisent-make-parsers--python-license)))
481 481
482(defun wisent-make-parsers () 482(defun wisent-make-parsers ()
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 90a7f69ea72..9aa4899e591 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,7 @@
12012-01-23 Chong Yidong <cyd@gnu.org>
2
3 * anti.texi (Antinews): Add Emacs 23 antinews.
4
12012-01-16 Volker Sobek <reklov@live.com> (tiny change) 52012-01-16 Volker Sobek <reklov@live.com> (tiny change)
2 6
3 * programs.texi (Comment Commands): Typo (bug#10514). 7 * programs.texi (Comment Commands): Typo (bug#10514).
diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi
index d9f17c91f5e..7bc405e442e 100644
--- a/doc/emacs/anti.texi
+++ b/doc/emacs/anti.texi
@@ -13,7 +13,100 @@ greater simplicity that results from the absence of many Emacs
13 13
14@itemize @bullet 14@itemize @bullet
15@item 15@item
16FIXME 16Support for displaying and editing ``bidirectional'' text has been
17removed. Text is now always displayed on the screen in a single
18consistent direction---left to right---regardless of the underlying
19script. Similarly, @kbd{C-f} and @kbd{C-b} always move the text
20cursor to the right and left respectively. Also, @key{right} and
21@key{left} are now equivalent to @kbd{C-f} and @kbd{C-b}, as you might
22expect, rather than moving forward or backward based on the underlying
23``paragraph direction''.
24
25Users of ``right-to-left'' languages, like Arabic and Hebrew, may
26adapt by reading and/or editing text in left-to-right order.
27
28@item
29The Emacs Lisp package manager has been removed. Instead of using a
30``user interface'' (@kbd{M-x list-packages}), additional Lisp packages
31must now be installed by hand, which is the most flexible and
32``Lispy'' method anyway. Typically, this just involves editing your
33init file to add the package installation directory to the load path
34and defining some autoloads; see each package's commentary section
35and/or README file for details.
36
37@item
38The option @code{delete-active-region} has been deleted. When the
39region is active, typing @key{DEL} or @key{delete} no longer deletes
40the text in the region; it deletes a single character instead.
41
42@item
43We have reworked how Emacs handles the clipboard and the X primary
44selection. Commands for killing and yanking, like @kbd{C-w} and
45@kbd{C-y}, use the primary selection and not the clipboard, so you can
46use these commands without interfering with ``cutting'' or ``pasting''
47in other programs. The @samp{Cut}/@samp{Copy}/@samp{Paste} menu items
48are bound to separate clipboard commands, not to the same commands as
49@kbd{C-w}/@kbd{M-w}/@kbd{C-y}.
50
51Selecting text by dragging with the mouse now puts the text in the
52kill ring, in addition to the primary selection. But note that
53selecting an active region with @kbd{C-@key{SPC}} does @emph{not}
54alter the kill ring nor the primary selection, even though the text
55highlighting is visually identical.
56
57@item
58In Isearch, @kbd{C-y} and @kbd{M-y} are no longer bound to
59@code{isearch-yank-kill} and @code{isearch-yank-pop} respectively.
60Instead, @kbd{C-y} yanks the rest of the current line into the search
61string (@code{isearch-yank-line}), whereas @kbd{M-y} does
62@code{isearch-yank-kill}. The mismatch with the usual meanings of
63@kbd{C-y} and @kbd{M-y} is unintended.
64
65@item
66Various completion features have been simplified. The options
67@code{completion-cycle-threshold} and
68@code{completion-category-overrides} have been removed. Due to the
69latter removal, Emacs uses a single consistent scheme to generate
70completions, instead of using a separate scheme for (say) buffer name
71completion. Several major modes, such as Shell mode, now implement
72their own inline completion commands instead of using
73@code{completion-at-point}.
74
75@item
76We have removed various options for controlling how windows are used,
77e.g.@: @code{display-buffer-base-action}, @code{display-buffer-alist},
78@code{window-combination-limit}, and @code{window-combination-resize}.
79
80@item
81The command @kbd{M-x customize-themes} has been removed. Emacs no
82longer comes with pre-defined themes (you can write your own).
83
84@item
85Emacs no longer adapts various aspects of its display to GTK+
86settings, opting instead for a uniform toolkit-independent look. GTK+
87scroll bars are placed on the left, the same position as non-GTK+ X
88scroll bars. Emacs no longer refers to GTK+ to set the default
89@code{region} face, nor for drawing tooltips.
90
91@item
92Setting the option @code{delete-by-moving-to-trash} to a
93non-@code{nil} now causes all file deletions to use the system trash,
94even temporary files created by Lisp programs; furthermore, the
95@kbd{M-x delete-file} and @kbd{M-x delete-directory} commands no
96longer accept prefix arguments to force true deletion.
97
98@item
99On GNU/Linux and Unix, the default method for sending mail (as
100specified by @code{send-mail-function}) is to use the
101@command{sendmail} program. Emacs no longer asks for a delivery
102method the first time you try to send mail, trusting instead that the
103system is configured for mail delivery, as it ought to be.
104
105@item
106Several VC features have been removed, including the @kbd{C-x v +} and
107@kbd{C-x v m} commands for pulling and merging on distributed version
108control systems, and the ability to view inline log entries in the log
109buffers made by @kbd{C-x v L}.
17 110
18@item 111@item
19To keep up with decreasing computer memory capacity and disk space, many 112To keep up with decreasing computer memory capacity and disk space, many
diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog
index 0365a3ca174..2a1d018cc26 100644
--- a/doc/lispintro/ChangeLog
+++ b/doc/lispintro/ChangeLog
@@ -1,3 +1,12 @@
12012-01-19 Juanma Barranquero <lekktu@gmail.com>
2
3 * emacs-lisp-intro.texi (count-words-in-defun):
4 Add missing parenthesis (bug#10544).
5
62012-01-17 Glenn Morris <rgm@gnu.org>
7
8 * emacs-lisp-intro.texi (re-search-forward): Fix typo.
9
12011-11-24 Juanma Barranquero <lekktu@gmail.com> 102011-11-24 Juanma Barranquero <lekktu@gmail.com>
2 11
3 * makefile.w32-in: Update dependencies. 12 * makefile.w32-in: Update dependencies.
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index 0f9b6b906aa..d70ff9f3b44 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -12607,7 +12607,7 @@ four arguments:
12607@enumerate 12607@enumerate
12608@item 12608@item
12609The first argument is the regular expression that the function searches 12609The first argument is the regular expression that the function searches
12610for. The regular expression will be a string between quotations marks. 12610for. The regular expression will be a string between quotation marks.
12611 12611
12612@item 12612@item
12613The optional second argument limits how far the function will search; it is a 12613The optional second argument limits how far the function will search; it is a
@@ -15012,7 +15012,7 @@ expression for this (@pxref{Syntax}), so the loop is straightforward:
15012@group 15012@group
15013(while (and (< (point) end) 15013(while (and (< (point) end)
15014 (re-search-forward 15014 (re-search-forward
15015 "\\(\\w\\|\\s_\\)+[^ \t\n]*[ \t\n]*" end t) 15015 "\\(\\w\\|\\s_\\)+[^ \t\n]*[ \t\n]*" end t))
15016 (setq count (1+ count))) 15016 (setq count (1+ count)))
15017@end group 15017@end group
15018@end smallexample 15018@end smallexample
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 4b9531c0e6c..b66f82c5738 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,54 @@
12012-01-23 Chong Yidong <cyd@gnu.org>
2
3 * strings.texi (Text Comparison): Minor qualification.
4
5 * lists.texi (Cons Cells): Copyedits.
6 (List Elements): Mention push.
7 (List Variables): Mention pop.
8 (Rings): Move to sequences.texi.
9
10 * sequences.texi (Sequence Functions): Don't repeat the
11 introduction already given in the parent.
12 (Vectors): Copyedits.
13 (Rings): Move from lists.texi. Note that this is specific to the
14 ring package.
15
16 * symbols.texi (Definitions, Symbol Components): Mention variable
17 scoping issues.
18 (Plists and Alists): Copyedits.
19
20 * eval.texi (Intro Eval, Symbol Forms): Minor tweaks for
21 correctness with lexical scoping.
22 (Eval): Copyedits.
23
242012-01-21 Chong Yidong <cyd@gnu.org>
25
26 * intro.texi (A Sample Function Description): Special notation
27 used for macros too.
28
29 * objects.texi (Ctl-Char Syntax, Other Char Bits): Copyedits.
30 (Symbol Type): Add xref for keyword symbols.
31 (Sequence Type): Clarify differences between sequence types.
32 (Cons Cell Type): Add "linked list" index entry.
33 (Non-ASCII in Strings): Copyedits.
34 (Equality Predicates): Symbols with same name need not be eq.
35
36 * numbers.texi (Float Basics): Document isnan, copysign, frexp and
37 ldexp. Move float-e and float-pi to Math Functions node.
38
392012-01-21 Glenn Morris <rgm@gnu.org>
40
41 * modes.texi (Auto Major Mode):
42 * variables.texi (File Local Variables):
43 Mention inhibit-local-variables-regexps.
44
452012-01-19 Martin Rudalics <rudalics@gmx.at>
46
47 * windows.texi (Window Configurations): Rewrite references to
48 persistent window parameters.
49 (Window Parameters): Fix description of persistent window
50 parameters.
51
12012-01-16 Juanma Barranquero <lekktu@gmail.com> 522012-01-16 Juanma Barranquero <lekktu@gmail.com>
2 53
3 * windows.texi (Window Parameters): Use @pxref. 54 * windows.texi (Window Parameters): Use @pxref.
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index e74f3e198bf..0511f21007d 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -8,11 +8,11 @@
8@cindex special forms for control structures 8@cindex special forms for control structures
9@cindex control structures 9@cindex control structures
10 10
11 A Lisp program consists of expressions or @dfn{forms} (@pxref{Forms}). 11 A Lisp program consists of a set of @dfn{expressions}, or
12We control the order of execution of these forms by enclosing them in 12@dfn{forms} (@pxref{Forms}). We control the order of execution of
13@dfn{control structures}. Control structures are special forms which 13these forms by enclosing them in @dfn{control structures}. Control
14control when, whether, or how many times to execute the forms they 14structures are special forms which control when, whether, or how many
15contain. 15times to execute the forms they contain.
16 16
17@cindex textual order 17@cindex textual order
18 The simplest order of execution is sequential execution: first form 18 The simplest order of execution is sequential execution: first form
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 0b8d972c1d5..1555b98e7fb 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -326,7 +326,6 @@ Lists
326* Modifying Lists:: Storing new pieces into an existing list. 326* Modifying Lists:: Storing new pieces into an existing list.
327* Sets And Lists:: A list can represent a finite mathematical set. 327* Sets And Lists:: A list can represent a finite mathematical set.
328* Association Lists:: A list can represent a finite relation or mapping. 328* Association Lists:: A list can represent a finite relation or mapping.
329* Rings:: Managing a fixed-size ring of objects.
330 329
331Modifying Existing List Structure 330Modifying Existing List Structure
332 331
@@ -344,6 +343,7 @@ Sequences, Arrays, and Vectors
344* Vector Functions:: Functions specifically for vectors. 343* Vector Functions:: Functions specifically for vectors.
345* Char-Tables:: How to work with char-tables. 344* Char-Tables:: How to work with char-tables.
346* Bool-Vectors:: How to work with bool-vectors. 345* Bool-Vectors:: How to work with bool-vectors.
346* Rings:: Managing a fixed-size ring of objects.
347 347
348Hash Tables 348Hash Tables
349 349
diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi
index adb4841a82d..fc18e503543 100644
--- a/doc/lispref/eval.texi
+++ b/doc/lispref/eval.texi
@@ -64,8 +64,8 @@ evaluate a @dfn{function call} form such as @code{(car x)}, Emacs
64first evaluates the argument (the subform @code{x}). After evaluating 64first evaluates the argument (the subform @code{x}). After evaluating
65the argument, Emacs @dfn{executes} the function (@code{car}), and if 65the argument, Emacs @dfn{executes} the function (@code{car}), and if
66the function is written in Lisp, execution works by evaluating the 66the function is written in Lisp, execution works by evaluating the
67@dfn{body} of the function. (In this example, however, @code{car} is 67@dfn{body} of the function (in this example, however, @code{car} is
68not a Lisp function; it is a primitive function implemented in C.) 68not a Lisp function; it is a primitive function implemented in C).
69@xref{Functions}, for more information about functions and function 69@xref{Functions}, for more information about functions and function
70calls. 70calls.
71 71
@@ -77,9 +77,8 @@ variables (@pxref{Variables}).@footnote{This definition of
77that can affect the result of a program.} Whenever a form refers to a 77that can affect the result of a program.} Whenever a form refers to a
78variable without creating a new binding for it, the variable evaluates 78variable without creating a new binding for it, the variable evaluates
79to the value given by the current environment. Evaluating a form may 79to the value given by the current environment. Evaluating a form may
80create a new environment for recursive evaluation, by binding 80also temporarily alter the environment by binding variables
81variables (@pxref{Local Variables}). Such environments are temporary, 81(@pxref{Local Variables}).
82and vanish when the evaluation of the form is complete.
83 82
84@cindex side effect 83@cindex side effect
85 Evaluating a form may also make changes that persist; these changes 84 Evaluating a form may also make changes that persist; these changes
@@ -177,9 +176,9 @@ program. Here is an example:
177@cindex symbol evaluation 176@cindex symbol evaluation
178 177
179 When a symbol is evaluated, it is treated as a variable. The result 178 When a symbol is evaluated, it is treated as a variable. The result
180is the variable's value, if it has one. If it has none (if its value 179is the variable's value, if it has one. If the symbol has no value as
181cell is void), an error is signaled. For more information on the use of 180a variable, the Lisp interpreter signals an error. For more
182variables, see @ref{Variables}. 181information on the use of variables, see @ref{Variables}.
183 182
184 In the following example, we set the value of a symbol with 183 In the following example, we set the value of a symbol with
185@code{setq}. Then we evaluate the symbol, and get back the value that 184@code{setq}. Then we evaluate the symbol, and get back the value that
@@ -602,12 +601,13 @@ functions provides the ability to pass information to them as
602arguments. 601arguments.
603 602
604@defun eval form &optional lexical 603@defun eval form &optional lexical
605This is the basic function evaluating an expression. It evaluates 604This is the basic function for evaluating an expression. It evaluates
606@var{form} in the current environment and returns the result. How the 605@var{form} in the current environment and returns the result. How the
607evaluation proceeds depends on the type of the object (@pxref{Forms}). 606evaluation proceeds depends on the type of the object (@pxref{Forms}).
608@var{lexical} if non-nil means to evaluate @var{form} using lexical scoping 607
609rules (@pxref{Lexical Binding}) instead of the default dynamic scoping used 608The argument @var{lexical}, if non-@code{nil}, means to evaluate
610historically in Emacs Lisp. 609@var{form} using lexical scoping rules for variables, instead of the
610default dynamic scoping rules. @xref{Lexical Binding}.
611 611
612Since @code{eval} is a function, the argument expression that appears 612Since @code{eval} is a function, the argument expression that appears
613in a call to @code{eval} is evaluated twice: once as preparation before 613in a call to @code{eval} is evaluated twice: once as preparation before
diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi
index 64c856d3ed4..a68bcfa0fe7 100644
--- a/doc/lispref/intro.texi
+++ b/doc/lispref/intro.texi
@@ -162,7 +162,7 @@ being described, are formatted like this: @var{first-number}.
162 162
163@cindex @code{nil} 163@cindex @code{nil}
164@cindex false 164@cindex false
165 In Lisp, the symbol @code{nil} has three separate meanings: it 165 In Emacs Lisp, the symbol @code{nil} has three separate meanings: it
166is a symbol with the name @samp{nil}; it is the logical truth value 166is a symbol with the name @samp{nil}; it is the logical truth value
167@var{false}; and it is the empty list---the list of zero elements. 167@var{false}; and it is the empty list---the list of zero elements.
168When used as a variable, @code{nil} always has the value @code{nil}. 168When used as a variable, @code{nil} always has the value @code{nil}.
@@ -396,13 +396,14 @@ Form', respectively. Commands are simply functions that may be called
396interactively; macros process their arguments differently from functions 396interactively; macros process their arguments differently from functions
397(the arguments are not evaluated), but are presented the same way. 397(the arguments are not evaluated), but are presented the same way.
398 398
399 Special form descriptions use a more complex notation to specify 399 The descriptions of macros and special forms use a more complex
400optional and repeated arguments because they can break the argument 400notation to specify optional and repeated arguments, because they can
401list down into separate arguments in more complicated ways. 401break the argument list down into separate arguments in more
402@samp{@r{[}@var{optional-arg}@r{]}} means that @var{optional-arg} is 402complicated ways. @samp{@r{[}@var{optional-arg}@r{]}} means that
403optional and @samp{@var{repeated-args}@dots{}} stands for zero or more 403@var{optional-arg} is optional and @samp{@var{repeated-args}@dots{}}
404arguments. Parentheses are used when several arguments are grouped into 404stands for zero or more arguments. Parentheses are used when several
405additional levels of list structure. Here is an example: 405arguments are grouped into additional levels of list structure. Here
406is an example:
406 407
407@defspec count-loop (@var{var} [@var{from} @var{to} [@var{inc}]]) @var{body}@dots{} 408@defspec count-loop (@var{var} [@var{from} @var{to} [@var{inc}]]) @var{body}@dots{}
408This imaginary special form implements a loop that executes the 409This imaginary special form implements a loop that executes the
@@ -485,9 +486,9 @@ giving a prefix argument makes @var{here} non-@code{nil}.
485@end deffn 486@end deffn
486 487
487@defvar emacs-build-time 488@defvar emacs-build-time
488The value of this variable indicates the time at which Emacs was built 489The value of this variable indicates the time at which Emacs was
489at the local site. It is a list of three integers, like the value 490built. It is a list of three integers, like the value of
490of @code{current-time} (@pxref{Time of Day}). 491@code{current-time} (@pxref{Time of Day}).
491 492
492@example 493@example
493@group 494@group
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index eb9ddf58603..c8433c79b54 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -23,7 +23,6 @@ the whole list.
23* Modifying Lists:: Storing new pieces into an existing list. 23* Modifying Lists:: Storing new pieces into an existing list.
24* Sets And Lists:: A list can represent a finite mathematical set. 24* Sets And Lists:: A list can represent a finite mathematical set.
25* Association Lists:: A list can represent a finite relation or mapping. 25* Association Lists:: A list can represent a finite relation or mapping.
26* Rings:: Managing a fixed-size ring of objects.
27@end menu 26@end menu
28 27
29@node Cons Cells 28@node Cons Cells
@@ -31,61 +30,56 @@ the whole list.
31@cindex lists and cons cells 30@cindex lists and cons cells
32 31
33 Lists in Lisp are not a primitive data type; they are built up from 32 Lists in Lisp are not a primitive data type; they are built up from
34@dfn{cons cells}. A cons cell is a data object that represents an 33@dfn{cons cells} (@pxref{Cons Cell Type}). A cons cell is a data
35ordered pair. That is, it has two slots, and each slot @dfn{holds}, or 34object that represents an ordered pair. That is, it has two slots,
36@dfn{refers to}, some Lisp object. One slot is known as the @sc{car}, 35and each slot @dfn{holds}, or @dfn{refers to}, some Lisp object. One
37and the other is known as the @sc{cdr}. (These names are traditional; 36slot is known as the @sc{car}, and the other is known as the @sc{cdr}.
38see @ref{Cons Cell Type}.) @sc{cdr} is pronounced ``could-er.'' 37(These names are traditional; see @ref{Cons Cell Type}.) @sc{cdr} is
38pronounced ``could-er.''
39 39
40 We say that ``the @sc{car} of this cons cell is'' whatever object 40 We say that ``the @sc{car} of this cons cell is'' whatever object
41its @sc{car} slot currently holds, and likewise for the @sc{cdr}. 41its @sc{car} slot currently holds, and likewise for the @sc{cdr}.
42 42
43 A list is a series of cons cells ``chained together,'' so that each 43 A list is a series of cons cells ``chained together,'' so that each
44cell refers to the next one. There is one cons cell for each element of 44cell refers to the next one. There is one cons cell for each element
45the list. By convention, the @sc{car}s of the cons cells hold the 45of the list. By convention, the @sc{car}s of the cons cells hold the
46elements of the list, and the @sc{cdr}s are used to chain the list: the 46elements of the list, and the @sc{cdr}s are used to chain the list
47@sc{cdr} slot of each cons cell refers to the following cons cell. The 47(this asymmetry between @sc{car} and @sc{cdr} is entirely a matter of
48@sc{cdr} of the last cons cell is @code{nil}. This asymmetry between 48convention; at the level of cons cells, the @sc{car} and @sc{cdr}
49the @sc{car} and the @sc{cdr} is entirely a matter of convention; at the 49slots have similar properties). Hence, the @sc{cdr} slot of each cons
50level of cons cells, the @sc{car} and @sc{cdr} slots have the same 50cell in a list refers to the following cons cell.
51characteristics.
52 51
53@cindex true list 52@cindex true list
54 Since @code{nil} is the conventional value to put in the @sc{cdr} of 53 Also by convention, the @sc{cdr} of the last cons cell in a list is
55the last cons cell in the list, we call that case a @dfn{true list}. 54@code{nil}. We call such a @code{nil}-terminated structure a
56 55@dfn{true list}. In Emacs Lisp, the symbol @code{nil} is both a
57 In Lisp, we consider the symbol @code{nil} a list as well as a 56symbol and a list with no elements. For convenience, the symbol
58symbol; it is the list with no elements. For convenience, the symbol
59@code{nil} is considered to have @code{nil} as its @sc{cdr} (and also 57@code{nil} is considered to have @code{nil} as its @sc{cdr} (and also
60as its @sc{car}). Therefore, the @sc{cdr} of a true list is always a 58as its @sc{car}).
61true list. 59
60 Hence, the @sc{cdr} of a true list is always a true list. The
61@sc{cdr} of a nonempty true list is a true list containing all the
62elements except the first.
62 63
63@cindex dotted list 64@cindex dotted list
64@cindex circular list 65@cindex circular list
65 If the @sc{cdr} of a list's last cons cell is some other value, 66 If the @sc{cdr} of a list's last cons cell is some value other than
66neither @code{nil} nor another cons cell, we call the structure a 67@code{nil}, we call the structure a @dfn{dotted list}, since its
67@dfn{dotted list}, since its printed representation would use 68printed representation would use dotted pair notation (@pxref{Dotted
68@samp{.}. There is one other possibility: some cons cell's @sc{cdr} 69Pair Notation}). There is one other possibility: some cons cell's
69could point to one of the previous cons cells in the list. We call 70@sc{cdr} could point to one of the previous cons cells in the list.
70that structure a @dfn{circular list}. 71We call that structure a @dfn{circular list}.
71 72
72 For some purposes, it does not matter whether a list is true, 73 For some purposes, it does not matter whether a list is true,
73circular or dotted. If the program doesn't look far enough down the 74circular or dotted. If a program doesn't look far enough down the
74list to see the @sc{cdr} of the final cons cell, it won't care. 75list to see the @sc{cdr} of the final cons cell, it won't care.
75However, some functions that operate on lists demand true lists and 76However, some functions that operate on lists demand true lists and
76signal errors if given a dotted list. Most functions that try to find 77signal errors if given a dotted list. Most functions that try to find
77the end of a list enter infinite loops if given a circular list. 78the end of a list enter infinite loops if given a circular list.
78 79
79@cindex list structure 80@cindex list structure
80 Because most cons cells are used as part of lists, the phrase 81 Because most cons cells are used as part of lists, we refer to any
81@dfn{list structure} has come to mean any structure made out of cons 82structure made out of cons cells as a @dfn{list structure}.
82cells.
83
84 The @sc{cdr} of any nonempty true list @var{l} is a list containing all the
85elements of @var{l} except the first.
86
87 @xref{Cons Cell Type}, for the read and print syntax of cons cells and
88lists, and for ``box and arrow'' illustrations of lists.
89 83
90@node List-related Predicates 84@node List-related Predicates
91@section Predicates on Lists 85@section Predicates on Lists
@@ -257,6 +251,10 @@ x
257x 251x
258 @result{} (b c) 252 @result{} (b c)
259@end example 253@end example
254
255@noindent
256For the @code{pop} macro, which removes an element from a list,
257@xref{List Variables}.
260@end defmac 258@end defmac
261 259
262@defun nth n list 260@defun nth n list
@@ -695,6 +693,10 @@ This macro provides an alternative way to write
695l 693l
696 @result{} (c a b) 694 @result{} (c a b)
697@end example 695@end example
696
697@noindent
698For the @code{pop} macro, which removes the first element from a list,
699@xref{List Elements}.
698@end defmac 700@end defmac
699 701
700 Two functions modify lists that are the values of variables. 702 Two functions modify lists that are the values of variables.
@@ -1800,90 +1802,3 @@ often modifies the original list structure of @var{alist}.
1800compares the @sc{cdr} of each @var{alist} association instead of the 1802compares the @sc{cdr} of each @var{alist} association instead of the
1801@sc{car}. 1803@sc{car}.
1802@end defun 1804@end defun
1803
1804@node Rings
1805@section Managing a Fixed-Size Ring of Objects
1806
1807@cindex ring data structure
1808 This section describes functions for operating on rings. A
1809@dfn{ring} is a fixed-size data structure that supports insertion,
1810deletion, rotation, and modulo-indexed reference and traversal.
1811
1812@defun make-ring size
1813This returns a new ring capable of holding @var{size} objects.
1814@var{size} should be an integer.
1815@end defun
1816
1817@defun ring-p object
1818This returns @code{t} if @var{object} is a ring, @code{nil} otherwise.
1819@end defun
1820
1821@defun ring-size ring
1822This returns the maximum capacity of the @var{ring}.
1823@end defun
1824
1825@defun ring-length ring
1826This returns the number of objects that @var{ring} currently contains.
1827The value will never exceed that returned by @code{ring-size}.
1828@end defun
1829
1830@defun ring-elements ring
1831This returns a list of the objects in @var{ring}, in order, newest first.
1832@end defun
1833
1834@defun ring-copy ring
1835This returns a new ring which is a copy of @var{ring}.
1836The new ring contains the same (@code{eq}) objects as @var{ring}.
1837@end defun
1838
1839@defun ring-empty-p ring
1840This returns @code{t} if @var{ring} is empty, @code{nil} otherwise.
1841@end defun
1842
1843 The newest element in the ring always has index 0. Higher indices
1844correspond to older elements. Indices are computed modulo the ring
1845length. Index @minus{}1 corresponds to the oldest element, @minus{}2
1846to the next-oldest, and so forth.
1847
1848@defun ring-ref ring index
1849This returns the object in @var{ring} found at index @var{index}.
1850@var{index} may be negative or greater than the ring length. If
1851@var{ring} is empty, @code{ring-ref} signals an error.
1852@end defun
1853
1854@defun ring-insert ring object
1855This inserts @var{object} into @var{ring}, making it the newest
1856element, and returns @var{object}.
1857
1858If the ring is full, insertion removes the oldest element to
1859make room for the new element.
1860@end defun
1861
1862@defun ring-remove ring &optional index
1863Remove an object from @var{ring}, and return that object. The
1864argument @var{index} specifies which item to remove; if it is
1865@code{nil}, that means to remove the oldest item. If @var{ring} is
1866empty, @code{ring-remove} signals an error.
1867@end defun
1868
1869@defun ring-insert-at-beginning ring object
1870This inserts @var{object} into @var{ring}, treating it as the oldest
1871element. The return value is not significant.
1872
1873If the ring is full, this function removes the newest element to make
1874room for the inserted element.
1875@end defun
1876
1877@cindex fifo data structure
1878 If you are careful not to exceed the ring size, you can
1879use the ring as a first-in-first-out queue. For example:
1880
1881@lisp
1882(let ((fifo (make-ring 5)))
1883 (mapc (lambda (obj) (ring-insert fifo obj))
1884 '(0 one "two"))
1885 (list (ring-remove fifo) t
1886 (ring-remove fifo) t
1887 (ring-remove fifo)))
1888 @result{} (0 t one t "two")
1889@end lisp
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 5d09b79748e..b3aac231d5b 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -588,6 +588,18 @@ Chosen, emacs, The GNU Emacs Manual}. If @code{enable-local-variables}
588is @code{nil}, @code{set-auto-mode} does not check the @w{@samp{-*-}} 588is @code{nil}, @code{set-auto-mode} does not check the @w{@samp{-*-}}
589line, or near the end of the file, for any mode tag. 589line, or near the end of the file, for any mode tag.
590 590
591@vindex inhibit-local-variables-regexps
592There are some file types where it is not appropriate to scan the file
593contents for a mode specifier. For example, a tar archive may happen to
594contain, near the end of the file, a member file that has a local
595variables section specifying a mode for that particular file. This
596should not be applied to the containing tar file. Similarly, a tiff
597image file might just happen to contain a first line that seems to
598match the @w{@samp{-*-}} pattern. For these reasons, both these file
599extensions are members of the list @var{inhibit-local-variables-regexps}.
600Add patterns to this list to prevent Emacs searching them for local
601variables of any kind (not just mode specifiers).
602
591If @var{keep-mode-if-same} is non-@code{nil}, this function does not 603If @var{keep-mode-if-same} is non-@code{nil}, this function does not
592call the mode command if the buffer is already in the proper major 604call the mode command if the buffer is already in the proper major
593mode. For instance, @code{set-visited-file-name} sets this to 605mode. For instance, @code{set-visited-file-name} sets this to
diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi
index 6768ecece9c..77db0f86c26 100644
--- a/doc/lispref/numbers.texi
+++ b/doc/lispref/numbers.texi
@@ -168,34 +168,37 @@ character codepoint.
168@node Float Basics 168@node Float Basics
169@section Floating Point Basics 169@section Floating Point Basics
170 170
171@cindex @acronym{IEEE} floating point
171 Floating point numbers are useful for representing numbers that are 172 Floating point numbers are useful for representing numbers that are
172not integral. The precise range of floating point numbers is 173not integral. The precise range of floating point numbers is
173machine-specific; it is the same as the range of the C data type 174machine-specific; it is the same as the range of the C data type
174@code{double} on the machine you are using. 175@code{double} on the machine you are using. Emacs uses the
176@acronym{IEEE} floating point standard where possible (the standard is
177supported by most modern computers).
175 178
176 The read-syntax for floating point numbers requires either a decimal 179 The read syntax for floating point numbers requires either a decimal
177point (with at least one digit following), an exponent, or both. For 180point (with at least one digit following), an exponent, or both. For
178example, @samp{1500.0}, @samp{15e2}, @samp{15.0e2}, @samp{1.5e3}, and 181example, @samp{1500.0}, @samp{15e2}, @samp{15.0e2}, @samp{1.5e3}, and
179@samp{.15e4} are five ways of writing a floating point number whose 182@samp{.15e4} are five ways of writing a floating point number whose
180value is 1500. They are all equivalent. You can also use a minus sign 183value is 1500. They are all equivalent. You can also use a minus
181to write negative floating point numbers, as in @samp{-1.0}. 184sign to write negative floating point numbers, as in @samp{-1.0}.
185
186 Emacs Lisp treats @code{-0.0} as equal to ordinary zero (with
187respect to @code{equal} and @code{=}), even though the two are
188distinguishable in the @acronym{IEEE} floating point standard.
182 189
183@cindex @acronym{IEEE} floating point
184@cindex positive infinity 190@cindex positive infinity
185@cindex negative infinity 191@cindex negative infinity
186@cindex infinity 192@cindex infinity
187@cindex NaN 193@cindex NaN
188 Most modern computers support the @acronym{IEEE} floating point standard, 194 The @acronym{IEEE} floating point standard supports positive
189which provides for positive infinity and negative infinity as floating point 195infinity and negative infinity as floating point values. It also
190values. It also provides for a class of values called NaN or 196provides for a class of values called NaN or ``not-a-number'';
191``not-a-number''; numerical functions return such values in cases where 197numerical functions return such values in cases where there is no
192there is no correct answer. For example, @code{(/ 0.0 0.0)} returns a 198correct answer. For example, @code{(/ 0.0 0.0)} returns a NaN. (NaN
193NaN. For practical purposes, there's no significant difference between 199values can also carry a sign, but for practical purposes there's no
194different NaN values in Emacs Lisp, and there's no rule for precisely 200significant difference between different NaN values in Emacs Lisp.)
195which NaN value should be used in a particular case, so Emacs Lisp 201Here are the read syntaxes for these special floating point values:
196doesn't try to distinguish them (but it does report the sign, if you
197print it). Here are the read syntaxes for these special floating
198point values:
199 202
200@table @asis 203@table @asis
201@item positive infinity 204@item positive infinity
@@ -206,16 +209,37 @@ point values:
206@samp{0.0e+NaN} or @samp{-0.0e+NaN}. 209@samp{0.0e+NaN} or @samp{-0.0e+NaN}.
207@end table 210@end table
208 211
209 To test whether a floating point value is a NaN, compare it with 212@defun isnan number
210itself using @code{=}. That returns @code{nil} for a NaN, and 213This predicate tests whether its argument is NaN, and returns @code{t}
211@code{t} for any other floating point value. 214if so, @code{nil} otherwise. The argument must be a number.
215@end defun
216
217 The following functions are specialized for handling floating point
218numbers:
219
220@defun frexp x
221This function returns a cons cell @code{(@var{sig} . @var{exp})},
222where @var{sig} and @var{exp} are respectively the significand and
223exponent of the floating point number @var{x}:
224
225@smallexample
226@var{x} = @var{sig} * 2^@var{exp}
227@end smallexample
228
229@var{sig} is a floating point number between 0.5 (inclusive) and 1.0
230(exclusive). If @var{x} is zero, the return value is @code{(0 . 0)}.
231@end defun
212 232
213 The value @code{-0.0} is distinguishable from ordinary zero in 233@defun ldexp sig &optional exp
214@acronym{IEEE} floating point, but Emacs Lisp @code{equal} and 234This function returns a floating point number corresponding to the
215@code{=} consider them equal values. 235significand @var{sig} and exponent @var{exp}.
236@end defun
216 237
217 You can use @code{logb} to extract the binary exponent of a floating 238@defun copysign x1 x2
218point number (or estimate the logarithm of an integer): 239This function copies the sign of @var{x2} to the value of @var{x1},
240and returns the result. @var{x1} and @var{x2} must be floating point
241numbers.
242@end defun
219 243
220@defun logb number 244@defun logb number
221This function returns the binary exponent of @var{number}. More 245This function returns the binary exponent of @var{number}. More
@@ -230,14 +254,6 @@ down to an integer.
230@end example 254@end example
231@end defun 255@end defun
232 256
233@defvar float-e
234The mathematical constant @math{e} (2.71828@dots{}).
235@end defvar
236
237@defvar float-pi
238The mathematical constant @math{pi} (3.14159@dots{}).
239@end defvar
240
241@node Predicates on Numbers 257@node Predicates on Numbers
242@section Type Predicates for Numbers 258@section Type Predicates for Numbers
243@cindex predicates for numbers 259@cindex predicates for numbers
@@ -1122,35 +1138,15 @@ angle in radians between the vector @code{[@var{x}, @var{y}]} and the
1122@end defun 1138@end defun
1123 1139
1124@defun exp arg 1140@defun exp arg
1125This is the exponential function; it returns 1141This is the exponential function; it returns @math{e} to the power
1126@tex 1142@var{arg}.
1127@math{e}
1128@end tex
1129@ifnottex
1130@i{e}
1131@end ifnottex
1132to the power @var{arg}.
1133@tex
1134@math{e}
1135@end tex
1136@ifnottex
1137@i{e}
1138@end ifnottex
1139is a fundamental mathematical constant also called the base of natural
1140logarithms.
1141@end defun 1143@end defun
1142 1144
1143@defun log arg &optional base 1145@defun log arg &optional base
1144This function returns the logarithm of @var{arg}, with base @var{base}. 1146This function returns the logarithm of @var{arg}, with base
1145If you don't specify @var{base}, the base 1147@var{base}. If you don't specify @var{base}, the natural base
1146@tex 1148@math{e} is used. If @var{arg} is negative, it signals a
1147@math{e} 1149@code{domain-error} error.
1148@end tex
1149@ifnottex
1150@i{e}
1151@end ifnottex
1152is used. If @var{arg} is negative, it signals a @code{domain-error}
1153error.
1154@end defun 1150@end defun
1155 1151
1156@ignore 1152@ignore
@@ -1185,6 +1181,17 @@ This returns the square root of @var{arg}. If @var{arg} is negative,
1185it signals a @code{domain-error} error. 1181it signals a @code{domain-error} error.
1186@end defun 1182@end defun
1187 1183
1184In addition, Emacs defines the following common mathematical
1185constants:
1186
1187@defvar float-e
1188The mathematical constant @math{e} (2.71828@dots{}).
1189@end defvar
1190
1191@defvar float-pi
1192The mathematical constant @math{pi} (3.14159@dots{}).
1193@end defvar
1194
1188@node Random Numbers 1195@node Random Numbers
1189@section Random Numbers 1196@section Random Numbers
1190@cindex random numbers 1197@cindex random numbers
@@ -1218,7 +1225,6 @@ nonnegative and less than @var{limit}.
1218 1225
1219If @var{limit} is @code{t}, it means to choose a new seed based on the 1226If @var{limit} is @code{t}, it means to choose a new seed based on the
1220current time of day and on Emacs's process @acronym{ID} number. 1227current time of day and on Emacs's process @acronym{ID} number.
1221@c "Emacs'" is incorrect usage!
1222 1228
1223On some machines, any integer representable in Lisp may be the result 1229On some machines, any integer representable in Lisp may be the result
1224of @code{random}. On other machines, the result can never be larger 1230of @code{random}. On other machines, the result can never be larger
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index 3fb676edcd4..87bcc20daba 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -427,10 +427,10 @@ codes for these non-@acronym{ASCII} control characters include the
427@ifnottex 427@ifnottex
4282**26 4282**26
429@end ifnottex 429@end ifnottex
430bit as well as the code for the corresponding non-control 430bit as well as the code for the corresponding non-control character.
431character. Ordinary terminals have no way of generating non-@acronym{ASCII} 431Ordinary text terminals have no way of generating non-@acronym{ASCII}
432control characters, but you can generate them straightforwardly using X 432control characters, but you can generate them straightforwardly using
433and other window systems. 433X and other window systems.
434 434
435 For historical reasons, Emacs treats the @key{DEL} character as 435 For historical reasons, Emacs treats the @key{DEL} character as
436the control equivalent of @kbd{?}: 436the control equivalent of @kbd{?}:
@@ -501,10 +501,10 @@ character is upper case or lower case. Emacs uses the
501@end ifnottex 501@end ifnottex
502bit to indicate that the shift key was used in typing a control 502bit to indicate that the shift key was used in typing a control
503character. This distinction is possible only when you use X terminals 503character. This distinction is possible only when you use X terminals
504or other special terminals; ordinary terminals do not report the 504or other special terminals; ordinary text terminals do not report the
505distinction to the computer in any way. The Lisp syntax for 505distinction. The Lisp syntax for the shift bit is @samp{\S-}; thus,
506the shift bit is @samp{\S-}; thus, @samp{?\C-\S-o} or @samp{?\C-\S-O} 506@samp{?\C-\S-o} or @samp{?\C-\S-O} represents the shifted-control-o
507represents the shifted-control-o character. 507character.
508 508
509@cindex hyper characters 509@cindex hyper characters
510@cindex super characters 510@cindex super characters
@@ -541,9 +541,9 @@ intended. But you can use one symbol in all of these ways,
541independently. 541independently.
542 542
543 A symbol whose name starts with a colon (@samp{:}) is called a 543 A symbol whose name starts with a colon (@samp{:}) is called a
544@dfn{keyword symbol}. These symbols automatically act as constants, and 544@dfn{keyword symbol}. These symbols automatically act as constants,
545are normally used only by comparing an unknown symbol with a few 545and are normally used only by comparing an unknown symbol with a few
546specific alternatives. 546specific alternatives. @xref{Constant Variables}.
547 547
548@cindex @samp{\} in symbols 548@cindex @samp{\} in symbols
549@cindex backslash in symbols 549@cindex backslash in symbols
@@ -617,26 +617,28 @@ all symbols; @pxref{Creating Symbols}.)
617@subsection Sequence Types 617@subsection Sequence Types
618 618
619 A @dfn{sequence} is a Lisp object that represents an ordered set of 619 A @dfn{sequence} is a Lisp object that represents an ordered set of
620elements. There are two kinds of sequence in Emacs Lisp, lists and 620elements. There are two kinds of sequence in Emacs Lisp: @dfn{lists}
621arrays. Thus, an object of type list or of type array is also 621and @dfn{arrays}.
622considered a sequence. 622
623 623 Lists are the most commonly-used sequences. A list can hold
624 Arrays are further subdivided into strings, vectors, char-tables and 624elements of any type, and its length can be easily changed by adding
625bool-vectors. Vectors can hold elements of any type, but string 625or removing elements. See the next subsection for more about lists.
626elements must be characters, and bool-vector elements must be @code{t} 626
627or @code{nil}. Char-tables are like vectors except that they are 627 Arrays are fixed-length sequences. They are further subdivided into
628indexed by any valid character code. The characters in a string can 628strings, vectors, char-tables and bool-vectors. Vectors can hold
629have text properties like characters in a buffer (@pxref{Text 629elements of any type, whereas string elements must be characters, and
630Properties}), but vectors do not support text properties, even when 630bool-vector elements must be @code{t} or @code{nil}. Char-tables are
631their elements happen to be characters. 631like vectors except that they are indexed by any valid character code.
632 632The characters in a string can have text properties like characters in
633 Lists, strings and the other array types are different, but they have 633a buffer (@pxref{Text Properties}), but vectors do not support text
634important similarities. For example, all have a length @var{l}, and all 634properties, even when their elements happen to be characters.
635have elements which can be indexed from zero to @var{l} minus one. 635
636Several functions, called sequence functions, accept any kind of 636 Lists, strings and the other array types also share important
637sequence. For example, the function @code{elt} can be used to extract 637similarities. For example, all have a length @var{l}, and all have
638an element of a sequence, given its index. @xref{Sequences Arrays 638elements which can be indexed from zero to @var{l} minus one. Several
639Vectors}. 639functions, called sequence functions, accept any kind of sequence.
640For example, the function @code{length} reports the length of any kind
641of sequence. @xref{Sequences Arrays Vectors}.
640 642
641 It is generally impossible to read the same sequence twice, since 643 It is generally impossible to read the same sequence twice, since
642sequences are always created anew upon reading. If you read the read 644sequences are always created anew upon reading. If you read the read
@@ -650,24 +652,27 @@ same object, @code{nil}.
650@cindex decrement field of register 652@cindex decrement field of register
651@cindex pointers 653@cindex pointers
652 654
653 A @dfn{cons cell} is an object that consists of two slots, called the 655 A @dfn{cons cell} is an object that consists of two slots, called
654@sc{car} slot and the @sc{cdr} slot. Each slot can @dfn{hold} or 656the @sc{car} slot and the @sc{cdr} slot. Each slot can @dfn{hold} any
655@dfn{refer to} any Lisp object. We also say that ``the @sc{car} of 657Lisp object. We also say that ``the @sc{car} of this cons cell is''
656this cons cell is'' whatever object its @sc{car} slot currently holds, 658whatever object its @sc{car} slot currently holds, and likewise for
657and likewise for the @sc{cdr}. 659the @sc{cdr}.
658
659@quotation
660A note to C programmers: in Lisp, we do not distinguish between
661``holding'' a value and ``pointing to'' the value, because pointers in
662Lisp are implicit.
663@end quotation
664 660
661@cindex list structure
665 A @dfn{list} is a series of cons cells, linked together so that the 662 A @dfn{list} is a series of cons cells, linked together so that the
666@sc{cdr} slot of each cons cell holds either the next cons cell or the 663@sc{cdr} slot of each cons cell holds either the next cons cell or the
667empty list. The empty list is actually the symbol @code{nil}. 664empty list. The empty list is actually the symbol @code{nil}.
668@xref{Lists}, for functions that work on lists. Because most cons 665@xref{Lists}, for details. Because most cons cells are used as part
669cells are used as part of lists, the phrase @dfn{list structure} has 666of lists, we refer to any structure made out of cons cells as a
670come to refer to any structure made out of cons cells. 667@dfn{list structure}.
668
669@cindex linked list
670@quotation
671A note to C programmers: a Lisp list thus works as a @dfn{linked list}
672built up of cons cells. Because pointers in Lisp are implicit, we do
673not distinguish between a cons cell slot ``holding'' a value versus
674``pointing to'' the value.
675@end quotation
671 676
672@cindex atoms 677@cindex atoms
673 Because cons cells are so central to Lisp, we also have a word for 678 Because cons cells are so central to Lisp, we also have a word for
@@ -1025,40 +1030,40 @@ but the newline is ignored if escaped."
1025@node Non-ASCII in Strings 1030@node Non-ASCII in Strings
1026@subsubsection Non-@acronym{ASCII} Characters in Strings 1031@subsubsection Non-@acronym{ASCII} Characters in Strings
1027 1032
1028 You can include a non-@acronym{ASCII} international character in a string 1033 You can include a non-@acronym{ASCII} international character in a
1029constant by writing it literally. There are two text representations 1034string constant by writing it literally. There are two text
1030for non-@acronym{ASCII} characters in Emacs strings (and in buffers): unibyte 1035representations for non-@acronym{ASCII} characters in Emacs strings
1031and multibyte. If the string constant is read from a multibyte source, 1036(and in buffers): unibyte and multibyte (@pxref{Text
1032such as a multibyte buffer or string, or a file that would be visited as 1037Representations}). If the string constant is read from a multibyte
1033multibyte, then the character is read as a multibyte character, and that 1038source, such as a multibyte buffer or string, or a file that would be
1034makes the string multibyte. If the string constant is read from a 1039visited as multibyte, then Emacs reads the non-@acronym{ASCII}
1035unibyte source, then the character is read as unibyte and that makes the 1040character as a multibyte character and automatically makes the string
1036string unibyte. 1041a multibyte string. If the string constant is read from a unibyte
1037 1042source, then Emacs reads the non-@acronym{ASCII} character as unibyte,
1038 You can also represent a multibyte non-@acronym{ASCII} character with its 1043and makes the string unibyte.
1039character code: use a hex escape, @samp{\x@var{nnnnnnn}}, with as many 1044
1040digits as necessary. (Multibyte non-@acronym{ASCII} character codes are all 1045 Instead of writing a non-@acronym{ASCII} character literally into a
1041greater than 256.) Any character which is not a valid hex digit 1046multibyte string, you can write it as its character code using a hex
1042terminates this construct. If the next character in the string could be 1047escape, @samp{\x@var{nnnnnnn}}, with as many digits as necessary.
1043interpreted as a hex digit, write @w{@samp{\ }} (backslash and space) to 1048(Multibyte non-@acronym{ASCII} character codes are all greater than
1044terminate the hex escape---for example, @w{@samp{\xe0\ }} represents 1049256.) You can also specify a character in a multibyte string using
1045one character, @samp{a} with grave accent. @w{@samp{\ }} in a string 1050the @samp{\u} or @samp{\U} Unicode escape syntax (@pxref{General
1046constant is just like backslash-newline; it does not contribute any 1051Escape Syntax}). In either case, any character which is not a valid
1047character to the string, but it does terminate the preceding hex escape. 1052hex digit terminates the construct. If the next character in the
1053string could be interpreted as a hex digit, write @w{@samp{\ }}
1054(backslash and space) to terminate the hex escape---for example,
1055@w{@samp{\xe0\ }} represents one character, @samp{a} with grave
1056accent. @w{@samp{\ }} in a string constant is just like
1057backslash-newline; it does not contribute any character to the string,
1058but it does terminate the preceding hex escape. Using any hex escape
1059in a string (even for an @acronym{ASCII} character) automatically
1060forces the string to be multibyte.
1048 1061
1049 You can represent a unibyte non-@acronym{ASCII} character with its 1062 You can represent a unibyte non-@acronym{ASCII} character with its
1050character code, which must be in the range from 128 (0200 octal) to 1063character code, which must be in the range from 128 (0200 octal) to
1051255 (0377 octal). If you write all such character codes in octal and 1064255 (0377 octal). If you write all such character codes in octal and
1052the string contains no other characters forcing it to be multibyte, 1065the string contains no other characters forcing it to be multibyte,
1053this produces a unibyte string. However, using any hex escape in a 1066this produces a unibyte string.
1054string (even for an @acronym{ASCII} character) forces the string to be
1055multibyte.
1056
1057 You can also specify characters in a string by their numeric values
1058in Unicode, using @samp{\u} and @samp{\U} (@pxref{Character Type}).
1059
1060 @xref{Text Representations}, for more information about the two
1061text representations.
1062 1067
1063@node Nonprinting Characters 1068@node Nonprinting Characters
1064@subsubsection Nonprinting Characters in Strings 1069@subsubsection Nonprinting Characters in Strings
@@ -1922,23 +1927,24 @@ This function returns a symbol naming the primitive type of
1922@section Equality Predicates 1927@section Equality Predicates
1923@cindex equality 1928@cindex equality
1924 1929
1925 Here we describe functions that test for equality between any two 1930 Here we describe functions that test for equality between two
1926objects. Other functions test equality of contents between objects of specific 1931objects. Other functions test equality of contents between objects of
1927types, e.g., strings. For these predicates, see the appropriate chapter 1932specific types, e.g.@: strings. For these predicates, see the
1928describing the data type. 1933appropriate chapter describing the data type.
1929 1934
1930@defun eq object1 object2 1935@defun eq object1 object2
1931This function returns @code{t} if @var{object1} and @var{object2} are 1936This function returns @code{t} if @var{object1} and @var{object2} are
1932the same object, @code{nil} otherwise. 1937the same object, and @code{nil} otherwise.
1933 1938
1934@code{eq} returns @code{t} if @var{object1} and @var{object2} are 1939If @var{object1} and @var{object2} are integers with the same value,
1935integers with the same value. Also, since symbol names are normally 1940they are considered to be the same object (i.e.@: @code{eq} returns
1936unique, if the arguments are symbols with the same name, they are 1941@code{t}). If @var{object1} and @var{object2} are symbols with the
1937@code{eq}. For other types (e.g., lists, vectors, strings), two 1942same name, they are normally the same object---but see @ref{Creating
1938arguments with the same contents or elements are not necessarily 1943Symbols} for exceptions. For other types (e.g.@: lists, vectors,
1939@code{eq} to each other: they are @code{eq} only if they are the same 1944strings), two arguments with the same contents or elements are not
1940object, meaning that a change in the contents of one will be reflected 1945necessarily @code{eq} to each other: they are @code{eq} only if they
1941by the same change in the contents of the other. 1946are the same object, meaning that a change in the contents of one will
1947be reflected by the same change in the contents of the other.
1942 1948
1943@example 1949@example
1944@group 1950@group
@@ -1988,6 +1994,7 @@ by the same change in the contents of the other.
1988@end group 1994@end group
1989@end example 1995@end example
1990 1996
1997@noindent
1991The @code{make-symbol} function returns an uninterned symbol, distinct 1998The @code{make-symbol} function returns an uninterned symbol, distinct
1992from the symbol that is used if you write the name in a Lisp expression. 1999from the symbol that is used if you write the name in a Lisp expression.
1993Distinct symbols with the same name are not @code{eq}. @xref{Creating 2000Distinct symbols with the same name are not @code{eq}. @xref{Creating
@@ -2003,11 +2010,11 @@ Symbols}.
2003 2010
2004@defun equal object1 object2 2011@defun equal object1 object2
2005This function returns @code{t} if @var{object1} and @var{object2} have 2012This function returns @code{t} if @var{object1} and @var{object2} have
2006equal components, @code{nil} otherwise. Whereas @code{eq} tests if its 2013equal components, and @code{nil} otherwise. Whereas @code{eq} tests
2007arguments are the same object, @code{equal} looks inside nonidentical 2014if its arguments are the same object, @code{equal} looks inside
2008arguments to see if their elements or contents are the same. So, if two 2015nonidentical arguments to see if their elements or contents are the
2009objects are @code{eq}, they are @code{equal}, but the converse is not 2016same. So, if two objects are @code{eq}, they are @code{equal}, but
2010always true. 2017the converse is not always true.
2011 2018
2012@example 2019@example
2013@group 2020@group
@@ -2059,13 +2066,13 @@ always true.
2059@end example 2066@end example
2060 2067
2061Comparison of strings is case-sensitive, but does not take account of 2068Comparison of strings is case-sensitive, but does not take account of
2062text properties---it compares only the characters in the strings. Use 2069text properties---it compares only the characters in the strings.
2063@code{equal-including-properties} to also compare text properties. For 2070@xref{Text Properties}. Use @code{equal-including-properties} to also
2064technical reasons, a unibyte string and a multibyte string are 2071compare text properties. For technical reasons, a unibyte string and
2065@code{equal} if and only if they contain the same sequence of 2072a multibyte string are @code{equal} if and only if they contain the
2066character codes and all these codes are either in the range 0 through 2073same sequence of character codes and all these codes are either in the
2067127 (@acronym{ASCII}) or 160 through 255 (@code{eight-bit-graphic}). 2074range 0 through 127 (@acronym{ASCII}) or 160 through 255
2068(@pxref{Text Representations}). 2075(@code{eight-bit-graphic}). (@pxref{Text Representations}).
2069 2076
2070@example 2077@example
2071@group 2078@group
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index 0ea32f99e12..94f1bf666d2 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -8,10 +8,10 @@
8@chapter Sequences, Arrays, and Vectors 8@chapter Sequences, Arrays, and Vectors
9@cindex sequence 9@cindex sequence
10 10
11 Recall that the @dfn{sequence} type is the union of two other Lisp 11 The @dfn{sequence} type is the union of two other Lisp types: lists
12types: lists and arrays. In other words, any list is a sequence, and 12and arrays. In other words, any list is a sequence, and any array is
13any array is a sequence. The common property that all sequences have is 13a sequence. The common property that all sequences have is that each
14that each is an ordered collection of elements. 14is an ordered collection of elements.
15 15
16 An @dfn{array} is a fixed-length object with a slot for each of its 16 An @dfn{array} is a fixed-length object with a slot for each of its
17elements. All the elements are accessible in constant time. The four 17elements. All the elements are accessible in constant time. The four
@@ -54,19 +54,17 @@ But it is possible to add elements to the list, or remove elements.
54* Vector Functions:: Functions specifically for vectors. 54* Vector Functions:: Functions specifically for vectors.
55* Char-Tables:: How to work with char-tables. 55* Char-Tables:: How to work with char-tables.
56* Bool-Vectors:: How to work with bool-vectors. 56* Bool-Vectors:: How to work with bool-vectors.
57* Rings:: Managing a fixed-size ring of objects.
57@end menu 58@end menu
58 59
59@node Sequence Functions 60@node Sequence Functions
60@section Sequences 61@section Sequences
61 62
62 In Emacs Lisp, a @dfn{sequence} is either a list or an array. The 63 This section describes functions that accept any kind of sequence.
63common property of all sequences is that they are ordered collections of
64elements. This section describes functions that accept any kind of
65sequence.
66 64
67@defun sequencep object 65@defun sequencep object
68Returns @code{t} if @var{object} is a list, vector, string, 66This function returns @code{t} if @var{object} is a list, vector,
69bool-vector, or char-table, @code{nil} otherwise. 67string, bool-vector, or char-table, @code{nil} otherwise.
70@end defun 68@end defun
71 69
72@defun length sequence 70@defun length sequence
@@ -149,8 +147,9 @@ This function generalizes @code{aref} (@pxref{Array Functions}) and
149 147
150@defun copy-sequence sequence 148@defun copy-sequence sequence
151@cindex copying sequences 149@cindex copying sequences
152Returns a copy of @var{sequence}. The copy is the same type of object 150This function returns a copy of @var{sequence}. The copy is the same
153as the original sequence, and it has the same elements in the same order. 151type of object as the original sequence, and it has the same elements
152in the same order.
154 153
155Storing a new element into the copy does not affect the original 154Storing a new element into the copy does not affect the original
156@var{sequence}, and vice versa. However, the elements of the new 155@var{sequence}, and vice versa. However, the elements of the new
@@ -394,8 +393,8 @@ symbol-lookup tables (@pxref{Creating Symbols}), as part of the
394representation of a byte-compiled function (@pxref{Byte Compilation}), 393representation of a byte-compiled function (@pxref{Byte Compilation}),
395and more. 394and more.
396 395
397 In Emacs Lisp, the indices of the elements of a vector start from zero 396 Like other arrays, vectors use zero-origin indexing: the first
398and count up from there. 397element has index 0.
399 398
400 Vectors are printed with square brackets surrounding the elements. 399 Vectors are printed with square brackets surrounding the elements.
401Thus, a vector whose elements are the symbols @code{a}, @code{b} and 400Thus, a vector whose elements are the symbols @code{a}, @code{b} and
@@ -728,3 +727,96 @@ bv
728@noindent 727@noindent
729These results make sense because the binary codes for control-_ and 728These results make sense because the binary codes for control-_ and
730control-W are 11111 and 10111, respectively. 729control-W are 11111 and 10111, respectively.
730
731@node Rings
732@section Managing a Fixed-Size Ring of Objects
733
734@cindex ring data structure
735 A @dfn{ring} is a fixed-size data structure that supports insertion,
736deletion, rotation, and modulo-indexed reference and traversal. An
737efficient ring data structure is implemented by the @code{ring}
738package. It provides the functions listed in this section.
739
740 Note that several ``rings'' in Emacs, like the kill ring and the
741mark ring, are actually implemented as simple lists, @emph{not} using
742the @code{ring} package; thus the following functions won't work on
743them.
744
745@defun make-ring size
746This returns a new ring capable of holding @var{size} objects.
747@var{size} should be an integer.
748@end defun
749
750@defun ring-p object
751This returns @code{t} if @var{object} is a ring, @code{nil} otherwise.
752@end defun
753
754@defun ring-size ring
755This returns the maximum capacity of the @var{ring}.
756@end defun
757
758@defun ring-length ring
759This returns the number of objects that @var{ring} currently contains.
760The value will never exceed that returned by @code{ring-size}.
761@end defun
762
763@defun ring-elements ring
764This returns a list of the objects in @var{ring}, in order, newest first.
765@end defun
766
767@defun ring-copy ring
768This returns a new ring which is a copy of @var{ring}.
769The new ring contains the same (@code{eq}) objects as @var{ring}.
770@end defun
771
772@defun ring-empty-p ring
773This returns @code{t} if @var{ring} is empty, @code{nil} otherwise.
774@end defun
775
776 The newest element in the ring always has index 0. Higher indices
777correspond to older elements. Indices are computed modulo the ring
778length. Index @minus{}1 corresponds to the oldest element, @minus{}2
779to the next-oldest, and so forth.
780
781@defun ring-ref ring index
782This returns the object in @var{ring} found at index @var{index}.
783@var{index} may be negative or greater than the ring length. If
784@var{ring} is empty, @code{ring-ref} signals an error.
785@end defun
786
787@defun ring-insert ring object
788This inserts @var{object} into @var{ring}, making it the newest
789element, and returns @var{object}.
790
791If the ring is full, insertion removes the oldest element to
792make room for the new element.
793@end defun
794
795@defun ring-remove ring &optional index
796Remove an object from @var{ring}, and return that object. The
797argument @var{index} specifies which item to remove; if it is
798@code{nil}, that means to remove the oldest item. If @var{ring} is
799empty, @code{ring-remove} signals an error.
800@end defun
801
802@defun ring-insert-at-beginning ring object
803This inserts @var{object} into @var{ring}, treating it as the oldest
804element. The return value is not significant.
805
806If the ring is full, this function removes the newest element to make
807room for the inserted element.
808@end defun
809
810@cindex fifo data structure
811 If you are careful not to exceed the ring size, you can
812use the ring as a first-in-first-out queue. For example:
813
814@lisp
815(let ((fifo (make-ring 5)))
816 (mapc (lambda (obj) (ring-insert fifo obj))
817 '(0 one "two"))
818 (list (ring-remove fifo) t
819 (ring-remove fifo) t
820 (ring-remove fifo)))
821 @result{} (0 t one t "two")
822@end lisp
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index 49199d3e32f..bbb75f1474d 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -410,8 +410,13 @@ in case if @code{case-fold-search} is non-@code{nil}.
410@defun string= string1 string2 410@defun string= string1 string2
411This function returns @code{t} if the characters of the two strings 411This function returns @code{t} if the characters of the two strings
412match exactly. Symbols are also allowed as arguments, in which case 412match exactly. Symbols are also allowed as arguments, in which case
413their print names are used. 413the symbol names are used. Case is always significant, regardless of
414Case is always significant, regardless of @code{case-fold-search}. 414@code{case-fold-search}.
415
416This function is equivalent to @code{equal} for comparing two strings
417(@pxref{Equality Predicates}). In particular, the text properties of
418the two strings are ignored. But if either argument is not a string
419or symbol, an error is signaled.
415 420
416@example 421@example
417(string= "abc" "abc") 422(string= "abc" "abc")
@@ -422,10 +427,6 @@ Case is always significant, regardless of @code{case-fold-search}.
422 @result{} nil 427 @result{} nil
423@end example 428@end example
424 429
425The function @code{string=} ignores the text properties of the two
426strings. When @code{equal} (@pxref{Equality Predicates}) compares two
427strings, it uses @code{string=}.
428
429For technical reasons, a unibyte and a multibyte string are 430For technical reasons, a unibyte and a multibyte string are
430@code{equal} if and only if they contain the same sequence of 431@code{equal} if and only if they contain the same sequence of
431character codes and all these codes are either in the range 0 through 432character codes and all these codes are either in the range 0 through
diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi
index 866a63c4cd9..0ee22b905b6 100644
--- a/doc/lispref/symbols.texi
+++ b/doc/lispref/symbols.texi
@@ -41,62 +41,58 @@ references another object:
41@table @asis 41@table @asis
42@item Print name 42@item Print name
43@cindex print name cell 43@cindex print name cell
44The @dfn{print name cell} holds a string that names the symbol for 44The symbol's name.
45reading and printing. See @code{symbol-name} in @ref{Creating Symbols}.
46 45
47@item Value 46@item Value
48@cindex value cell 47@cindex value cell
49The @dfn{value cell} holds the current value of the symbol as a 48The symbol's current value as a variable.
50variable. When a symbol is used as a form, the value of the form is the
51contents of the symbol's value cell. See @code{symbol-value} in
52@ref{Accessing Variables}.
53 49
54@item Function 50@item Function
55@cindex function cell 51@cindex function cell
56The @dfn{function cell} holds the function definition of the symbol. 52The symbol's function definition. It can also hold a symbol, a
57When a symbol is used as a function, its function definition is used in 53keymap, or a keyboard macro.
58its place. This cell is also used to make a symbol stand for a keymap
59or a keyboard macro, for editor command execution. Because each symbol
60has separate value and function cells, variables names and function names do
61not conflict. See @code{symbol-function} in @ref{Function Cells}.
62 54
63@item Property list 55@item Property list
64@cindex property list cell 56@cindex property list cell
65The @dfn{property list cell} holds the property list of the symbol. See 57The symbol's property list.
66@code{symbol-plist} in @ref{Property Lists}.
67@end table 58@end table
68 59
69 The print name cell always holds a string, and cannot be changed. The 60@noindent
70other three cells can be set individually to any specified Lisp object. 61The print name cell always holds a string, and cannot be changed.
71 62Each of the other three cells can be set to any Lisp object.
72 The print name cell holds the string that is the name of the symbol. 63
73Since symbols are represented textually by their names, it is important 64 The print name cell holds the string that is the name of a symbol.
74not to have two symbols with the same name. The Lisp reader ensures 65Since symbols are represented textually by their names, it is
75this: every time it reads a symbol, it looks for an existing symbol with 66important not to have two symbols with the same name. The Lisp reader
76the specified name before it creates a new one. (In GNU Emacs Lisp, 67ensures this: every time it reads a symbol, it looks for an existing
77this lookup uses a hashing algorithm and an obarray; see @ref{Creating 68symbol with the specified name before it creates a new one. To get a
78Symbols}.) 69symbol's name, use the function @code{symbol-name} (@pxref{Creating
79 70Symbols}).
80 The value cell holds the symbol's value as a variable 71
81(@pxref{Variables}). That is what you get if you evaluate the symbol as 72 The value cell holds a symbol's value as a variable, which is what
82a Lisp expression (@pxref{Evaluation}). Any Lisp object is a legitimate 73you get if the symbol itself is evaluated as a Lisp expression.
83value. Certain symbols have values that cannot be changed; these 74@xref{Variables}, for details about how values are set and retrieved,
84include @code{nil} and @code{t}, and any symbol whose name starts with 75including complications such as @dfn{local bindings} and @dfn{scoping
85@samp{:} (those are called @dfn{keywords}). @xref{Constant Variables}. 76rules}. Most symbols can have any Lisp object as a value, but certain
86 77special symbols have values that cannot be changed; these include
87 We often refer to ``the function @code{foo}'' when we really mean 78@code{nil} and @code{t}, and any symbol whose name starts with
88the function stored in the function cell of the symbol @code{foo}. We 79@samp{:} (those are called @dfn{keywords}). @xref{Constant
89make the distinction explicit only when necessary. In normal 80Variables}.
90usage, the function cell usually contains a function 81
91(@pxref{Functions}) or a macro (@pxref{Macros}), as that is what the 82 The function cell holds a symbol's function definition. Often, we
92Lisp interpreter expects to see there (@pxref{Evaluation}). Keyboard 83refer to ``the function @code{foo}'' when we really mean the function
93macros (@pxref{Keyboard Macros}), keymaps (@pxref{Keymaps}) and 84stored in the function cell of @code{foo}; we make the distinction
94autoload objects (@pxref{Autoloading}) are also sometimes stored in 85explicit only when necessary. Typically, the function cell is used to
95the function cells of symbols. 86hold a function (@pxref{Functions}) or a macro (@pxref{Macros}).
87However, it can also be used to hold a symbol (@pxref{Function
88Indirection}), keyboard macro (@pxref{Keyboard Macros}), keymap
89(@pxref{Keymaps}), or autoload object (@pxref{Autoloading}). To get
90the contents of a symbol's function cell, use the function
91@code{symbol-function} (@pxref{Function Cells}).
96 92
97 The property list cell normally should hold a correctly formatted 93 The property list cell normally should hold a correctly formatted
98property list (@pxref{Property Lists}), as a number of functions expect 94property list. To get a symbol's function cell, use the function
99to see a property list there. 95@code{symbol-plist}. @xref{Property Lists}.
100 96
101 The function cell or the value cell may be @dfn{void}, which means 97 The function cell or the value cell may be @dfn{void}, which means
102that the cell does not reference any object. (This is not the same 98that the cell does not reference any object. (This is not the same
@@ -104,57 +100,43 @@ thing as holding the symbol @code{void}, nor the same as holding the
104symbol @code{nil}.) Examining a function or value cell that is void 100symbol @code{nil}.) Examining a function or value cell that is void
105results in an error, such as @samp{Symbol's value as variable is void}. 101results in an error, such as @samp{Symbol's value as variable is void}.
106 102
107 The four functions @code{symbol-name}, @code{symbol-value}, 103 Because each symbol has separate value and function cells, variables
108@code{symbol-plist}, and @code{symbol-function} return the contents of 104names and function names do not conflict. For example, the symbol
109the four cells of a symbol. Here as an example we show the contents of 105@code{buffer-file-name} has a value (the name of the file being
110the four cells of the symbol @code{buffer-file-name}: 106visited in the current buffer) as well as a function definition (a
107primitive function that returns the name of the file):
111 108
112@example 109@example
113(symbol-name 'buffer-file-name) 110buffer-file-name
114 @result{} "buffer-file-name"
115(symbol-value 'buffer-file-name)
116 @result{} "/gnu/elisp/symbols.texi" 111 @result{} "/gnu/elisp/symbols.texi"
117(symbol-function 'buffer-file-name) 112(symbol-function 'buffer-file-name)
118 @result{} #<subr buffer-file-name> 113 @result{} #<subr buffer-file-name>
119(symbol-plist 'buffer-file-name)
120 @result{} (variable-documentation 29529)
121@end example 114@end example
122 115
123@noindent
124Because this symbol is the variable which holds the name of the file
125being visited in the current buffer, the value cell contents we see are
126the name of the source file of this chapter of the Emacs Lisp Manual.
127The property list cell contains the list @code{(variable-documentation
12829529)} which tells the documentation functions where to find the
129documentation string for the variable @code{buffer-file-name} in the
130@file{DOC-@var{version}} file. (29529 is the offset from the beginning
131of the @file{DOC-@var{version}} file to where that documentation string
132begins---see @ref{Documentation Basics}.) The function cell contains
133the function for returning the name of the file.
134@code{buffer-file-name} names a primitive function, which has no read
135syntax and prints in hash notation (@pxref{Primitive Function Type}). A
136symbol naming a function written in Lisp would have a lambda expression
137(or a byte-code object) in this cell.
138
139@node Definitions, Creating Symbols, Symbol Components, Symbols 116@node Definitions, Creating Symbols, Symbol Components, Symbols
140@section Defining Symbols 117@section Defining Symbols
141@cindex definitions of symbols 118@cindex definitions of symbols
142 119
143 A @dfn{definition} in Lisp is a special form that announces your 120 A @dfn{definition} is a special kind of Lisp expression that
144intention to use a certain symbol in a particular way. In Emacs Lisp, 121announces your intention to use a symbol in a particular way. It
145you can define a symbol as a variable, or define it as a function (or 122typically specifies a value or meaning for the symbol for one kind of
146macro), or both independently. 123use, plus documentation for its meaning when used in this way. Thus,
147 124when you define a symbol as a variable, you can supply an initial
148 A definition construct typically specifies a value or meaning for the 125value for the variable, plus documentation for the variable.
149symbol for one kind of use, plus documentation for its meaning when used
150in this way. Thus, when you define a symbol as a variable, you can
151supply an initial value for the variable, plus documentation for the
152variable.
153 126
154 @code{defvar} and @code{defconst} are special forms that define a 127 @code{defvar} and @code{defconst} are special forms that define a
155symbol as a global variable. They are documented in detail in 128symbol as a @dfn{global variable}---a variable that can be accessed at
156@ref{Defining Variables}. For defining user option variables that can 129any point in a Lisp program. @xref{Variables}, for details about
157be customized, use @code{defcustom} (@pxref{Customization}). 130variables. To define a customizable variable, use the
131@code{defcustom} macro, which also calls @code{defvar} as a subroutine
132(@pxref{Customization}).
133
134 In principle, you can assign a variable value to any symbol with
135@code{setq}, whether not it has first been defined as a variable.
136However, you ought to write a variable definition for each global
137variable that you want to use; otherwise, your Lisp program may not
138act correctly if it is evaluated with lexical scoping enabled
139(@pxref{Variable Scoping}).
158 140
159 @code{defun} defines a symbol as a function, creating a lambda 141 @code{defun} defines a symbol as a function, creating a lambda
160expression and storing it in the function cell of the symbol. This 142expression and storing it in the function cell of the symbol. This
@@ -171,15 +153,14 @@ both macro and function definitions are kept in the function cell, and
171that cell can hold only one Lisp object at any given time. 153that cell can hold only one Lisp object at any given time.
172@xref{Macros}. 154@xref{Macros}.
173 155
174 In Emacs Lisp, a definition is not required in order to use a symbol 156 As previously noted, Emacs Lisp allows the same symbol to be defined
175as a variable or function. Thus, you can make a symbol a global 157both as a variable (e.g.@: with @code{defvar}) and as a function or
176variable with @code{setq}, whether you define it first or not. The real 158macro (e.g.@: with @code{defun}). Such definitions do not conflict.
177purpose of definitions is to guide programmers and programming tools. 159
178They inform programmers who read the code that certain symbols are 160 These definition also act as guides for programming tools. For
179@emph{intended} to be used as variables, or as functions. In addition, 161example, the @kbd{C-h f} and @kbd{C-h v} commands create help buffers
180utilities such as @file{etags} and @file{make-docfile} recognize 162containing links to the relevant variable, function, or macro
181definitions, and add appropriate information to tag tables and the 163definitions. @xref{Name Help,,, emacs, The GNU Emacs Manual}.
182@file{DOC-@var{version}} file. @xref{Accessing Documentation}.
183 164
184@node Creating Symbols, Property Lists, Definitions, Symbols 165@node Creating Symbols, Property Lists, Definitions, Symbols
185@section Creating and Interning Symbols 166@section Creating and Interning Symbols
@@ -254,8 +235,8 @@ not work---only @code{intern} can enter a symbol in an obarray properly.
254 235
255@cindex CL note---symbol in obarrays 236@cindex CL note---symbol in obarrays
256@quotation 237@quotation
257@b{Common Lisp note:} In Common Lisp, a single symbol may be interned in 238@b{Common Lisp note:} Unlike Common Lisp, Emacs Lisp does not provide
258several obarrays. 239for interning a single symbol in several obarrays.
259@end quotation 240@end quotation
260 241
261 Most of the functions below take a name and sometimes an obarray as 242 Most of the functions below take a name and sometimes an obarray as
@@ -448,12 +429,13 @@ must be distinct.
448 429
449 Property lists are better than association lists for attaching 430 Property lists are better than association lists for attaching
450information to various Lisp function names or variables. If your 431information to various Lisp function names or variables. If your
451program keeps all of its associations in one association list, it will 432program keeps all such information in one association list, it will
452typically need to search that entire list each time it checks for an 433typically need to search that entire list each time it checks for an
453association. This could be slow. By contrast, if you keep the same 434association for a particular Lisp function name or variable, which
454information in the property lists of the function names or variables 435could be slow. By contrast, if you keep the same information in the
455themselves, each search will scan only the length of one property list, 436property lists of the function names or variables themselves, each
456which is usually short. This is why the documentation for a variable is 437search will scan only the length of one property list, which is
438usually short. This is why the documentation for a variable is
457recorded in a property named @code{variable-documentation}. The byte 439recorded in a property named @code{variable-documentation}. The byte
458compiler likewise uses properties to record those functions needing 440compiler likewise uses properties to record those functions needing
459special treatment. 441special treatment.
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index b0a6795021b..a8f75f5a160 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1660,6 +1660,13 @@ Query (once) about all the variables.
1660@end table 1660@end table
1661@end defopt 1661@end defopt
1662 1662
1663@defvar inhibit-local-variables-regexps
1664This is a list of regular expressions. If a file has a name
1665matching an element of this list, then it is not scanned for
1666any form of file-local variable. For examples of why you might want
1667to use this, @pxref{Auto Major Mode}.
1668@end defvar
1669
1663@defun hack-local-variables &optional mode-only 1670@defun hack-local-variables &optional mode-only
1664This function parses, and binds or evaluates as appropriate, any local 1671This function parses, and binds or evaluates as appropriate, any local
1665variables specified by the contents of the current buffer. The variable 1672variables specified by the contents of the current buffer. The variable
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 1bff30e45e1..a0f8b61ddfe 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -3104,9 +3104,9 @@ window configuration; see @ref{Frame Configurations}.
3104@defun current-window-configuration &optional frame 3104@defun current-window-configuration &optional frame
3105This function returns a new object representing @var{frame}'s current 3105This function returns a new object representing @var{frame}'s current
3106window configuration. The default for @var{frame} is the selected 3106window configuration. The default for @var{frame} is the selected
3107frame. This function saves copies of window parameters listed by the 3107frame. The variable @code{window-persistent-parameters} specifies
3108variable @code{window-persistent-parameters}, see @ref{Window 3108whether and which window parameters are saved by this function, see
3109Parameters} for details. 3109@ref{Window Parameters} for details.
3110@end defun 3110@end defun
3111 3111
3112@defun set-window-configuration configuration 3112@defun set-window-configuration configuration
@@ -3214,27 +3214,25 @@ to clone the state of a frame into an arbitrary live window
3214(@code{set-window-configuration} effectively clones the windows of a 3214(@code{set-window-configuration} effectively clones the windows of a
3215frame into the root window of that very frame only). 3215frame into the root window of that very frame only).
3216 3216
3217@defun window-state-get &optional window ignore 3217@defun window-state-get &optional window writable
3218This function returns the state of @var{window} as a Lisp object. The 3218This function returns the state of @var{window} as a Lisp object. The
3219argument @var{window} can be any window and defaults to the root window 3219argument @var{window} can be any window and defaults to the root window
3220of the selected frame. 3220of the selected frame.
3221 3221
3222If the optional argument @var{ignore} is non-@code{nil}, this means to 3222If the optional argument @var{writable} is non-@code{nil}, this means to
3223not use markers for sampling positions like @code{window-point} or 3223not use markers for sampling positions like @code{window-point} or
3224@code{window-start}. This argument should be non-@code{nil} when the 3224@code{window-start}. This argument should be non-@code{nil} when the
3225state shall be written on disk and read back in another session. 3225state shall be written to disk and read back in another session.
3226 3226
3227The variable @code{window-persistent-parameters} specifies whether and 3227Together, the argument @var{writable} and the variable
3228which window parameters are saved by this function, see @ref{Window 3228@code{window-persistent-parameters} specify which window parameters are
3229Parameters} for details. 3229saved by this function, see @ref{Window Parameters} for details.
3230@end defun 3230@end defun
3231 3231
3232The value returned by @code{window-state-get} can be converted, using 3232The value returned by @code{window-state-get} can be used in the same
3233one of the functions defined by Desktop Save Mode (@pxref{Desktop Save 3233session to make a clone of a window in another window. It can be also
3234Mode}), to an object that can be written to a file. Such objects can be 3234written to disk and read back in another session. In either case, use
3235read back and converted to a Lisp object representing the state of the 3235the function described next to restore the state of the window.
3236window. That Lisp object can be used as argument for the following
3237function in order to restore the state window in another window.
3238 3236
3239@defun window-state-put state &optional window ignore 3237@defun window-state-put state &optional window ignore
3240This function puts the window state @var{state} into @var{window}. The 3238This function puts the window state @var{state} into @var{window}. The
@@ -3281,10 +3279,10 @@ states of windows (@pxref{Window Configurations}) do not care about
3281window parameters. This means, that when you change the value of a 3279window parameters. This means, that when you change the value of a
3282parameter within the body of a @code{save-window-excursion}, the 3280parameter within the body of a @code{save-window-excursion}, the
3283previous value is not restored upon exit of that macro. It also means 3281previous value is not restored upon exit of that macro. It also means
3284that when you clone via @code{window-state-put} a window state saved 3282that when you restore via @code{window-state-put} a window state saved
3285earlier by @code{window-state-get}, the cloned windows come up with no 3283earlier by @code{window-state-get}, all cloned windows have their
3286parameters at all. The following variable allows to override the 3284parameters reset to @code{nil}. The following variable allows to
3287standard behavior. 3285override the standard behavior.
3288 3286
3289@defvar window-persistent-parameters 3287@defvar window-persistent-parameters
3290This variable is an alist specifying which parameters get saved by 3288This variable is an alist specifying which parameters get saved by
@@ -3293,32 +3291,25 @@ subsequently restored by @code{set-window-configuration} and
3293@code{window-state-put}, see @ref{Window Configurations}. 3291@code{window-state-put}, see @ref{Window Configurations}.
3294 3292
3295The @sc{car} of each entry of this alist is the symbol specifying the 3293The @sc{car} of each entry of this alist is the symbol specifying the
3296parameter. The @sc{cdr} must be one of the following: 3294parameter. The @sc{cdr} should be one of the following:
3297 3295
3298@table @asis 3296@table @asis
3299@item @code{state}
3300This value means the parameter is saved by @code{window-state-get}
3301provided its @var{ignore} argument is @code{nil}. The function
3302@code{current-window-configuration} does not save this parameter.
3303
3304@item @code{nil} 3297@item @code{nil}
3298This value means the parameter is neither saved by
3299@code{window-state-get} nor by @code{current-window-configuration}.
3300
3301@item @code{t}
3305This value specifies that the parameter is saved by 3302This value specifies that the parameter is saved by
3306@code{current-window-configuration} and, provided its @var{ignore} 3303@code{current-window-configuration} and, provided its @var{writable}
3307argument is @code{nil}, by @code{window-state-get}. 3304argument is @code{nil}, by @code{window-state-get}.
3308 3305
3309@item @code{t} 3306@item @code{writable}
3310This means that the parameter is saved unconditionally by both 3307This means that the parameter is saved unconditionally by both
3311@code{current-window-configuration} and @code{window-state-get}. This 3308@code{current-window-configuration} and @code{window-state-get}. This
3312value should not be used for parameters whose values do not have a read 3309value should not be used for parameters whose values do not have a read
3313syntax. Otherwise, invoking @code{window-state-put} in another session 3310syntax. Otherwise, invoking @code{window-state-put} in another session
3314may fail with an @code{invalid-read-syntax} error. 3311may fail with an @code{invalid-read-syntax} error.
3315@end table 3312@end table
3316
3317Parameters that have been saved are restored to their previous values by
3318@code{set-window-configuration} respectively are installed by
3319@code{window-state-put}. Parameters that have not been saved are left
3320alone by @code{set-window-configuration} respectively are not installed
3321by @code{window-state-put}.
3322@end defvar 3313@end defvar
3323 3314
3324Some functions, notably @code{delete-window}, 3315Some functions, notably @code{delete-window},
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index adb5bbbd669..72ac8b85fc3 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,11 @@
12012-01-23 Glenn Morris <rgm@gnu.org>
2
3 * pcl-cvs.texi (About PCL-CVS): Refer to vc-dir rather than vc-dired.
4
52012-01-19 Eric Hanchrow <eric.hanchrow@gmail.com>
6
7 * tramp.texi (File): Tweak wording for the `scpc' option.
8
12012-01-06 Lars Magne Ingebrigtsen <larsi@gnus.org> 92012-01-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 10
3 * gnus.texi (Group Parameters): Really note precedence. 11 * gnus.texi (Group Parameters): Really note precedence.
diff --git a/doc/misc/pcl-cvs.texi b/doc/misc/pcl-cvs.texi
index 32d2114f5a0..92c309f5e98 100644
--- a/doc/misc/pcl-cvs.texi
+++ b/doc/misc/pcl-cvs.texi
@@ -6,8 +6,7 @@
6@c %**end of header 6@c %**end of header
7 7
8@copying 8@copying
9Copyright @copyright{} 1991-2012 9Copyright @copyright{} 1991-2012 Free Software Foundation, Inc.
10Free Software Foundation, Inc.
11 10
12@quotation 11@quotation
13Permission is granted to copy, distribute and/or modify this document 12Permission is granted to copy, distribute and/or modify this document
@@ -136,10 +135,9 @@ Customization
136PCL-CVS is a front-end to CVS versions 1.9 and later. 135PCL-CVS is a front-end to CVS versions 1.9 and later.
137It concisely shows the present status of a checked out module in an 136It concisely shows the present status of a checked out module in an
138Emacs buffer and provides single-key access to the most frequently used CVS 137Emacs buffer and provides single-key access to the most frequently used CVS
139commands. 138commands. Note that the @code{vc-dir} command (@pxref{VC Directory
140For Emacs users accustomed to VC, PCL-CVS can be thought of as a replacement 139Mode, , , emacs, The GNU Emacs Manual}) provides similar
141for VC-dired (@pxref{VC Directory Mode, , , emacs, The GNU 140functionality, but for several version control systems, including CVS.
142Emacs Manual}) specifically designed for CVS.
143 141
144PCL-CVS was originally written many years ago by Per Cederqvist who 142PCL-CVS was originally written many years ago by Per Cederqvist who
145proudly maintained it until January 1996, at which point he released the 143proudly maintained it until January 1996, at which point he released the
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 41ba6689f13..7fbd11decd7 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -866,13 +866,22 @@ Newer versions of @option{ssh} (for example OpenSSH 4) offer an option
866@option{ControlMaster}. This allows @option{scp} to reuse an existing 866@option{ControlMaster}. This allows @option{scp} to reuse an existing
867@option{ssh} channel, which increases performance. 867@option{ssh} channel, which increases performance.
868 868
869Before you use this method, you shall check whether your @option{ssh} 869Before you use this method, you should check whether your @option{ssh}
870implementation does support this option. Try from the command line 870implementation supports this option. Try from the command line
871 871
872@example 872@example
873ssh localhost -o ControlMaster=yes 873ssh localhost -o ControlMaster=yes /bin/true
874@end example 874@end example
875 875
876If that command succeeds silently, then you can use @option{scpc}; but
877if it fails like
878
879@example
880command-line: line 0: Bad configuration option: ControlMaster
881@end example
882
883then you cannot use it.
884
876This method supports the @samp{-p} argument. 885This method supports the @samp{-p} argument.
877 886
878 887
diff --git a/etc/ChangeLog b/etc/ChangeLog
index b4e22c506a3..60ccded8ad6 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,16 @@
12012-01-21 Ognyan Kulev <ogi@tower.3.bg>
2
3 * tutorials/TUTORIAL.bg: Updated; synchronize with TUTORIAL.
4
52012-01-19 Werner Lemberg <wl@gnu.org>
6
7 * tutorial/TUTORIAL.de: Updated; synchronize with TUTORIAL.
8 Minor typographical improvements.
9
102012-01-17 Primoz PETERLIN <primoz.peterlin@mf.uni-lj.si>
11
12 * tutorials/TUTORIAL.sl: Update.
13
12012-01-14 Eli Zaretskii <eliz@gnu.org> 142012-01-14 Eli Zaretskii <eliz@gnu.org>
2 15
3 * tutorials/TUTORIAL.he: Update to follow changes to TUTORIAL in 16 * tutorials/TUTORIAL.he: Update to follow changes to TUTORIAL in
diff --git a/etc/NEWS b/etc/NEWS
index 0b0e5e571aa..ccf2441c656 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -84,10 +84,6 @@ longer have any effect. (They were declared obsolete in Emacs 23.)
84** New command line option `--no-site-lisp' removes site-lisp directories 84** New command line option `--no-site-lisp' removes site-lisp directories
85from load-path. -Q now implies this. 85from load-path. -Q now implies this.
86 86
87---
88** On Windows, Emacs now warns when the obsolete _emacs init file is used,
89and also when HOME is set to C:\ by default.
90
91 87
92* Changes in Emacs 24.1 88* Changes in Emacs 24.1
93 89
@@ -374,6 +370,13 @@ turn on `whitespace-mode' for *vc-diff* buffers. Modes should call
374Instead, use "eval: (minor-mode 1)". 370Instead, use "eval: (minor-mode 1)".
375 371
376+++ 372+++
373*** The variable `inhibit-first-line-modes-regexps' has been renamed
374to `inhibit-local-variables-regexps'. As the name suggests, it now
375applies to ALL file local variables, not just -*- mode ones.
376The associated `inhibit-first-line-modes-suffixes' has been renamed
377in the corresponding way.
378
379+++
377** The variable `focus-follows-mouse' now always defaults to nil. 380** The variable `focus-follows-mouse' now always defaults to nil.
378 381
379** New primitive `secure-hash' that supports many secure hash algorithms 382** New primitive `secure-hash' that supports many secure hash algorithms
@@ -427,11 +430,6 @@ These maximize and minimize the size of a window within its frame.
427These functions allow to navigate through the live buffers that have 430These functions allow to navigate through the live buffers that have
428been shown in a specific window. 431been shown in a specific window.
429 432
430+++
431*** New functions `window-state-get' and `window-state-put'.
432These functions allow to save and restore the state of an arbitrary
433frame or window as an Elisp object.
434
435** The inactive minibuffer has its own major mode `minibuffer-inactive-mode'. 433** The inactive minibuffer has its own major mode `minibuffer-inactive-mode'.
436This is handy for minibuffer-only frames, and is also used for the "mouse-1 434This is handy for minibuffer-only frames, and is also used for the "mouse-1
437pops up *Messages*" feature, which can now easily be changed. 435pops up *Messages*" feature, which can now easily be changed.
@@ -1158,6 +1156,11 @@ state before the last buffer display operation in that window.
1158iconifying or deleting a frame when burying a buffer shown in a dedicated 1156iconifying or deleting a frame when burying a buffer shown in a dedicated
1159frame or quitting a window showing a buffer in a frame of its own. 1157frame or quitting a window showing a buffer in a frame of its own.
1160 1158
1159+++
1160*** New functions `window-state-get' and `window-state-put'.
1161These functions allow to save and restore the state of an arbitrary
1162frame or window as an Elisp object.
1163
1161** Completion 1164** Completion
1162 1165
1163*** New variable completion-extra-properties used to specify extra properties 1166*** New variable completion-extra-properties used to specify extra properties
@@ -1364,6 +1367,9 @@ This means that the empty symbol can now be read back. Also, #: by itself
1364(when not immediately followed by a possible symbol character) stands for 1367(when not immediately followed by a possible symbol character) stands for
1365an empty uninterned symbol. 1368an empty uninterned symbol.
1366 1369
1370+++
1371** New math functions `isnan', `copysign', `frexp', `ldexp'.
1372
1367** Obsolete functions and variables 1373** Obsolete functions and variables
1368 1374
1369*** buffer-substring-filters is obsolete. 1375*** buffer-substring-filters is obsolete.
@@ -1378,17 +1384,20 @@ Use `filter-buffer-substring-functions' instead.
1378 1384
1379* Changes in Emacs 24.1 on non-free operating systems 1385* Changes in Emacs 24.1 on non-free operating systems
1380 1386
1381** New configure.bat option --enable-checking builds Emacs with extra 1387---
1382runtime checks. 1388** On MS Windows, Emacs warns when using the obsolete init file _emacs,
1389and also when HOME is set to C:\ by default.
1390
1391** New configure.bat options
1392
1393*** --enable-checking builds Emacs with extra runtime checks.
1383 1394
1384** New configure.bat option --distfiles to specify files to be 1395*** --distfiles specifies files to be included in binary distribution.
1385included in binary distribution.
1386 1396
1387** New configure.bat option --without-gnutls to disable automatic 1397*** --without-gnutls disables automatic GnuTLS detection.
1388GnuTLS detection.
1389 1398
1390** New configure.bat option --lib for general library linkage, works 1399*** --lib for general library linkage, works with the USER_LIBS build
1391with the USER_LIBS build variable. 1400variable.
1392 1401
1393** New make target `dist' to create binary distribution for MS Windows. 1402** New make target `dist' to create binary distribution for MS Windows.
1394 1403
diff --git a/etc/NEWS.23 b/etc/NEWS.23
index f9dbfa8adef..77ba82c15ad 100644
--- a/etc/NEWS.23
+++ b/etc/NEWS.23
@@ -24,12 +24,22 @@ require version 1.14 or later. See README.W32 and nt/INSTALL for
24details and pointers to URLs where the latest libpng can be 24details and pointers to URLs where the latest libpng can be
25downloaded. 25downloaded.
26 26
27 27* Changes in Specialized Modes and Packages in Emacs 23.4
28
29** EDE
30
31*** New variable `ede-project-directories'.
32EDE now refuses to automatically load a project file (Project.ede)
33unless the file is in one of the directories specified by this
34variable. This reduces the risk of inadvertently loading malicious
35project files. The commands `M-x ede-new' and `M-x ede' now offer to
36save directories to `ede-project-directories'.
37
28* Changes in Emacs 23.4 on non-free operating systems 38* Changes in Emacs 23.4 on non-free operating systems
29 39
30** The MS-Windows port can now use more than 500MB of heap. 40** The MS-Windows port can now use more than 500MB of heap.
31Depending on the available virtual memory, Emacs on Windows can now 41Depending on the available virtual memory, Emacs on Windows can now
32have up to 2GB of heap space. This allows, e.g., to visit several 42have up to 2GB of heap space. This allows, e.g., visiting several
33large (> 256MB) files in the same session. 43large (> 256MB) files in the same session.
34 44
35 45
diff --git a/etc/TODO b/etc/TODO
index 411581673e3..db1d50192f2 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -71,6 +71,12 @@ things in their .emacs.
71 71
72** See if other files can use generated-autoload-file (see eg ps-print). 72** See if other files can use generated-autoload-file (see eg ps-print).
73 73
74** Write more tests. Pick a fixed bug from the database, write a test
75case to make sure it stays fixed. Or pick your favorite programming
76major-mode, and write a test for its indentation. Or a version
77control backend, and write a test for its status parser. Etc.
78See test/automated for examples.
79
74* Small but important fixes needed in existing features: 80* Small but important fixes needed in existing features:
75 81
76** Flymake's customization mechanism needs to be both simpler (fewer 82** Flymake's customization mechanism needs to be both simpler (fewer
diff --git a/etc/tutorials/TUTORIAL.bg b/etc/tutorials/TUTORIAL.bg
index 22f96f169b9..91198961bff 100644
--- a/etc/tutorials/TUTORIAL.bg
+++ b/etc/tutorials/TUTORIAL.bg
@@ -1,4 +1,4 @@
1Âúâåäåíèåòî íà Åìàêñ. Óñëîâèÿòà çà êîïèðàíå ñà â êðàÿ íà òåêñòà. 1Âúâåäåíèå â Åìàêñ. Óñëîâèÿòà çà êîïèðàíå ñà â êðàÿ íà òåêñòà.
2 2
3Êîìàíäèòå íà Åìàêñ íàé-÷åñòî âêëþ÷âàò êëàâèøèòå CONTROL (ïîíÿêîãà 3Êîìàíäèòå íà Åìàêñ íàé-÷åñòî âêëþ÷âàò êëàâèøèòå CONTROL (ïîíÿêîãà
4îòáåëÿçâàí ñ CTRL èëè CTL) è META (ïîíÿêîãà îòáåëÿçâàí ñ EDIT èëè 4îòáåëÿçâàí ñ CTRL èëè CTL) è META (ïîíÿêîãà îòáåëÿçâàí ñ EDIT èëè
@@ -14,14 +14,14 @@ ALT). Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå
14 êëàâèøà ESC è ñëåä òîâà âúâåäåòå <çíàê>. Íèå 14 êëàâèøà ESC è ñëåä òîâà âúâåäåòå <çíàê>. Íèå
15 çàïèñâàìå <ESC>, çà äà îòáåëåæèì êëàâèøà ESC. 15 çàïèñâàìå <ESC>, çà äà îòáåëåæèì êëàâèøà ESC.
16 16
17Âàæíà áåëåæêà: â êðàÿ íà Åìàêñ ñåñèÿòà âúâåäåòå äâàòà çíàêà C-x C-c. 17Âàæíà áåëåæêà: â êðàÿ íà Åìàêñ ñåñèÿòà âúâåäåòå C-x C-c. (Äâà çíàêà.)
18Çíàöèòå ">>" îòëÿâî âè äàâàò óêàçàíèå äà èçïúëíèòå êîìàíäà. Íàïðèìåð: 18Çà äà ïðåêúñíåòå ÷àñòè÷íî âúâåäåíà êîìàíäà, èçïîëçâàéòå C-g.
19Çíàöèòå „>>“ îòëÿâî âè äàâàò óêàçàíèå äà èçïúëíèòå êîìàíäà. Íàïðèìåð:
19<<Blank lines inserted here by startup of help-with-tutorial>> 20<<Blank lines inserted here by startup of help-with-tutorial>>
20>> Ñåãà âúâåäåòå C-v (Ïîêàæè ñëåäâàùèÿ åêðàí), çà äà ñå ïðèäâèæèòå êúì 21>> Ñåãà âúâåäåòå C-v (Ïîêàçâàíå íà ñëåäâàùèÿ åêðàí), çà äà ñå ïðèäâèæèòå
21ñëåäâàùèÿ åêðàí. 22 êúì ñëåäâàùèÿ åêðàí. (Íàïðàâåòå ãî ñåãà, çàäðúæòå CONTROL,
22 (Íàïðàâåòå ãî ñåãà, çàäðúæòå CONTROL, äîêàòî íàòèñêàòå v). 23 äîêàòî íàòèñêàòå „v“). Îòñåãà íàòàòúê âèå ùå ïðàâèòå òîâà âèíàãè,
23 Îòñåãà íàòàòúê âèå ùå ïðàâèòå òîâà âèíàãè, êîãàòî ïðî÷åòåòå 24 êîãàòî ïðî÷åòåòå åêðàíà.
24 åêðàíà.
25 25
26Çàáåëåæåòå, ÷å èìà ïðèïîêðèâàíå íà äâà ðåäà, êîãàòî ñå ïðèäâèæâàòå îò 26Çàáåëåæåòå, ÷å èìà ïðèïîêðèâàíå íà äâà ðåäà, êîãàòî ñå ïðèäâèæâàòå îò
27åêðàí â åêðàí; òîâà îñèãóðÿâà íÿêàêâà ïðèåìñòâåíîñò, òàêà ÷å äà ìîæåòå 27åêðàí â åêðàí; òîâà îñèãóðÿâà íÿêàêâà ïðèåìñòâåíîñò, òàêà ÷å äà ìîæåòå
@@ -30,8 +30,8 @@ ALT). Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå
30Ïúðâîòî íåùî, êîåòî òðÿáâà äà çíàåòå, å êàê äà ñå ïðèäâèæâàòå îò åäíî 30Ïúðâîòî íåùî, êîåòî òðÿáâà äà çíàåòå, å êàê äà ñå ïðèäâèæâàòå îò åäíî
31ìÿñòî íà òåêñòà êúì äðóãî. Âèå âå÷å çíàåòå êàê äà ñå ïðèäâèæâàòå 31ìÿñòî íà òåêñòà êúì äðóãî. Âèå âå÷å çíàåòå êàê äà ñå ïðèäâèæâàòå
32åêðàí íàïðåä, ñ C-v. Çà äà ñå ïðèäâèæèòå åêðàí íàçàä, âúâåäåòå M-v 32åêðàí íàïðåä, ñ C-v. Çà äà ñå ïðèäâèæèòå åêðàí íàçàä, âúâåäåòå M-v
33(çàäðúæòå êëàâèøà META è íàòèñíåòå v, èëè âúâåäåòå <ESC>v, àêî íÿìàòå 33(çàäðúæòå êëàâèøà META è íàòèñíåòå v, èëè âúâåäåòå <ESC> è ïîñëå „v“,
34êëàâèø META, EDIT èëè ALT). 34àêî íÿìàòå êëàâèø META, EDIT èëè ALT).
35 35
36>> Îïèòàéòå ñå äà âúâåäåòå M-v è ñëåä òîâà C-v íÿêîëêî ïúòè. 36>> Îïèòàéòå ñå äà âúâåäåòå M-v è ñëåä òîâà C-v íÿêîëêî ïúòè.
37 37
@@ -49,7 +49,11 @@ ALT). Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå
49 49
50>> Íàìåðåòå êóðñîðà è ñè çàïîìíåòå êàêúâ å òåêñòúò îêîëî íåãî. 50>> Íàìåðåòå êóðñîðà è ñè çàïîìíåòå êàêúâ å òåêñòúò îêîëî íåãî.
51 Ñëåä òîâà âúâåäåòå C-l. 51 Ñëåä òîâà âúâåäåòå C-l.
52 Íàìåðåòå ïàê êóðñîðà è âèæòå, ÷å ñúùèÿò òåêñò å ïàê îêîëî êóðñîðà. 52 Íàìåðåòå ïàê êóðñîðà è âèæòå, ÷å ñúùèÿò òåêñò å ïàê îêîëî êóðñîðà,
53 íî ñåãà âå÷å â ñðåäàòà íà åêðàíà.
54 Àêî ïàê íàòèñíåòå C-l, òàçè ÷àñò îò òåêñòà ùå ñå ïðèäâèæè â ãîðíèÿ
55 êðàé íà åêðàíà. Íàòèñíåòå îòíîâî C-l è òîçè òåêñò ùå îòèäå â äîëíèÿ
56 êðàé íà åêðàíà.
53 57
54Ìîæå ñúùî äà èçïîëçâàòå êëàâèøèòå PageUp è PageDown çà ïðèäâèæâàíå ïî 58Ìîæå ñúùî äà èçïîëçâàòå êëàâèøèòå PageUp è PageDown çà ïðèäâèæâàíå ïî
55åêðàíè, àêî âàøèÿò òåðìèíàë ãè ïðèòåæàâà, íî âèå ìîæåòå äà ðåäàêòèðàòå 59åêðàíè, àêî âàøèÿò òåðìèíàë ãè ïðèòåæàâà, íî âèå ìîæåòå äà ðåäàêòèðàòå
@@ -65,7 +69,7 @@ ALT). Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå
65Èìà íÿêîëêî íà÷èíà äà ãî íàïðàâèòå. Ìîæå äà èçïîëçâàòå êëàâèøèòå 69Èìà íÿêîëêî íà÷èíà äà ãî íàïðàâèòå. Ìîæå äà èçïîëçâàòå êëàâèøèòå
66ñòðåëêè, íî å ïî-åôåêòèâíî äà äúðæèòå ðúöåòå ñè â ñòàíäàðòíî ïîëîæåíèå 70ñòðåëêè, íî å ïî-åôåêòèâíî äà äúðæèòå ðúöåòå ñè â ñòàíäàðòíî ïîëîæåíèå
67è äà èçïîëçâàòå êîìàíäèòå C-p, C-b, C-f è C-n. Òåçè çíàöè ñà 71è äà èçïîëçâàòå êîìàíäèòå C-p, C-b, C-f è C-n. Òåçè çíàöè ñà
68åêâèâàëåíòíè íà ÷åòèðèòå êëàâèøè ñòðåëêè, åòî òàêà: 72åêâèâàëåíòíè íà ÷åòèðèòå êëàâèøè ñòðåëêè ïî ñëåäíèÿ íà÷èí:
69 73
70 Ïðåäèøåí ðåä (Previous), C-p 74 Ïðåäèøåí ðåä (Previous), C-p
71 : 75 :
@@ -76,38 +80,37 @@ ALT). Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå
76 Ñëåäâàù ðåä (Next), C-n 80 Ñëåäâàù ðåä (Next), C-n
77 81
78>> Ïðèäâèæåòå êóðñîðà äî ðåäà â ñðåäàòà íà òàçè äèàãðàìà, èçïîëçâàéêè 82>> Ïðèäâèæåòå êóðñîðà äî ðåäà â ñðåäàòà íà òàçè äèàãðàìà, èçïîëçâàéêè
79 C-n è C-p. Ñëåä òîâà íàòèñíåòå C-l, çà äà âèäèòå öÿëàòà äèàãðàìà, 83 C-n è C-p. Ñëåä òîâà íàòèñíåòå C-l è ùå âèäèòå öÿëàòà äèàãðàìà,
80 öåíòðèðàíà íà åêðàíà. 84 öåíòðèðàíà íà åêðàíà.
81 85
82Ùå íàìåðèòå, ÷å çàïîìíÿíåòî íà òåçè áóêâè ïî äóìèòå íà àíãëèéñêè íà 86Ùå íàìåðèòå, ÷å çàïîìíÿíåòî íà òåçè áóêâè ïî äóìèòå íà àíãëèéñêè íà
83äåéñòâèÿòà, êîèòî èçâúðøâàò, å ëåñíî: P çà Previous (ïðåäèøåí), N çà 87äåéñòâèÿòà, êîèòî èçâúðøâàò, å ëåñíî: P çà Previous (ïðåäèøåí), N
84Next (ñëåäâàù), B çà Backward (íàçàä) è F çà Forward (íàïðåä). Âèå ùå 88çà Next (ñëåäâàù), B çà Backward (íàçàä) è F çà Forward (íàïðåä).
85èçïîëçâàòå òåçè îñíîâíè êîìàíäè çà ïðèäâèæâàíå íà êóðñîðà ïðåç öÿëîòî 89Âèå ùå èçïîëçâàòå òåçè îñíîâíè êîìàíäè çà ïðèäâèæâàíå íà êóðñîðà ïðåç
86âðåìå. 90öÿëîòî âðåìå.
87 91
88>> Âúâåäåòå íÿêîëêî C-n, çà äà äîâåäåòå êóðñîðà äî òîçè ðåä. 92>> Âúâåäåòå íÿêîëêî ïúòè C-n, çà äà äîâåäåòå êóðñîðà äî òîçè ðåä.
89 93
90>> Ïðèäâèæåòå ñå â ðåäà ñ íÿêîëêî C-f è ñëåä òîâà ñ íÿêîëêî C-p. 94>> Ïðèäâèæåòå ñå âúòðå â ðåäà ñ íÿêîëêî C-f è ñëåä òîâà ñ íÿêîëêî C-p.
91 Âèæòå êàêâî ïðàâè C-p, êîãàòî êóðñîðúò å â ñðåäàòà íà ðåäà. 95 Âèæòå êàêâî ïðàâè C-p, êîãàòî êóðñîðúò å â ñðåäàòà íà ðåäà.
92 96
93Âñåêè ðåä îò òåêñò çàâúðøâà ñúñ çíàê çà íîâ ðåä, êîéòî ñëóæè çà 97Âñåêè ðåä îò òåêñò çàâúðøâà ñúñ çíàê çà íîâ ðåä, êîéòî ñëóæè çà
94îòäåëÿíåòî íà ðåäà îò ñëåäâàùèÿ ðåä. Ïîñëåäíèÿò ðåä âúâ âàøèÿ ôàéë 98îòäåëÿíåòî íà ðåäà îò ñëåäâàùèÿ ðåä. (Ïîñëåäíèÿò ðåä âúâ âàøèÿ ôàéë
95òðÿáâà äà èìà çíàê çà íîâ ðåä â êðàÿ (íî Åìàêñ íå èçèñêâà òàêúâ, 99òðÿáâà äà èìà çíàê çà íîâ ðåä â êðàÿ, íî Åìàêñ íå èçèñêâà òàêúâ.)
96êîãàòî ïðî÷èòà ôàéëà).
97 100
98>> Îïèòàéòå C-b â íà÷àëîòî íà ðåä. Òîâà òðÿáâà äà âè ïðèäâèæè â êðàÿ 101>> Îïèòàéòå C-b â íà÷àëîòî íà ðåä. Òîâà òðÿáâà äà âè ïðèäâèæè â êðàÿ
99 íà ïðåäèøíèÿ ðåä. Òîâà å òàêà, çàùîòî êóðñîðúò ñå ïðèäâèæâà êúì 102 íà ïðåäèøíèÿ ðåä. Òîâà å òàêà, çàùîòî êóðñîðúò ñå ïðèäâèæâà êúì
100 çíàêà çà íîâ ðåä íà ïðåäèøíèÿ ðåä. 103 çíàêà çà íîâ ðåä íà ïðåäèøíèÿ ðåä.
101 104
102C-f ìîæå äà ïðèäâèæâà ïðåç çíàê çà íîâ ðåä òî÷íî êàêòî C-b. 105C-f ìîæå äà ïðèäâèæâà ïðåç çíàê çà íîâ ðåä, òî÷íî êàêòî C-b.
103 106
104>> Íàïðàâåòå íÿêîëêî C-b ïðèäâèæâàíèÿ, òàêà ÷å äà äîáèåòå óñåùàíå êúäå 107>> Íàïðàâåòå íÿêîëêî ïðèäâèæâàíèÿ ñ C-b, òàêà ÷å äà äîáèåòå óñåùàíå
105 ñå íàìèðà êóðñîðúò. Ñëåä òîâà íÿêîëêî C-f, çà äà ñå âúðíåòå â êðàÿ 108 êúäå ñå íàìèðà êóðñîðúò. Ñëåä òîâà íÿêîëêî C-f, äîêàòî ñå âúðíåòå
106 íà ðåäà. Ñëåä òîâà îùå íÿêîëêî C-f, çà äà ñå ïðèäâèæèòå äî 109 â êðàÿ íà ðåäà. Ñëåä òîâà îùå íÿêîëêî C-f, çà äà ñå ïðèäâèæèòå äî
107 ñëåäâàùèÿ ðåä. 110 ñëåäâàùèÿ ðåä.
108 111
109Êîãàòî ñå ïðèäâèæâàòå ñëåä ãîðíèÿ èëè äîëíèÿ êðàé íà åêðàíà, òåêñòúò 112Êîãàòî ñå ïðèäâèæâàòå ñëåä ãîðíèÿ èëè äîëíèÿ êðàé íà åêðàíà, òåêñòúò
110îòâúä êðàÿ ñå èçìåñòâà êúì åêðàíà. Òîâà ñå íàðè÷à "ñêðîëèðàíå". Òî 113îòâúä êðàÿ ñå èçìåñòâà êúì åêðàíà. Òîâà ñå íàðè÷à ñêðîëèðàíå. Òî
111ïîçâîëÿâà íà Åìàêñ äà ïðèäâèæâà êóðñîðà êúì çàäàäåíîòî ìÿñòî â òåêñòà, 114ïîçâîëÿâà íà Åìàêñ äà ïðèäâèæâà êóðñîðà êúì çàäàäåíîòî ìÿñòî â òåêñòà,
112áåç äà ãî èçêàðâà èçâúí åêðàíà. 115áåç äà ãî èçêàðâà èçâúí åêðàíà.
113 116
@@ -146,9 +149,8 @@ Control-çíàöèòå äåéñòâàò âúðõó îñíîâíè åäèíèöè, êîèòî ñà íåçàâèñèìè îò
146êëàâèøíè êîìáèíàöèè íå ñà òî÷íî àíàëîãè÷íè, âñÿêà åäíà îò òÿõ èçãëåæäà 149êëàâèøíè êîìáèíàöèè íå ñà òî÷íî àíàëîãè÷íè, âñÿêà åäíà îò òÿõ èçãëåæäà
147åñòåñòâåíà. 150åñòåñòâåíà.
148 151
149Ïîëîæåíèåòî íà êóðñîðà â òåêñòà ñå íàðè÷à ñúùî "òî÷êà". 152Ïîëîæåíèåòî íà êóðñîðà â òåêñòà ñå íàðè÷à „òî÷êà“. Ïåðåôðàçèðàíî,
150Ïåðåôðàçèðàíî, êóðñîðúò ïîêàçâà íà åêðàíà êúäå å ðàçïîëîæåíà òî÷êàòà â 153êóðñîðúò ïîêàçâà íà åêðàíà êúäå å ðàçïîëîæåíà òî÷êàòà â òåêñòà.
151òåêñòà.
152 154
153Åòî îáîáùåíèå íà ïðîñòèòå äåéñòâèÿ, äâèæåùè êóðñîðà, âêëþ÷èòåëíî 155Åòî îáîáùåíèå íà ïðîñòèòå äåéñòâèÿ, äâèæåùè êóðñîðà, âêëþ÷èòåëíî
154ïðèäâèæâàùèòå ïî äóìà è èçðå÷åíèå: 156ïðèäâèæâàùèòå ïî äóìà è èçðå÷åíèå:
@@ -175,7 +177,7 @@ Control-çíàöèòå äåéñòâàò âúðõó îñíîâíè åäèíèöè, êîèòî ñà íåçàâèñèìè îò
175êîÿòî ïðèäâèæâà äî íà÷àëîòî íà öåëèÿ òåêñò, è M-> (Meta ïî-ãîëÿìî), 177êîÿòî ïðèäâèæâà äî íà÷àëîòî íà öåëèÿ òåêñò, è M-> (Meta ïî-ãîëÿìî),
176êîÿòî ïðåìåñòâà äî êðàÿ íà öåëèÿ òåêñò. 178êîÿòî ïðåìåñòâà äî êðàÿ íà öåëèÿ òåêñò.
177 179
178Ïðè ïîâå÷åòî òåðìèíàëè çíàêúò "<" å îòáåëÿçàí íàä çàïåòàÿòà, òàêà ÷å 180Ïðè ïîâå÷åòî òåðìèíàëè çíàêúò < å îòáåëÿçàí íàä çàïåòàÿòà, òàêà ÷å
179òðÿáâà äà èçïîëçâàòå êëàâèøà Shift, çà äà ãî íàïèøåòå. Íà òåçè 181òðÿáâà äà èçïîëçâàòå êëàâèøà Shift, çà äà ãî íàïèøåòå. Íà òåçè
180òåðìèíàëè òðÿáâà äà èçïîëçâàòå Shift, çà äà âúâåäåòå è M-<; áåç êëàâèøà 182òåðìèíàëè òðÿáâà äà èçïîëçâàòå Shift, çà äà âúâåäåòå è M-<; áåç êëàâèøà
181Shift áèõòå âúâåëè M-çàïåòàÿ. 183Shift áèõòå âúâåëè M-çàïåòàÿ.
@@ -206,17 +208,17 @@ Shift áèõòå âúâåëè M-çàïåòàÿ.
206(èëè EDIT èëè ALT), èìà äðóã, àëòåðíàòèâåí íà÷èí äà âúâåäåòå ÷èñëîâ 208(èëè EDIT èëè ALT), èìà äðóã, àëòåðíàòèâåí íà÷èí äà âúâåäåòå ÷èñëîâ
207àðãóìåíò: âúâåäåòå öèôðèòå, äîêàòî çàäúðæàòå êëàâèøà META. Íèå 209àðãóìåíò: âúâåäåòå öèôðèòå, äîêàòî çàäúðæàòå êëàâèøà META. Íèå
208ïðåïîðú÷âàìå äà íàó÷èòå íà÷èíà ñ C-u, çàùîòî òîé ðàáîòè íà êîéòî è äà 210ïðåïîðú÷âàìå äà íàó÷èòå íà÷èíà ñ C-u, çàùîòî òîé ðàáîòè íà êîéòî è äà
209å òåðìèíàë. ×èñëîâèÿò àðãóìåíò ñå íàðè÷à ñúùî "ïðåôèêñåí àðãóìåíò", 211å òåðìèíàë. ×èñëîâèÿò àðãóìåíò ñå íàðè÷à ñúùî ïðåôèêñåí àðãóìåíò,
210çàùîòî ãî âúâåæäàòå ïðåäè êîìàíäàòà, çà êîÿòî å ïðåäíàçíà÷åí. 212çàùîòî ãî âúâåæäàòå ïðåäè êîìàíäàòà, çà êîÿòî å ïðåäíàçíà÷åí.
211 213
212Íàïðèìåð, C-u 8 C-f ïðèäâèæâà îñåì çíàêà íàïðåä. 214Íàïðèìåð C-u 8 C-f ïðèäâèæâà îñåì çíàêà íàïðåä.
213 215
214>> Îïèòàéòå èçïîëçâàíåòî íà C-n èëè C-p ñ ÷èñëîâ àðãóìåíò, çà äà 216>> Îïèòàéòå èçïîëçâàíåòî íà C-n èëè C-p ñ ÷èñëîâ àðãóìåíò, çà äà
215 ïðèäâèæèòå êóðñîðà äî ðåä, áëèçúê äî òîçè, ñàìî ñ åäíà êîìàíäà. 217 ïðèäâèæèòå êóðñîðà äî ðåä, áëèçúê äî òîçè, ñàìî ñ åäíà êîìàíäà.
216 218
217Ïîâå÷åòî êîìàíäè èçïîëçâàò ÷èñëîâèÿ àðãóìåíò êàòî áðîÿ÷ íà 219Ïîâå÷åòî êîìàíäè èçïîëçâàò ÷èñëîâèÿ àðãóìåíò êàòî áðîÿ÷ íà
218ïîâòîðåíèÿòà, íî íÿêîè ãî èçïîëçâàò çà äðóãè öåëè. Íÿêîëêî êîìàíäè 220ïîâòîðåíèÿòà, íî íÿêîè ãî èçïîëçâàò çà äðóãè öåëè. Íÿêîëêî êîìàíäè
219(íî íèêîÿ îò òåçè, êîèòî ñòå íàó÷èëè äîñåãà) ãî èçïîëçâàò êàòî ôëàã -- 221(íî íèêîÿ îò òåçè, êîèòî ñòå íàó÷èëè äîñåãà) ãî èçïîëçâàò êàòî ôëàã
220ïðèñúñòâèåòî íà ÷èñëîâ àðãóìåíò, íåçàâèñèìî îò ñòîéíîñòà ìó, êàðà 222ïðèñúñòâèåòî íà ÷èñëîâ àðãóìåíò, íåçàâèñèìî îò ñòîéíîñòà ìó, êàðà
221êîìàíäàòà äà âúðøè íåùî ðàçëè÷íî. 223êîìàíäàòà äà âúðøè íåùî ðàçëè÷íî.
222 224
@@ -234,13 +236,8 @@ C-v è M-v ñà äðóã âèä èçêëþ÷åíèå. Êîãàòî èì å äàäåí àðãóìåíò, òå
234bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå 236bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå
235òåêñòà, ùðàêàéêè ñ ìèøêàòà â ïëúçãà÷à. 237òåêñòà, ùðàêàéêè ñ ìèøêàòà â ïëúçãà÷à.
236 238
237>> Îïèòàéòå äà íàòèñíåòå ñðåäíèÿ áóòîí íà âúðõà íà îñâåòåíàòà îáëàñò 239Àêî âàøàòà ìèøêà èìà òúðêàëöå, ìîæåòå è íåãî äà èçïîëçâàòå çà
238 âúòðå â ïëúçãà÷à. Òîâà áè òðÿáâàëî äà ñêðîëèðà òåêñòà êúì 240ñêðîëèðàíå.
239 ïîëîæåíèå, îïðåäåëåíî îò òîâà êîëêî âèñîêî èëè íèñêî ñòå ùðàêíàëè.
240
241>> Îïèòàéòå ñå äà äâèæèòå ìèøêàòà íàãîðå è íàäîëó, äîêàòî ñòå
242 çàäúðæàëè äåñíèÿ áóòîí íàòèñíàò. Ùå âèäèòå, ÷å òåêñòúò ñå ñêðîëèðà
243 íàãîðå è íàäîëó, êàòî äâèæèòå ìèøêàòà.
244 241
245 242
246* ÊÎÃÀÒÎ ÅÌÀÊÑ Å ÁËÎÊÈÐÀË 243* ÊÎÃÀÒÎ ÅÌÀÊÑ Å ÁËÎÊÈÐÀË
@@ -263,7 +260,7 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå
263* ÇÀÁÐÀÍÅÍÈ ÊÎÌÀÍÄÈ 260* ÇÀÁÐÀÍÅÍÈ ÊÎÌÀÍÄÈ
264------------------- 261-------------------
265 262
266Íÿêîè êîìàíäè íà Åìàêñ ñà "çàáðàíåíè", òàêà ÷å íà÷èíàåùèòå ïîòðåáèòåëè 263Íÿêîè êîìàíäè íà Åìàêñ ñà çàáðàíåíè, òàêà ÷å íà÷èíàåùèòå ïîòðåáèòåëè
267äà íå ìîãàò äà ãè óïîòðåáÿò ïî ïîãðåøêà. 264äà íå ìîãàò äà ãè óïîòðåáÿò ïî ïîãðåøêà.
268 265
269Àêî âúâåäåòå íÿêîÿ îò çàáðàíåíèòå êîìàíäè, Åìàêñ èçâåæäà ñúîáùåíèå, 266Àêî âúâåäåòå íÿêîÿ îò çàáðàíåíèòå êîìàíäè, Åìàêñ èçâåæäà ñúîáùåíèå,
@@ -272,16 +269,16 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå
272 269
273Àêî íàèñòèíà èñêàòå äà èçïðîáâàòå êîìàíäàòà, âúâåäåòå êëàâèøà èíòåðâàë 270Àêî íàèñòèíà èñêàòå äà èçïðîáâàòå êîìàíäàòà, âúâåäåòå êëàâèøà èíòåðâàë
274â îòãîâîð íà âúïðîñà. Îáèêíîâåíî àêî íå èñêàòå äà èçïúëíèòå 271â îòãîâîð íà âúïðîñà. Îáèêíîâåíî àêî íå èñêàòå äà èçïúëíèòå
275çàáðàíåíàòà êîìàíäà, îòãîâàðÿòå íà âúïðîñà ñ "n". 272çàáðàíåíàòà êîìàíäà, îòãîâàðÿòå íà âúïðîñà ñ n.
276 273
277>> Âúâåäåòå C-x C-l (êîÿòî å çàáðàíåíà êîìàíäà), è ñëåä òîâà âúâåäåòå 274>> Âúâåäåòå C-x C-l (êîÿòî å çàáðàíåíà êîìàíäà), è ñëåä òîâà âúâåäåòå
278 "n" â îòãîâîð íà âúïðîñà. 275 n â îòãîâîð íà âúïðîñà.
279 276
280 277
281* ÏÐÎÇÎÐÖÈ 278* ÏÐÎÇÎÐÖÈ
282---------- 279----------
283 280
284Åìàêñ ìîæå äà óïðàâëÿâà íÿêîëêî ïðîçîðåöà, âñåêè èçâåæäàéêè ñâîé 281Åìàêñ ìîæå äà óïðàâëÿâà íÿêîëêî ïðîçîðåöà, âñåêè èçâåæäàéêè ñâîé
285ñîáñòâåí òåêñò. Íèå ùå îáÿñíèì ïî-êúñíî êàê äà èçïîëçâàòå íÿêîëêî 282ñîáñòâåí òåêñò. Íèå ùå îáÿñíèì ïî-êúñíî êàê äà èçïîëçâàòå íÿêîëêî
286ïðîçîðåöà. Òî÷íî ñåãà íèå èñêàìå äà îáÿñíèì êàê äà ñå îòúðâåòå îò 283ïðîçîðåöà. Òî÷íî ñåãà íèå èñêàìå äà îáÿñíèì êàê äà ñå îòúðâåòå îò
287äîïúëíèòåëíè ïðîçîðöè è äà ñå âúðíåòå êúì îñíîâíîòî ðåäàêòèðàíå ñ åäèí 284äîïúëíèòåëíè ïðîçîðöè è äà ñå âúðíåòå êúì îñíîâíîòî ðåäàêòèðàíå ñ åäèí
@@ -301,57 +298,52 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå
301>> Âúâåäåòå C-x 1 è âèæòå êàê ïðîçîðåöúò ñ äîêóìåíòàöèÿòà èç÷åçâà. 298>> Âúâåäåòå C-x 1 è âèæòå êàê ïðîçîðåöúò ñ äîêóìåíòàöèÿòà èç÷åçâà.
302 299
303Òàçè êîìàíäà íå å êàòî äðóãèòå êîìàíäè, êîèòî ñòå íàó÷èëè, â òîâà 300Òàçè êîìàíäà íå å êàòî äðóãèòå êîìàíäè, êîèòî ñòå íàó÷èëè, â òîâà
304îòíîøåíèå, ÷å ñå ñúñòîè îò äâà çíàêà. Çàïî÷âà ñúñ çíàêà C-x. Èìà 301îòíîøåíèå, ÷å ñå ñúñòîè îò äâà çíàêà. Çàïî÷âà ñúñ çíàêà CONTROL-x.
305öÿëà ðåäèöà îò êîìàíäè, êîèòî çàïî÷âàò ñ C-x; ìíîãî îò òÿõ èìàò íåùî 302Èìà öÿëà ðåäèöà îò êîìàíäè, êîèòî çàïî÷âàò ñ CONTROL-x; ìíîãî îò òÿõ
306îáùî ñ ïðîçîðöè, ôàéëîâå, áóôåðè è ñâúðçàíèòå ñ òÿõ íåùà. Òåçè 303èìàò íåùî îáùî ñ ïðîçîðöè, ôàéëîâå, áóôåðè è ñâúðçàíèòå ñ òÿõ íåùà.
307êîìàíäè ñà îò äâà, òðè èëè ÷åòèðè çíàêà. 304Òåçè êîìàíäè ñà îò äâà, òðè èëè ÷åòèðè çíàêà.
308 305
309 306
310* ÂÌÚÊÂÀÍÅ È ÈÇÒÐÈÂÀÍÅ 307* ÂÌÚÊÂÀÍÅ È ÈÇÒÐÈÂÀÍÅ
311---------------------- 308----------------------
312 309
313Àêî èñêàòå äà âìúêíåòå òåêñò, ïðîñòî ãî âúâåäåòå. Çíàöèòå, êîèòî 310Àêî èñêàòå äà âìúêíåòå òåêñò, ïðîñòî ãî âúâåäåòå. Çíàöèòå, êîèòî
314ìîãàò äà ñå âèæäàò, êàòî À, 7, * è ò.í., ñå âúçïðèåìàò îò Åìàêñ êàòî 311ìîãàò äà ñå âèæäàò, êàòî À, 7, * è ò.í., ñå âìúêâàò âåäíàãà. Çà äà
315òåêñò è ñå âìúêâàò âåäíàãà. Âúâåäåòå <Return> (êëàâèøúò çà âðúùàíå â 312âìúêíåòå çíàê çà íîâ ðåä, íàòèñíåòå <Return> (òîâà å êëàâèøúò, êîéòî
316íà÷àëîòî íà ðåäà), çà äà âìúêíåòå çíàê çà íîâ ðåä. 313ïîíÿêîãà å îòáåëÿçâàí êàòî „Enter“).
317
318Ìîæå äà èçòðèåòå ïîñëåäíèÿ çíàê, êîéòî ñòå âúâåëè, ñ âúâåæäàíå íà
319<Delback>. <Delback> å êëàâèø îò êëàâèàòóðàòà -- ñúùèÿò, êîéòî
320îáèêíîâåíî èçïîëçâàòå èçâúí Åìàêñ, çà äà èçòðèåòå ïîñëåäíèÿ âúâåäåí îò
321âàñ çíàê. Îáèêíîâåíî å ãîëÿì êëàâèø, íà íÿêîëêî ðåäà ðàçñòîÿíèå îò
322êëàâèøà <Return>, è îáèêíîâåíî å îòáåëÿçàí ñ "Delete", "Del" èëè
323"Backspace".
324 314
325Àêî ãîëåìèÿò êëàâèø òàì å ñ åòèêåò "Backspace", òîãàâà òîé å òîçè, 315Çà äà èçòðèåòå çíàêà íåïîñðåäñòâåíî ïðåäè òåêóùîòî ïîëîæåíèå íà
326êîéòî ùå èçïîëçâàòå çà <Delback>. Ìîæå äà èìà îùå åäèí êëàâèø ñ 316êóðñîðà, âúâåäåòå <DEL>. Îáèêíîâåíî òîâà å êëàâèøúò, îòáåëÿçâàí êàòî
327åòèêåò "Delete" íÿêúäå äðóãàäå, íî òîé íå å <Delback>. 317„Backspace íîðìàëíèÿò çà òîâà äåéñòâèå è èçâúí Åìàêñ.
328 318
329Ïî-îáùî êàçàíî, <Delback> èçòðèâà çíàêà òî÷íî ïðåäè òåêóùîòî ìÿñòî íà 319Ìîæå äà èìà îùå åäèí êëàâèø ñ åòèêåò <Delete> íÿêúäå äðóãàäå, íî òîé
330êóðñîðà. 320íå å <DEL>, çà êîéòî ñòàâà âúïðîñ òóê.
331 321
332>> Íàïðàâåòå òîâà ñåãà -- íàïèøåòå íÿêîëêî çíàêà, ïîñëå ãè èçòðèéòå ñ 322>> Íàïðàâåòå òîâà ñåãà íàïèøåòå íÿêîëêî çíàêà, ïîñëå ãè èçòðèéòå ñ
333 âúâåæäàíå íà <Delback> íÿêîëêî ïúòè. Íå ñå áåçïîêîéòå, ÷å òîçè 323 âúâåæäàíå íà <DEL> íÿêîëêî ïúòè. Íå ñå áåçïîêîéòå, ÷å òîçè ôàéë ùå
334 ôàéë ùå áúäå ïðîìåíåí; âèå íÿìà äà ïðîìåíèòå ïúðâîíà÷àëíîòî 324 áúäå ïðîìåíåí; âèå íÿìà äà ïðîìåíèòå ïúðâîíà÷àëíîòî âúâåäåíèå.
335 âúâåäåíèå. Òîâà å âàøå ëè÷íî êîïèå. 325 Òîâà å âàøå ëè÷íî êîïèå.
336 326
337Êîãàòî ðåä îò òåêñòà ñòàíå òâúðäå äúëúã, çà äà ñå ñúáåðå â ðåä îò 327Êîãàòî ðåä îò òåêñòà ñòàíå òâúðäå äúëúã, çà äà ñå ñúáåðå â ðåä îò
338åêðàíà, ðåäúò îò òåêñòà ñå "ïðîäúëæàâà" íà ñëåäâàùèÿ ðåä. Îáðàòíà 328åêðàíà, ðåäúò îò òåêñòà ñå „ïðîäúëæàâà“ íà ñëåäâàùèÿ ðåä. Àêî
339íàêëîíåíà ÷åðòà ("\") (èëè, àêî èçïîëçâàòå ãðàôè÷åí èíòåðôåéñ, ìàëêà 329èçïîëçâàòå ãðàôè÷åí äèñïëåé, â ìàëêîòî ïðîñòðàíñòâî îòñòðàíè íà òåêñòà
340èçêðèâåíà ñòðåëêà) â äÿñíàòà ãðàíèöà îòáåëÿçâà ðåä, êîéòî å áèë 330(ëåâèÿò è äåñíèÿò „ðúá“) ùå ñå ïîÿâÿò ìàëêè èçâèòè ñòðåëêè çà
341ïðîäúëæåí. 331îòáåëÿçâàíå êúäå ðåäúò ïðîäúëæàâà. Àêî èçïîëçâàòå òåêñòîâ òåðìèíàë,
332ïðîäúëæåíèòå ðåäîâå ñå îòáåëÿçâàò ñ îáðàòíà íàêëîíåíà ÷åðòà („\“) â
333íàé-äÿñíàòà êîëîíà íà ïðîçîðåöà.
342 334
343>> Âúâåäåòå òåêñò, äîêàòî ñòèãíåòå äÿñíàòà ãðàíèöà, è ïðîäúëæåòå ñ 335>> Âúâåäåòå òåêñò, äîêàòî ñòèãíåòå äÿñíàòà ãðàíèöà, è ïðîäúëæåòå ñ
344 âìúêâàíåòî. Ùå âèäèòå ïðîäúëæåíèåòî íà ðåäà äà ñå ïîêàçâà. 336 âìúêâàíåòî. Ùå âèäèòå ïðîäúëæåíèåòî íà ðåäà äà ñå ïîêàçâà.
345 337
346>> Èçïîëçâàéòå íÿêîëêî <Delback>, çà äà èçòðèåòå òåêñòà, äîêàòî ðåäúò 338>> Èçïîëçâàéòå íÿêîëêî <DEL>, çà äà èçòðèåòå òåêñòà, äîêàòî ðåäúò ñå
347 ñå âìåñòè â åäèí åêðàíåí ðåä. Ïðîäúëæåíèåòî íà ðåäà èç÷åçâà. 339 âìåñòè â åäèí åêðàíåí ðåä. Ïðîäúëæåíèåòî íà ðåäà èç÷åçâà.
348 340
349Ìîæå äà èçòðèåòå çíàêà çà íîâ ðåä òî÷íî êàêòî âñåêè äðóã çíàê. 341Ìîæå äà èçòðèåòå çíàêà çà íîâ ðåä òî÷íî êàêòî âñåêè äðóã çíàê.
350Èçòðèâàíåòî íà çíàêà çà íîâ ðåä ìåæäó äâà ðåäà ãè ñëèâà â åäèí ðåä. 342Èçòðèâàíåòî íà çíàêà çà íîâ ðåä ìåæäó äâà ðåäà ãè ñëèâà â åäèí ðåä.
351Àêî ïîëó÷åíèÿò êîìáèíèðàí ðåä å òâúðäå äúëúã, çà äà ñå âìåñòè â 343Àêî ïîëó÷åíèÿò êîìáèíèðàí ðåä å òâúðäå äúëúã, çà äà ñå âìåñòè â
352øèðèíàòà íà åêðàíà, òîé ùå áúäå ïîêàçàí êàòî ïðîäúëæåí ðåä. 344øèðèíàòà íà åêðàíà, òîé ùå áúäå ïîêàçàí êàòî ïðîäúëæåí ðåä.
353 345
354>> Ïðèäâèæåòå êóðñîðà â íà÷àëîòî íà ðåä è âúâåäåòå <Delback>. Òîâà ùå 346>> Ïðèäâèæåòå êóðñîðà â íà÷àëîòî íà ðåä è âúâåäåòå <DEL>. Òîâà ùå
355 ñëåå òîçè ðåä ñ ïðåäèøíèÿ. 347 ñëåå òîçè ðåä ñ ïðåäèøíèÿ.
356 348
357>> Âúâåäåòå <Return>, çà äà âìúêíåòå íàíîâî çíàêà çà íîâ ðåä, êîéòî 349>> Âúâåäåòå <Return>, çà äà âìúêíåòå íàíîâî çíàêà çà íîâ ðåä, êîéòî
@@ -361,48 +353,52 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå
361íà ïîâòîðåíèÿòà; òîâà âêëþ÷âà âìúêâàíåòî íà òåêñòîâè çíàöè. 353íà ïîâòîðåíèÿòà; òîâà âêëþ÷âà âìúêâàíåòî íà òåêñòîâè çíàöè.
362Ïîâòàðÿíåòî íà òåêñòîâ çíàê ãî âìúêâà íÿêîëêî ïúòè. 354Ïîâòàðÿíåòî íà òåêñòîâ çíàê ãî âìúêâà íÿêîëêî ïúòè.
363 355
364>> Îïèòàéòå òîâà ñåãà -- âúâåäåòå C-u 8 *, çà äà âìúêíåòå ********. 356>> Îïèòàéòå òîâà ñåãà âúâåäåòå C-u 8 *, çà äà âìúêíåòå ********.
365 357
366Ñåãà âèå ñòå íàó÷èëè íàé-îñíîâíèòå íà÷èíè çà âúâåæäàíå íà íåùî â Åìàêñ 358Ñåãà âèå ñòå íàó÷èëè íàé-îñíîâíèòå íà÷èíè çà âúâåæäàíå íà íåùî â Åìàêñ
367è ïîïðàâÿíå íà ãðåøêè. Ìîæåòå ñúùî òàêà äà èçòðèâàòå äóìè èëè ðåäîâå. 359è ïîïðàâÿíå íà ãðåøêè. Ìîæåòå ñúùî òàêà äà èçòðèâàòå äóìè èëè ðåäîâå.
368Åòî îáîáùåíèå íà èçòðèâàùèòå äåéñòâèÿ: 360Åòî îáîáùåíèå íà èçòðèâàùèòå äåéñòâèÿ:
369 361
370 <Delback> èçòðèâàíå íà çíàêà òî÷íî ïðåäè êóðñîðà 362 <DEL> Èçòðèâàíå íà çíàêà òî÷íî ïðåäè êóðñîðà
371 C-d èçòðèâàíå íà çíàêà òî÷íî ñëåä êóðñîðà 363 C-d Èçòðèâàíå íà çíàêà òî÷íî ñëåä êóðñîðà
372 364
373 M-<Delback> èçòðèâàíå íà äóìàòà íåïîñðåäñòâåíî ïðåäè êóðñîðà 365 M-<DEL> Èçòðèâàíå íà äóìàòà íåïîñðåäñòâåíî ïðåäè êóðñîðà
374 M-d èçòðèâàíå íà äóìàòà ñëåä êóðñîðà 366 M-d Èçòðèâàíå íà äóìàòà ñëåä êóðñîðà
375 367
376 C-k èçòðèâàíå îò ìÿñòîòî íà êóðñîðà äî êðàÿ íà ðåäà 368 C-k Èçòðèâàíå îò ìÿñòîòî íà êóðñîðà äî êðàÿ íà ðåäà
377 M-k èçòðèâàíå äî êðàÿ íà òåêóùîòî èçðå÷åíèå 369 M-k Èçòðèâàíå äî êðàÿ íà òåêóùîòî èçðå÷åíèå
378 370
379Çàáåëåæåòå, ÷å <Delback> è C-d, ñðàâíåíè ñ M-<Delback> è M-d, 371Çàáåëåæåòå, ÷å <DEL> è C-d, ñðàâíåíè ñ M-<DEL> è M-d, ðàçøèðÿâàò
380ðàçøèðÿâàò ïîäîáèåòî, çàïî÷íàòî îò C-f è M-f (äîáðå, <Delback> íå å 372ïîäîáèåòî, çàïî÷íàòî îò C-f è M-f (äîáðå, <DEL> íå å íàèñòèíà
381íàèñòèíà êîíòðîëèðàù çíàê, íî íåêà íå ñå áåçïîêîèì çà òîâà). C-k è 373êîíòðîëèðàù çíàê, íî íåêà íå ñå áåçïîêîèì çà òîâà). C-k è M-k ñà
382M-k ñà ïîäîáíè íà C-e è M-e â ñìèñúë, ÷å åäíèòå ñà çà ðåäîâå, à 374ïîäîáíè íà C-e è M-e â ñìèñúë, ÷å åäíèòå ñà çà ðåäîâå, à äðóãèòå – çà
383äðóãèòå -- çà èçðå÷åíèÿ. 375èçðå÷åíèÿ.
384 376
385Ìîæåòå ñúùî äà ïðåìàõíåòå âñÿêà ÷àñò îò áóôåðà ñ åäèí óíèâåðñàëåí 377Ìîæåòå ñúùî äà ïðåìàõíåòå âñÿêà ÷àñò îò òåêñòà ïî åäèí óíèâåðñàëåí
386íà÷èí. Ïðèäâèæåòå ñå äî åäèíèÿ êðàé íà ÷àñòòà è âúâåäåòå C-@ èëè 378íà÷èí. Ïðèäâèæåòå ñå äî åäèíèÿ êðàé è âúâåäåòå C-<SPC> (<SPC> å
387C-èíòåðâàë (êîåòî è äà å îò äâåòå). Ïðèäâèæåòå ñå äî äðóãèÿ êðàé íà 379èíòåðâàëúò).. Ïðèäâèæåòå ñå äî äðóãèÿ êðàé íà òåêñòà, êîéòî èñêàòå äà
388÷àñòòà è âúâåäåòå C-w. Òîâà ùå èçðåæå öåëèÿ òåêñò ìåæäó òåçè äâà 380èçòðèåòå. Äîêàòî ãî ïðàâèòå, Åìàêñ îñâåòÿâà òåêñòúò ìåæäó êóðñîðà è
389êðàÿ. 381ìÿñòîòî, êúäåòî ñå âúâåëè C-<SPC>. Íàêðàÿ âúâåäåòå C-w. Òîâà ùå
382èçðåæå öåëèÿ òåêñò ìåæäó òåçè äâà êðàÿ.
390 383
391>> Ïðèäâèæåòå êóðñîðà äî çíàêà "Ì" â íà÷àëîòî íà ïðåäèøíèÿ àáçàö. 384>> Ïðèäâèæåòå êóðñîðà äî çíàêà Ì â íà÷àëîòî íà ïðåäèøíèÿ àáçàö.
392>> Âúâåäåòå C-èíòåðâàë. Åìàêñ òðÿáâà äà èçâåäå ñúîáùåíèå "Mark set" â 385>> Âúâåäåòå C-<SPC>. Åìàêñ òðÿáâà äà èçâåäå ñúîáùåíèå Mark set â
393 äîëíèÿ êðàé íà åêðàíà. 386 äîëíèÿ êðàé íà åêðàíà.
394>> Ïðèäâèæåòå êóðñîðà äî áóêâàòà "ð" â "êðàé" íà âòîðèÿ ðåä îò àáçàöà. 387>> Ïðèäâèæåòå êóðñîðà äî áóêâàòà „ð“ â „êðàé“ íà âòîðèÿ ðåä îò àáçàöà.
395>> Âúâåäåòå C-w. Òîâà ùå èçðåæå òåêñòà, çàïî÷âàù îò "Ì" è çàâúðøâàù 388>> Âúâåäåòå C-w. Òîâà ùå èçðåæå òåêñòà, çàïî÷âàù îò „Ì“ è çàâúðøâàù
396 òî÷íî ïðåäè "ð". 389 òî÷íî ïðåäè „ð“.
397 390
398Ðàçëèêàòà ìåæäó "èçðÿçâàíå" (kill, cut) è "èçòðèâàíå" (delete) å, ÷å 391Ðàçëèêàòà ìåæäó „èçðÿçâàíå“ (kill, cut) è „èçòðèâàíå“ (delete) å, ÷å
399"èçðÿçàíèÿò" òåêñò ìîæå äà áúäå âìúêíàò íàíîâî, äîêàòî "èçòðèòèòå" 392„èçðÿçàíèÿò“ òåêñò ìîæå äà áúäå âìúêíàò íàíîâî, äîêàòî „èçòðèòèòå“
400íåùà íå ìîãàò äà ñå âìúêíàò íàíîâî. Ïîñòàâÿíåòî íàíîâî íà èçðÿçàí 393íåùà íå ìîãàò äà ñå âìúêíàò íàíîâî (îáà÷å ìîæåòå äà îòìåíèòå
401òåêñò ñå íàðè÷à "âìúêâàíå" (yank, paste). Îáùî êàçàíî, êîìàíäèòå, 394èçòðèâàíåòî – âæ. ïî-äîëó). Ïîñòàâÿíåòî íàíîâî íà èçðÿçàí òåêñò ñå
402êîèòî îòñòðàíÿâàò ìíîãî òåêñò, ãî èçðÿçâàò (òàêà ÷å òîé äà ìîæå äà 395íàðè÷à „âìúêâàíå“ (yank, paste). Îáùî êàçàíî, êîìàíäèòå, êîèòî
403áúäå âìúêíàò), äîêàòî êîìàíäèòå, êîèòî îòñòðàíÿâàò ñàìî åäèí çíàê èëè 396îòñòðàíÿâàò ìíîãî òåêñò, ãî èçðÿçâàò (òàêà ÷å òîé äà ìîæå äà áúäå
397âìúêíàò), äîêàòî êîìàíäèòå, êîèòî îòñòðàíÿâàò ñàìî åäèí çíàê èëè
404èçòðèâàò ñàìî ïðàçíè ðåäîâå è çíàöè, èçâúðøâàò èçòðèâàíå (òàêà ÷å íå 398èçòðèâàò ñàìî ïðàçíè ðåäîâå è çíàöè, èçâúðøâàò èçòðèâàíå (òàêà ÷å íå
405ìîæåòå äà âìúêíåòå íàíîâî òîçè òåêñò). 399ìîæåòå äà âìúêíåòå íàíîâî òîçè òåêñò). <DEL> è C-d èçòðèâàò â
400îáèêíîâåíèÿ ñëó÷àé, êîãàòî íÿìà ïðåôèêñåí àðãóìåíò. Ïðè íàëè÷èå íà
401àðãóìåíò òå îòðÿçâàò.
406 402
407>> Ïðèäâèæåòå êóðñîðà äî íà÷àëîòî íà ðåä, êîéòî íå å ïðàçåí. Òîãàâà 403>> Ïðèäâèæåòå êóðñîðà äî íà÷àëîòî íà ðåä, êîéòî íå å ïðàçåí. Òîãàâà
408 âúâåäåòå C-k, çà äà èçðåæåòå òåêñòà íà òîçè ðåä. 404 âúâåäåòå C-k, çà äà èçðåæåòå òåêñòà íà òîçè ðåä.
@@ -414,14 +410,16 @@ C-k èçðÿçâà öåëèÿ ðåä è ïðàâè äðóãèòå ðåäîâå äà ñå ïðèäâèæàò íàãîðå.
414C-k îáðàáîòâà ÷èñëîâèòå àðãóìåíòè ïî ñïåöèàëåí íà÷èí: ïðåìàõâàò ñå 410C-k îáðàáîòâà ÷èñëîâèòå àðãóìåíòè ïî ñïåöèàëåí íà÷èí: ïðåìàõâàò ñå
415òîëêîâà íà áðîé ðåäîâå È òÿõíîòî ñúäúðæàíèå. Òîâà íå å ïðîñòî 411òîëêîâà íà áðîé ðåäîâå È òÿõíîòî ñúäúðæàíèå. Òîâà íå å ïðîñòî
416ïîâòîðåíèå. C-u 2 C-k èçðÿçâà äâà ðåäà è òåõíèòå çíàöè çà íîâ ðåä; 412ïîâòîðåíèå. C-u 2 C-k èçðÿçâà äâà ðåäà è òåõíèòå çíàöè çà íîâ ðåä;
417âúâåæäàíåòî íà C-k äâà ïúòè íå ïðàâè òîâà. 413âúâåæäàíåòî äâà ïúòè íà C-k íå ïðàâè òîâà.
418 414
419Âðúùàíåòî îáðàòíî íà òåêñò ñå íàðè÷à "âìúêâàíå". (Ìèñëåòå çà íåãî 415Âðúùàíåòî îáðàòíî íà òåêñò ñå íàðè÷à âìúêâàíå. (Ìèñëåòå çà íåãî
420êàòî çà èçâàæäàíå îáðàòíî, èëè äðúïâàíå îáðàòíî, íà òåêñò, êîéòî å áèë 416êàòî çà èçâàæäàíå îáðàòíî, èëè äðúïâàíå îáðàòíî, íà òåêñò, êîéòî å áèë
421èçðÿçàí.) Ìîæåòå äà âìúêâàòå èçðÿçàíèÿ òåêñò èëè íà ñúùîòî ìÿñòî, 417èçðÿçàí.) Ìîæåòå äà âìúêâàòå èçðÿçàíèÿ òåêñò èëè íà ñúùîòî ìÿñòî,
422îòêúäåòî å áèë ïðåìàõíàò, èëè íà äðóãî ìÿñòî â áóôåðà, äàæå è â 418îòêúäåòî å áèë ïðåìàõíàò, èëè íà äðóãî ìÿñòî â áóôåðà, èëè äàæå â
423ðàçëè÷åí ôàéë. Ìîæåòå äà âìúêâàòå åäèí è ñúù òåêñò íÿêîëêî ïúòè; òîâà 419ðàçëè÷åí ôàéë. Ìîæåòå äà âìúêâàòå åäèí è ñúù òåêñò íÿêîëêî ïúòè; òîâà
424ïðàâè íÿêîëêî êîïèÿ îò íåãî. 420ïðàâè íÿêîëêî êîïèÿ îò íåãî. Íÿêîè äðóãè ðåäàêòîðè íàðè÷àò
421èçðÿçâàíåòî (kill) è âìúêâàíåòî (yank) ñúîòâåòíî èçðÿçâàíå (cut) è
422ïîñòàâÿíå (paste) (âæ. Ðå÷íèêà íà Ðúêîâîäñòâîòî íà Åìàêñ).
425 423
426Êîìàíäàòà çà âìúêâàíå å C-y. Òÿ âìúêâà íàíîâî ïîñëåäíèÿ èçðÿçàí òåêñò 424Êîìàíäàòà çà âìúêâàíå å C-y. Òÿ âìúêâà íàíîâî ïîñëåäíèÿ èçðÿçàí òåêñò
427â òåêóùîòî ìÿñòî íà êóðñîðà. 425â òåêóùîòî ìÿñòî íà êóðñîðà.
@@ -466,31 +464,30 @@ C-k îáðàáîòâà ÷èñëîâèòå àðãóìåíòè ïî ñïåöèàëåí íà÷èí: ïðåìàõâàò ñå
466-------- 464--------
467 465
468Àêî íàïðàâèòå ïðîìÿíà â òåêñòà è ñëåä òîâà ðåøèòå, ÷å òîâà å áèëî 466Àêî íàïðàâèòå ïðîìÿíà â òåêñòà è ñëåä òîâà ðåøèòå, ÷å òîâà å áèëî
469ãðåøêà, âèå ìîæåòå äà îòìåíèòå ïðîìÿíàòà ñ êîìàíäàòà çà îòìåíÿíå, C-x 467ãðåøêà, âèå ìîæåòå äà îòìåíèòå ïðîìÿíàòà ñ êîìàíäàòà çà îòìåíÿíå, C-/.
470u.
471 468
472Îáèêíîâåíî C-x u îòìåíÿ ïðîìåíèòå, íàïðàâåíè îò åäíà êîìàíäà; àêî 469Îáèêíîâåíî C-/ îòìåíÿ ïðîìåíèòå, íàïðàâåíè îò åäíà êîìàíäà; àêî
473ïîâòàðÿòå C-x u íÿêîëêî ïúòè ïîñëåäîâàòåëíî, âñÿêî ïîâòîðåíèå îòìåíÿ 470ïîâòàðÿòå C-/ íÿêîëêî ïúòè ïîñëåäîâàòåëíî, âñÿêî ïîâòîðåíèå îòìåíÿ îùå
474îùå åäíà êîìàíäà. 471åäíà êîìàíäà.
475 472
476Íî èìà äâå èçêëþ÷åíèÿ: êîìàíäèòå, êîèòî íå ïðîìåíÿò òåêñòà, íå ñå 473Íî èìà äâå èçêëþ÷åíèÿ: êîìàíäèòå, êîèòî íå ïðîìåíÿò òåêñòà, íå ñå
477áðîÿò (òîâà âêëþ÷âà ïðèäâèæâàíåòî íà êóðñîðà è ñêðîëèðàùèòå êîìàíäè), 474áðîÿò (òîâà âêëþ÷âà ïðèäâèæâàíåòî íà êóðñîðà è ñêðîëèðàùèòå êîìàíäè),
478è ñàìîâìúêâàùèòå ñå çíàöè îáèêíîâåíî ñå îáðàáîòâàò íà ãðóïè, âñÿêà äî 475è ñàìîâìúêâàùèòå ñå çíàöè îáèêíîâåíî ñå îáðàáîòâàò íà ãðóïè, âñÿêà äî
47920 çíàêà. (Òîâà íàìàëÿâà áðîÿ íà C-x u, êîèòî òðÿáâà äà âúâåäåòå, çà 47620 çíàêà. (Òîâà íàìàëÿâà áðîÿ íà C-/, êîèòî òðÿáâà äà âúâåäåòå, çà äà
480äà îòìåíèòå âúâåäåí òåêñò.) 477îòìåíèòå âúâåäåí òåêñò.)
481 478
482>> Èçðåæåòå òîçè ðåä ñ C-k, ñëåä òîâà âúâåäåòå C-x u è òîé òðÿáâà äà 479>> Èçðåæåòå òîçè ðåä ñ C-k, ñëåä òîâà âúâåäåòå C-/ è òîé òðÿáâà äà ñå
483 ñå ïîÿâè îòíîâî. 480 ïîÿâè îòíîâî.
484 481
485C-_ å àëòåðíàòèâíà îòìåíÿùà êîìàíäà; òÿ ðàáîòè òî÷íî êàòî C-x u, íî å 482C-_ å àëòåðíàòèâíà îòìåíÿùà êîìàíäà; òÿ ðàáîòè òî÷íî êàòî C-/. Íà
486ïî-ëåñíà çà âúâåæäàíå íÿêîëêî ïúòè ïîñëåäîâàòåëíî. Íåäîñòàòúêúò íà 483íÿêîè òåðìèíàëè âúâåæäàíåòî íà C-/ âñúùíîñò èçïðàùà C-_ íà Åìàêñ.
487C_- å, ÷å íà íÿêîè êëàâèàòóðè íå å î÷åâèäíî êàê òðÿáâà äà ñå âúâåäå. 484Êàòî àëòåðíàòèâà, C-x u ðàáîòè òî÷íî êàòî C-/, íî å ïî-íåóäîáíà çà
488Çàòîâà îñèãóðÿâàìå è C-x u. Íà íÿêîè òåðìèíàëè ìîæå äà âúâåäåòå C-_ ñ 485âúâåæäàíå.
489âúâåæäàíå íà /, äîêàòî çàäúðæàòå CONTROL.
490 486
491×èñëîâ àðãóìåíò êúì C-_ èëè C-x u äåéñòâà êàòî áðîÿ÷ íà ïîâòîðåíèÿòà. 487×èñëîâ àðãóìåíò êúì C-/, C-_ èëè C-x u äåéñòâà êàòî áðîÿ÷ íà
488ïîâòîðåíèÿ.
492 489
493Ìîæå äà îòìåíÿòà èçòðèâàíå íà òåêñò òî÷íî êàêòî îòìåíÿòå èçðÿçâàíå íà 490Ìîæå äà îòìåíÿòå èçòðèâàíå íà òåêñò òî÷íî êàêòî îòìåíÿòå èçðÿçâàíå íà
494òåêñò. Ðàçëè÷èåòî ìåæäó èçðÿçâàíåòî íà íåùî è èçòðèâàíåòî ìó 491òåêñò. Ðàçëè÷èåòî ìåæäó èçðÿçâàíåòî íà íåùî è èçòðèâàíåòî ìó
495âúçäåéñòâà äàëè ùå ìîæå äà ãî èçâàäèòå ñ C-y; çà îòìåíÿíåòî íÿìà 492âúçäåéñòâà äàëè ùå ìîæå äà ãî èçâàäèòå ñ C-y; çà îòìåíÿíåòî íÿìà
496ðàçëèêà ìåæäó äâàòà âèäà. 493ðàçëèêà ìåæäó äâàòà âèäà.
@@ -501,35 +498,35 @@ C_- å, ÷å íà íÿêîè êëàâèàòóðè íå å î÷åâèäíî êàê òðÿáâà äà ñå âúâåäå.
501 498
502Çà äà íàïðàâèòå òåêñòà, êîéòî ðåäàêòèðàòå, ïîñòîÿíåí, òðÿáâà äà ãî 499Çà äà íàïðàâèòå òåêñòà, êîéòî ðåäàêòèðàòå, ïîñòîÿíåí, òðÿáâà äà ãî
503ñëîæèòå âúâ ôàéë.  ïðîòèâåí ñëó÷àé òîé ùå èç÷åçíå, êîãàòî Åìàêñ 500ñëîæèòå âúâ ôàéë.  ïðîòèâåí ñëó÷àé òîé ùå èç÷åçíå, êîãàòî Åìàêñ
504ïðèêëþ÷è. Çà äà ñëîæèòå âàøèÿ òåêñò âúâ ôàéë, òðÿáâà äà "íàìåðèòå" 501ïðèêëþ÷è. Çà äà ñëîæèòå âàøèÿ òåêñò âúâ ôàéë, òðÿáâà äà íàìåðèòå
505ôàéëà ïðåäè äà âúâåæäàòå òåêñò. (Òîâà ñúùî ñå íàðè÷à "ïîñåùàâàíå" íà 502(find) ôàéëà ïðåäè äà âúâåæäàòå òåêñò. (Òîâà ñúùî ñå íàðè÷à
506ôàéëà.) 503„ïîñåùàâàíå“ (visit) íà ôàéë.)
507 504
508Íàìèðàíå íà ôàéë îçíà÷àâà, ÷å âèæäàòå ñúäúðæàíèåòî ìó â Åìàêñ.  505Íàìèðàíå íà ôàéë îçíà÷àâà, ÷å âèæäàòå ñúäúðæàíèåòî ìó â Åìàêñ. Â
509ìíîãî ñëó÷àè òîâà å êàòî äà ðåäàêòèðàòå ñàìèÿ ôàéë. Îáà÷å ïðîìåíèòå, 506ìíîãî ñëó÷àè òîâà å êàòî äà ðåäàêòèðàòå ñàìèÿ ôàéë. Îáà÷å ïðîìåíèòå,
510êîèòî ïðàâèòå, èçïîëçâàéêè Åìàêñ, íå îñòàâàò ïîñòîÿííè, äîêàòî íå 507êîèòî ïðàâèòå, èçïîëçâàéêè Åìàêñ, íå îñòàâàò ïîñòîÿííè, äîêàòî íå
511"çàïèøåòå" ôàéëà. Òîâà å òàêà, çà äà ñå ïðåäîòâðàòè îñòàâÿíåòî íà 508çàïèøåòå (save) ôàéëà. Òîâà å òàêà, çà äà ñå ïðåäîòâðàòè îñòàâÿíåòî
512ïîëóïðîìåíåí ôàéë â ñèñòåìàòà, êîãàòî íå èñêàòå òîâà. Äîðè êîãàòî 509íà ïîëóïðîìåíåí ôàéë â ñèñòåìàòà, êîãàòî íå èñêàòå òîâà. Äîðè êîãàòî
513çàïèñâàòå, Åìàêñ îñòàâÿ íà÷àëíèÿ ôàéë ïîä ïðîìåíåíî èìå, â ñëó÷àé, ÷å 510çàïèñâàòå, Åìàêñ îñòàâÿ íà÷àëíèÿ ôàéë ïîä ïðîìåíåíî èìå, â ñëó÷àé, ÷å
514ïî-êúñíî ðåøèòå, ÷å âàøèòå ïðîìåíè ñà áèëè ãðåøêà. 511ïî-êúñíî ðåøèòå, ÷å âàøèòå ïðîìåíè ñà áèëè ãðåøêà.
515 512
516Àêî ïîãëåäíåòå â äúíîòî íà åêðàíà, ùå âèäèòå ðåä, êîéòî çàïî÷âà è 513Àêî ïîãëåäíåòå â äúíîòî íà åêðàíà, ùå âèäèòå ðåä, êîéòî çàïî÷âà ñ
517çàâúðøâà ñ òèðåòà è çàïî÷âà ñ "-b:-- TUTORIAL.bg" èëè íåùî ïîäîáíî. 514òèðåòà b:--- TUTORIAL.bg èëè íåùî ïîäîáíî. Òàçè ÷àñò îò åêðàíà
518Òàçè ÷àñò îò åêðàíà ïîêàçâà èìåòî íà ôàéëà, êîéòî ñòå ïîñåòèëè. Òî÷íî 515ïîêàçâà èìåòî íà ôàéëà, êîéòî ñòå ïîñåòèëè. Òî÷íî ñåãà âèå ñòå
519ñåãà âèå ñòå ïîñåòèëè ôàéë, íàðå÷åí "TUTORIAL.bg", êîéòî å âàøåòî 516ïîñåòèëè ôàéë, íàðå÷åí TUTORIAL.bg, êîéòî å âàøåòî ëè÷íî
520ëè÷íî êîïèå-÷åðíîâà íà Åìàêñ âúâåäåíèåòî. Êîãàòî íàìåðèòå ôàéë â 517êîïèå-÷åðíîâà íà Åìàêñ âúâåäåíèåòî. Êîãàòî íàìåðèòå ôàéë â Åìàêñ,
521Åìàêñ, èìåòî íà òîçè ôàéë ùå ñå ïîÿâè íà ñúùîòî ìÿñòî. 518èìåòî íà òîçè ôàéë ùå ñå ïîÿâè íà òîâà ìÿñòî.
522 519
523Îñîáåíîñò íà êîìàíäàòà çà íàìèðàíå íà ôàéë å, ÷å òðÿáâà äà êàæåòå 520Îñîáåíîñò íà êîìàíäàòà çà íàìèðàíå íà ôàéë å, ÷å òðÿáâà äà êàæåòå
524èìåòî íà ôàéëà, êîéòî èñêàòå. Íèå ãî íàðè÷àìå "÷åòåíå íà àðãóìåíò îò 521èìåòî íà ôàéëà, êîéòî èñêàòå. Êàçâàìå, ÷å êîìàíäàòà „÷åòå íà
525òåðìèíàëà" (â òîçè ñëó÷àé àðãóìåíòúò å èìåòî íà ôàéëà). Ñëåä êàòî 522àðãóìåíò“ (â òîçè ñëó÷àé àðãóìåíòúò å èìåòî íà ôàéëà). Ñëåä êàòî
526âúâåäåòå êîìàíäàòà 523âúâåäåòå êîìàíäàòà
527 524
528 C-x C-f Íàìèðàíå íà ôàéë 525 C-x C-f Íàìèðàíå íà ôàéë
529 526
530Åìàêñ âè ïîäêàíÿ äà âúâåäåòå èìåòî íà ôàéëà. Èìåòî íà ôàéëà, êîåòî 527Åìàêñ âè ïîäêàíÿ äà âúâåäåòå èìåòî íà ôàéëà. Èìåòî íà ôàéëà, êîåòî
531íàïèøåòå, ñå ïîÿâÿâà â äúíîòî íà åêðàíà. Ðåäúò â äúíîòî íà åêðàíà ñå 528íàïèøåòå, ñå ïîÿâÿâà â äúíîòî íà åêðàíà. Ðåäúò â äúíîòî íà åêðàíà ñå
532íàðè÷à ìèíèáóôåð, êîãàòî ñå èçïîëçâà çà òîçè âèä âõîä. Ìîæåòå äà 529íàðè÷à ìèíèáóôåð, êîãàòî ñå èçïîëçâà çà òîçè âèä âúâåæäàíå. Ìîæåòå äà
533èçïîëçâàòå îáèêíîâåíèòå êîìàíäè çà ðåäàêòèðàíå íà Åìàêñ, çà äà 530èçïîëçâàòå îáèêíîâåíèòå êîìàíäè çà ðåäàêòèðàíå íà Åìàêñ, çà äà
534ðåäàêòèðàòå èìåòî íà ôàéëà. 531ðåäàêòèðàòå èìåòî íà ôàéëà.
535 532
@@ -541,35 +538,36 @@ C_- å, ÷å íà íÿêîè êëàâèàòóðè íå å î÷åâèäíî êàê òðÿáâà äà ñå âúâåäå.
541 Òàêà ÷å íå íàìèðàòå ôàéë. 538 Òàêà ÷å íå íàìèðàòå ôàéë.
542 539
543Êîãàòî ïðèêëþ÷èòå ñ âúâåæäàíåòî íà èìåòî íà ôàéëà, âúâåäåòå <Return>, 540Êîãàòî ïðèêëþ÷èòå ñ âúâåæäàíåòî íà èìåòî íà ôàéëà, âúâåäåòå <Return>,
544çà äà ïîêàæåòå òîâà. Òîãàâà C-x C-f òðúãâà äà ðàáîòè è íàìèðà ôàéëà, 541çà äà çàâúðøèòå. Ìèíèáóôåðúò èç÷åçâà è êîìàíäàòà C-x C-f òðúãâà äà
545êîéòî ñòå èçáðàëè. Ìèíèáóôåðúò èç÷åçâà, êîãàòî êîìàíäàòà C-x C-f 542ðàáîòè è íàìèðà ôàéëà, êîéòî ñòå èçáðàëè.
546ñâúðøè.
547 543
548Ñëåä ìàëêî ñúäúðæàíèåòî íà ôàéëà ñå ïîÿâÿâà íà åêðàíà è âèå ìîæåòå äà 544Ñëåä ìàëêî ñúäúðæàíèåòî íà ôàéëà ñå ïîÿâÿâà íà åêðàíà è âèå ìîæåòå äà
549ðåäàêòèðàòå ñúäúðæàíèåòî ìó. Êîãàòî ïîæåëàåòå äà çàïàçèòå âàøèòå 545ðåäàêòèðàòå ñúäúðæàíèåòî ìó. Êîãàòî ïîæåëàåòå äà çàïàçèòå âàøèòå
550ïðîìåíè çà ïîñòîÿííî, âúâåäåòå êîìàíäàòà 546ïðîìåíè çà ïîñòîÿííî, âúâåäåòå êîìàíäàòà
551 547
552 C-x C-s Çàïàçâàíå íà ôàéëà 548 C-x C-s Çàïèñ (save) íà ôàéëà
553 549
554Òîâà êîïèðà òåêñòà îò Åìàêñ âúâ ôàéëà. Ïúðâèÿ ïúò, êîãàòî òîâà ñå 550Òîâà êîïèðà òåêñòà îò Åìàêñ âúâ ôàéëà. Ïúðâèÿ ïúò, êîãàòî òîâà ñå
555íàïðàâè, Åìàêñ ïðåèìåíóâà íà÷àëíèÿ ôàéë ñ íîâî èìå, òàêà ÷å òîé äà íå 551íàïðàâè, Åìàêñ ïðåèìåíóâà íà÷àëíèÿ ôàéë ñ íîâî èìå, òàêà ÷å òîé äà íå
556ñå èçãóáè. Íîâîòî èìå ñå ïîñòðîÿâà ñ äîáàâÿíå íà "~" â êðàÿ íà èìåòî 552ñå èçãóáè. Íîâîòî èìå ñå ïîñòðîÿâà ñ äîáàâÿíå íà ~ â êðàÿ íà èìåòî
557íà íà÷àëíèÿ ôàéë. 553íà íà÷àëíèÿ ôàéë.
558 554
559Êîãàòî çàïàçâàíåòî å ñâúðøèëî, Åìàêñ èçâåæäà èìåòî íà ôàéëà, êîéòî å 555Êîãàòî çàïàçâàíåòî å ñâúðøèëî, Åìàêñ èçâåæäà èìåòî íà ôàéëà, êîéòî å
560áèë çàïèñàí. Òðÿáâà äà çàïèñâàòå äîñòàòú÷íî ÷åñòî, òàêà ÷å äà íå 556áèë çàïèñàí. Òðÿáâà äà çàïèñâàòå äîñòàòú÷íî ÷åñòî, òàêà ÷å äà íå
561èçãóáèòå ìíîãî ðàáîòà, àêî ñèñòåìàòà ñå ñðèíå ïî íÿêàêâà ïðè÷èíà. 557èçãóáèòå ìíîãî ðàáîòà, àêî ñèñòåìàòà ñå ñðèíå ïî íÿêàêâà ïðè÷èíà
558(âæ. ðàçäåëà „Àâòîìàòè÷åí çàïèñ“ ïî-äîëó).
562 559
563>> Âúâåäåòå C-x C-s, çàïàçâàéêè âàøåòî êîïèå îò âúâåäåíèåòî. 560>> Âúâåäåòå C-x C-s TUTORIAL.bg <Return>.
564 Òîâà òðÿáâà äà èçâåäå "Wrote ...TUTORIAL.bg" â äúíîòî íà åêðàíà. 561 Òîâà ùå çàïèøå âúâåäåíèåòî âúâ ôàéë ñ èìå TUTORIAL.bg è ùå ïîêàæå
562 „Wrote ...TUTORIAL.bg“ â äúíîòî íà åêðàíà.
565 563
566Ìîæå äà íàìåðèòå ñúùåñòâóâàù ôàéë, äà ãî ðàçãëåäàòå è äà ãî 564Ìîæå äà íàìåðèòå ñúùåñòâóâàù ôàéë, äà ãî ðàçãëåäàòå è äà ãî
567ðåäàêòèðàòå. Ìîæåòå ñúùî äà íàìåðèòå ôàéë, êîéòî íå ñúùåñòâóâà. Òîâà 565ðåäàêòèðàòå. Ìîæåòå ñúùî äà íàìåðèòå ôàéë, êîéòî íå ñúùåñòâóâà. Òîâà
568å íà÷èíúò çà ñúçäàâàíå íà íîâè ôàéëîâå â Åìàêñ: íàìèðàòå ôàéëà, êîéòî 566å íà÷èíúò çà ñúçäàâàíå íà íîâè ôàéëîâå â Åìàêñ: íàìèðàòå ôàéëà, êîéòî
569ùå áúäå â íà÷àëîòî ïðàçåí, è òîãàâà çàïî÷âàòå âìúêâàíåòî íà òåêñòà çà 567ùå áúäå â íà÷àëîòî ïðàçåí, è òîãàâà çàïî÷âàòå âìúêâàíåòî íà òåêñòà çà
570ôàéëà. Êîãàòî ãîâîðèòå çà "çàïèñâàíå" íà ôàéë, Åìàêñ âñúùíîñò ùå 568ôàéëà. Êîãàòî èñêàòå çàïèñ íà ôàéë, Åìàêñ âñúùíîñò ùå ñúçäàäå ôàéëà
571ñúçäàäå ôàéëà ñ òåêñòà, êîéòî ñòå âúâåëè. Îòòàì íàòàòúê ìîæå äà 569ñ òåêñòà, êîéòî ñòå âúâåëè. Îòòàì íàòàòúê ìîæå äà ñ÷èòàòå, ÷å
572ñ÷èòàòå, ÷å ðåäàêòèðàòå âå÷å ñúùåñòâóâàù ôàéë. 570ðåäàêòèðàòå âå÷å ñúùåñòâóâàù ôàéë.
573 571
574 572
575* ÁÓÔÅÐÈ 573* ÁÓÔÅÐÈ
@@ -579,53 +577,50 @@ C_- å, ÷å íà íÿêîè êëàâèàòóðè íå å î÷åâèäíî êàê òðÿáâà äà ñå âúâåäå.
579Ìîæåòå äà ïðåâêëþ÷èòå îáðàòíî êúì íåãî, êàòî ãî íàìåðèòå ïàê ñ C-x 577Ìîæåòå äà ïðåâêëþ÷èòå îáðàòíî êúì íåãî, êàòî ãî íàìåðèòå ïàê ñ C-x
580C-f. Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Åìàêñ. 578C-f. Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Åìàêñ.
581 579
582>> Ñúçäàéòå ôàéë ñ èìå "foo", âúâåæäàéêè C-x C-f foo <Return>. 580Åìàêñ ñúõðàíÿâà òåêñòà íà âñåêè ôàéëà â îáåêò, íàðè÷àí „áóôåð“.
583 Âìúêíåòå ìàëêî òåêñò, ðåäàêòèðàéòå ãî è çàïàçåòå "foo" ñ âúâåæäàíå 581Íàìèðàíåòî íà ôàéë ñúçäàâà íîâ áóôåð âúòðå â Åìàêñ. Çà äà âèäèòå
584 íà C-x C-s. 582ñïèñúê ñ âñè÷êè ñúùåñòâóâàùè áóôåðè, âúâåäåòå
585 Íàêðàÿ âúâåäåòå C-x C-f TUTORIAL.bg <Return>, çà äà ñå âúðíåòå
586 îáðàòíî âúâ âúâåäåíèåòî.
587 583
588Åìàêñ çàïàçâà òåêñòà íà âñåêè ôàéë â îáåêò, íàðè÷àí "áóôåð". 584 C-x C-b Ñïèñúê íà áóôåðèòå
589Íàìèðàíåòî íà ôàéë ïðàâè íîâ áóôåð â Åìàêñ. Çà äà âèäèòå ñïèñúê íà
590áóôåðèòå, êîèòî â ìîìåíòà ñúùåñòâóâàò âúâ âàøèÿ Åìàêñ, âúâåäåòå
591 585
592 C-x C-b Ïîêàçâàíå íà áóôåðèòå 586>> Îïèòàéòå C-x C-b îùå ñåãà.
593 587
594>> Îïèòàéòå C-x C-b ñåãà. 588Çàáåëåæåòå, ÷å âñåêè áóôåð èìà èìå, à ñúùî ìîæå äà èìà è èìå íà ôàéë,
589÷èåòî ñúäúðæàíèå ñå ïàçè â áóôåðà. ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â
590ïðîçîðåö íà Åìàêñ, âèíàãè å ÷àñò îò íÿêîé áóôåð.
595 591
596Âèæòå êàê âñåêè áóôåð èìà èìå, à ïîíÿêîãà è èìå íà ôàéë çà ôàéëà, 592>> Âúâåäåòå C-x 1, çà äà ìàõíåòå ñïèñúêà íà áóôåðè.
597÷èåòî ñúäúðæàíèå äúðæè. ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Åìàêñ ïðîçîðåö,
598å âèíàãè ÷àñò îò íÿêàêúâ áóôåð.
599 593
600>> Âúâåäåòå C-x 1, çà äà ìàõíåòå ñïèñúêà ñ áóôåðèòå. 594Êîãàòî èìàòå íÿêîëêî áóôåðà, ñàìî åäèí îò òÿõ å „òåêóù“ â äàäåí ìîìåíò
601
602Êîãàòî èìàòå íÿêîëêî áóôåðà, ñàìî åäèí îò òÿõ å "òåêóù" â äàäåí ìîìåíò
603îò âðåìå. Òîâà å áóôåðúò, êîéòî ðåäàêòèðàòå. Àêî èñêàòå äà 595îò âðåìå. Òîâà å áóôåðúò, êîéòî ðåäàêòèðàòå. Àêî èñêàòå äà
604ðåäàêòèðàòå äðóã áóôåð, ñå íóæäàåòå îò "ïðåâêëþ÷âàíå" êúì íåãî. Àêî 596ðåäàêòèðàòå äðóã áóôåð, ñå íóæäàåòå îò ïðåâêëþ÷âàíå êúì íåãî. Àêî
605èñêàòå äà ñå ïðåâêëþ÷èòå êúì áóôåð, êîéòî ñúîòâåòñòâà íà ôàéë, ìîæåòå 597èñêàòå äà ñå ïðåâêëþ÷èòå êúì áóôåð, êîéòî ñúîòâåòñòâà íà ôàéë, ìîæåòå
606äà ãî íàïðàâèòå, êàòî ïðîñòî ïîñåòèòå ôàéëà îòíîâî ñ C-x C-f. Íî èìà 598äà ãî íàïðàâèòå, êàòî ïðîñòî ïîñåòèòå ôàéëà îòíîâî ñ C-x C-f. Íî èìà
607è ïî-ëåñåí íà÷èí: èçïîëçâàíåòî íà êîìàíäàòà C-x b.  òàçè êîìàíäà 599è ïî-ëåñåí íà÷èí: èçïîëçâàíåòî íà êîìàíäàòà C-x b.  òàçè êîìàíäà
608òðÿáâà äà âúâåäåòå èìåòî íà áóôåðà. 600òðÿáâà äà âúâåäåòå èìåòî íà áóôåðà.
609 601
610>> Âúâåäåòå C-x b foo <Return>, çà äà ñå âúðíåòå êúì áóôåðà "foo", 602>> Ñóçäàéòå ôàéë ñ èìå „foo ÷ðåç âúâåæäàíå íà C-x C-f foo <Return>.
611 êîéòî äúðæè òåêñòà íà ôàéëà "foo". Òîãàâà âúâåäåòå C-x b TUTORIAL 603 Òîãàâà âúâåäåòå C-x b TUTORIAL.bg <Return>, çà äà ñå âúðíåòå â òîâà
612 <Return>, çà äà ñå âúðíåòå â òîâà âúâåäåíèå. 604 âúâåäåíèå.
613 605
614 ïîâå÷åòî ñëó÷àè èìåòî íà áóôåðà å ñúùîòî êàòî èìåòî íà ôàéëà (áåç 606 ïîâå÷åòî ñëó÷àè èìåòî íà áóôåðà å ñúùîòî êàòî èìåòî íà ôàéëà (áåç
615÷àñòòà â êîÿ äèðåêòîðèÿ ñå íàìèðà). Îáà÷å òîâà íå âèíàãè å âÿðíî. 607÷àñòòà â êîÿ äèðåêòîðèÿ ñå íàìèðà). Îáà÷å òîâà íå âèíàãè å âÿðíî.
616Ñïèñúêúò ñ áóôåðèòå, êîéòî ïðàâèòå ñ C-x C-b, âèíàãè âè ïîêàçâà èìåòî 608Ñïèñúêúò ñ áóôåðèòå, êîéòî ïðàâèòå ñ C-x C-b, âèíàãè âè ïîêàçâà è
617íà âñåêè áóôåð. 609èìåòî íà áóôåðà, è èìåòî íà ôàéëà.
618 610
619ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Åìàêñ ïðîçîðåö, å âèíàãè ÷àñò îò íÿêàêúâ 611ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Åìàêñ ïðîçîðåö, å âèíàãè ÷àñò îò íÿêàêúâ
620áóôåð. Íÿêîè áóôåðè íå ñúîòâåòñòâàò íà ôàéëîâå. Íàïðèìåð áóôåðúò, 612áóôåð. Íÿêîè áóôåðè íå ñúîòâåòñòâàò íà ôàéëîâå. Áóôåðúò, èìåíóâàí
621èìåíóâàí "*Buffer List*", íå ñúîòâåòñòâà íà ôàéë. Òîâà å áóôåðúò, 613„*Buffer List*“, êîèòî ñòå íàïðàâèëè ñ C-x C-b, íå ñúîòâåòñòâà íà
622êîéòî ñúäúðæà ñïèñúêà ñ áóôåðèòå, êîèòî ñòå íàïðàâèëè ñ C-x C-b. 614ôàéë. Òîâà å áóôåðúò, êîéòî ñúäúðæà ñïèñúêà ñ áóôåðèòå. Òîçè áóôåð
623Áóôåðúò, èìåíóâàí "*Messages*", ñúùî íå ñúîòâåòñòâà íà ôàéë; òîé 615TUTORIAL.bg îòíà÷àëî íå å áèë êúì ôàéë, íî âå÷å å, çàùîòî â ïðåäèøíèÿ
616ðàçäåë âúâåäîõòå C-x C-s è ãî çàïèñàõòå âúâ ôàéë.
617
618Áóôåðúò, èìåíóâàí „*Messages*“, ñúùî íå ñúîòâåòñòâà íà ôàéë; òîé
624ñúäúðæà ñúîáùåíèÿòà, êîèòî ñå ïîÿâÿâàò â äúíîòî íà åêðàíà ïî âðåìå íà 619ñúäúðæà ñúîáùåíèÿòà, êîèòî ñå ïîÿâÿâàò â äúíîòî íà åêðàíà ïî âðåìå íà
625Åìàêñ ñåñèÿòà. 620Åìàêñ ñåñèÿòà.
626 621
627>> Âúâåäåòå C-x b *Messages* <Return>, çà äà âèäèòå áóôåðà ñúñ 622>> Âúâåäåòå C-x b *Messages* <Return>, çà äà âèäèòå áóôåðà ñúñ
628 ñúîáùåíèÿòà. Ñëåä òîâà âúâåäåòå C-x b TUTORIAL <Return>, çà äà 623 ñúîáùåíèÿòà. Ñëåä òîâà âúâåäåòå C-x b TUTORIAL.bg <Return>, çà äà
629 ñå âúðíåòå êúì òîâà âúâåäåíèå. 624 ñå âúðíåòå êúì òîâà âúâåäåíèå.
630 625
631Àêî íàïðàâèòå ïðîìåíè â òåêñòà íà åäèí ôàéë è òîãàâà íàìåðèòå äðóã 626Àêî íàïðàâèòå ïðîìåíè â òåêñòà íà åäèí ôàéë è òîãàâà íàìåðèòå äðóã
@@ -636,14 +631,15 @@ C-f. Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Åìàêñ.
636áóôåðà íà ïúðâèÿ ôàéë. Ùå å íåóäîáíî äà ïðåâêëþ÷èòå îáðàòíî ñ C-x 631áóôåðà íà ïúðâèÿ ôàéë. Ùå å íåóäîáíî äà ïðåâêëþ÷èòå îáðàòíî ñ C-x
637C-f, çà äà ãî çàïàçèòå ñ C-x C-s. Òàêà ÷å èìàìå 632C-f, çà äà ãî çàïàçèòå ñ C-x C-s. Òàêà ÷å èìàìå
638 633
639 C-x s Çàïàçâà íÿêîè áóôåðè 634 C-x s Çàïèñ íà íÿêîè (some) áóôåðè
640 635
641C-x s ïèòà çà âñåêè áóôåð, êîéòî ñúäúðæà ïðîìåíè, êîèòî íå ñòå 636C-x s ïèòà çà âñåêè áóôåð, êîéòî ñúäúðæà ïðîìåíè, êîèòî íå ñòå
642çàïàçèëè. Âúïðîñúò çà âñåêè òàêúâ áóôåð å äàëè äà áúäå çàïàçåí. 637çàïàçèëè. Êîìàíäàòà çàäàâà âúïðîñ çà âñåêè òàêúâ áóôåð äàëè äà áúäå
638çàïàçåí.
643 639
644>> Âìúêíåòå ðåä â òåêñòà, ñëåä òîâà âúâåäåòå C-x s. 640>> Âìúêíåòå ðåä ñ òåêñò, ñëåä òîâà âúâåäåòå C-x s.
645 Òðÿáâà äà áúäåòå ïîïèòàí äàëè äà çàïàçèòå áóôåðà, èìåíóâàí "TUTORIAL". 641 Òðÿáâà äà áúäåòå ïîïèòàí äàëè äà çàïàçèòå áóôåðà, èìåíóâàí TUTORIAL.bg“.
646 Îòãîâîðåòå ñ "äà" íà âúïðîñà, êàòî âúâåäåòå "y". 642 Îòãîâîðåòå ñ äà íà âúïðîñà, êàòî âúâåäåòå y“ (yes).
647 643
648 644
649* ÐÀÇØÈÐßÂÀÍÅ ÍÀ ÍÀÁÎÐÀ ÊÎÌÀÍÄÈ 645* ÐÀÇØÈÐßÂÀÍÅ ÍÀ ÍÀÁÎÐÀ ÊÎÌÀÍÄÈ
@@ -659,53 +655,47 @@ C-x s ïèòà çà âñåêè áóôåð, êîéòî ñúäúðæà ïðîìåíè, êîèòî íå ñòå
659 655
660Òåçè êîìàíäè ñà îáùî âçåòî ïîëåçíè, íî ïî-ìàëêî, îòêîëêîòî êîìàíäèòå, 656Òåçè êîìàíäè ñà îáùî âçåòî ïîëåçíè, íî ïî-ìàëêî, îòêîëêîòî êîìàíäèòå,
661êîèòî äîñåãà ñòå íàó÷èëè. Âå÷å âèäÿõòå äâå îò òÿõ: êîìàíäèòå âúðõó 657êîèòî äîñåãà ñòå íàó÷èëè. Âå÷å âèäÿõòå äâå îò òÿõ: êîìàíäèòå âúðõó
662ôàéëîâå C-x C-f çà íàìèðàíå (Find) è C-x C-s çà çàïàçâàíå (Save). 658ôàéëîâå C-x C-f çà íàìèðàíå (Find) è C-x C-s çà çàïèñ (Save). Äðóã
663Äðóã ïðèìåð å êîìàíäàòà çà êðàé íà Åìàêñ ñåñèÿòà -- òîâà å êîìàíäàòà 659ïðèìåð å êîìàíäàòà çà êðàé íà Åìàêñ ñåñèÿòà -- òîâà å êîìàíäàòà C-x
664C-x C-c. (Íå ñå áåçïîêîéòå, ÷å ìîæå äà èçãóáèòå âñè÷êè ïðîìåíè, êîèòî 660C-c. (Íå ñå áåçïîêîéòå, ÷å ìîæå äà èçãóáèòå âñè÷êè ïðîìåíè, êîèòî ñòå
665ñòå íàïðàâèëè; C-x C-c ïðåäëàãà äà çàïàçè âñåêè ïðîìåíåí ôàéë, ïðåäè 661íàïðàâèëè; C-x C-c ïðåäëàãà äà çàïàçè âñåêè ïðîìåíåí ôàéë, ïðåäè äà
666äà ïðåìàõíå Åìàêñ.) 662ïðåìàõíå Åìàêñ.)
667 663
668C-z å êîìàíäàòà çà èçëèçàíå îò Åìàêñ *âðåìåííî* -- òàêà ÷å äà ìîæåòå 664Àêî ñòå íà ãðàôè÷åí äèñïëåé, íå å íóæíà ñïåöèàëíà êîìàíäà çà
669äà ñå âúðíåòå êúì ñúùàòà Åìàêñ ñåñèÿ ïî-êúñíî. 665ïðèäâèæâàíå îò Åìàêñ êúì äðóãî ðàáîòåùî ïðèëîæåíèå. Ìîæåòå äà
670 666èçâúðøèòå òîâà ñ ìèøêàòà èëè ñ êîìàíäè êúì óïðàâëåíèåòî íà ïðîçîðöè.
671Íà ñèñòåìè, êîèòî ïîçâîëÿâàò òîâà, C-z "èçîñòàâÿ" (suspend) Åìàêñ, 667Íî àêî ñòå íà òåêñòîâ òåðìèíàë, êîéòî ìîæå äà ïîêàçâà ñàìî åäíî
672ò.å. âðúùà êúì îáâèâêàòà, íî íå ðàçðóøàâà Åìàêñ.  ïîâå÷åòî îáâèâêè 668ïðèëîæåíèå â äàäåí ìîìåíò, ñå íóæäàåòå îò íà÷èí çà „èçîñòàâÿíå“
673ìîæåòå äà ïðîäúëæèòå Åìàêñ ñåñèÿòà ñ êîìàíäàòà "fg" èëè ñ "%emacs". 669(suspend) íà Åìàêñ è ïðèäâèæâàíå êúì äðóãè ïðîãðàìè.
674 670
675Íà ñèñòåìè, êîèòî íå ïîçâîëÿâàò èçîñòàâÿíå, C-z ñúçäàâà íîâà 671C-z å êîìàíäàòà çà èçëèçàíå îò Åìàêñ *âðåìåííî* – òàêà ÷å äà ìîæåòå äà
676ïîäîáâèâêà, êîÿòî âúðâè ïîä Åìàêñ, çà äà âè äàäå øàíñ äà ñòàðòèðàòå 672ñå âúðíåòå êúì ñúùàòà Åìàêñ ñåñèÿ ïî-êúñíî. Êîãàòî Åìàêñ âúðâè íà
677äðóãè ïðîãðàìè è äà ñå âúðíåòå êúì Åìàêñ ñëåä òîâà; òîâà íå å èñòèíñêî 673òåêñòîâ òåðìèíàë, C-z „èçîñòàâÿ“ Åìàêñ, ò.å. âðúùà ñå êúì îáâèâêàòà,
678"èçëèçàíå" îò Åìàêñ.  òîçè ñëó÷àé êîìàíäàòà íà îáâèâêàòà "exit" å 674íî íå óíèùîæàâà çàäà÷àòà (job) íà Åìàêñ.  ïîâå÷åòî ïîïóëÿðíè îáâèâêè
679îáèêíîâåíèÿò íà÷èí äà ñå âúðíåòå îáðàòíî êúì Åìàêñ îò ïîäîáâèâêàòà. 675ìîæåòå äà ïðîäúëæèòå Åìàêñ ñ êîìàíäàòà „fg“ èëè ñ „%emacs“.
680
681Ìîìåíòúò äà èçïîëçâàòå C-x C-c å, êîãàòî èñêàòå äà èçëåçåòå îò
682ñèñòåìàòà. Òîâà å è ïðàâèëíàòà êîìàíäà çà èçëèçàíå, êîãàòî Åìàêñ å
683èçâèêàí îò ïîùåíñêà ïðîãðàìà èëè äðóãè ñòðàíè÷íè ïðîãðàìè, òúé êàòî òå
684ìîæå è äà íå çíàÿò êàê äà ñå ñïðàâÿò ñ èçîñòàâÿíåòî íà Åìàêñ. Ïðè
685îáèêíîâåíè îáñòîÿòåëñòâà, îáà÷å, àêî íå ñòå òðúãíàëè äà èçëèçàòå îò
686ñèñòåìàòà, ïî-äîáðå å äà èçîñòàâèòå Åìàêñ ñ C-z, âìåñòî äà èçëèçàòå îò
687Åìàêñ.
688 676
689Èìà ìíîãî êîìàíäè C-x. Åòî ñïèñúê íà òåçè, êîèòî ñòå íàó÷èëè: 677Èìà ìíîãî êîìàíäè C-x. Åòî ñïèñúê íà òåçè, êîèòî ñòå íàó÷èëè:
690 678
691 C-x C-f Íàìèðàíå íà ôàéë. 679 C-x C-f Íàìèðàíå íà ôàéë
692 C-x C-s Çàïàçâàíå íà ôàéë. 680 C-x C-s Çàïèñ íà ôàéë
693 C-x C-b Ñïèñúê íà áóôåðèòå. 681 C-x s Çàïèñ íà íÿêîè áóôåðè
694 C-x C-c Èçëèçàíå îò Åìàêñ. 682 C-x C-b Ñïèñúê íà áóôåðèòå
695 C-x 1 Èçòðèâàíå íà âñè÷êè ïðîçîðöè îñâåí åäèí. 683 C-x b Ïðåâêëþ÷âàíå êúì áóôåð
696 C-x u Îòìÿíà. 684 C-x C-c Èçëèçàíå îò Åìàêñ
697 685 C-x 1 Èçòðèâàíå íà âñè÷êè ïðîçîðöè îñâåí åäèí
698Èìåíóâàíèòå ðàçøèðåíè êîìàíäè ñà êîìàíäè, êîèòî ñå èçïîëçâàò äàæå îùå 686 C-x u Îòìÿíà
699ïî-ðÿäêî, èëè êîìàíäè, êîèòî ñå èçïîëçâàò ñàìî â îïðåäåëåíè ðåæèìè. 687
700Ïðèìåð å êîìàíäàòà replace-string, êîÿòî çàìåíÿ ãëîáàëíî åäèí íèç ñ 688Èìåíóâàíèòå ðàçøèðåíè (X) êîìàíäè ñà êîìàíäè, êîèòî ñå èçïîëçâàò äàæå
701äðóã. Êîãàòî âúâåäåòå M-x, Åìàêñ âè ïîäñêàçâà â äúíîòî íà åêðàíà ñ 689îùå ïî-ðÿäêî, èëè êîìàíäè, êîèòî ñå èçïîëçâàò ñàìî â îïðåäåëåíè
702M-x è âèå òðÿáâà äà âúâåäåòå èìåòî íà êîìàíäàòà, â òîçè ñëó÷àé 690ðåæèìè. Ïðèìåð å êîìàíäàòà replace-string, êîÿòî çàìåíÿ ãëîáàëíî åäèí
703"replace-string". Ïðîñòî âúâåäåòå "repl s<TAB>" è Åìàêñ ùå çàâúðøè 691íèç ñ äðóã. Êîãàòî âúâåäåòå M-x, Åìàêñ âè ïîäñêàçâà â äúíîòî íà
704èìåòî. (<TAB> å êëàâèøúò Tab, îáèêíîâåíî íàìèðàù ñå íàä êëàâèøà 692åêðàíà ñ M-x è âèå òðÿáâà äà âúâåäåòå èìåòî íà êîìàíäàòà, â òîçè
705CapsLock èëè êëàâèøà Shift áëèçî äî ëåâèÿ êðàé íà êëàâèàòóðàòà.) 693ñëó÷àé „replace-string“. Ïðîñòî âúâåäåòå „repl s<TAB>“ è Åìàêñ ùå
706Çàâúðøåòå èìåòî íà êîìàíäàòà ñ <Return>. 694çàâúðøè èìåòî. (<TAB> å êëàâèøúò Tab, îáèêíîâåíî íàìèðàù ñå íàä
707 695êëàâèøà CapsLock èëè êëàâèøà Shift áëèçî äî ëåâèÿ êðàé íà
708Êîìàíäàòà replace-string èçèñêâà äâà àðãóìåíòà -- íèçúò, êîéòî ùå áúäå 696êëàâèàòóðàòà.) Çàâúðøåòå èìåòî íà êîìàíäàòà ñ <Return>.
697
698Êîìàíäàòà replace-string èçèñêâà äâà àðãóìåíòà – íèçúò, êîéòî ùå áúäå
709çàìåíÿí, è íèçúò, êîéòî ùå ãî çàìåíè. Òðÿáâà äà çàâúðøèòå âúâåæäàíåòî 699çàìåíÿí, è íèçúò, êîéòî ùå ãî çàìåíè. Òðÿáâà äà çàâúðøèòå âúâåæäàíåòî
710íà âñåêè àðãóìåíò ñ <Return>. 700íà âñåêè àðãóìåíò ñ <Return>.
711 701
@@ -713,28 +703,26 @@ CapsLock èëè êëàâèøà Shift áëèçî äî ëåâèÿ êðàé íà êëàâèàòóðàòà.)
713 Òîãàâà âúâåäåòå M-x repl s<Return>ïðîìåíÿ<Return>èçìåíÿ<Return> 703 Òîãàâà âúâåäåòå M-x repl s<Return>ïðîìåíÿ<Return>èçìåíÿ<Return>
714 704
715 Çàáåëåæåòå êàê òîçè ðåä ñå ïðîìåíÿ: âèå çàìåíèõòå äóìàòà 705 Çàáåëåæåòå êàê òîçè ðåä ñå ïðîìåíÿ: âèå çàìåíèõòå äóìàòà
716 ï-ð-î-ì-å-í-ÿ ñ "èçìåíÿ", êúäåòî è äà ñå íàìèðà ñëåä íà÷àëíîòî 706 ï-ð-î-ì-å-í-ÿ ñ èçìåíÿ, êúäåòî è äà ñå íàìèðà ñëåä íà÷àëíîòî
717 ìÿñòî íà êóðñîðà. 707 ìÿñòî íà êóðñîðà.
718 708
719ÇÀÁÅËÅÆÊÀ: Ïðåâêëþ÷âàíåòî êúì âúâåæäàíå íà êèðèëñêè áóêâà ñòàâà ñ C-\.
720
721 709
722* ÀÂÒÎÌÀÒÈ×ÍÎ ÇÀÏÀÇÂÀÍÅ 710* ÀÂÒÎÌÀÒÈ×ÍÎ ÇÀÏÀÇÂÀÍÅ
723----------------------- 711-----------------------
724 712
725Êîãàòî ñòå íàïðàâèëè ïðîìåíè âúâ ôàéë, íî îùå íå ñòå ãî çàïàçèëè, òå 713Êîãàòî ñòå íàïðàâèëè ïðîìåíè âúâ ôàéë, íî îùå íå ñòå ãî çàïàçèëè, òå
726ìîãàò äà áúäàò çàãóáåíè, àêî êîìïþòúðúò âíåçàïíî ñå èçêëþ÷è. Çà äà âè 714ìîãàò äà áúäàò çàãóáåíè, àêî êîìïþòúðúò âíåçàïíî ñå èçêëþ÷è. Çà äà âè
727ïðåäïàçè îò òàêèâà ñèòóàöèè, Åìàêñ ïåðèîäè÷íî çàïàçâà "àâòîìàòè÷íî 715ïðåäïàçè îò òàêèâà ñèòóàöèè, Åìàêñ ïåðèîäè÷íî çàïàçâà àâòîìàòè÷íî
728çàïàçâàí" ôàéë çà âñåêè ôàéë, êîéòî ðåäàêòèðàòå. Èìåòî íà àâòîìàòè÷íî 716çàïàçâàí ôàéë çà âñåêè ôàéë, êîéòî ðåäàêòèðàòå. Èìåòî íà àâòîìàòè÷íî
729çàïàçâàíèÿ ôàéë èìà # â íà÷àëîòî è â êðàÿ; íàïðèìåð, àêî âàøèÿò ôàéë å 717çàïàçâàíèÿ ôàéë èìà # â íà÷àëîòî è â êðàÿ; íàïðèìåð, àêî âàøèÿò ôàéë å
730ñ èìå "hello.c", èìåòî íà íåãîâèÿ àâòîìàòè÷íî çàïàçâàí ôàéë ùå áúäå 718ñ èìå hello.c, èìåòî íà íåãîâèÿ àâòîìàòè÷íî çàïàçâàí ôàéë ùå áúäå
731"#hello.c#". Êîãàòî çàïàçâàòå ôàéë ïî îáèêíîâåíèÿ íà÷èí, Åìàêñ 719"#hello.c#". Êîãàòî çàïàçâàòå ôàéë ïî îáèêíîâåíèÿ íà÷èí, Åìàêñ
732èçòðèâà íåãîâèÿ àâòîìàòè÷íî çàïèñâàí ôàéë. 720èçòðèâà íåãîâèÿ àâòîìàòè÷íî çàïèñâàí ôàéë.
733 721
734Àêî êîìïþòúðúò çàâèñíå, ìîæå äà âúçñòàíîâèòå âàøàòà àâòîìàòè÷íî 722Àêî êîìïþòúðúò çàâèñíå, ìîæå äà âúçñòàíîâèòå âàøàòà àâòîìàòè÷íî
735çàïàçâàíà ðåäàêöèÿ, êàòî íàìåðèòå ôàéëà êàêòî îáèêíîâåíî (ôàéëúò, 723çàïàçâàíà ðåäàêöèÿ, êàòî íàìåðèòå ôàéëà êàêòî îáèêíîâåíî (ôàéëúò,
736êîéòî ñòå ðåäàêòèðàëè, íå àâòîìàòè÷íî çàïàçâàíèÿ) è ñëåä òîâà âúâåäåòå 724êîéòî ñòå ðåäàêòèðàëè, íå àâòîìàòè÷íî çàïàçâàíèÿ) è ñëåä òîâà âúâåäåòå
737M-x recover file<Return>. Êîãàòî êîìàíäàòà èçèñêà ïîòâúðæäåíèå, 725M-x recover-file <Return>. Êîãàòî êîìàíäàòà èçèñêà ïîòâúðæäåíèå,
738âúâåäåòå yes<Return>, çà äà ïðîäúëæèòå è äà âúçñòàíîâèòå àâòîìàòè÷íî 726âúâåäåòå yes<Return>, çà äà ïðîäúëæèòå è äà âúçñòàíîâèòå àâòîìàòè÷íî
739çàïàçâàíèòå äàííè. 727çàïàçâàíèòå äàííè.
740 728
@@ -743,28 +731,28 @@ M-x recover file<Return>. Êîãàòî êîìàíäàòà èçèñêà ïîòâúðæäåíèå,
743-------------- 731--------------
744 732
745Àêî Åìàêñ âèäè, ÷å âúâåæäàòå ìíîãîçíàêîâè êîìàíäè áàâíî, ùå âè ãè 733Àêî Åìàêñ âèäè, ÷å âúâåæäàòå ìíîãîçíàêîâè êîìàíäè áàâíî, ùå âè ãè
746ïîêàæå â äúíîòî íà åêðàíà, â îáëàñò, íàðè÷àíà "åõî îáëàñò". Åõî 734ïîêàæå â äúíîòî íà åêðàíà, â îáëàñò, íàðè÷àíà åõî îáëàñò. Åõî
747îáëàñòòà îáõâàùà ïîñëåäíèÿ ðåä îò åêðàíà. 735îáëàñòòà îáõâàùà ïîñëåäíèÿ ðåä îò åêðàíà.
748 736
749 737
750* ÐÅÄ ÍÀ ÐÅÆÈÌÀ 738* ÐÅÄ ÍÀ ÐÅÆÈÌÀ
751---------------- 739----------------
752 740
753Ðåäúò òî÷íî íàä åõî îáëàñòòà ñå íàðè÷à "ðåä íà ðåæèìà" (mode line). 741Ðåäúò òî÷íî íàä åõî îáëàñòòà ñå íàðè÷à ðåä íà ðåæèìà (mode line).
754Òîé ïîêàçâà íåùî êàòî: 742Òîé ïîêàçâà íåùî êàòî:
755 743
756-b:** TUTORIAL.bg (Fundamental)--L670--58%---------------- 744 b:**- TUTORIAL.bg 63% L744 (Fundamental)
757 745
758Òîçè ðåä äàâà ïîëåçíà èíôîðìàöèÿ çà ñúñòîÿíèåòî íà Åìàêñ è òåêñòà, 746Òîçè ðåä äàâà ïîëåçíà èíôîðìàöèÿ çà ñúñòîÿíèåòî íà Åìàêñ è òåêñòà,
759êîéòî ðåäàêòèðàòå. 747êîéòî ðåäàêòèðàòå.
760 748
761Âå÷å çíàåòå êàêâî îçíà÷àâà èìåòî íà ôàéëà -- òîâà å ôàéëúò, êîéòî ñòå 749Âå÷å çíàåòå êàêâî îçíà÷àâà èìåòî íà ôàéëà òîâà å ôàéëúò, êîéòî ñòå
762íàìåðèëè. -NN%-- ïîêàçâà âàøàòà òåêóùà ïîçèöèÿ â òåêñòà; òîâà 750íàìåðèëè. NN% ïîêàçâà âàøàòà òåêóùà ïîçèöèÿ â òåêñòà; òîâà îçíà÷àâà,
763îçíà÷àâà, ÷å NN ïðîöåíòà îò òåêñòà å íàä âúðõà íà åêðàíà. Àêî 751÷å NN ïðîöåíòà îò òåêñòà å íàä âúðõà íà åêðàíà. Àêî íà÷àëîòî íà ôàéëà
764íà÷àëîòî íà ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà --Top-- (âðúõ) âìåñòî 752å íà åêðàíà, ùå ñå ïîêàçâà Top (âðúõ) âìåñòî „ 0%“. Àêî êðàÿ íà
765--00%--. Àêî êðàÿ íà ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà --Bot-- (äúíî). 753ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà Bot (bottom – äúíî). Àêî ãëåäàòå
766Àêî ãëåäàòå òåêñò, êîéòî å òîëêîâà ìàëúê, ÷å ñå ïîêàçâà èçöÿëî íà 754òåêñò, êîéòî å òîëêîâà ìàëúê, ÷å ñå ïîêàçâà èçöÿëî íà åêðàíà, ðåäúò íà
767åêðàíà, ðåäúò íà ðåæèìà ùå èçâåäå --All--. 755ðåæèìà ùå èçâåäå All“ (âñè÷êî).
768 756
769Çíàêúò L è öèôðèòå ïîêàçâàò ìÿñòîòî ïî äðóã íà÷èí: òîâà å íîìåðúò íà 757Çíàêúò L è öèôðèòå ïîêàçâàò ìÿñòîòî ïî äðóã íà÷èí: òîâà å íîìåðúò íà
770òåêóùèÿ ðåä íà òî÷êàòà. 758òåêóùèÿ ðåä íà òî÷êàòà.
@@ -776,13 +764,13 @@ M-x recover file<Return>. Êîãàòî êîìàíäàòà èçèñêà ïîòâúðæäåíèå,
776×àñòòà îò ðåäà íà ðåæèìà âúòðå â ñêîáèòå å, çà äà âè ïîêàæå â êàêúâ 764×àñòòà îò ðåäà íà ðåæèìà âúòðå â ñêîáèòå å, çà äà âè ïîêàæå â êàêúâ
777ðåæèì íà ðåäàêòèðàíå ñå íàìèðàòå. Ïîäðàçáèðàùèÿò ñå ðåæèì å 765ðåæèì íà ðåäàêòèðàíå ñå íàìèðàòå. Ïîäðàçáèðàùèÿò ñå ðåæèì å
778Fundamental (Îñíîâåí), êîéòî èçïîëçâàòå â ìîìåíòà. Òîâà å ïðèìåð çà 766Fundamental (Îñíîâåí), êîéòî èçïîëçâàòå â ìîìåíòà. Òîâà å ïðèìåð çà
779"ãëàâåí ðåæèì" (major mode). 767ãëàâåí ðåæèì (major mode).
780 768
781Åìàêñ èìà ìíîãî ãëàâíè ðåæèìè. Íÿêîè îò òÿõ ñà ïðåäâèäåíè çà 769Åìàêñ èìà ìíîãî ãëàâíè ðåæèìè. Íÿêîè îò òÿõ ñà ïðåäâèäåíè çà
782ðåäàêòèðàíå íà ðàçëè÷íè åçèöè è/èëè âèäîâå òåêñò, êàòî íàïðèìåð ðåæèì 770ðåäàêòèðàíå íà ðàçëè÷íè åçèöè è/èëè âèäîâå òåêñò, êàòî íàïðèìåð ðåæèì
783Ëèñï, ðåæèì Òåêñò è äðóãè. Âúâ âñåêè åäèí ìîìåíò îò âðåìå òî÷íî åäèí 771Lisp (Ëèñï), ðåæèì Text (òåêñò) è äðóãè. Âúâ âñåêè åäèí ìîìåíò îò
784ãëàâåí ðåæèì å àêòèâåí è íåãîâîòî èìå ìîæå âèíàãè äà áúäå íàìåðåíî â 772âðåìå òî÷íî åäèí ãëàâåí ðåæèì å àêòèâåí è íåãîâîòî èìå ìîæå âèíàãè äà
785ðåäà íà ðåæèìà, òî÷íî êàêòî "Fundamental" ñåãà. 773áúäå íàìåðåíî â ðåäà íà ðåæèìà, òî÷íî êàêòî Fundamental ñåãà.
786 774
787Âñåêè ãëàâåí ðåæèì ïðàâè íÿêîè êîìàíäè äà ñå äúðæàò ïî ðàçëè÷åí íà÷èí. 775Âñåêè ãëàâåí ðåæèì ïðàâè íÿêîè êîìàíäè äà ñå äúðæàò ïî ðàçëè÷åí íà÷èí.
788Íàïðèìåð, èìà êîìàíäè çà ðåäàêòèðàíå íà êîìåíòàðè â ïðîãðàìè, è òúé 776Íàïðèìåð, èìà êîìàíäè çà ðåäàêòèðàíå íà êîìåíòàðè â ïðîãðàìè, è òúé
@@ -793,9 +781,9 @@ Fundamental (Îñíîâåí), êîéòî èçïîëçâàòå â ìîìåíòà. Òîâà å ïðèìåð çà
793êîìàíäà çà ïðåâêëþ÷âàíå êúì ðåæèì Fundamental. 781êîìàíäà çà ïðåâêëþ÷âàíå êúì ðåæèì Fundamental.
794 782
795Êîãàòî ðåäàêòèðàòå òåêñò íà åñòåñòâåí åçèê, êàòî òîçè ôàéë, 783Êîãàòî ðåäàêòèðàòå òåêñò íà åñòåñòâåí åçèê, êàòî òîçè ôàéë,
796íàé-âåðîÿòíî òðÿáâà äà èçïîëçâàòå ðåæèì Òåêñò (text). 784íàé-âåðîÿòíî òðÿáâà äà èçïîëçâàòå ðåæèì Text (òåêñò).
797 785
798>> Âúâåäåòå M-x text mode<Return>. 786>> Âúâåäåòå M-x text-mode <Return>.
799 787
800Íå ñå áåçïîêîéòå, íèêîÿ îò Åìàêñ êîìàíäèòå, êîèòî ñòå íàó÷èëè, íÿìà äà 788Íå ñå áåçïîêîéòå, íèêîÿ îò Åìàêñ êîìàíäèòå, êîèòî ñòå íàó÷èëè, íÿìà äà
801ñå ïðîìåíè ïî íÿêàêúâ ñúùåñòâåí íà÷èí. Íî ìîæå äà çàáåëåæèòå, ÷å M-f 789ñå ïðîìåíè ïî íÿêàêúâ ñúùåñòâåí íà÷èí. Íî ìîæå äà çàáåëåæèòå, ÷å M-f
@@ -804,13 +792,13 @@ Fundamental (Îñíîâåí), êîéòî èçïîëçâàòå â ìîìåíòà. Òîâà å ïðèìåð çà
804ðàçäåëèòåëè íà äóìè. 792ðàçäåëèòåëè íà äóìè.
805 793
806Ãëàâíèòå ðåæèìè îáèêíîâåíî ïðàâÿò ìàëêè ïðîìåíè êàòî òàçè: ïîâå÷åòî 794Ãëàâíèòå ðåæèìè îáèêíîâåíî ïðàâÿò ìàëêè ïðîìåíè êàòî òàçè: ïîâå÷åòî
807êîìàíäè âúðøàò "ñúùàòà ðàáîòà" âúâ âñåêè ãëàâåí ðåæèì, íî ðàáîòÿò ïî 795êîìàíäè âúðøàò ñúùàòà ðàáîòà âúâ âñåêè ãëàâåí ðåæèì, íî ðàáîòÿò ïî
808ìàëêî ïî-ðàçëè÷åí íà÷èí. 796ìàëêî ïî-ðàçëè÷åí íà÷èí.
809 797
810Çà äà âèäèòå äîêóìåíòàöèÿòà íà âàøèÿ òåêóù ãëàâåí ðåæèì, âúâåäåòå C-h 798Çà äà âèäèòå äîêóìåíòàöèÿòà íà âàøèÿ òåêóù ãëàâåí ðåæèì, âúâåäåòå C-h
811m. 799m.
812 800
813>> Óïîòðåáåòå C-u C-v âåäíúæ èëè ïîâå÷å ïúòè, çà äà äîêàðàòå òîçè ðåä 801>> Óïîòðåáåòå C-l C-l âåäíúæ èëè ïîâå÷å ïúòè, çà äà äîêàðàòå òîçè ðåä
814 áëèçî äî âúðõà íà åêðàíà. 802 áëèçî äî âúðõà íà åêðàíà.
815>> Âúâåäåòå C-h m, çà äà âèäèòå êàê òåêñòîâèÿò ðåæèì ñå ðàçëè÷àâà îò 803>> Âúâåäåòå C-h m, çà äà âèäèòå êàê òåêñòîâèÿò ðåæèì ñå ðàçëè÷àâà îò
816 îñíîâíèÿ ðåæèì. 804 îñíîâíèÿ ðåæèì.
@@ -824,20 +812,20 @@ m.
824ìàëêè ðåæèìè, äà èçïîëçâàòå åäèí ìàëúê ðåæèì, èëè äà èçïîëçâàòå 812ìàëêè ðåæèìè, äà èçïîëçâàòå åäèí ìàëúê ðåæèì, èëè äà èçïîëçâàòå
825íÿêàêâà êîìáèíàöèÿ îò íÿêîëêî ìàëêè ðåæèìà. 813íÿêàêâà êîìáèíàöèÿ îò íÿêîëêî ìàëêè ðåæèìà.
826 814
827Åäèí ãëàâåí ðåæèì, êîéòî å ìíîãî ïîëåçåí, îñîáåíî çà ðåäàêòèðàíå íà 815Åäèí ìàëúê ðåæèì, êîéòî å ìíîãî ïîëåçåí, îñîáåíî çà ðåäàêòèðàíå íà
828òåêñò íà åñòåñòâåí åçèê, å ðåæèìúò íà àâòîìàòè÷íî çàïúëâàíå (Auto Fill 816òåêñò íà åñòåñòâåí åçèê, å ðåæèìúò íà àâòîìàòè÷íî çàïúëâàíå (Auto Fill
829mode). Êîãàòî òîçè ðåæèì å âêëþ÷åí, Åìàêñ àâòîìàòè÷íî ðàçäåëÿ ðåäà 817mode). Êîãàòî òîçè ðåæèì å âêëþ÷åí, Åìàêñ àâòîìàòè÷íî ðàçäåëÿ ðåäà
830ïðè ìÿñòîòî ìåæäó äóìèòå, êîãàòî âìúêâàòå òåêñò è íàïðàâèòå ðåä, êîéòî 818ïðè ìÿñòîòî ìåæäó äóìèòå, êîãàòî âìúêâàòå òåêñò è íàïðàâèòå ðåä, êîéòî
831å òâúðäå äúëúã. 819å òâúðäå äúëúã.
832 820
833Ìîæå äà âêëþ÷èòå ðåæèìà íà àâòîìàòè÷íî çàïúëâàíå, êàòî èçïúëíèòå M-x 821Ìîæå äà âêëþ÷èòå ðåæèìà íà àâòîìàòè÷íî çàïúëâàíå, êàòî èçïúëíèòå M-x
834auto fill mode<Return>. Êîãàòî ðåæèìúò å âêëþ÷åí, ìîæå äà ãî 822auto-fill-mode <Return>. Êîãàòî ðåæèìúò å âêëþ÷åí, ìîæå äà ãî
835èçêëþ÷èòå ñ M-x auto fill mode<Return>. Àêî ðåæèìúò å èçêëþ÷åí, òàçè 823èçêëþ÷èòå ñ M-x auto-fill-mode<Return>. Àêî ðåæèìúò å èçêëþ÷åí, òàçè
836êîìàíäà ãî âêëþ÷âà, à àêî å âêëþ÷åí, ãî èçêëþ÷âà. Êàçâàìå, ÷å 824êîìàíäà ãî âêëþ÷âà, à àêî å âêëþ÷åí, ãî èçêëþ÷âà. Êàçâàìå, ÷å
837êîìàíäàòà "îáðúùà ðåæèìà". 825êîìàíäàòà „ïðåâêëþ÷âà (toggle) ðåæèìà.
838 826
839>> Âúâåäåòå M-x auto fill mode<Return> ñåãà. Ñëåä òîâà âìúêíåòå ðåä 827>> Âúâåäåòå M-x auto-fill-mode <Return> ñåãà. Ñëåä òîâà âìúêíåòå ðåä
840 îò "asdf " îòíîâî è îòíîâî, äîêàòî íå âèäèòå, ÷å òåêñòúò ñå ðàçäåëÿ 828 îò asdf îòíîâî è îòíîâî, äîêàòî íå âèäèòå, ÷å òåêñòúò ñå ðàçäåëÿ
841 íà äâà ðåäà. Òðÿáâà äà ñëàãàòå èíòåðâàëè ìåæäó äóìèòå, çàùîòî 829 íà äâà ðåäà. Òðÿáâà äà ñëàãàòå èíòåðâàëè ìåæäó äóìèòå, çàùîòî
842 àâòîìàòè÷íîòî çàïúëâàíå ðàçäåëÿ ðåäîâåòå ñàìî ïðè èíòåðâàëèòå. 830 àâòîìàòè÷íîòî çàïúëâàíå ðàçäåëÿ ðåäîâåòå ñàìî ïðè èíòåðâàëèòå.
843 831
@@ -866,51 +854,42 @@ auto fill mode<Return>. Êîãàòî ðåæèìúò å âêëþ÷åí, ìîæå äà ãî
866íà íèç å ïðèäâèæâàùà êóðñîðà êîìàíäà; òÿ ïðåìåñòâà êóðñîðà íà 854íà íèç å ïðèäâèæâàùà êóðñîðà êîìàíäà; òÿ ïðåìåñòâà êóðñîðà íà
867ñëåäâàùîòî ìÿñòî, êúäåòî ñå ñðåùà íèçúò. 855ñëåäâàùîòî ìÿñòî, êúäåòî ñå ñðåùà íèçúò.
868 856
869Êîìàíäàòà çà òúðñåíå íà Åìàêñ ñå ðàçëè÷àâà îò êîìàíäàòà çà òúðñåíå íà 857Êîìàíäàòà çà òúðñåíå íà Åìàêñ å „ïîñòúïêîâà“. Òîâà îçíà÷àâà, ÷å
870ïîâå÷åòî ðåäàêòîðè ïî òîâà, ÷å òÿ å "ïîñòúïêîâà". Òîâà îçíà÷àâà, ÷å
871òúðñåíåòî ñå èçâúðøâà îùå äîêàòî âúâåæäàòå òåêñòà, êîéòî òúðñèòå. 858òúðñåíåòî ñå èçâúðøâà îùå äîêàòî âúâåæäàòå òåêñòà, êîéòî òúðñèòå.
872 859
873Êîìàíäàòà çà çàïî÷âàíå íà òúðñåíå å C-s çà òúðñåíå íàïðåä, è C-r çà 860Êîìàíäàòà çà çàïî÷âàíå íà òúðñåíå å C-s çà òúðñåíå íàïðåä, è C-r çà
874òúðñåíå íàçàä. ÍÎ ÏÎ×ÀÊÀÉÒÅ! Íå ãè ïðîáâàéòå ñåãà. 861òúðñåíå íàçàä. ÍÎ ÏÎ×ÀÊÀÉÒÅ! Íå ãè ïðîáâàéòå ñåãà.
875 862
876Êîãàòî âúâåäåòå C-s, ùå çàáåëåæèòå, ÷å íèçúò "I-search" ñå ïîÿâÿâà 863Êîãàòî âúâåäåòå C-s, ùå çàáåëåæèòå, ÷å íèçúò I-search ñå ïîÿâÿâà
877êàòî ïîäñêàçêà â åõî îáëàñòòà. Òîâà âè êàçâà, ÷å Åìàêñ å â òîâà, 864êàòî ïîäñêàçêà â åõî îáëàñòòà. Òîâà âè êàçâà, ÷å Åìàêñ å â òîâà,
878êîåòî ñå íàðè÷à ïîñòúïêîâî òúðñåíå, ÷àêàéêè âè äà âúâåæäàòå òåêñòà, 865êîåòî ñå íàðè÷à ïîñòúïêîâî òúðñåíå, ÷àêàéêè âè äà âúâåæäàòå òåêñòà,
879êîéòî èñêàòå äà òúðñèòå. <Return> ïðèêëþ÷âà òúðñåíåòî. 866êîéòî èñêàòå äà òúðñèòå. <Return> ïðèêëþ÷âà òúðñåíåòî.
880 867
881>> Ñåãà âúâåäåòå C-s, çà äà çàïî÷íåòå òúðñåíåòî. ÁÀÂÍÎ, áóêâà ïî 868>> Ñåãà âúâåäåòå C-s, çà äà çàïî÷íåòå òúðñåíåòî. ÁÀÂÍÎ, áóêâà ïî
882 áóêâà, âúâåäåòå äóìàòà "òúðñåíå", èç÷àêâàéêè ñëåä âúâåæäàíåòî íà 869 áóêâà, âúâåäåòå äóìàòà „êóðñîð“, èç÷àêâàéêè ñëåä âúâåæäàíåòî íà
883 âñåêè çíàê, çà äà ìîæå äà çàáåëåæèòå êàêâî ñòàâà ñ êóðñîðà. Ñåãà 870 âñåêè çíàê, çà äà ìîæå äà çàáåëåæèòå êàêâî ñòàâà ñ êóðñîðà. Ñåãà
884 èçâúðøèõòå òúðñåíå íà "òúðñåíå" âåäíúæ. 871 èçâúðøèõòå òúðñåíå íà „êóðñîð“ âåäíúæ.
885>> Âúâåäåòå îòíîâî C-s, çà äà òúðñèòå äðóãî ñúâïàäåíèå ñ "òúðñåíå". 872>> Âúâåäåòå îòíîâî C-s, çà äà òúðñèòå äðóãî ñúâïàäåíèå ñ „êóðñîð“.
886>> Ñåãà âúâåäåòå <Delback> òðè ïúòè è âèæòå êàê ñå ïðèäâèæâà êóðñîðà. 873>> Ñåãà âúâåäåòå <DEL> ÷åòèðè ïúòè è âèæòå êàê ñå ïðèäâèæâà êóðñîðà.
887>> Âúâåäåòå <Return>, çà äà ïðåêðàòèòå òúðñåíåòî. 874>> Âúâåäåòå <Return>, çà äà ïðåêðàòèòå òúðñåíåòî.
888 875
889Çàáåëÿçàõòå ëè êàêâî ñòàíà? Åìàêñ, êîãàòî òúðñè ïîñòúïêîâî, ñå îïèòâà 876Çàáåëÿçàõòå ëè êàêâî ñòàíà? Åìàêñ, êîãàòî òúðñè ïîñòúïêîâî, ñå îïèòâà
890äà íàìåðè ñëåäâàùîòî ñúâïàäåíèå íà íèçà, êîéòî ñå âúâåæäà. Çà äà 877äà íàìåðè ñëåäâàùîòî ñúâïàäåíèå íà íèçà, êîéòî ñå âúâåæäà. Çà äà
891îòèäåòå íà ñëåäâàùîòî ñúâïàäåíèå íà "òúðñíå", ïðîñòî îòíîâî âúâåäåòå 878îòèäåòå íà ñëåäâàùîòî ñúâïàäåíèå íà „êóðñîð“, ïðîñòî îòíîâî âúâåäåòå
892C-s. Àêî íÿìà òàêîâà ñúâïàäåíèå, Åìàêñ áèáèïâà è âè êàçâà, ÷å 879C-s. Àêî íÿìà òàêîâà ñúâïàäåíèå, Åìàêñ áèáèïâà è âè êàçâà, ÷å
893òúðñåíåòî å "ïðîâàëåíî" (failing). C-g ñúùî ïðåêðàòÿâà òúðñåíåòî. 880òúðñåíåòî å „ïðîâàëåíî“ (failing). C-g ñúùî òàêà ïðåêðàòÿâà
894 881òúðñåíåòî.
895ÇÀÁÅËÅÆÊÀ: Íà íÿêîè ñèñòåìè âúâåæäàíåòî íà C-s ùå çàìðàçè åêðàíà è âèå 882
896íÿìà äà ìîæå äà âèäèòå ïîâå÷å ðåàêöèÿ îò Åìàêñ. Òîâà ïîêàçâà, ÷å 883Àêî ñòå â ñðåäàòà íà ïîñòúïêîâî òúðñåíå è âúâåäåòå <DEL>, ùå
897"ñïîñîáíîñò" íà îïåðàöèîííàòà ñèñòåìà, íàðå÷åíà "óïðàâëåíèå íà ïîòîêà"
898(flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà äî Åìàêñ. Çà äà
899ðàçìðàçèòå åêðàíà, âúâåäåòå C-q. Òîãàâà âèæòå ñåêöèÿòà "Ñïîíòàííî
900âêëþ÷âàíå íà ïîñòúïêîâîòî òúðñåíå" (Spontaneous Entry to Incremental
901Search) â ðúêîâîäñòâîòî íà Åìàêñ çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè
902"ñïîñîáíîñò".
903
904Àêî ñòå â ñðåäàòà íà ïîñòúïêîâî òúðñåíå è âúâåäåòå <Delback>, ùå
905çàáåëåæèòå, ÷å ïîñëåäíèÿò çíàê â òúðñåíèÿ íèç ñå èçòðèâà è òúðñåíåòî 884çàáåëåæèòå, ÷å ïîñëåäíèÿò çíàê â òúðñåíèÿ íèç ñå èçòðèâà è òúðñåíåòî
906ñå âðúùà êúì ïîñëåäíîòî ìÿñòî íà òúðñåíå. Íàïðèìåð, ïðåäïîëîæåòå, ÷å 885ñå âðúùà êúì ïîñëåäíîòî ìÿñòî íà òúðñåíå. Íàïðèìåð, ïðåäïîëîæåòå, ÷å
907ñòå âúâåëè "ò", çà äà íàìåðèòå ïúðâîòî ñúâïàäåíèå ñ "ò". Ñåãà, àêî 886ñòå âúâåëè „ê“, çà äà íàìåðèòå ïúðâîòî ñúâïàäåíèå ñ „ê“. Ñåãà, àêî
908âúâåäåòå "ú", êóðñîðúò ùå ñå ïðèäâèæè êúì ïúðâîòî ñúâïàäåíèå íà "òú". 887âúâåäåòå „ó“, êóðñîðúò ùå ñå ïðèäâèæè êúì ïúðâîòî ñúâïàäåíèå íà „êó“.
909Ñåãà âúâåäåòå <Delback>. Òîâà èçòðèâà çíàêà "ú" îò íèçà çà òúðñåíå è 888Ñåãà âúâåäåòå <DEL>. Òîâà èçòðèâà çíàêà „ó“ îò íèçà çà òúðñåíå è
910êóðñîðúò ñå ïðåìåñòâà íàçàä, äî ïúðâîòî ñúâïàäåíèå ñ "ò". 889êóðñîðúò ñå ïðåìåñòâà íàçàä, äî ïúðâîòî ñúâïàäåíèå ñ „ê“.
911 890
912Àêî ñòå â ñðåäàòà íà òúðñåíå è âúâåäåòå êîíòðîëåí èëè ìåòà çíàê (ñ 891Àêî ñòå â ñðåäàòà íà òúðñåíå è âúâåäåòå êîíòðîëåí èëè ìåòà çíàê (ñ
913íÿêîëêî èçêëþ÷åíèÿ -- çíàöèòå, êîèòî ñà ñïåöèàëíè ïî âðåìå íà òúðñåíå, 892íÿêîëêî èçêëþ÷åíèÿ çíàöèòå, êîèòî ñà ñïåöèàëíè ïî âðåìå íà òúðñåíå,
914êàòî C-s è C-r), òúðñåíåòî ñå ïðåêðàòÿâà. 893êàòî C-s è C-r), òúðñåíåòî ñå ïðåêðàòÿâà.
915 894
916C-s çàïî÷âà òúðñåíå, êîåòî ãëåäà çà ñúâïàäåíèå ñ íèçà, äàäåí çà 895C-s çàïî÷âà òúðñåíå, êîåòî ãëåäà çà ñúâïàäåíèå ñ íèçà, äàäåí çà
@@ -924,9 +903,11 @@ C-s çàïî÷âà òúðñåíå, êîåòî ãëåäà çà ñúâïàäåíèå ñ íèçà, äàäåí çà
924 903
925Åäíà îò ïðèâëåêàòåëíèòå ñïîñîáíîñòè íà Åìàêñ å òàçè, ÷å ìîæå äà 904Åäíà îò ïðèâëåêàòåëíèòå ñïîñîáíîñòè íà Åìàêñ å òàçè, ÷å ìîæå äà
926ãëåäàòå ïîâå÷å îò åäèí ïðîçîðåö íà åêðàíà â äàäåí ìîìåíò îò âðåìå. 905ãëåäàòå ïîâå÷å îò åäèí ïðîçîðåö íà åêðàíà â äàäåí ìîìåíò îò âðåìå.
906(Îáúðíåòå âíèìàíèå, ÷å Åìàêñ èçïîëçâà äóìàòà „ðàìêè“, îïèñàíà â
907ñëåäâàùèÿ ðàçäåë, çà òîâà, êîåòî äðóãè ïðèëîæåíèÿ íàðè÷àò „ïðîçîðåö“.
908Ðúêîâîäñòâîòî íà Åìàê ñúäúðæà ðå÷íèêà íà òåðìèíèòå íà Åìàêñ.)
927 909
928>> Ïðèäâèæåòå êóðñîðà äî òîçè ðåä è âúâåäåòå C-u 0 C-l (òîâà å 910>> Ïðèäâèæåòå êóðñîðà äî òîçè ðåä è âúâåäåòå C-l C-l.
929 CONTROL-L, íå CONTROL-1).
930 911
931>> Ñåãà âúâåäåòå C-x 2, êîåòî ùå ðàçäåëè åêðàíà íà äâà îòäåëíè 912>> Ñåãà âúâåäåòå C-x 2, êîåòî ùå ðàçäåëè åêðàíà íà äâà îòäåëíè
932 ïðîçîðåöà. Äâàòà ïðîçîðåöà ïîêàçâàò òîâà âúâåäåíèå. Êóðñîðúò 913 ïðîçîðåöà. Äâàòà ïðîçîðåöà ïîêàçâàò òîâà âúâåäåíèå. Êóðñîðúò
@@ -935,7 +916,7 @@ C-s çàïî÷âà òúðñåíå, êîåòî ãëåäà çà ñúâïàäåíèå ñ íèçà, äàäåí çà
935>> Âúâåäåòå C-M-v, çà äà ñêðîëèðàòå äîëíèÿ ïðîçîðåö. (Àêî íÿìàòå 916>> Âúâåäåòå C-M-v, çà äà ñêðîëèðàòå äîëíèÿ ïðîçîðåö. (Àêî íÿìàòå
936 èñòèíñêè êëàâèø META, âúâåäåòå ESC C-v.) 917 èñòèíñêè êëàâèø META, âúâåäåòå ESC C-v.)
937 918
938>> Âúâåäåòå C-x o ("o" îò "other" -- "äðóã"), çà äà ïðèäâèæèòå 919>> Âúâåäåòå C-x o (o îò other äðóã), çà äà ïðèäâèæèòå
939 êóðñîðà â äîëíèÿ ïðîçîðåö. 920 êóðñîðà â äîëíèÿ ïðîçîðåö.
940>> Èçïîëçâàéòå C-v è M-v â äîëíèÿ ïðîçîðåö, çà äà ãî ñêðîëèðàòå. 921>> Èçïîëçâàéòå C-v è M-v â äîëíèÿ ïðîçîðåö, çà äà ãî ñêðîëèðàòå.
941 Ïðîäúëæåòå ÷åòåíåòî íà òåçè íàñîêè îò âúâåäåíèåòî â ãîðíèÿ 922 Ïðîäúëæåòå ÷åòåíåòî íà òåçè íàñîêè îò âúâåäåíèåòî â ãîðíèÿ
@@ -946,32 +927,32 @@ C-s çàïî÷âà òúðñåíå, êîåòî ãëåäà çà ñúâïàäåíèå ñ íèçà, äàäåí çà
946 ïðåäè. 927 ïðåäè.
947 928
948Ìîæå äà ïðîäúëæèòå äà èçïîëçâàòå C-x o, çà äà ïðåâêëþ÷âàòå ìåæäó 929Ìîæå äà ïðîäúëæèòå äà èçïîëçâàòå C-x o, çà äà ïðåâêëþ÷âàòå ìåæäó
949ïðîçîðöèòå. Âñåêè ïðîçîðåö èìà ñîáñòâåíî ìÿñòî íà êóðñîðà, íî ñàìî 930ïðîçîðöèòå. „Òåêóùèÿò ïðîçîðåö“, êúäåòî ñå èçâúðøâà ðåäàêòèðàíåòî, å
950åäèí ïðîçîðåö ïîêàçâà êóðñîð. Âñè÷êè îáèêíîâåíè êîìàíäè çà 931òîçè ñ ÿâåí êóðñîð, êîéòî ìèãà, êîãàòî íå âúâåæäàòå. Äðóãèòå ïðîçîðöè
951ðåäàêòèðàíå ñå ïðèëàãàò â ïðîçîðåöà, â êîéòî å êóðñîðúò. Íèå íàðè÷àìå 932èìàò ñîáñòâåíè ïîëîæåíèÿ íà êóðñîðà. Àêî Åìàêñ å íà ãðàôè÷åí äèñïëåé,
952òîçè ïðîçîðåö åêóù ïðîçîðåö". 933òåçè êóðñîðè ùå ñà èç÷åðòàíè êàòî íåìèãàùè ïðàçíè êóòèè.
953 934
954Êîìàíäàòà C-M-v å ìíîãî ïîëåçíà, êîãàòî ðåäàêòèðàòå òåêñò â åäèí 935Êîìàíäàòà C-M-v å ìíîãî ïîëåçíà, êîãàòî ðåäàêòèðàòå òåêñò â åäèí
955ïðîçîðåö è èçïîëçâàòå äðóãèÿ ïðîçîðåö ïðîñòî çà ñïðàâêà. Ìîæå äà 936ïðîçîðåö è èçïîëçâàòå äðóãèÿ ïðîçîðåö ïðîñòî çà ñïðàâêà. Ìîæå äà
956äúðæèòå êóðñîðà âèíàãè â ïðîçîðåöà, êúäåòî ðåäàêòèðàòå, è äà 937äúðæèòå êóðñîðà âèíàãè â ïðîçîðåöà, êúäåòî ðåäàêòèðàòå, è äà
957íàïðåäâàòå ïîñëåäîâàòåëíî â äðóãèÿ ïðîçîðåö ÷ðåç C-M-v. 938íàïðåäâàòå ïîñëåäîâàòåëíî â äðóãèÿ ïðîçîðåö ÷ðåç C-M-v.
958 939
959C-M-v å ïðèìåð çà çíàê CONTROL-META. Àêî èìàòå èñòèíñêè êëàâèø META, 940C-M-v å ïðèìåð çà çíàê CONTROL-META. Àêî èìàòå èñòèíñêè êëàâèø META
960ìîæå äà âúâåæäàòå C-M-v, çàäúðæàéêè åäíîâðåìåííî CONTROL è META, 941(èëè Alt), ìîæå äà âúâåæäàòå C-M-v, çàäúðæàéêè åäíîâðåìåííî CONTROL è
961äîêàòî âúâåæäàòå v. Íÿìà çíà÷åíèå äàëè CONTROL èëè META "å íàòèñíàò 942META, äîêàòî âúâåæäàòå v. Íÿìà çíà÷åíèå äàëè CONTROL èëè META å
962ïúðâè", çàùîòî è äâàòà êëàâèøà äåéñòâàò, ìîäèôèöèðàéêè çíàêà, êîéòî 943íàòèñíàò ïúðâè, çàùîòî è äâàòà êëàâèøà äåéñòâàò, ìîäèôèöèðàéêè çíàêà,
963ñòå âúâåëè. 944êîéòî íàòèñêàòå.
964 945
965Àêî íÿìàòå èñòèíñêè êëàâèø META è èçïîëçâàòå ESC âìåñòî òîâà, ðåäúò 946Àêî íÿìàòå èñòèíñêè êëàâèø META è èçïîëçâàòå <ESC> âìåñòî òîâà, ðåäúò
966èìà çíà÷åíèå: òðÿáâà äà âúâåæäàòå ESC, ïîñëåäâàí îò CONTROL-v, çàùîòî 947âå÷å èìà çíà÷åíèå: òðÿáâà äà âúâåæäàòå <ESC>, ïîñëåäâàí îò CONTROL-v,
967CONTROL-ESC v íÿìà äà ðàáîòè. Òîâà å òàêà, çàùîòî ESC å ñîáñòâåí 948çàùîòî CONTROL-<ESC> v íÿìà äà ðàáîòè. Òîâà å òàêà, çàùîòî <ESC> å
968çíàê, à íå ìîäèôèêàòîð. 949ñîáñòâåí çíàê, à íå ìîäèôèêàòîð.
969 950
970>> Âúâåäåòå C-x 1 (â ãîðíèÿ ïðîçîðåö), çà äà ìàõíåòå äîëíèÿ ïðîçîðåö. 951>> Âúâåäåòå C-x 1 (â ãîðíèÿ ïðîçîðåö), çà äà ìàõíåòå äîëíèÿ ïðîçîðåö.
971 952
972(Àêî ñòå âúâåëè C-x 1 â äîëíèÿ ïðîçîðåö, òîâà ùå ìàõíå ãîðíèÿ. 953(Àêî ñòå âúâåëè C-x 1 â äîëíèÿ ïðîçîðåö, òîâà ùå ìàõíå ãîðíèÿ.
973Ìèñëåòå çà òàçè êîìàíäà êàòî "Çàäðúæ òî÷íî åäèí ïðîçîðåö -- òîçè, â 954Ìèñëåòå çà òàçè êîìàíäà êàòî Çàäðúæ òî÷íî åäèí ïðîçîðåö òîçè, â
974êîéòî ñúì ñåãà".) 955êîéòî ñúì ñåãà.)
975 956
976Íÿìà íóæäà äà èçâåæäàòå åäèí è ñúùè áóôåð â äâàòà ïðîçîðåöà. Àêî 957Íÿìà íóæäà äà èçâåæäàòå åäèí è ñúùè áóôåð â äâàòà ïðîçîðåöà. Àêî
977èçïîëçâàòå C-x C-f, çà äà íàìåðèòå ôàéë â åäèíèÿ ïðîçîðåö, äðóãèÿò 958èçïîëçâàòå C-x C-f, çà äà íàìåðèòå ôàéë â åäèíèÿ ïðîçîðåö, äðóãèÿò
@@ -989,22 +970,47 @@ CONTROL-ESC v íÿìà äà ðàáîòè. Òîâà å òàêà, çàùîòî ESC å ñîáñòâåí
989 èçòðèåòå äîëíèÿ. 970 èçòðèåòå äîëíèÿ.
990 971
991 972
973* ÌÍÎÆÅÑÒÂÎ ÐÀÌÊÈ
974-----------------
975
976Åìàêñ ìîæå äà ñúçäàâà è „ðàìêè“. Ðàìêàòà (frame) å òîâà, êîåòî
977íàðè÷àìå åäèí íàáîð îò ïðîçîðöè, çàåäíî ñ òåõíèòå ìåíþòà, ïëúçãà÷è,
978åõî îáëàñòè è ò.í.  ãðàôè÷åí äèñïëåé Åìàêñ íàðè÷à „ðàìêà“ òîâà,
979êîåòî ïîâå÷åòî äðóãè ïðèëîæåíèÿ íàðè÷àò „ïðîçîðåö“. Íà åêðàíà ìîãàò
980äà áúäàò ïîêàçâàíè íÿêîëêî ãðàôè÷íè ðàìêè åäíîâðåìåííî.  òåêñòîâ
981òåðìèíàë ìîæå äà ñå ïîêàçâà ñàìî åäíà ðàìêà â äàäåí ìîìåíò îò âðåìå.
982
983>> Âúâåäåòå M-x make-frame <Return>.
984 Âèæòå êàê ñå ïîÿâÿâà íîâà ðàìêà íà åêðàíà.
985
986 íîâàòà ðàìêà ìîæåòå äà ïðàâèòå âñè÷êî, êîåòî ïðàâèòå è â
987îðèãèíàëíàòà ðàìêà. Íÿìà íèùî ñïåöèàëíî â ïúðâàòà ðàìêà.
988
989>> Âúâåäåòå M-x delete-frame <Return>
990 Èçáðàíàòà ðàìêà ñå ïðåìàõâà.
991
992Ìîæåòå äà ïðåìàõâàòå ðàìêè è ïî íîðìàëíèÿ çà òîâà íà÷èí â ãðàôè÷íàòà
993ñèñòåìà, íàé-÷åñòî ñ íàòèñêàíå íà áóòîíà, îòáåëÿçàí êàòî „X“ â ãîðåí
994úãúë íà ðàìêàòà. Àêî ïðåìàõíåòå è ïîñëåäíàòà ðàìêà íà ðàáîòåù Åìàêñ,
995òîâà ùå èçëåçå îò Åìàêñ.
996
997
992* ÂËÎÆÅÍÈ ÍÈÂÀ ÍÀ ÐÅÄÀÊÒÈÐÀÍÅ 998* ÂËÎÆÅÍÈ ÍÈÂÀ ÍÀ ÐÅÄÀÊÒÈÐÀÍÅ
993----------------------------- 999-----------------------------
994 1000
995Ïîíÿêîãà ùå ñå îçîâåòå â òîâà, êîåòî ñå íàðè÷à "âëîæåíî íèâî íà 1001Ïîíÿêîãà ùå ñå îçîâåòå â òîâà, êîåòî ñå íàðè÷à âëîæåíî íèâî íà
996ðåäàêòèðàíå" (recursive editing level). Òîâà ñå îòáåëÿçâà îò 1002ðåäàêòèðàíå (recursive editing level). Òîâà ñå îòáåëÿçâà îò
997êâàäðàòíè ñêîáè â ðåäà íà ðåæèìà, êîèòî îãðàæäàò ñêîáèòå îêîëî èìåòî 1003êâàäðàòíè ñêîáè â ðåäà íà ðåæèìà, êîèòî îãðàæäàò ñêîáèòå îêîëî èìåòî
998íà ãëàâíèÿ ðåæèì. Íàïðèìåð, ìîæå äà âèäèòå [(Fundamental)] âìåñòî 1004íà ãëàâíèÿ ðåæèì. Íàïðèìåð, ìîæå äà âèäèòå [(Fundamental)] âìåñòî
999(Fundamental). 1005(Fundamental).
1000 1006
1001Çà äà ñå ìàõíåòå îò âëîæåíîòî íèâî íà ðåäàêòèðàíå, âúâåäåòå ESC ESC 1007Çà äà ñå ìàõíåòå îò âëîæåíîòî íèâî íà ðåäàêòèðàíå, âúâåäåòå <ESC>
1002ESC. Òîâà å îáùà êîìàíäà çà "èçëèçàíå". Ìîæå è äà ÿ èçïîëçâàòå çà 1008<ESC> <ESC>. Òîâà å îáùà êîìàíäà çà èçëèçàíå. Ìîæå è äà ÿ
1003ìàõàíå (ñêðèâàíå) íà äîïúëíèòåëíè ïðîçîðöè, êàêòî è çà äà ñå ìàõíåòå 1009èçïîëçâàòå çà ìàõàíå (ñêðèâàíå) íà äîïúëíèòåëíè ïðîçîðöè, êàêòî è çà
1004îò ìèíèáóôåðà. 1010äà ñå ìàõíåòå îò ìèíèáóôåðà.
1005 1011
1006>> Âúâåäåòå M-x, çà äà âëåçåòå â ìèíèáóôåð; òîãàâà âúâåäåòå ESC ESC 1012>> Âúâåäåòå M-x, çà äà âëåçåòå â ìèíèáóôåð; òîãàâà âúâåäåòå <ESC>
1007 ESC, çà äà èçëåçåòå. 1013 <ESC> <ESC>, çà äà èçëåçåòå.
1008 1014
1009Íå ìîæåòå äà èçïîëçâàòå C-g, çà äà èçëåçåòå îò âëîæåíî íèâî íà 1015Íå ìîæåòå äà èçïîëçâàòå C-g, çà äà èçëåçåòå îò âëîæåíî íèâî íà
1010ðåäàêòèðàíå. Òîâà å òàêà, çàùîòî C-g ñå èçïîëçâà çà ïðåêðàòÿâàíå íà 1016ðåäàêòèðàíå. Òîâà å òàêà, çàùîòî C-g ñå èçïîëçâà çà ïðåêðàòÿâàíå íà
@@ -1028,13 +1034,10 @@ CONTROL-h, êîéòî ñå íàðè÷à "çíàêúò çà ïîìîù".
1028ïîìîãíå. Àêî ñòå âúâåëè C-h è ðåøèòå, ÷å íå ñå íóæäàåòå îò ïîìîù, 1034ïîìîãíå. Àêî ñòå âúâåëè C-h è ðåøèòå, ÷å íå ñå íóæäàåòå îò ïîìîù,
1029ïðîñòî âúâåäåòå C-g, çà äà ÿ ïðåêðàòèòå. 1035ïðîñòî âúâåäåòå C-g, çà äà ÿ ïðåêðàòèòå.
1030 1036
1031(Íÿêîè êîìïþòðè ïðîìåíÿò çíà÷åíèåòî íà çíàêà C-h. Òå íàèñòèíà íå 1037(Àêî C-h íå èçâåæäà ñúîáùåíèå çà ïîìîù â äúíîòî íà åêðàíà, îïèòàéòå
1032òðÿáâà äà ïðàâÿò òîâà êàòî ñëÿïà ìÿðêà çà âñè÷êè ïîòðåáèòåëè, òàêà ÷å 1038êëàâèøà F1 èëè M-x help <Return> âìåñòî òîâà.)
1033èìàòå îñíîâàíèå äà ñå îïëà÷åòå íà ñèñòåìíèÿ àäìèíèñòðàòîð. Ìåæäó
1034äðóãîòî, àêî C-h íå èçâåæäà ñúîáùåíèå çà ïîìîù â äúíîòî íà åêðàíà,
1035îïèòàéòå êëàâèøà F1 èëè M-x help <Return> âìåñòî òîâà.)
1036 1039
1037Íàé-îñíîâíîòî ïîìîùíî ñðåäñòâî å C-h c. Âúâåäåòå C-h, çíàêà c è 1040Íàé-îñíîâíîòî ïîìîùíî ñðåäñòâî å C-h c. Âúâåäåòå C-h, çíàêà c è
1038êîìàíäåí çíàê èëè ïîñëåäîâàòåëíîñò îò çíàöè, îáðàçóâàùè êîìàíäà; 1041êîìàíäåí çíàê èëè ïîñëåäîâàòåëíîñò îò çíàöè, îáðàçóâàùè êîìàíäà;
1039òîãàâà Åìàêñ ùå èçâåäå ìíîãî êðàòêî îïèñàíèå íà êîìàíäàòà. 1042òîãàâà Åìàêñ ùå èçâåäå ìíîãî êðàòêî îïèñàíèå íà êîìàíäàòà.
1040 1043
@@ -1045,10 +1048,10 @@ CONTROL-h, êîéòî ñå íàðè÷à "çíàêúò çà ïîìîù".
1045 C-p runs the command previous-line 1048 C-p runs the command previous-line
1046 (C-p èçïúëíÿâà êîìàíäàòà ïðåäèøåí-ðåä) 1049 (C-p èçïúëíÿâà êîìàíäàòà ïðåäèøåí-ðåä)
1047 1050
1048Òîâà âè êàçâà "èìåòî íà ôóíêöèÿòà". Èìåíàòà íà ôóíêöèèòå ñå èçïîëçâàò 1051Òîâà âè êàçâà èìåòî íà ôóíêöèÿòà. Èìåíàòà íà ôóíêöèèòå ñå èçïîëçâàò
1049íàé-âå÷å çà íàñòðîéâàíå è ðàçøèðÿâàíå íà Åìàêñ. Íî òúé êàòî èìåíàòà 1052íàé-âå÷å çà íàñòðîéâàíå è ðàçøèðÿâàíå íà Åìàêñ. Íî òúé êàòî èìåíàòà
1050íà ôóíêöèèòå ñà èçáðàíè òàêà, ÷å äà ïîêàçâàò êàêâî ïðàâè êîìàíäàòà, òå 1053íà ôóíêöèèòå ñà èçáðàíè òàêà, ÷å äà ïîêàçâàò êàêâî ïðàâè êîìàíäàòà, òå
1051ìîãàò äà ñëóæàò è çà ìíîãî êðàòêà äîêóìåíòàöèÿ -- äîñòàòú÷íà, çà äà âè 1054ìîãàò äà ñëóæàò è çà ìíîãî êðàòêà äîêóìåíòàöèÿ äîñòàòú÷íà, çà äà âè
1052ïðèïîìíè êîìàíäè, êîèòî âå÷å ñòå ó÷èëè. 1055ïðèïîìíè êîìàíäè, êîèòî âå÷å ñòå ó÷èëè.
1053 1056
1054Ìíîãîçíàêîâè êîìàíäè, êàòî C-x C-s è (àêî íÿìàòå êëàâèø META èëè EDIT 1057Ìíîãîçíàêîâè êîìàíäè, êàòî C-x C-s è (àêî íÿìàòå êëàâèø META èëè EDIT
@@ -1070,7 +1073,7 @@ c.
1070 C-h f Îïèñâà ôóíêöèÿ. Òðÿáâà äà âúâåäåòå èìåòî íà 1073 C-h f Îïèñâà ôóíêöèÿ. Òðÿáâà äà âúâåäåòå èìåòî íà
1071 ôóíêöèÿòà. 1074 ôóíêöèÿòà.
1072 1075
1073>> Îïèòàéòå ñ âúâåæäàíå íà C-h f previous-line<Return>. 1076>> Îïèòàéòå ñ âúâåæäàíå íà C-h f previous-line <Return>.
1074 Òîâà èçâåæäà öÿëàòà èíôîðìàöèÿ, êîÿòî Åìàêñ çíàå çà ôóíêöèÿòà, 1077 Òîâà èçâåæäà öÿëàòà èíôîðìàöèÿ, êîÿòî Åìàêñ çíàå çà ôóíêöèÿòà,
1075 êîÿòî îñúùåñòâÿâà êîìàíäàòà C-p. 1078 êîÿòî îñúùåñòâÿâà êîìàíäàòà C-p.
1076 1079
@@ -1086,11 +1089,12 @@ c.
1086 äâóçíàêîâà ïîñëåäîâàòåëíîñò îò êëàâèøè, êîÿòî ïóñêà 1089 äâóçíàêîâà ïîñëåäîâàòåëíîñò îò êëàâèøè, êîÿòî ïóñêà
1087 ñúùàòà êîìàíäà. 1090 ñúùàòà êîìàíäà.
1088 1091
1089>> Âúâåäåòå C-h a file<Return>. 1092>> Âúâåäåòå C-h a file <Return>.
1090 1093
1091Òîâà èçâåæäà â äðóã ïðîçîðåö ñïèñúê íà âñè÷êè M-x êîìàíäè, êîèòî 1094Òîâà èçâåæäà â äðóã ïðîçîðåö ñïèñúê íà âñè÷êè M-x êîìàíäè, êîèòî
1092ñúäúðæàò "file" â òÿõíîòî èìå. Ùå âèäèòå çíàêîâè êîìàíäè êàòî C-x 1095ñúäúðæàò „file“ (ôàéë) â òÿõíîòî èìå. Ùå âèäèòå çíàêîâè êîìàíäè êàòî
1093C-f, èçáðîåíè èçìåæäó ñúîòâåòíèòå èìåíà íà êîìàíäè, êàòî find-file. 1096C-x C-f, èçáðîåíè èçìåæäó ñúîòâåòíèòå èìåíà íà êîìàíäè, êàòî
1097find-file.
1094 1098
1095>> Âúâåäåòå C-M-v, çà äà ñêðîëèðàòå ïîìîùíèÿ ïðîçîðåö. Íàïðàâåòå ãî 1099>> Âúâåäåòå C-M-v, çà äà ñêðîëèðàòå ïîìîùíèÿ ïðîçîðåö. Íàïðàâåòå ãî
1096 íÿêîëêî ïúòè. 1100 íÿêîëêî ïúòè.
@@ -1098,7 +1102,7 @@ C-f, èçáðîåíè èçìåæäó ñúîòâåòíèòå èìåíà íà êîìàíäè, êàòî find-file.
1098>> Âúâåäåòå C-x 1, çà äà èçòðèåòå ïîìîùíèÿ ïðîçîðåö. 1102>> Âúâåäåòå C-x 1, çà äà èçòðèåòå ïîìîùíèÿ ïðîçîðåö.
1099 1103
1100 C-h i ×åòåíå íà ðúêîâîäñòâà (Info). Òàçè êîìàíäà âè ïðàùà â 1104 C-h i ×åòåíå íà ðúêîâîäñòâà (Info). Òàçè êîìàíäà âè ïðàùà â
1101 ñïåöèàëåí áóôåð, íàðè÷àí "*info*", êúäåòî ìîæå äà 1105 ñïåöèàëåí áóôåð, íàðè÷àí *info*, êúäåòî ìîæå äà
1102 ÷åòåòå ðúêîâîäñòâàòà íà èíñòàëèðàíèòå âúâ âàøàòà 1106 ÷åòåòå ðúêîâîäñòâàòà íà èíñòàëèðàíèòå âúâ âàøàòà
1103 ñèñòåìà ïàêåòè. Âúâåäåòå m emacs <Return>, çà äà 1107 ñèñòåìà ïàêåòè. Âúâåäåòå m emacs <Return>, çà äà
1104 ÷åòåòå ðúêîâîäñòâîòî íà Åìàêñ. Àêî íèêîãà ïðåäè òîâà 1108 ÷åòåòå ðúêîâîäñòâîòî íà Åìàêñ. Àêî íèêîãà ïðåäè òîâà
@@ -1113,8 +1117,8 @@ C-f, èçáðîåíè èçìåæäó ñúîòâåòíèòå èìåíà íà êîìàíäè, êàòî find-file.
1113----------------- 1117-----------------
1114 1118
1115Ìîæå äà íàó÷èòå ïîâå÷å çà Åìàêñ ñ ÷åòåíå íà íåãîâîòî ðúêîâîäñòâî, èëè 1119Ìîæå äà íàó÷èòå ïîâå÷å çà Åìàêñ ñ ÷åòåíå íà íåãîâîòî ðúêîâîäñòâî, èëè
1116êàòî êíèãà, èëè â Èíôî (èçïîëçâàéòå ìåíþòî ïîìîù (Help) èëè âúâåäåòå 1120êàòî êíèãà, èëè â Èíôî (èçïîëçâàéòå ìåíþòî Ïîìîù (Help) èëè âúâåäåòå
1117F10 h r). Äâå âúçìîæíîñòè, êîèòî ìîæå äà æåëàåòå â íà÷àëîòî, ñà 1121C-h r). Äâå âúçìîæíîñòè, êîèòî ìîæå äà æåëàåòå â íà÷àëîòî, ñà
1118äîâúðøâàíå (completion), êîåòî ñïåñòÿâà ïèñàíå, è dired, êîéòî 1122äîâúðøâàíå (completion), êîåòî ñïåñòÿâà ïèñàíå, è dired, êîéòî
1119îïðîñòÿâà áîðàâåíåòî ñ ôàéëîâå. 1123îïðîñòÿâà áîðàâåíåòî ñ ôàéëîâå.
1120 1124
@@ -1122,8 +1126,8 @@ F10 h r). Äâå âúçìîæíîñòè, êîèòî ìîæå äà æåëàåòå â íà÷àëîòî, ñà
1122èñêàòå äà ïðåâêëþ÷èòå êúì áóôåðà *Messages*, ìîæå äà âúâåäåòå C-x b 1126èñêàòå äà ïðåâêëþ÷èòå êúì áóôåðà *Messages*, ìîæå äà âúâåäåòå C-x b
1123*M<Tab> è Åìàêñ ùå çàïúëíè îñòàíàëàòà ÷àñò îò èìåòî íà áóôåðà, 1127*M<Tab> è Åìàêñ ùå çàïúëíè îñòàíàëàòà ÷àñò îò èìåòî íà áóôåðà,
1124äîêîëêîòî ìîæå äà ñå îïðåäåëè îò òîâà, êîåòî ñòå âúâåëè. Äîâúðøâàíåòî 1128äîêîëêîòî ìîæå äà ñå îïðåäåëè îò òîâà, êîåòî ñòå âúâåëè. Äîâúðøâàíåòî
1125å îïèñàíî â Èíôî-ðúêîâîäñòâîòî íà Åìàêñ â ñòðàíèöàòà "Äîâúðøâàíå" 1129å îïèñàíî â Èíôî-ðúêîâîäñòâîòî íà Åìàêñ â ñòðàíèöàòà Äîâúðøâàíå
1126("Completion"). 1130(Completion).
1127 1131
1128Dired âè ïîçâîëÿâà äà ãëåäàòå ñïèñúêà îò ôàéëîâå â äèðåêòîðèÿ (è êàòî 1132Dired âè ïîçâîëÿâà äà ãëåäàòå ñïèñúêà îò ôàéëîâå â äèðåêòîðèÿ (è êàòî
1129âúçìîæíîñò: íåéíèòå ïîääèðåêòîðèè), äà ñå ïðèäâèæâàòå â òîçè ñïèñúê, 1133âúçìîæíîñò: íåéíèòå ïîääèðåêòîðèè), äà ñå ïðèäâèæâàòå â òîçè ñïèñúê,
@@ -1138,13 +1142,11 @@ Dired âè ïîçâîëÿâà äà ãëåäàòå ñïèñúêà îò ôàéëîâå â äèðåêòîðèÿ (è êàòî
1138* ÇÀÊËÞ×ÅÍÈÅ 1142* ÇÀÊËÞ×ÅÍÈÅ
1139------------ 1143------------
1140 1144
1141Çàïîìíåòå: çà äà èçëåçåòå áåçâúçâðàòíî îò Åìàêñ, èçïîëçâàéòå C-x C-c. 1145Çà äà èçëåçåòå áåçâúçâðàòíî îò Åìàêñ, èçïîëçâàéòå C-x C-c.
1142Çà äà èçëåçåòå âðåìåííî â îáâèâêà, òàêà ÷å äà ñå âúðíåòå â Åìàêñ
1143ïî-êúñíî, èçïîëçâàéòå C-z.
1144 1146
1145Òîâà âúâåäåíèå å ïðåäâèäåíî äà áúäå ðàçáèðàåìî çà âñè÷êè íîâè 1147Òîâà âúâåäåíèå å ïðåäâèäåíî äà áúäå ðàçáèðàåìî çà âñè÷êè íîâè
1146ïîòðåáèòåëè, òàêà ÷å àêî íàìèðàòå íåùî íåÿñíî, íå ñå ñàìîîáâèíÿâàéòå 1148ïîòðåáèòåëè, òàêà ÷å àêî íàìèðàòå íåùî íåÿñíî, íå ñå ñàìîîáâèíÿâàéòå
1147-- îïëà÷åòå ñå! 1149îïëà÷åòå ñå!
1148 1150
1149 1151
1150* ÊÎÏÈÐÀÍÅ 1152* ÊÎÏÈÐÀÍÅ
@@ -1160,26 +1162,28 @@ Dired âè ïîçâîëÿâà äà ãëåäàòå ñïèñúêà îò ôàéëîâå â äèðåêòîðèÿ (è êàòî
1160This version of the tutorial, like GNU Emacs, is copyrighted, and 1162This version of the tutorial, like GNU Emacs, is copyrighted, and
1161comes with permission to distribute copies on certain conditions: 1163comes with permission to distribute copies on certain conditions:
1162 1164
1163Copyright (C) 1985, 1996, 1998, 2001-2012 Free Software Foundation, Inc. 1165 Copyright (C) 1985, 1996, 1998, 2001-2012 Free Software Foundation, Inc.
1166
1167 This file is part of GNU Emacs.
1168
1169 GNU Emacs is free software: you can redistribute it and/or modify
1170 it under the terms of the GNU General Public License as published by
1171 the Free Software Foundation, either version 3 of the License, or
1172 (at your option) any later version.
1164 1173
1165 Permission is granted to anyone to make or distribute verbatim copies 1174 GNU Emacs is distributed in the hope that it will be useful,
1166 of this document as received, in any medium, provided that the 1175 but WITHOUT ANY WARRANTY; without even the implied warranty of
1167 copyright notice and permission notice are preserved, 1176 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1168 and that the distributor grants the recipient permission 1177 GNU General Public License for more details.
1169 for further redistribution as permitted by this notice.
1170 1178
1171 Permission is granted to distribute modified versions 1179 You should have received a copy of the GNU General Public License
1172 of this document, or of portions of it, 1180 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
1173 under the above conditions, provided also that they
1174 carry prominent notices stating who last altered them.
1175 1181
1176Óñëîâèÿòà çà êîïèðàíå íà ñàìèÿ Åìàêñ ñà ïî-ñëîæíè, íî â ñúùèÿ äóõ.
1177Ìîëÿ, ïðî÷åòåòå ôàéëà COPYING è òîãàâà äàâàéòå êîïèÿ íà ÃÍÓ Åìàêñ íà 1182Ìîëÿ, ïðî÷åòåòå ôàéëà COPYING è òîãàâà äàâàéòå êîïèÿ íà ÃÍÓ Åìàêñ íà
1178ñâîè ïðèÿòåëè. Ïîìîãíåòå äà ñïðåì çàòâîðåíîñòòà íà ïðîãðàìèòå 1183ñâîè ïðèÿòåëè. Ïîìîãíåòå äà ñïðåì çàòâîðåíîñòòà íà ïðîãðàìèòå
1179("ïðèòåæàíèåòî"), êàòî èçïîëçâàìå, ïèøåì è ñïîäåëÿìå ñâîáîäåí ñîôòóåð! 1184(ïðèòåæàíèåòî), êàòî èçïîëçâàìå, ïèøåì è ñïîäåëÿìå ñâîáîäåí ñîôòóåð!
1180 1185
1181Ïðåâîäúò íà áúëãàðñêè å èçâúðøåí îò Îãíÿí Êóëåâ 1186Ïðåâîäúò íà áúëãàðñêè å èçâúðøåí îò Îãíÿí Êóëåâ <ogi@tower.3.bg>.
1182<ogi@fmi.uni-sofia.bg>.
1183 1187
1184;;; Local Variables: 1188;;; Local Variables:
1185;;; coding: windows-1251 1189;;; coding: windows-1251
diff --git a/etc/tutorials/TUTORIAL.de b/etc/tutorials/TUTORIAL.de
index 2908203b391..3e6927441c8 100644
--- a/etc/tutorials/TUTORIAL.de
+++ b/etc/tutorials/TUTORIAL.de
@@ -15,7 +15,7 @@ EDIT oder ALT genannt). Folgende Abkürzungen werden verwendet:
15 M-f Halten Sie die META-Taste gedrückt und geben 15 M-f Halten Sie die META-Taste gedrückt und geben
16 Sie den Buchstaben (klein) f ein. 16 Sie den Buchstaben (klein) f ein.
17 17
18`>>' am linken Rand ist ein Hinweis, einen Befehl auszuprobieren: 18»>>« am linken Rand ist ein Hinweis, einen Befehl auszuprobieren:
19<<Blank lines inserted here by startup of help-with-tutorial>> 19<<Blank lines inserted here by startup of help-with-tutorial>>
20[Leerzeilen befinden sich hier aus didaktischen Gründen. Fortsetzung unten.] 20[Leerzeilen befinden sich hier aus didaktischen Gründen. Fortsetzung unten.]
21>> Drücken Sie C-v, um zur nächsten Bildschirmseite vorzublättern. 21>> Drücken Sie C-v, um zur nächsten Bildschirmseite vorzublättern.
@@ -32,7 +32,7 @@ Wichtig: Sie können Emacs mit der Befehlsfolge C-x C-c beenden.
32Im weiteren wird die ESC-Taste mit <ESC> bezeichnet. 32Im weiteren wird die ESC-Taste mit <ESC> bezeichnet.
33 33
34[Falls die deutschen Umlaute nicht korrekt auf dem Bildschirm 34[Falls die deutschen Umlaute nicht korrekt auf dem Bildschirm
35erscheinen, lesen Sie bitte den Abschnitt `MULE' kurz vor Ende dieser 35erscheinen, lesen Sie bitte den Abschnitt »MULE« kurz vor Ende dieser
36Einführung.] 36Einführung.]
37 37
38Zunächst müssen Sie wissen, wie man sich innerhalb eines Dokuments 38Zunächst müssen Sie wissen, wie man sich innerhalb eines Dokuments
@@ -43,9 +43,9 @@ Sie zuerst <ESC> und anschließend v).
43 43
44>> Probieren Sie einige Male M-v und C-v aus. 44>> Probieren Sie einige Male M-v und C-v aus.
45 45
46[Auf den meisten Tastaturen bewirkt die PgUp-Taste (`page up', auch 46[Auf den meisten Tastaturen bewirkt die PgUp-Taste (»page up«, auch
47mit `Bild' und einem Aufwärtspfeil beschriftet) dasselbe wie M-v bzw. 47mit »Bild« und einem Aufwärtspfeil beschriftet) dasselbe wie M-v bzw.
48die PgDn-Taste (`page down', `Bild' mit Abwärtspfeil) dasselbe wie 48die PgDn-Taste (»page down«, »Bild« mit Abwärtspfeil) dasselbe wie
49C-v.] 49C-v.]
50 50
51 51
@@ -60,13 +60,14 @@ betrachten:
60 C-l lösche den Bildschirm und stelle den ganzen Text 60 C-l lösche den Bildschirm und stelle den ganzen Text
61 erneut dar, wobei der Text rund um den Cursor zur 61 erneut dar, wobei der Text rund um den Cursor zur
62 Mitte des Bildschirms bewegt wird. 62 Mitte des Bildschirms bewegt wird.
63 (`l' ist der Buchstabe `klein L', nicht die Ziffer 1.) 63 (»l« ist der Buchstabe »klein L«, nicht die Ziffer 1.)
64 64
65 65
66>> Lokalisieren Sie den Cursor und merken sich den Text in dessen 66>> Finden Sie den Cursor und merken sich den Text in dessen Umgebung.
67 Umgebung. Drücken Sie C-l. Der Cursor ist jetzt ungefähr in der 67 Drücken Sie C-l. Der Cursor ist jetzt ungefähr in der (vertikalen)
68 (vertikalen) Bildschirmmitte, und er hat seine Position relativ zum 68 Bildschirmmitte, und er hat seine Position relativ zum Text nicht
69 Text nicht geändert. 69 geändert. Wiederholtes Drücken von C-l bewegt den Text zum oberen
70 Bildschirmrand, dann zum unteren, und dann wieder zur Mitte.
70 71
71 72
72* KONTROLLE DES CURSORS 73* KONTROLLE DES CURSORS
@@ -91,7 +92,7 @@ Befehl den Cursor wohin bewegt:
91 92
92 93
93[Die Buchstaben p, b, f und n stehen für die englischen Wörter 94[Die Buchstaben p, b, f und n stehen für die englischen Wörter
94`previous', `backward', `forward' und `next'.] 95»previous«, »backward«, »forward« und »next«.]
95 96
96>> Bewegen Sie den Cursor zur Zeile in der Mitte des Diagramms mittels 97>> Bewegen Sie den Cursor zur Zeile in der Mitte des Diagramms mittels
97 C-n oder C-p. Geben Sie dann C-l ein, und das ganze Diagramm ist 98 C-n oder C-p. Geben Sie dann C-l ein, und das ganze Diagramm ist
@@ -113,8 +114,10 @@ unterstützen).
113 Beobachten Sie, was C-p tut, wenn der Cursor sich in der 114 Beobachten Sie, was C-p tut, wenn der Cursor sich in der
114 Zeilenmitte befindet. 115 Zeilenmitte befindet.
115 116
116Jede Textzeile endet mit einem Zeilenvorschub-Zeichen (`newline'), das 117Jede Textzeile endet mit einem Zeilenvorschub-Zeichen (»newline«), das
117sie von der folgenden Zeile trennt. 118sie von der folgenden Zeile trennt. Die letzte Zeile in einer Datei
119hat normalerweise ebenfalls einen Zeilenvorschub am Schluss, Emacs
120benötigt ihn aber nicht.
118 121
119>> Probieren Sie C-b am Anfang einer Zeile. Der Cursor sollte zum 122>> Probieren Sie C-b am Anfang einer Zeile. Der Cursor sollte zum
120 Ende der vorigen Zeile springen: C-b überspringt 123 Ende der vorigen Zeile springen: C-b überspringt
@@ -132,7 +135,7 @@ C-f überspringt Zeilenvorschub-Zeichen analog zu C-b.
132 135
133Wenn Sie den Cursor entweder nach oben oder nach unten über den 136Wenn Sie den Cursor entweder nach oben oder nach unten über den
134Bildschirmrand hinaus bewegen wollen, dann wird statt dessen Text in 137Bildschirmrand hinaus bewegen wollen, dann wird statt dessen Text in
135den Bildschirm hineingeschoben. Dies nennt man `scrolling'. Auf 138den Bildschirm hineingeschoben. Dies nennt man »scrolling«. Auf
136diese Weise verhindert Emacs, dass der Cursor je den sichtbaren 139diese Weise verhindert Emacs, dass der Cursor je den sichtbaren
137Bereich verlässt. 140Bereich verlässt.
138 141
@@ -155,7 +158,7 @@ analog, aber in die entgegengesetzte Richtung.
155 zwischen Wörtern zu beobachten. 158 zwischen Wörtern zu beobachten.
156 159
157Beachten Sie die Parallele zwischen C-f und C-b einerseits und M-f und 160Beachten Sie die Parallele zwischen C-f und C-b einerseits und M-f und
158M-b andererseits. Sehr oft werden mit `META-' beginnende Befehle für 161M-b andererseits. Sehr oft werden mit »META-« beginnende Befehle für
159Operationen verwendet, die mit Sprache zu tun haben (Wörter, Sätze, 162Operationen verwendet, die mit Sprache zu tun haben (Wörter, Sätze,
160Absätze), während CONTROL-Befehle mit den Text-Basiseinheiten 163Absätze), während CONTROL-Befehle mit den Text-Basiseinheiten
161operieren, unabhängig davon, was Sie gerade editieren (Zeichen, 164operieren, unabhängig davon, was Sie gerade editieren (Zeichen,
@@ -181,26 +184,26 @@ lassen. Dadurch ermöglichen Sie u.a., dass Emacs zwischen
181Abkürzungspunkten und dem Satzende unterscheiden kann, was für 184Abkürzungspunkten und dem Satzende unterscheiden kann, was für
182Textsuche in wissenschaftlichen Texten oft vorteilhaft ist.] 185Textsuche in wissenschaftlichen Texten oft vorteilhaft ist.]
183 186
184[Anmerkung 2: Die Tasten `Home' (Pos1) und `End' (Ende) verhalten sich 187[Anmerkung 2: Die Tasten »Home« (Pos1) und »End« (Ende) verhalten sich
185standardmäßig wie C-a und C-e, wie wohl die meisten Benutzer 188standardmäßig wie C-a und C-e, wie wohl die meisten Benutzer
186annehmen.] 189annehmen.]
187 190
188Die aktuelle Position des Cursors wird im Englischen auch `point' 191Die aktuelle Position des Cursors wird im Englischen auch »point«
189(Punkt) genannt. Beachten Sie bitte, dass sich `point' stets 192(Punkt) genannt. Beachten Sie bitte, dass sich »point« stets
190*zwischen* zwei Zeichen befindet, nämlich genau vor dem 193*zwischen* zwei Zeichen befindet, nämlich genau vor dem
191Cursor-Kästchen. 194Cursor-Kästchen.
192 195
193Hier ist eine Zusammenfassung von einfachen Bewegungsbefehlen für den 196Hier ist eine Zusammenfassung von einfachen Bewegungsbefehlen für den
194Cursor einschließlich der Wort- und Satzbewegungsbefehle: 197Cursor einschließlich der Wort- und Satzbewegungsbefehle:
195 198
196 C-f ein Zeichen vorwärts (auch `Pfeil rechts'-Taste) 199 C-f ein Zeichen vorwärts (auch »Pfeil rechts«-Taste)
197 C-b ein Zeichen zurück (auch `Pfeil links'-Taste) 200 C-b ein Zeichen zurück (auch »Pfeil links«-Taste)
198 201
199 M-f ein Wort vorwärts 202 M-f ein Wort vorwärts
200 M-b ein Wort zurück 203 M-b ein Wort zurück
201 204
202 C-n eine Zeile vorwärts (auch `Pfeil hinunter'-Taste) 205 C-n eine Zeile vorwärts (auch »Pfeil hinunter«-Taste)
203 C-p eine Zeile zurück (auch `Pfeil hinauf'-Taste) 206 C-p eine Zeile zurück (auch »Pfeil hinauf«-Taste)
204 207
205 C-a zum Zeilenanfang 208 C-a zum Zeilenanfang
206 C-e zum Zeilenende 209 C-e zum Zeilenende
@@ -215,7 +218,7 @@ Zwei weitere wichtige Befehle für die Cursorbewegung sind M-< (META
215Kleiner-als) und M-> (META Größer-als), welche zum Anfang bzw. zum 218Kleiner-als) und M-> (META Größer-als), welche zum Anfang bzw. zum
216Ende des ganzen Textes springen. 219Ende des ganzen Textes springen.
217 220
218Bei den meisten Terminal-Tastaturen befindet sich `<' über dem Komma, 221Bei den meisten Terminal-Tastaturen befindet sich »<« über dem Komma,
219d.h., Sie müssen zusätzlich die SHIFT-Taste verwenden (der Umschalter 222d.h., Sie müssen zusätzlich die SHIFT-Taste verwenden (der Umschalter
220ist auf deutschen Tastaturen normalerweise mit einem dicken 223ist auf deutschen Tastaturen normalerweise mit einem dicken
221Aufwärtspfeil markiert). Ohne SHIFT-Taste würden Sie M-Komma 224Aufwärtspfeil markiert). Ohne SHIFT-Taste würden Sie M-Komma
@@ -224,17 +227,17 @@ eingeben.
224>> Testen Sie nun M-<, um an den Anfang der Einführung 227>> Testen Sie nun M-<, um an den Anfang der Einführung
225 zu gelangen. Verwenden Sie dann C-v, um wieder hierher zu kommen. 228 zu gelangen. Verwenden Sie dann C-v, um wieder hierher zu kommen.
226 229
227[Anmerkung: Die Tastenkombinationen `C-Home' (Pos1) und `C-End' (Ende) 230[Anmerkung: Die Tastenkombinationen »C-Home« (Pos1) und »C-End« (Ende)
228verhalten sich standardmäßig wie M-< und M->.] 231verhalten sich standardmäßig wie M-< und M->.]
229 232
230Ein weiteres, oft benütztes Konzept in Emacs ist die Markierung 233Ein weiteres, oft benütztes Konzept in Emacs ist die Markierung
231(`mark'). Der Grundbefehl dazu ist C-SPC (oder gleichwertig C-@, 234(»mark«). Der Grundbefehl dazu ist C-SPC (oder gleichwertig C-@,
232`SPC' bezeichnet die Leertaste, engl. `space key'); mit ihm kann eine 235»SPC« bezeichnet die Leertaste, engl. »space key«); mit ihm kann eine
233Markierung gesetzt werden. Mit C-u C-SPC kommt man zu dieser 236Markierung gesetzt werden. Mit C-u C-SPC kommt man zu dieser
234Markierung zurück, falls man den Cursor inzwischen weiterbewegt hat. 237Markierung zurück, falls man den Cursor inzwischen weiterbewegt hat.
235Viele Befehle, die große Sprünge in einem Text ausführen (so auch M-> 238Viele Befehle, die große Sprünge in einem Text ausführen (so auch M->
236und M-<) setzen eine Markierung implizit, was in der untersten Zeile 239und M-<) setzen eine Markierung implizit, was in der untersten Zeile
237(dem Echobereich, s.u.) als `Mark set' angezeigt wird. 240(dem Echobereich, s.u.) als »Mark set« angezeigt wird.
238 241
239>> Verwenden Sie jetzt M->, um zum Ende der Einführung 242>> Verwenden Sie jetzt M->, um zum Ende der Einführung
240 zu springen und benützen Sie C-u C-SPC, um hierher zurückzukehren. 243 zu springen und benützen Sie C-u C-SPC, um hierher zurückzukehren.
@@ -257,7 +260,7 @@ Ziffern und dann der Befehl selbst. Alternativ können Sie die
257META-Taste (bzw. EDIT- oder ALT-Taste) gedrückt halten und dann die 260META-Taste (bzw. EDIT- oder ALT-Taste) gedrückt halten und dann die
258Ziffern des Wiederholungszählers eingeben. Wir empfehlen allerdings, 261Ziffern des Wiederholungszählers eingeben. Wir empfehlen allerdings,
259die C-u-Methode zu lernen, da sie mit jedem Terminal funktioniert. 262die C-u-Methode zu lernen, da sie mit jedem Terminal funktioniert.
260Das numerische Argument wird auch `Präfix-Argument' genannt, da man es 263Das numerische Argument wird auch »Präfix-Argument« genannt, da man es
261vor dem zugehörigen Befehl eingibt. 264vor dem zugehörigen Befehl eingibt.
262 265
263Beispiel: C-u 8 C-f bewegt den Cursor acht Zeichen vorwärts. 266Beispiel: C-u 8 C-f bewegt den Cursor acht Zeichen vorwärts.
@@ -268,7 +271,7 @@ Beispiel: C-u 8 C-f bewegt den Cursor acht Zeichen vorwärts.
268 271
269Wie gesagt, die meisten Befehle verwenden das numerische Argument als 272Wie gesagt, die meisten Befehle verwenden das numerische Argument als
270Wiederholungszähler, jedoch nicht alle. Einige davon, die allerdings 273Wiederholungszähler, jedoch nicht alle. Einige davon, die allerdings
271noch nicht besprochen wurden, benützen es als Flag (`Flagge'), d.h., 274noch nicht besprochen wurden, benützen es als Flag (»Flagge«), d.h.,
272allein das Vorhandensein eines Präfix-Arguments, unabhängig von seinem 275allein das Vorhandensein eines Präfix-Arguments, unabhängig von seinem
273Wert, signalisiert dem Befehl, etwas anderes zu tun. 276Wert, signalisiert dem Befehl, etwas anderes zu tun.
274 277
@@ -283,27 +286,20 @@ Der Bildschirminhalt sollte jetzt um acht Zeilen nach oben verschoben
283sein. Wollen Sie ihn nach unten verschieben, dann geben Sie M-v mit 286sein. Wollen Sie ihn nach unten verschieben, dann geben Sie M-v mit
284einem numerischen Argument ein. 287einem numerischen Argument ein.
285 288
286Wenn Sie eine graphische Oberfläche wie X11 oder MS-Windows verwenden, 289Wenn Sie eine graphische Oberfläche wie X oder MS-Windows verwenden,
287dann befindet sich ein schmaler, langgezogener rechteckiger Bereich auf 290dann befindet sich ein schmaler, langgezogener rechteckiger Bereich
288der linken oder rechten Seite des Emacs-Fensters. Dieser Bereich 291auf der linken oder rechten Seite des Emacs-Fensters. Dieser Bereich
289wird Scrollbar genannt (`Verschiebungsbalken'). Sie können Text 292wird Scrollbar genannt (»Verschiebungsbalken«). Sie können Text
290verschieben, indem Sie mit der Maus auf den Scrollbar klicken. 293verschieben, indem Sie mit der Maus auf den Scrollbar klicken.
291 294
292>> Drücken Sie die mittlere Taste (oder die linke und rechte Taste 295Hat Ihre Maus ein Mausrad, können Sie damit ebenfalls Text
293 gleichzeitig, falls Sie eine Zwei-Tasten-Maus verwenden) innerhalb 296verschieben.
294 des Scrollbar-Bereichs. Das sollte den Text zu einer Position
295 verschieben, die davon abhängt, wie weit oben oder unten Sie
296 geklickt haben.
297
298>> Bewegen Sie nun die Maus auf und ab, während Sie die mittlere Taste
299 gedrückt halten. Sie werden sehen, dass der Text entsprechend der
300 Mausbewegungen nach oben oder unter verschoben wird.
301 297
302 298
303* WENN EMACS NICHT MEHR REAGIERT 299* WENN EMACS NICHT MEHR REAGIERT
304-------------------------------- 300--------------------------------
305 301
306Wenn Emacs `hängt', also auf keine Ihrer Eingaben reagiert, drücken 302Wenn Emacs »hängt«, also auf keine Ihrer Eingaben reagiert, drücken
307Sie C-g. Sie können C-g auch dazu benützen, einen Befehl zu stoppen, 303Sie C-g. Sie können C-g auch dazu benützen, einen Befehl zu stoppen,
308der zu lange braucht. 304der zu lange braucht.
309 305
@@ -323,13 +319,13 @@ mit C-g rückgängig machen.
323* DEAKTIVIERTE BEFEHLE 319* DEAKTIVIERTE BEFEHLE
324---------------------- 320----------------------
325 321
326Ein paar Befehle von Emacs sind deaktiviert (`disabled'), damit 322Ein paar Befehle von Emacs sind deaktiviert (»disabled«), damit
327Anfänger sie nicht unabsichtlich benutzen. 323Anfänger sie nicht unabsichtlich benutzen.
328 324
329Wenn Sie einen solchen Befehl eingeben, dann gibt Emacs eine Meldung 325Wenn Sie einen solchen Befehl eingeben, dann gibt Emacs eine Meldung
330aus und fragt Sie, ob Sie ihn wirklich ausführen wollen. 326aus und fragt Sie, ob Sie ihn wirklich ausführen wollen.
331 327
332Antworten Sie mit y (für `yes') oder drücken Sie die Leertaste, wenn 328Antworten Sie mit y (für »yes«) oder drücken Sie die Leertaste, wenn
333Sie den Befehl ausführen wollen, sonst mit n. 329Sie den Befehl ausführen wollen, sonst mit n.
334 330
335>> Geben Sie C-x C-l ein (das ist ein deaktivierter Befehl) und 331>> Geben Sie C-x C-l ein (das ist ein deaktivierter Befehl) und
@@ -339,7 +335,7 @@ Sie den Befehl ausführen wollen, sonst mit n.
339* FENSTER 335* FENSTER
340--------- 336---------
341 337
342Emacs kann mehrere Fenster (`windows') haben, von denen jedes seinen 338Emacs kann mehrere Fenster (»windows«) haben, von denen jedes seinen
343eigenen Text darstellt. Später erklären wir, wie man mit Fenstern 339eigenen Text darstellt. Später erklären wir, wie man mit Fenstern
344umgeht. Hier wollen wir nur erklären, wie man ein (vielleicht 340umgeht. Hier wollen wir nur erklären, wie man ein (vielleicht
345irrtümlich erzeugtes) Fenster wieder entfernt und zum normalen 341irrtümlich erzeugtes) Fenster wieder entfernt und zum normalen
@@ -351,14 +347,14 @@ Das ist C-x gefolgt von der Ziffer 1. C-x 1 expandiert das Fenster,
351in dem der Cursor sich befindet, sodass es den ganzen Bildschirm 347in dem der Cursor sich befindet, sodass es den ganzen Bildschirm
352erfasst. Alle anderen Fenster werden gelöscht. 348erfasst. Alle anderen Fenster werden gelöscht.
353 349
354[Anmerkung: Emacs verwendet das Wort Fenster (`windows') in einem 350[Anmerkung: Emacs verwendet das Wort Fenster (»windows«) in einem
355anderen Sinn, als Sie es vielleicht gewöhnt sind. Wenn Sie einen 351anderen Sinn, als Sie es vielleicht gewöhnt sind. Wenn Sie einen
356Textbildschirm vor sich haben, dann ist die Terminologie eindeutig. 352Textbildschirm vor sich haben, dann ist die Terminologie eindeutig.
357Wenn Sie allerdings eine graphische Oberfläche benutzen, dann 353Wenn Sie allerdings eine graphische Oberfläche benutzen, dann
358bezeichnet ein Emacs-Fenster einen Teilbereich des Fensters (von Ihrer 354bezeichnet ein Emacs-Fenster einen Teilbereich des Fensters (von Ihrer
359graphischen Oberfläche erzeugt), in dem Emacs läuft, in völliger 355graphischen Oberfläche erzeugt), in dem Emacs läuft, in völliger
360Analogie zum Textmodus. Für (graphische) Fenster im herkömmlichen 356Analogie zum Textmodus. Für (graphische) Fenster im herkömmlichen
361Sinn verwenden die Emacs-Entwickler den Ausdruck Rahmen (`frame').] 357Sinn verwenden die Emacs-Entwickler den Ausdruck »Rahmen« (»frame«).]
362 358
363>> Bewegen Sie den Cursor zu dieser Zeile und geben Sie C-u 0 C-l ein. 359>> Bewegen Sie den Cursor zu dieser Zeile und geben Sie C-u 0 C-l ein.
364 360
@@ -376,38 +372,32 @@ Sinn verwenden die Emacs-Entwickler den Ausdruck Rahmen (`frame').]
376Wenn Sie Text einfügen wollen, dann geben Sie ihn einfach ein. 372Wenn Sie Text einfügen wollen, dann geben Sie ihn einfach ein.
377Sichtbare Zeichen, z.B. A, 7, * usw. werden als Text von Emacs sofort 373Sichtbare Zeichen, z.B. A, 7, * usw. werden als Text von Emacs sofort
378eingefügt. Drücken Sie <Return> (die Zeilenvorschubtaste, meistens 374eingefügt. Drücken Sie <Return> (die Zeilenvorschubtaste, meistens
379mit `Enter' oder nur mit einem Rückwärts-Hakenpfeil beschriftet), um 375mit »Enter« oder nur mit einem Rückwärts-Hakenpfeil beschriftet), um
380ein Zeilenvorschubzeichen einzufügen. 376ein Zeilenvorschubzeichen einzufügen.
381 377
382Sie können das zuletzt eingegebene Zeichen löschen, indem Sie <Delete> 378Sie können das zuletzt eingegebene Zeichen löschen, indem Sie <DEL>
383drücken. <Delete> ist einer Taste auf der Tastatur zugeordnet, die 379drücken. <DEL> ist der Backspace-Taste zugeordnet (oft auch nur als
384mit `Del' oder `Entf' beschriftet ist. In manchen Fällen dient die 380Rückwärtspfeil beschriftet).
385Backspace-Taste (oft auch nur als Rückwärtspfeil beschriftet) als
386<Delete>, aber nicht immer!
387 381
388Allgemein gesprochen löscht <Delete> das Zeichen unmittelbar vor der 382Allgemein gesprochen löscht <DEL> das Zeichen unmittelbar vor der
389aktuellen Cursorposition. 383aktuellen Cursorposition.
390 384
391[Beachten Sie, dass <Delete> ein logischer Befehlsname ist, der auf
392die jeweilige Tastatur abgebildet wird. Lesen Sie im Abschnitt `Init
393Rebinding' des Emacs-Handbuches nach, wie Sie gegebenenfalls die
394Tastaturbelegung verändern können.]
395
396>> Probieren Sie das jetzt aus: Geben Sie ein paar Zeichen ein und 385>> Probieren Sie das jetzt aus: Geben Sie ein paar Zeichen ein und
397 löschen Sie sie wieder mit <Delete>. Sie brauchen sich keine 386 löschen Sie sie wieder mit <DEL>. Sie brauchen sich keine Sorgen
398 Sorgen zu machen, dieses Dokument zu verändern: Was Sie hier lesen, 387 zu machen, dieses Dokument zu verändern: Was Sie hier lesen, ist
399 ist nur eine (persönliche) Kopie des originalen Dokuments. 388 nur eine (persönliche) Kopie des originalen Dokuments.
400 389
401Wenn eine Textzeile zu lang wird für eine Bildschirmzeile, dann wird 390Wenn eine Textzeile zu lang für eine Bildschirmzeile ist, wird sie auf
402sie auf einer zweiten Bildschirmzeile `fortgesetzt'. Ein 391einer zweiten Bildschirmzeile »fortgesetzt«: Bei graphischen
403`Backslash'-Zeichen (`\') bzw. ein kleiner gebogener Pfeil (bei 392Oberflächen erscheinen zwei kleine gebogene Pfeile links und rechts
404graphischen Oberflächen) am rechten Rand verdeutlicht das. 393vom Textbereich (diese schmalen Spalten werden »fringe« genannt), bei
394Terminals ein »Backslash«-Zeichen (»\«) am rechten Rand.
405 395
406>> Fügen Sie Text ein, bis Sie den rechten Rand erreicht haben. Fügen 396>> Fügen Sie Text ein, bis Sie den rechten Rand erreicht haben. Fügen
407 Sie weiter Text ein. Beobachten Sie, wie eine Fortsetzungszeile 397 Sie weiter Text ein. Beobachten Sie, wie eine Fortsetzungszeile
408 erscheint. 398 erscheint.
409 399
410>> Verwenden Sie <Delete> so oft, bis die Textzeile wieder auf eine 400>> Verwenden Sie <DEL> so oft, bis die Textzeile wieder auf eine
411 Bildschirmzeile passt. Die Fortsetzungszeile verschwindet wieder. 401 Bildschirmzeile passt. Die Fortsetzungszeile verschwindet wieder.
412 402
413Sie können das Zeilenvorschubzeichen wie jedes andere Zeichen löschen: 403Sie können das Zeilenvorschubzeichen wie jedes andere Zeichen löschen:
@@ -415,7 +405,7 @@ Die Zeilen vor und nach ihm werden dann zu einer zusammengehängt. Ist
415diese länger als die Bildschirmbreite, erscheint eine 405diese länger als die Bildschirmbreite, erscheint eine
416Fortsetzungszeile. 406Fortsetzungszeile.
417 407
418>> Bewegen Sie den Cursor zum Anfang der Zeile und geben Sie <Delete> 408>> Bewegen Sie den Cursor zum Anfang der Zeile und geben Sie <DEL>
419 ein: Die momentane Zeile wird an die vorige angehängt. 409 ein: Die momentane Zeile wird an die vorige angehängt.
420 410
421>> Geben Sie <Return> ein, um wieder ein Zeilenvorschubzeichen 411>> Geben Sie <Return> ein, um wieder ein Zeilenvorschubzeichen
@@ -432,10 +422,10 @@ Bis jetzt kennen Sie die Grundbefehle, um Text in Emacs einzugeben und
432Fehler zu korrigieren -- fast analog zu den Bewegungsbefehlen ist es 422Fehler zu korrigieren -- fast analog zu den Bewegungsbefehlen ist es
433möglich, ganze Wörter, Sätze oder Zeilen zu löschen: 423möglich, ganze Wörter, Sätze oder Zeilen zu löschen:
434 424
435 <Delete> lösche ein Zeichen vor dem Cursor 425 <DEL> lösche ein Zeichen vor dem Cursor
436 C-d lösche das Zeichen unter dem Cursor 426 C-d lösche das Zeichen unter dem Cursor
437 427
438 M-<Delete> lösche bis zum (nächsten) Wortanfang unmittelbar 428 M-<DEL> lösche bis zum (nächsten) Wortanfang unmittelbar
439 vor dem Cursor 429 vor dem Cursor
440 M-d lösche bis zum (nächsten) Wortende nach 430 M-d lösche bis zum (nächsten) Wortende nach
441 (bzw. unter) dem Cursor 431 (bzw. unter) dem Cursor
@@ -445,42 +435,40 @@ möglich, ganze Wörter, Sätze oder Zeilen zu löschen:
445 M-k lösche bis zum nächsten Satzende nach 435 M-k lösche bis zum nächsten Satzende nach
446 (bzw. unter) dem Cursor 436 (bzw. unter) dem Cursor
447 437
448Beachten Sie bitte, dass <Delete> je nach Tastaturbelegung die Del-
449(Entf-) oder die Backspace- (Rückwärtspfeil-) Taste sein kann.
450
451Eine andere, einheitliche Methode zum Löschen von Text ist das 438Eine andere, einheitliche Methode zum Löschen von Text ist das
452Befehlspaar C-@ (oder C-SPC) und C-w. Gehen sie zum Anfang des zu 439Befehlspaar C-@ (oder C-SPC) und C-w. Gehen sie zum Anfang des zu
453löschenden Textes und drücken Sie C-@ oder C-SPC. Gehen Sie dann zum 440löschenden Textes und drücken Sie C-@ oder C-SPC. Gehen Sie dann zum
454Ende des zu löschenden Textes und drücken Sie C-w, um ihn zu 441Ende des zu löschenden Textes und drücken Sie C-w, um ihn zu
455entfernen. 442entfernen.
456 443
457>> Bewegen Sie den Cursor zum Buchstaben `E' am Anfang des letzten 444>> Bewegen Sie den Cursor zum Buchstaben »E« am Anfang des letzten
458 Absatzes. 445 Absatzes.
459>> Drücken Sie C-SPC. Emacs sollte die Meldung `Mark set' am unteren 446>> Drücken Sie C-SPC. Emacs sollte die Meldung »Mark set« am unteren
460 Bildschirmrand zeigen. 447 Bildschirmrand zeigen.
461>> Bewegen Sie den Cursor zum Buchstaben `A' in der zweiten Zeile des 448>> Bewegen Sie den Cursor zum Buchstaben »A« in der zweiten Zeile des
462 letzten Absatzes. 449 letzten Absatzes.
463>> Geben Sie C-w ein. Der ganze Text, beginnend mit dem `E' und 450>> Geben Sie C-w ein. Der ganze Text, beginnend mit dem »E« und
464 endend vor dem `A', ist nun gelöscht. 451 endend vor dem »A«, ist nun gelöscht.
465 452
466Löschen Sie mehr als ein Zeichen auf einmal, speichert Emacs den 453Löschen Sie mehr als ein Zeichen auf einmal, speichert Emacs den
467gelöschten Text, damit Sie ihn bei Bedarf wieder zurückholen können. 454gelöschten Text, damit Sie ihn bei Bedarf wieder zurückholen können.
468Einfügen von bereits gelöschtem Text wird im englischen Dokumentation 455Einfügen von bereits gelöschtem Text wird im englischen Dokumentation
469von Emacs als `yanking' (wörtlich `herausreißen') bezeichnet. Sie 456von Emacs als »yanking« (wörtlich »herausreißen«) bezeichnet. Sie
470können den gelöschten Text an einer beliebigen Stelle wieder 457können den gelöschten Text an einer beliebigen Stelle wieder
471einzufügen. Solange Sie nichts neues löschen, steht Ihnen dieser 458einzufügen. Solange Sie nichts neues löschen, steht Ihnen dieser
472gelöschte Textteil immer wieder zu Verfügung. Der Befehl dazu ist C-y 459gelöschte Textteil immer wieder zu Verfügung. Der Befehl dazu ist C-y
473(das Ypsilon steht für `yank'). 460(das Ypsilon steht für »yank«).
474 461
475Emacs unterscheidet zwei Klassen von Löschbefehlen (was man im 462Emacs unterscheidet zwei Klassen von Löschbefehlen (was man im
476Deutschen leider nicht gut wiedergeben kann): `killing' (umbringen) 463Deutschen leider nicht gut wiedergeben kann): »killing« (umbringen)
477und `deleting' (löschen). Wenn man sich vorstellt, dass `yanking' den 464und »deleting« (löschen). Wenn man sich vorstellt, dass »yanking« den
478Begriff `von den Toten erwecken' darstellt, dann hat man ungefähr eine 465Begriff »von den Toten erwecken« darstellt, dann hat man ungefähr eine
479Vorstellung von der Metapher -- Von einem `kill'-Befehl gelöschter 466Vorstellung von der Metapher -- Von einem »kill«-Befehl gelöschter
480Text wird gespeichert und kann bei Bedarf mit C-y zurückgeholt 467Text wird gespeichert und kann bei Bedarf mit C-y zurückgeholt werden.
481werden. Von einem `delete'-Befehl entfernter Text (in der Regel 468Von einem »delete«-Befehl entfernter Text (in der Regel einzelne
482einzelne Zeichen, leere Zeilen und Zwischenräume) wird nicht extra 469Zeichen, leere Zeilen und Zwischenräume) wird nicht extra gespeichert
483gespeichert und kann daher auch nicht zurückgeholt werden. 470und kann daher auch nicht zurückgeholt werden. Allerdings besteht die
471Möglichkeit zum »Undo«, siehe weiter unten.
484 472
485>> Bringen Sie den Cursor an den Anfang einer nicht-leeren Zeile und 473>> Bringen Sie den Cursor an den Anfang einer nicht-leeren Zeile und
486 geben Sie C-k ein, um die Zeile zu löschen. 474 geben Sie C-k ein, um die Zeile zu löschen.
@@ -495,12 +483,16 @@ behandelt: es löscht die angegebene Anzahl von Zeilen UND die
495Zeilenvorschübe: C-u 2 C-k löscht zwei Zeilen komplett; zweimal C-k 483Zeilenvorschübe: C-u 2 C-k löscht zwei Zeilen komplett; zweimal C-k
496löscht dagegen nur eine Zeile. 484löscht dagegen nur eine Zeile.
497 485
498Wie schon erwähnt, bringt C-y den zuletzt gelöschten (`gekillten') 486Wie schon erwähnt, bringt C-y den zuletzt gelöschten (»gekillten«)
499Text zurück -- man kann diesen Text einfügen, wo man will: an der 487Text zurück -- man kann diesen Text einfügen, wo man will: an der
500ursprünglichen Stelle, an einer anderen Stelle, oder sogar in einer 488ursprünglichen Stelle, an einer anderen Stelle, oder sogar in einer
501anderen Datei. Mehrmaliges Ausführen von C-y fügt den Text mehrmals 489anderen Datei. Mehrmaliges Ausführen von C-y fügt den Text mehrmals
502ein. 490ein.
503 491
492In anderen Editoren wird »kill« und »yank« oft als »cut«
493(ausschneiden) und »paste« (einfügen) bezeichnet. Näheres dazu findet
494sich im Abschnitt »Glossary« des Emacs-Handbuchs.
495
504>> Probieren Sie jetzt C-y, um diesen Effekt zu sehen. 496>> Probieren Sie jetzt C-y, um diesen Effekt zu sehen.
505 497
506Führen Sie C-k mehrmals hintereinander aus, dann wird der so 498Führen Sie C-k mehrmals hintereinander aus, dann wird der so
@@ -509,14 +501,14 @@ Text zurück.
509 501
510>> Drücken Sie mehrmals C-k. 502>> Drücken Sie mehrmals C-k.
511 503
512Holen Sie jetzt den Text `von den Toten' zurück: 504Holen Sie jetzt den Text »von den Toten« zurück:
513 505
514>> Drücken Sie C-y. Bewegen Sie dann den Cursor ein paar Zeilen nach 506>> Drücken Sie C-y. Bewegen Sie dann den Cursor ein paar Zeilen nach
515 unten und drücken Sie C-y erneut. Der eben eingefügte Text wird 507 unten und drücken Sie C-y erneut. Der eben eingefügte Text wird
516 noch einmal an anderer Stelle kopiert. 508 noch einmal an anderer Stelle kopiert.
517 509
518Wie können Sie gelöschten Text wieder einfügen, wenn Sie in der 510Wie können Sie gelöschten Text wieder einfügen, wenn Sie in der
519Zwischenzeit noch etwas anderes `gekillt' haben? C-y würde das 511Zwischenzeit noch etwas anderes »gekillt« haben? C-y würde das
520zuletzt gelöschte Textstück zurückholen, was aber nicht das gewünschte 512zuletzt gelöschte Textstück zurückholen, was aber nicht das gewünschte
521ist. Verwenden Sie nun M-y (unmittelbar nach der erstmaligen 513ist. Verwenden Sie nun M-y (unmittelbar nach der erstmaligen
522Ausführung von C-y), um den gerade mit C-y eingefügten Textteil durch 514Ausführung von C-y), um den gerade mit C-y eingefügten Textteil durch
@@ -546,7 +538,7 @@ durchgesehen.
546Die meisten graphischen Oberflächen bieten auch die Möglichkeit, mit 538Die meisten graphischen Oberflächen bieten auch die Möglichkeit, mit
547der linken Maustaste einen Textteil zu markieren (er erscheint dann 539der linken Maustaste einen Textteil zu markieren (er erscheint dann
548normalerweise grau unterlegt). Der Befehl C-w löscht diesen 540normalerweise grau unterlegt). Der Befehl C-w löscht diesen
549markierten Textteil (in Emacs auch `Region' genannt) und fügt ihn in 541markierten Textteil (in Emacs auch »Region« genannt) und fügt ihn in
550den Löschring ein. 542den Löschring ein.
551 543
552Dasselbe geht auch ohne Maus: Bewegen Sie den Cursor zum Beginn des zu 544Dasselbe geht auch ohne Maus: Bewegen Sie den Cursor zum Beginn des zu
@@ -562,54 +554,48 @@ man Befehle mit langen Namen ausführen kann).
562------ 554------
563 555
564Wenn Sie etwas am Text geändert haben und nachträglich bemerken, dass 556Wenn Sie etwas am Text geändert haben und nachträglich bemerken, dass
565das ein Fehler war, so können Sie den Fehler mit dem Befehl C-x u 557das ein Fehler war, so können Sie den Fehler mit dem Befehl C-/
566ungeschehen machen (`undo'). 558ungeschehen machen (»undo«).
567 559
568Normalerweise macht C-x u das Verhalten von einem Befehl ungeschehen; 560Normalerweise macht C-/ das Verhalten von einem Befehl ungeschehen;
569führen Sie C-x u mehrmals hintereinander aus, werden die jeweiligen 561führen Sie C-/ mehrmals hintereinander aus, werden die jeweiligen
570vorigen Befehle widerrufen. 562vorigen Befehle widerrufen.
571 563
572Es gibt jedoch zwei Ausnahmen: Befehle, die den Text nicht ändern, 564Es gibt jedoch zwei Ausnahmen: Befehle, die den Text nicht ändern,
573werden nicht gezählt (z.B. Cursorbewegungen und Blättern im Text). 565werden nicht gezählt (z.B. Cursorbewegungen und Blättern im Text).
574Und Befehle, die sich selbst einfügen (`self-inserting': Drücken Sie 566Und Befehle, die sich selbst einfügen (»self-inserting«: Drücken Sie
575zum Beispiel die `u'-Taste, dann wird der Buchstabe u eingefügt) 567zum Beispiel die »u«-Taste, dann wird der Buchstabe u eingefügt)
576werden in Gruppen von bis zu 20 Zeichen wiederhergestellt, um die 568werden in Gruppen von bis zu 20 Zeichen wiederhergestellt, um die
577Anzahl der notwendigen C-x u-Befehle zu reduzieren. 569Anzahl der notwendigen C-/-Befehle zu reduzieren.
578 570
579>> Löschen Sie diese Zeilen mit C-k und drücken Sie anschließend 571>> Löschen Sie diese Zeilen mit C-k und drücken Sie anschließend
580 mehrmals C-x u, und die Zeilen erscheinen wieder. 572 mehrmals C-/, und die Zeilen erscheinen wieder.
581 573
582C-_ ist ein alternativer Undo-Befehl; er arbeitet genauso wie C-x u, 574Alternative Tastenkombinationen für C-/ sind C-_ und C-x u. Ein
583ist jedoch einfacher zu tippen, wenn Sie den Befehl mehrmals 575numerisches Argument für C-/, C-_ oder C-x u wird als
584hintereinander ausführen möchten. Der Nachteil von C-_ ist, dass bei
585manchen Tastaturen nicht sofort einsichtig ist, wie man das eingibt.
586
587Eine weitere Eingabemöglichkeit bei vielen Terminals ist C-/.
588
589Ein numerisches Argument für C-_, C-x u oder C-/ wird als
590Wiederholungszähler interpretiert. 576Wiederholungszähler interpretiert.
591 577
592Der Unterschied zwischen der Undo-Funktion und dem oben erklärten C-y 578Der Unterschied zwischen der Undo-Funktion und dem oben erklärten C-y
593ist, dass erstere gelöschten Text an exakt der gleichen Position wie 579ist, dass erstere gelöschten Text an exakt der gleichen Position wie
594vorher wiederherstellt, wohingegen C-y den gelöschten Text an der 580vorher wiederherstellt, wohingegen C-y den gelöschten Text an der
595momentanen Cursorposition einfügt. Im übrigen kann auch `gekillter' 581momentanen Cursorposition einfügt. Im übrigen kann auch »gekillter«
596Text wieder hergestellt werden; der Unterschied zwischen `killing' und 582Text wieder hergestellt werden; der Unterschied zwischen »killing« und
597`yanking' betrifft nur C-y, aber nicht die Undo-Funktion. 583»yanking« betrifft nur C-y, aber nicht die Undo-Funktion.
598 584
599 585
600* DATEIEN 586* DATEIEN
601--------- 587---------
602 588
603Um editierten Text zu sichern, muss man ihn in einer Datei (`file') 589Um editierten Text zu sichern, muss man ihn in einer Datei (»file«)
604speichern (`save'). Wird Emacs beendet, ohne dass man vorher den Text 590speichern (»save«). Wird Emacs beendet, ohne dass man vorher den Text
605gespeichert hat, dann ist der Text verloren. 591gespeichert hat, dann ist der Text verloren.
606 592
607Will man andererseits bereits gesicherten Text mit Emacs editieren, so 593Will man andererseits bereits gesicherten Text mit Emacs editieren, so
608muss die entsprechende Datei in Emacs geladen werden (im Englischen 594muss die entsprechende Datei in Emacs geladen werden (im Englischen
609wird das als `finding' (finden) bzw. als `visiting' (besuchen) 595wird das als »finding« (finden) bzw. als »visiting« (besuchen)
610bezeichnet). 596bezeichnet).
611 597
612Eine Datei `finden' bedeutet, dass man den Inhalt dieser Datei mit 598Eine Datei »finden« bedeutet, dass man den Inhalt dieser Datei mit
613Emacs bearbeitet -- es ist fast so, als ob man die Datei selbst 599Emacs bearbeitet -- es ist fast so, als ob man die Datei selbst
614editiert. Jedoch werden Änderungen an dieser Datei erst dann 600editiert. Jedoch werden Änderungen an dieser Datei erst dann
615dauerhaft, wenn man sie speichert; auf diese Weise wird vermieden, 601dauerhaft, wenn man sie speichert; auf diese Weise wird vermieden,
@@ -621,9 +607,9 @@ die Änderungen ein Fehler sind.
621Wenn Sie die untere Bildschirmkante genauer betrachten, dann werden 607Wenn Sie die untere Bildschirmkante genauer betrachten, dann werden
622Sie eine Zeile finden, die mit einem oder mehreren Bindestrichen 608Sie eine Zeile finden, die mit einem oder mehreren Bindestrichen
623beginnt und endet; sie enthält unter anderem die Zeichenkette 609beginnt und endet; sie enthält unter anderem die Zeichenkette
624`TUTORIAL.de'. An dieser Position befindet sich immer der Name der 610»TUTORIAL.de«. An dieser Position befindet sich immer der Name der
625Datei, die Sie momentan bearbeiten (`visit'). Gerade in diesem 611Datei, die Sie momentan bearbeiten (»visit«). Gerade in diesem
626Augenblick bearbeiten Sie eine Datei mit dem Namen `TUTORIAL.de' 612Augenblick bearbeiten Sie eine Datei mit dem Namen »TUTORIAL.de«
627(genauer gesagt, Emacs hat eine identische Kopie geladen). 613(genauer gesagt, Emacs hat eine identische Kopie geladen).
628 614
629Die Befehle für das Laden und Speichern von Dateien bestehen aus zwei 615Die Befehle für das Laden und Speichern von Dateien bestehen aus zwei
@@ -634,14 +620,14 @@ drei oder vier Zeichen lang -- Sie haben bereits C-x u und C-x 1
634kennengelernt. 620kennengelernt.
635 621
636Um eine Datei in Emacs laden zu können, muss man dem Lade-Befehl den 622Um eine Datei in Emacs laden zu können, muss man dem Lade-Befehl den
637Namen der Datei mitteilen. Der Befehl `liest ein Argument vom 623Namen der Datei mitteilen. Der Befehl »liest ein Argument« (in diesem
638Terminal' (in diesem Fall ist das der Name der Datei). Nachdem Sie 624Fall ist das der Name der Datei). Nachdem Sie
639 625
640 C-x C-f (lade Datei) 626 C-x C-f (lade Datei)
641 627
642eingegeben haben, werden Sie von Emacs nach dem Dateinamen gefragt. 628eingegeben haben, werden Sie von Emacs nach dem Dateinamen gefragt.
643Die Zeichen, die Sie eingeben, werden in der untersten Bildschirmzeile 629Die Zeichen, die Sie eingeben, werden in der untersten Bildschirmzeile
644dargestellt, dem sogenannten Minipuffer (`minibuffer'). Sie können 630dargestellt, dem sogenannten Minipuffer (»minibuffer«). Sie können
645ganz normale Emacs-Editierfunktionen verwenden, um den Dateinamen zu 631ganz normale Emacs-Editierfunktionen verwenden, um den Dateinamen zu
646ändern. 632ändern.
647 633
@@ -653,39 +639,42 @@ Minipuffer benutzen) mit C-g abbrechen.
653 ab (Sie haben also keine Datei geladen). 639 ab (Sie haben also keine Datei geladen).
654 640
655Wenn Sie den Dateinamen fertig eingegeben haben, drücken Sie <Return>, 641Wenn Sie den Dateinamen fertig eingegeben haben, drücken Sie <Return>,
656um den Befehl abzuschließen; C-x C-f wird ausgeführt und lädt die von 642um den Befehl abzuschließen. Der Minipuffer verschwindet wieder, und
657Ihnen ausgesuchte Datei. Der Minipuffer verschwindet wieder, sobald 643C-x C-f lädt die von Ihnen ausgesuchte Datei.
658C-x C-f beendet ist.
659 644
660Ein paar Augenblicke später erscheint der Dateiinhalt auf dem 645Der Dateiinhalt erscheint jetzt auf dem Bildschirm, und Sie können den
661Bildschirm, und Sie können den Text editieren. Wenn Sie Ihre 646Text editieren. Wenn Sie Ihre Änderungen permanent speichern wollen,
662Änderungen permanent speichern wollen, dann drücken Sie 647dann drücken Sie
663 648
664 C-x C-s (sichere Datei) 649 C-x C-s (sichere Datei)
665 650
666und Emacs kopiert den Text in die Datei. Beim ersten Mal benennt 651und Emacs kopiert den Text in die Datei. Beim ersten Mal benennt
667Emacs die Originaldatei um, damit sie nicht verloren ist. Der neue 652Emacs die Originaldatei um, damit sie nicht verloren ist. Der neue
668Name besteht aus dem Originalnamen plus einer angehängten Tilde `~' 653Name besteht aus dem Originalnamen plus einer angehängten Tilde »~«
669[unter einigen Betriebssystemen wird statt dessen die 654[unter einigen Betriebssystemen wird statt dessen die
670Namenserweiterung durch `.bak' ersetzt]. 655Namenserweiterung durch ».bak« ersetzt].
671 656
672Emacs schreibt den Namen der gesicherten Datei in die unterste Zeile, 657Emacs schreibt den Namen der gesicherten Datei in die unterste Zeile,
673sobald C-x C-s fertig ausgeführt ist. Sie sollten den editierten Text 658sobald C-x C-s fertig ausgeführt ist. Sie sollten den editierten Text
674oft speichern, damit nicht allzuviel bei einem etwaigen Systemabsturz 659oft speichern, damit nicht allzuviel bei einem etwaigen Systemabsturz
675verloren geht. 660verloren geht (siehe auch den Abschnitt »AUTOMATISCHES SPEICHERN«
661weiter unten).
662
663>> Geben Sie
664
665 C-x C-s TUTORIAL.de <Return>
676 666
677>> Geben Sie C-x C-s ein, um Ihre Kopie der Einführung zu sichern. 667 ein, um Ihre Kopie der Einführung zu sichern. Die Ausgabe am
678 Die Ausgabe am unteren Bildschirmrand sollte `Wrote ...TUTORIAL.de' 668 unteren Bildschirmrand sollte »Wrote ...TUTORIAL.de« sein.
679 sein.
680 669
681[Manche Terminals werden durch C-s angehalten und müssen durch C-q 670[Manche Terminals werden durch C-s angehalten und müssen durch C-q
682wieder `entsperrt' werden. Eine erste Abhilfe zur Umschiffung dieses 671wieder »entsperrt« werden. Eine erste Abhilfe zur Umschiffung dieses
683C-s-Problems schafft die Befehlsfolge `M-x save-buffer', welche exakt 672C-s-Problems schafft die Befehlsfolge »M-x save-buffer«, welche exakt
684das gleiche wie C-x C-s bewirkt. Mehr Hilfe dazu finden Sie im 673das gleiche wie C-x C-s bewirkt. Mehr Hilfe dazu finden Sie im
685Abschnitt `Spontaneous Entry to Incremental Search' im 674Abschnitt »Spontaneous Entry to Incremental Search« im
686Emacs-Handbuch.] 675Emacs-Handbuch.]
687 676
688Sie können eine existierende Datei anschauen (`view') oder editieren. 677Sie können eine existierende Datei anschauen (»view«) oder editieren.
689Sie können aber auch eine Datei laden, die noch gar nicht existiert, 678Sie können aber auch eine Datei laden, die noch gar nicht existiert,
690um so eine neue Datei zu erzeugen: Sie öffnen dazu die 679um so eine neue Datei zu erzeugen: Sie öffnen dazu die
691(nicht-existente) Datei, die natürlich leer ist, und beginnen dann 680(nicht-existente) Datei, die natürlich leer ist, und beginnen dann
@@ -703,18 +692,8 @@ laden, dann bleibt die erste in Emacs. Sie können zur ersten
703zurückschalten, indem Sie noch einmal C-x C-f eingeben. Auf diese 692zurückschalten, indem Sie noch einmal C-x C-f eingeben. Auf diese
704Weise lassen sich eine ganze Reihe von Dateien laden und bearbeiten. 693Weise lassen sich eine ganze Reihe von Dateien laden und bearbeiten.
705 694
706>> Erzeugen Sie eine Datei mit dem Namen `foo', indem Sie
707
708 C-x C-f foo <Return>
709
710 eingeben. Tippen Sie etwas Text ein, editieren Sie ihn und
711 speichern Sie ihn abschließend mit C-x C-s. Kehren Sie
712 anschließend zu dieser Einführung zurück mit
713
714 C-x C-f TUTORIAL.de <Return>
715
716Emacs speichert jeden Text, der aus einer Datei in Emacs geladen wird, 695Emacs speichert jeden Text, der aus einer Datei in Emacs geladen wird,
717in einem `Puffer'-Objekt. Um eine Liste der momentan existierenden 696in einem »Puffer«-Objekt. Um eine Liste der momentan existierenden
718Puffer zu sehen, geben Sie 697Puffer zu sehen, geben Sie
719 698
720 C-x C-b (liste Puffer auf) 699 C-x C-b (liste Puffer auf)
@@ -726,7 +705,7 @@ ein.
726Beachten Sie, dass jeder Puffer einen Namen hat und manche auch mit 705Beachten Sie, dass jeder Puffer einen Namen hat und manche auch mit
727dem Namen einer Datei assoziiert sind, dessen Inhalt sie enthalten. 706dem Namen einer Datei assoziiert sind, dessen Inhalt sie enthalten.
728Manche Puffer aber haben keinen zugehörige Datei, z.B. der mit dem 707Manche Puffer aber haben keinen zugehörige Datei, z.B. der mit dem
729Namen `*Buffer List*'. Er wurde von dem Befehl C-x C-b erzeugt, um 708Namen »*Buffer List*«. Er wurde von dem Befehl C-x C-b erzeugt, um
730die Pufferliste darzustellen. JEDER Text, den Sie innerhalb Emacs in 709die Pufferliste darzustellen. JEDER Text, den Sie innerhalb Emacs in
731einem Fenster sehen, ist immer ein Ausschnitt eines Puffers. 710einem Fenster sehen, ist immer ein Ausschnitt eines Puffers.
732 711
@@ -734,28 +713,39 @@ einem Fenster sehen, ist immer ein Ausschnitt eines Puffers.
734 zu lassen. 713 zu lassen.
735 714
736Wieviele Puffer auch in Emacs geladen sind, nur ein einziger ist der 715Wieviele Puffer auch in Emacs geladen sind, nur ein einziger ist der
737`momentane' Puffer, nämlich derjenige, den Sie gerade editieren. Will 716»momentane« Puffer, nämlich derjenige, den Sie gerade editieren. Will
738man einen anderen Puffer editieren, muss man zuerst zu diesem Puffer 717man einen anderen Puffer editieren, muss man zuerst zu diesem Puffer
739wechseln (`switch'). Wie schon weiter oben erklärt, kann man mittels 718wechseln (»switch«). Wie schon weiter oben erklärt, kann man mittels
740C-x C-f zu einem Puffer wechseln, der zu einer Datei gehört. Emacs 719C-x C-f zu einem Puffer wechseln, der zu einer Datei gehört. Emacs
741hat jedoch einen einfacheren Befehl, C-x b, um einen beliebigen Puffer 720hat jedoch einen einfacheren Befehl, C-x b, um einen beliebigen Puffer
742namentlich auszuwählen. 721namentlich auszuwählen.
743 722
744>> Geben Sie C-x b foo <Return> ein, um zurück zum Puffer `foo' zu 723>> Geben Sie
745 schalten, der den Text der Datei `foo' enthält. Anschließend geben 724
746 Sie C-x b TUTORIAL.de <RETURN> ein, um wieder zu dieser Einführung 725 C-x C-f foo <Return>
747 zu gelangen. 726
727 ein, um eine Datei mit dem Namen »foo« zu erzeugen. Mittels
728
729 C-x b TUTORIAL.de <RETURN>
730
731 gelangen Sie wieder zu dieser Einführung.
748 732
749In der Regel ist der Puffername identisch zu einem Dateinamen (ohne 733In der Regel ist der Puffername identisch zu einem Dateinamen (ohne
750den Verzeichnispräfix), jedoch nicht immer. Die von C-x C-b erzeugte 734den Verzeichnispräfix), jedoch nicht immer. Die von C-x C-b erzeugte
751Pufferliste zeigt stets die Namen aller Puffer. 735Pufferliste zeigt stets die Namen aller Puffer mit den
736korrespondierenden Dateinamen.
752 737
753JEDER Text in Emacs ist Teil eines Puffers, aber nicht jeder Puffer 738JEDER Text in Emacs ist Teil eines Puffers, aber nicht jeder Puffer
754entspricht einer Datei. So ist z.B. der Puffer `*Buffer List*' mit 739entspricht einer Datei. So ist z.B. der Puffer »*Buffer List*« mit
755keiner Datei assoziiert -- er wurde direkt von dem Befehl C-x C-b 740keiner Datei assoziiert -- er wurde direkt von dem Befehl C-x C-b
756erzeugt. Genauso hat der Puffer `*Messages*' keine Entsprechung als 741erzeugt. Auch dieser »TUTORIAL.de«-Puffer war anfangs keiner Datei
757Datei; er enthält alle Mitteilungen, die in der untersten Zeile 742zugeordnet, jetzt allerdings schon, denn Sie haben im letzten
758während des Arbeitens mit Emacs erscheinen. 743Abschnitt den Befehl C-x C-s eingegeben und so den Pufferinhalt als
744Datei gespeichert.
745
746Der Puffer »*Messages*« hat ebenfalls keine Entsprechung als Datei; er
747enthält alle Mitteilungen, die in der untersten Zeile während des
748Arbeitens mit Emacs erscheinen.
759 749
760>> Geben Sie C-x b *Messages* <Return> ein, um sich den 750>> Geben Sie C-x b *Messages* <Return> ein, um sich den
761 Mitteilungspuffer anzuschauen. 751 Mitteilungspuffer anzuschauen.
@@ -778,7 +768,7 @@ Sie ihn speichern wollen.
778 768
779>> Fügen Sie eine Textzeile ein und drücken Sie dann C-x s. 769>> Fügen Sie eine Textzeile ein und drücken Sie dann C-x s.
780 Emacs fragt Sie jetzt, ob Sie einen Puffer mit dem Namen 770 Emacs fragt Sie jetzt, ob Sie einen Puffer mit dem Namen
781 TUTORIAL.de speichern wollen. Bejahen Sie, indem Sie `y' drücken. 771 TUTORIAL.de speichern wollen. Bejahen Sie, indem Sie »y« drücken.
782 772
783[Anmerkung: Sie verändern nicht die Originaldatei, sondern eine 773[Anmerkung: Sie verändern nicht die Originaldatei, sondern eine
784persönliche Kopie.] 774persönliche Kopie.]
@@ -793,7 +783,7 @@ sie trotzdem alle benutzen zu können, gibt es zwei Erweiterungen:
793 C-x Zeichenerweiterung. Gefolgt von einem Zeichen. 783 C-x Zeichenerweiterung. Gefolgt von einem Zeichen.
794 M-x Befehlserweiterung. Gefolgt von einem (langen) Namen. 784 M-x Befehlserweiterung. Gefolgt von einem (langen) Namen.
795 785
796[Das `x' steht für das englische Wort `extension'.] Diese beiden 786[Das »x« steht für das englische Wort »extension«.] Diese beiden
797Befehle sind prinzipiell sehr nützlich, werden aber weniger oft 787Befehle sind prinzipiell sehr nützlich, werden aber weniger oft
798benötigt als die bisher vorgestellten. Sie haben bereits mehrere 788benötigt als die bisher vorgestellten. Sie haben bereits mehrere
799Befehle aus der ersten Kategorie kennengelernt; unter anderem C-x C-f, 789Befehle aus der ersten Kategorie kennengelernt; unter anderem C-x C-f,
@@ -804,31 +794,25 @@ vielleicht vergessen haben, Daten oder Text zu sichern -- Emacs fragt
804bei jedem geändertem Puffer (bzw. Datei), ob er gespeichert werden 794bei jedem geändertem Puffer (bzw. Datei), ob er gespeichert werden
805soll. 795soll.
806 796
807C-z ist der Befehl um Emacs *zeitweise* zu verlassen; es ist also 797Unter graphischen Oberflächen wie X bewirkt C-z in der Regel, dass
808möglich, später an der unterbrochenen Stelle nahtlos weiterzuarbeiten. 798Emacs ikonofiziert wird, also als Ikone (»Icon«) darauf wartet, mit
809 799einem Mausklick bei Bedarf wieder vergrößert zu werden. Auf einem
810Auf den meisten Systemen wie Linux oder FreeBSD wird Emacs 800Textterminal dagegen wird Emacs »suspendiert«, wenn Sie C-z drücken,
811`suspendiert', wenn Sie C-z drücken, d.h., Sie kehren zurück zur 801d.h., Sie kehren zurück zur Eingabezeile des Terminals, ohne Emacs zu
812Eingabezeile des Betriebssystems, ohne Emacs zu beenden. In der Regel 802beenden, und können beliebige andere Befehle ausführen. In der Regel
813können Sie dann mittels des Befehls `fg' bzw. `%emacs' wieder zu Emacs 803können Sie später mittels des Befehls »fg« bzw. »%emacs« wieder zu
814umschalten. Unter graphischen Oberflächen wie X11 bewirkt C-z in der 804Emacs umschalten.
815Regel, dass Emacs ikonofiziert wird, also als Ikone (`Icon') darauf
816wartet, mit einem Mausklick bei Bedarf wieder vergrößert zu werden.
817 805
818Bei Betriebssystemen bzw. Shells, die Suspension von Programmen nicht 806Bei Betriebssystemen bzw. Shells, die Suspension von Programmen nicht
819implementiert haben (z.B. MS-DOS), startet C-z einen 807implementiert haben (z.B. MS-DOS), startet C-z einen
820System-Befehlsinterpreter innerhalb von Emacs (`subshell'). 808System-Befehlsinterpreter innerhalb von Emacs (»subshell«).
821Normalerweise müssen Sie dann `exit' in die Befehlszeile schreiben, um 809Normalerweise müssen Sie dann »exit« in die Befehlszeile schreiben, um
822zu Emacs zurückzukehren. 810zu Emacs zurückzukehren.
823 811
824Der beste Zeitpunkt für C-x C-c ist, wenn Sie sich ausloggen 812Der beste Zeitpunkt für C-x C-c ist, wenn Sie sich ausloggen
825(bzw. Ihren Computer ausschalten); Sie sollten Emacs ebenfalls 813(bzw. Ihren Computer ausschalten); Sie sollten Emacs ebenfalls
826beenden, wenn Sie Emacs von einem anderen Programm aus aufgerufen 814beenden, wenn Sie Emacs von einem anderen Programm aus aufgerufen
827haben (z.B. einem Programm, das E-mails liest), da solche Programme 815haben (z.B. einem Programm, das E-mails liest).
828oft nicht wissen, wie sie mit Emacs im Suspend-Modus umgehen sollen.
829In allen anderen Fällen ist es meistens günstiger, C-z zu benutzen und
830Emacs nicht zu beenden, damit man im Bedarfsfalle sofort an der
831gleichen Stelle weiterarbeiten kann.
832 816
833Hier ist eine Liste aller C-x-Befehle, die Sie bereits kennengelernt 817Hier ist eine Liste aller C-x-Befehle, die Sie bereits kennengelernt
834haben: 818haben:
@@ -846,19 +830,19 @@ Ein Beispiel für einen Befehl mit langen Namen ist replace-string, der
846global (also in der ganzen Datei bzw. Puffer) eine Zeichenkette durch 830global (also in der ganzen Datei bzw. Puffer) eine Zeichenkette durch
847eine andere ersetzt. Wenn Sie M-x drücken, dann fragt Sie Emacs in 831eine andere ersetzt. Wenn Sie M-x drücken, dann fragt Sie Emacs in
848der untersten Bildschirmzeile nach dem Namen des Befehls (in diesem 832der untersten Bildschirmzeile nach dem Namen des Befehls (in diesem
849Fall `replace-string'). Geben Sie jetzt `repl s<TAB>' ein und Emacs 833Fall »replace-string«). Geben Sie jetzt »repl s<TAB>« ein und Emacs
850vervollständigt den Namen. Schließen Sie die Eingabe mit <Return> ab. 834vervollständigt den Namen. Schließen Sie die Eingabe mit <Return> ab.
851[<TAB> bezeichnet die Tabulatortaste.] 835[<TAB> bezeichnet die Tabulatortaste.]
852 836
853>> Bewegen Sie den Cursor zu der leeren Zeile sechs Zeilen unter 837>> Bewegen Sie den Cursor zu der leeren Zeile sechs Zeilen unter
854 dieser. Geben Sie dann 838 dieser. Geben Sie dann
855 839
856 M-x repl s<Return>Bildschirm<Return>Text<Return> 840 M-x repl s <Return> Bildschirm <Return> Text <Return>
857 841
858 ein und kehren Sie mit C-u C-SPC an diese Position zurück. 842 ein und kehren Sie mit C-u C-SPC an diese Position zurück.
859 843
860 Beachten Sie wie diese Bildschirmzeile jetzt aussieht: Sie haben 844 Beachten Sie wie diese Bildschirmzeile jetzt aussieht: Sie haben
861 den Wortteil B-i-l-d-s-c-h-i-r-m durch `Text' ersetzt (und zwar im 845 den Wortteil B-i-l-d-s-c-h-i-r-m durch »Text« ersetzt (und zwar im
862 ganzen Dokument beginnend von der Cursorposition). 846 ganzen Dokument beginnend von der Cursorposition).
863 847
864>> Drücken Sie jetzt C-x u, um diese Änderungen auf einmal rückgängig 848>> Drücken Sie jetzt C-x u, um diese Änderungen auf einmal rückgängig
@@ -872,17 +856,17 @@ Haben Sie Änderungen an einem Dokument vorgenommen, sie jedoch nicht
872gespeichert, dann können sie verloren gehen, falls der Computer 856gespeichert, dann können sie verloren gehen, falls der Computer
873abstürzt. Um Sie davor zu schützen, sichert Emacs in bestimmten 857abstürzt. Um Sie davor zu schützen, sichert Emacs in bestimmten
874Zeitintervallen jede von Ihnen editierte Datei in sogenannten 858Zeitintervallen jede von Ihnen editierte Datei in sogenannten
875`auto save'-Dateien. Sie sind daran zu erkennen, dass sie mit einem # 859»auto save«-Dateien. Sie sind daran zu erkennen, dass sie mit einem #
876beginnen und enden; z.B. ist `#hello.c#' der Name der Auto-Save-Datei 860beginnen und enden; z.B. ist »#hello.c#« der Name der Auto-Save-Datei
877von `hello.c'. Wenn Sie Ihren Text auf normalem Wege speichern, wird 861von »hello.c«. Wenn Sie Ihren Text auf normalem Wege speichern, wird
878die Auto-Save-Datei gelöscht. 862die Auto-Save-Datei gelöscht.
879 863
880Stürzt der Rechner einmal wirklich ab, können Sie die Änderungen, die 864Stürzt der Rechner einmal wirklich ab, können Sie die Änderungen, die
881beim letzten Auto-Save gespeichert worden sind, folgendermaßen 865beim letzten Auto-Save gespeichert worden sind, folgendermaßen
882wiederherstellen: Laden Sie die Datei auf normalem Wege (die Datei, 866wiederherstellen: Laden Sie die Datei auf normalem Wege (die Datei,
883die Sie bearbeitet haben, nicht die Auto-Save-Datei) und geben Sie 867die Sie bearbeitet haben, nicht die Auto-Save-Datei) und geben Sie
884dann `M-x recover-file<Return>' ein. Wenn Emacs Sie um Bestätigung 868dann »M-x recover-file <Return>« ein. Wenn Emacs Sie um Bestätigung
885fragt, antworten Sie mit `yes<Return>', um den Inhalt der 869fragt, antworten Sie mit »yes <Return>«, um den Inhalt der
886Auto-Save-Datei zu übernehmen. 870Auto-Save-Datei zu übernehmen.
887 871
888 872
@@ -890,8 +874,8 @@ Auto-Save-Datei zu übernehmen.
890------------------ 874------------------
891 875
892Geben Sie Befehle langsam ein, dann zeigt Ihnen Emacs Ihre eigene 876Geben Sie Befehle langsam ein, dann zeigt Ihnen Emacs Ihre eigene
893Eingabe am unteren Bildschirmrand im sogenannten Echo-Bereich (`echo 877Eingabe am unteren Bildschirmrand im sogenannten Echo-Bereich (»echo
894area'). Der Echo-Bereich enthält die unterste Bildschirmzeile. 878area«). Der Echo-Bereich enthält die unterste Bildschirmzeile.
895 879
896[Mini-Puffer und Echo-Bereich fallen normalerweise zusammen, sind aber 880[Mini-Puffer und Echo-Bereich fallen normalerweise zusammen, sind aber
897nicht das gleiche, da innerhalb des Echo-Bereiches nichts eingegeben 881nicht das gleiche, da innerhalb des Echo-Bereiches nichts eingegeben
@@ -902,30 +886,30 @@ werden kann.]
902------------------ 886------------------
903 887
904Die Bildschirmzeile unmittelbar über dem Echo-Bereich ist die 888Die Bildschirmzeile unmittelbar über dem Echo-Bereich ist die
905Statuszeile (`mode line'). Sie schaut ungefähr so aus: 889Statuszeile (»mode line«). Sie schaut ungefähr so aus:
906 890
907-1:** TUTORIAL.de 59% L905 (Fundamental)---------------------- 891-1:**- TUTORIAL.de 58% L891 (Fundamental)
908 892
909Diese Zeile gibt nützliche Hinweise über den momentanen Zustand von 893Diese Zeile gibt nützliche Hinweise über den momentanen Zustand von
910Emacs und den Text, den Sie gerade editieren. 894Emacs und den Text, den Sie gerade editieren.
911 895
912Sie wissen bereits, was der Dateiname bedeutet. `--NN%--' zeigt die 896Sie wissen bereits, was der Dateiname bedeutet. »NN%« zeigt die
913momentane Position innerhalb des Textes an: NN Prozent davon sind 897momentane Position innerhalb des Puffertextes an: NN Prozent davon
914oberhalb des Bildschirms. Ist der Dateianfang zu sehen, dann 898sind oberhalb des Bildschirms. Ist der Dateianfang zu sehen, dann
915erscheint `Top' anstelle von `00%'. Analog dazu erscheint `Bot' (für 899erscheint »Top« anstelle von »00%«. Analog dazu erscheint »Bot« (für
916das englische Wort `bottom'), wenn das Dateiende sichtbar ist. Wenn 900das englische Wort »bottom«), wenn das Dateiende sichtbar ist. Wenn
917Sie einen Text betrachten, der komplett auf den Bildschirm passt, dann 901Sie einen Puffer betrachten, der komplett auf den Bildschirm passt,
918erscheint `All'. 902dann erscheint »All«.
919 903
920Das `L' und die nachfolgenden Ziffern geben die aktuelle Zeilennummer 904Das »L« und die nachfolgenden Ziffern geben die aktuelle Zeilennummer
921an, in der sich der Cursor befindet. 905an, in der sich der Cursor befindet.
922 906
923Am Anfang der Zeile sehen Sie `-1:**'. Die Zeichen vor dem 907Am Anfang der Zeile sehen Sie »-1:**. Die Zeichen vor dem
924Doppelpunkt geben an, in welcher Kodierung der Text ist und welche 908Doppelpunkt geben an, in welcher Kodierung der Text ist und welche
925Eingabemethode verwendet wird. Dazu mehr weiter unten im Abschnitt 909Eingabemethode verwendet wird. Dazu mehr weiter unten im Abschnitt
926`MULE'. 910»MULE«.
927 911
928[Anstelle des Doppelpunktes können auch ein `\' und `/' stehen, falls 912[Anstelle des Doppelpunktes können auch ein »\« und »/« stehen, falls
929Sie Dateien editieren, die der MS-DOS- bzw. der 913Sie Dateien editieren, die der MS-DOS- bzw. der
930Macintosh-Textkonvention folgen: MS-DOS verwendet als 914Macintosh-Textkonvention folgen: MS-DOS verwendet als
931Zeilenvorschubzeichen CR-LF (Carriage Return gefolgt von Linefeed), 915Zeilenvorschubzeichen CR-LF (Carriage Return gefolgt von Linefeed),
@@ -938,24 +922,24 @@ Prozentzeichen nach dem Doppelpunkt stehen für eine Datei, die nur
938gelesen, aber nicht editiert werden kann. 922gelesen, aber nicht editiert werden kann.
939 923
940Der eingeklammerte Teil gibt an, in welchem Editiermodus Sie sich 924Der eingeklammerte Teil gibt an, in welchem Editiermodus Sie sich
941befinden. Der Standardmodus heißt `Fundamental' (Sie verwenden ihn 925befinden. Der Standardmodus heißt »Fundamental« (Sie verwenden ihn
942gerade); er ist ein Beispiel für einen Hauptmodus (`major mode'). 926gerade); er ist ein Beispiel für einen Hauptmodus (»major mode«).
943 927
944Emacs hat viele Hauptmodi implementiert. Manche davon werden für 928Emacs hat viele Hauptmodi implementiert. Manche davon werden für
945verschiedene (Computer-)Sprachen und/oder Textarten verwendet, 929verschiedene (Computer-)Sprachen und/oder Textarten verwendet,
946z.B. Lisp-Modus, Text-Modus usw. Es kann immer nur ein Hauptmodus 930z.B. Lisp-Modus, Text-Modus usw. Es kann immer nur ein Hauptmodus
947aktiviert sein, und der Name befindet sich dort, wo jetzt gerade 931aktiviert sein, und der Name befindet sich dort, wo jetzt gerade
948`Fundamental' steht. 932»Fundamental« steht.
949 933
950Einige Befehle verhalten sich jeweils in verschiedenen Hauptmodi 934Einige Befehle verhalten sich jeweils in verschiedenen Hauptmodi
951anders. Es gibt zum Beispiel einen Befehl, um einen Kommentar in den 935anders. Es gibt zum Beispiel einen Befehl, um einen Kommentar in den
952Quellcode eines Computerprogramm einzufügen -- die Tastenfolge dafür 936Quellcode eines Computerprogramm einzufügen -- die Tastenfolge dafür
953ist zwar (in der Regel) die gleiche, doch wird ein Kommentar mit der 937ist zwar (in der Regel) die gleiche, doch wird ein Kommentar mit der
954für die aktuelle Programmiersprache gültigen Syntax eingefügt 938für die aktuelle Programmiersprache gültigen Syntax eingefügt
955(z.B. `// ...' für ein Programm in C++ oder `; ...' für Lisp). Um in 939(z.B. »// ...« für ein Programm in C++ oder »; ...« für Lisp). Um in
956einen Hauptmodus zu schalten, hängen Sie einfach das englische Wort 940einen Hauptmodus zu schalten, hängen Sie einfach das englische Wort
957`-mode' an den (kleingeschriebenen) Namen des Modus an und führen den 941»-mode« an den (kleingeschriebenen) Namen des Modus an und führen den
958Befehl mittels M-x aus. Beispiel: `M-x fundamental-mode' schaltet in 942Befehl mittels M-x aus. Beispiel: »M-x fundamental-mode« schaltet in
959den Fundamental-Modus. Weitere wichtige Modi sind c-mode, perl-mode, 943den Fundamental-Modus. Weitere wichtige Modi sind c-mode, perl-mode,
960lisp-mode, text-mode u.a. Die meisten davon werden automatisch 944lisp-mode, text-mode u.a. Die meisten davon werden automatisch
961aktiviert, und zwar entsprechend der Namenserweiterung der zu ladenden 945aktiviert, und zwar entsprechend der Namenserweiterung der zu ladenden
@@ -965,30 +949,30 @@ C-Modus aktiviert.
965Wenn Sie deutschen oder englischen Text bearbeiten, dann sollten Sie 949Wenn Sie deutschen oder englischen Text bearbeiten, dann sollten Sie
966den Textmodus verwenden. [Falls Ihre Tastatur keine Umlaut-Tasten 950den Textmodus verwenden. [Falls Ihre Tastatur keine Umlaut-Tasten
967hat, müssen Sie noch einen weiteren Nebenmodus aktivieren. Lesen Sie 951hat, müssen Sie noch einen weiteren Nebenmodus aktivieren. Lesen Sie
968dazu den Abschnitt `MULE' weiter unten.] 952dazu den Abschnitt »MULE« weiter unten.]
969 953
970>> Geben Sie `M-x text mode<Return>' ein. 954>> Geben Sie »M-x text-mode <Return>« ein.
971 955
972Sie brauchen keine Angst zu haben, dass sich die bisher dargestellte 956Sie brauchen keine Angst zu haben, dass sich die bisher dargestellte
973Tastaturbelegung von Emacs stark ändert. Beobachten Sie z.B. die 957Tastaturbelegung von Emacs stark ändert. Beobachten Sie z.B. die
974Befehle M-f und M-b: Apostrophe werden nun als Teil eines Wortes 958Befehle M-f und M-b: Apostrophe werden nun als Teil eines Wortes
975betrachtet (wie man's leicht an diesem Beispiel ausprobieren kann), 959betrachtet (wie man's leicht an diesem Beispiel ausprobieren kann),
976wohingegen im Fundamentalmodus Apostrophe als Worttrenner 960wohingegen im Fundamentalmodus Apostrophe als Worttrenner
977(`word-separator') behandelt werden. 961(»word-separator«) behandelt werden.
978 962
979Normalerweise ist das eben genannte Beispiel die Methode von 963Normalerweise ist das eben genannte Beispiel die Methode von
980Hauptmodi: Die meisten Befehle tun `das gleiche', arbeiten aber 964Hauptmodi: Die meisten Befehle tun »das gleiche«, arbeiten aber
981jeweils ein bisschen anders. 965jeweils ein bisschen anders.
982 966
983Dokumentation zum derzeit aktuellen Hauptmodus bekommen Sie mit C-h m. 967Dokumentation zum derzeit aktuellen Hauptmodus bekommen Sie mit C-h m.
984 968
985>> Drücken Sie C-u C-v ein- oder mehrmals, um diese Zeile in die Nähe 969>> Drücken Sie C-l C-l, um diese Zeile an den oberen Bildschirmrand zu
986 des oberen Bildschirmrands zu bringen. 970 bringen.
987>> Lesen Sie nun mittels C-h m die englische Dokumentation zum 971>> Lesen Sie nun mittels C-h m die englische Dokumentation zum
988 Textmodus. 972 Textmodus.
989>> Entfernen Sie schließlich das Dokumentationsfenster mit C-x 1. 973>> Entfernen Sie schließlich das Dokumentationsfenster mit C-x 1.
990 974
991Neben den Hauptmodi gibt es auch Nebenmodi (`minor modes'). Nebenmodi 975Neben den Hauptmodi gibt es auch Nebenmodi (»minor modes«). Nebenmodi
992sind keine Alternativen zu Hauptmodi, sondern stellen Ergänzungen zur 976sind keine Alternativen zu Hauptmodi, sondern stellen Ergänzungen zur
993Verfügung, die (normalerweise) in allen Hauptmodi funktionieren 977Verfügung, die (normalerweise) in allen Hauptmodi funktionieren
994(z.B. der Überschreibmodus: Zeichen werden nicht eingefügt, sondern 978(z.B. der Überschreibmodus: Zeichen werden nicht eingefügt, sondern
@@ -998,20 +982,20 @@ Sie können zu Ihrem Hauptmodus keinen, einen oder sogar mehrere
998Nebenmodi haben. 982Nebenmodi haben.
999 983
1000Ein Nebenmodus, welcher äußerst nützlich ist, besonders für das 984Ein Nebenmodus, welcher äußerst nützlich ist, besonders für das
1001Editieren von Text, ist der automatische Zeilenumbruch (`Auto Fill 985Editieren von Text, ist der automatische Zeilenumbruch (»Auto Fill
1002mode'). Ist dieser Modus aktiviert, dann bricht Emacs die laufende 986mode«). Ist dieser Modus aktiviert, dann bricht Emacs die laufende
1003Zeile selbsttätig zwischen Wörtern um, sobald sie zu lang wird. 987Zeile selbsttätig zwischen Wörtern um, sobald sie zu lang wird.
1004 988
1005Sie können den Zeilenumbruchmodus einschalten mittels `M-x auto fill 989Sie können den Zeilenumbruchmodus mittels »M-x auto-fill-mode
1006mode<Return>'. Wenn der Modus aktiviert ist, können Sie ihn mit dem 990<Return>« einschalten. Wenn der Modus aktiviert ist, können Sie ihn
1007gleichen Befehl wieder ausschalten. Mit anderen Worten, der Befehl 991mit dem gleichen Befehl wieder ausschalten. Mit anderen Worten, der
1008verhält sich wie ein Lichttaster, der bei Betätigung entweder das 992Befehl verhält sich wie ein Lichttaster, der bei Betätigung entweder
1009Licht ein- oder ausschaltet, je nachdem, ob das Licht vorher 993das Licht ein- oder ausschaltet, je nachdem, ob das Licht vorher
1010ausgeschaltet bzw. eingeschaltet war. Wir sagen, dass dieser Befehl 994ausgeschaltet bzw. eingeschaltet war. Wir sagen, dass dieser Befehl
1011den Modus umschaltet (`toggle'). 995den Modus umschaltet (»toggle«).
1012 996
1013>> Geben Sie nun M-x auto fill mode<Return> ein. Fügen Sie 997>> Geben Sie nun M-x auto-fill-mode <Return> ein. Fügen Sie
1014 anschließend eine Zeile ein, die aus lauter `asdf ' besteht, und 998 anschließend eine Zeile ein, die aus lauter »asdf « besteht, und
1015 zwar so lange, bis die Zeile automatisch umgebrochen wird. 999 zwar so lange, bis die Zeile automatisch umgebrochen wird.
1016 Vergessen Sie nicht, Leerzeichen einzugeben, da nur dort ein 1000 Vergessen Sie nicht, Leerzeichen einzugeben, da nur dort ein
1017 Umbruch erfolgt. 1001 Umbruch erfolgt.
@@ -1038,56 +1022,56 @@ Absatzes stehen muss.
1038* SUCHEN 1022* SUCHEN
1039-------- 1023--------
1040 1024
1041Emacs kann Zeichenketten (`strings') entweder in Richtung Pufferende 1025Emacs kann Zeichenketten (»strings«, eine Folge von zusammenhängenden
1042(vorwärts, `forward') oder in Richtung Pufferanfang (rückwärts, 1026Zeichen) entweder in Richtung Pufferende (vorwärts, »forward«) oder in
1043`backward') suchen. Gleichzeitig wird der Cursor an die nächste 1027Richtung Pufferanfang (rückwärts, »backward«) suchen. Gleichzeitig
1044Stelle bewegt, wo diese Zeichenkette erscheint. 1028wird der Cursor an die nächste Stelle bewegt, wo diese Zeichenkette
1029erscheint.
1045 1030
1046Hier unterscheidet sich Emacs von vielen anderen Editoren, da nämlich 1031Die Standard-Suchoperation von Emacs ist inkrementelles Suchen, d.h.,
1047die Standard-Suchoperation inkrementelles Suchen ist, d.h., die Suche 1032die Suche beginnt dann, wenn Sie die Zeichen eingeben.
1048beginnt dann, wenn Sie die Zeichen eingeben.
1049 1033
1050Der Befehl für Vorwärtssuchen ist C-s und C-r für Rückwärtssuchen. 1034Der Befehl für Vorwärtssuchen ist C-s und C-r für Rückwärtssuchen.
1051ABER HALT! Probieren Sie bitte diese Befehle noch nicht. 1035ABER HALT! Probieren Sie bitte diese Befehle noch nicht.
1052 1036
1053Wenn Sie C-s eingeben, dann erscheint die Zeichenkette `I-search:' als 1037Wenn Sie C-s eingeben, dann erscheint die Zeichenkette »I-search:« als
1054Eingabeaufforderung im Echobereich. Das bedeutet, dass Emacs jetzt 1038Eingabeaufforderung im Echobereich. Das bedeutet, dass Emacs jetzt
1055eine inkrementellen Suche ausführt und darauf wartet, dass Sie die zu 1039eine inkrementellen Suche ausführt und darauf wartet, dass Sie die zu
1056suchende Zeichenkette eingeben. <Return> beendet die Suche. 1040suchende Zeichenkette eingeben. <Return> beendet die Suche.
1057 1041
1058>> Geben Sie jetzt C-s ein, um einen Suchvorgang zu starten. Schreiben 1042>> Geben Sie jetzt C-s ein, um einen Suchvorgang zu starten. Schreiben
1059 Sie LANGSAM, einen Buchstaben nach dem anderen, das Wort `Cursor', 1043 Sie LANGSAM, einen Buchstaben nach dem anderen, das Wort »Cursor«,
1060 und warten Sie jeweils ab, was mit dem Cursor passiert. Sie haben 1044 und warten Sie jeweils ab, was mit dem Cursor passiert. Sie haben
1061 jetzt das Wort `Cursor' einmal gefunden. 1045 jetzt das Wort »Cursor« einmal gefunden.
1062>> Drücken Sie C-s noch einmal, um die nächste Stelle zu suchen, wo das 1046>> Drücken Sie C-s noch einmal, um die nächste Stelle zu suchen, wo das
1063 Wort `Cursor' vorkommt. 1047 Wort »Cursor« vorkommt.
1064>> Drücken Sie nun <Delete> viermal und beobachten Sie, wie der Cursor 1048>> Drücken Sie nun <DEL> viermal und beobachten Sie, wie der Cursor
1065 zurückspringt. 1049 zurückspringt.
1066>> Beenden Sie die Suche mit <Return>. 1050>> Beenden Sie die Suche mit <Return>.
1067 1051
1068Verstehen Sie, was gerade vorgegangen ist? Emacs versucht während 1052Verstehen Sie, was gerade vorgegangen ist? Emacs versucht während
1069einer inkrementellen Suche zu der Stelle zu gehen, wo die Zeichenkette 1053einer inkrementellen Suche zu der Stelle zu gehen, wo die Zeichenkette
1070steht, die Sie bis jetzt eingegeben haben. Um die darauffolgende 1054steht, die Sie bis jetzt eingegeben haben. Um die darauffolgende
1071Position zu suchen, wo `Cursor' steht, genügt es, noch einmal C-s zu 1055Position zu suchen, wo »Cursor« steht, genügt es, noch einmal C-s zu
1072betätigen. Wenn es keine nächste Position gibt, dann ertönt ein 1056betätigen. Wenn es keine nächste Position gibt, dann ertönt ein
1073kurzer Ton, und Emacs sagt Ihnen, dass die Suche im Augenblick 1057kurzer Ton, und Emacs sagt Ihnen, dass die Suche im Augenblick
1074fehlschlägt (`failing'). C-g beendet ebenfalls einen Suchvorgang. 1058fehlschlägt (»failing«). C-g beendet ebenfalls einen Suchvorgang.
1075 1059
1076Wenn Sie sich mitten in einer inkrementellen Suche befinden und 1060Wenn Sie sich mitten in einer inkrementellen Suche befinden und
1077<Delete> drücken, wird das letzte Zeichen im Suchstring gelöscht, und 1061<DEL> drücken, wird das letzte Zeichen im Suchstring gelöscht, und
1078der Cursor springt zurück auf die letzte Suchposition. Angenommen, 1062der Cursor springt zurück auf die letzte Suchposition. Angenommen,
1079Sie haben `c' eingegeben, um das erste Auftreten von `c' zu suchen. 1063Sie haben »c« eingegeben, um das erste Auftreten von »c« zu suchen.
1080Geben Sie jetzt `u' ein, dann springt der Cursor zu dem ersten 1064Geben Sie jetzt »u« ein, dann springt der Cursor zu dem ersten
1081Auftreten der Zeichenkette `cu'. Wenn Sie jetzt mit <Delete> das `u' 1065Auftreten der Zeichenkette »cu«. Wenn Sie jetzt mit <DEL> das »u«
1082vom Suchstring löschen, dann springt der Cursor zurück zum ersten `c'. 1066vom Suchstring löschen, dann springt der Cursor zurück zum ersten »c«.
1083Drücken Sie dagegen ein paar mal C-s, um weitere `cu'-Zeichenketten zu 1067Drücken Sie dagegen ein paar mal C-s, um weitere »cu«-Zeichenketten zu
1084finden, dann bewirkt <Delete>, dass Sie zum letzten Auftreten von `cu' 1068finden, dann bewirkt <DEL>, dass Sie zum letzten Auftreten von »cu«
1085zurückspringen, und erst wenn es kein weiteres `cu' mehr gibt, springt 1069zurückspringen, und erst wenn es kein weiteres »cu« mehr gibt, springt
1086der Cursor zum ersten `c' zurück. 1070der Cursor zum ersten »c« zurück.
1087 1071
1088Die Suche wird ebenfalls beendet, wenn Sie ein CONTROL- oder 1072Die Suche wird ebenfalls beendet, wenn Sie ein CONTROL- oder
1089META-Zeichen eingeben (mit ein paar Ausnahmen -- Zeichen, die 1073META-Zeichen eingeben (mit ein paar Ausnahmen -- Zeichen, die bei
1090bei einer Suche speziell gehandhabt werden wie C-s oder C-r). 1074einer Suche speziell gehandhabt werden wie C-s oder C-r).
1091 1075
1092C-s versucht, die Zeichenkette NACH der aktuellen Cursorposition zu 1076C-s versucht, die Zeichenkette NACH der aktuellen Cursorposition zu
1093finden. Wollen Sie etwas davor suchen, müssen Sie C-r verwenden. Das 1077finden. Wollen Sie etwas davor suchen, müssen Sie C-r verwenden. Das
@@ -1101,7 +1085,11 @@ Suchrichtung.
1101Eine weitere, nützliche Fähigkeit von Emacs ist die Möglichkeit, mehr 1085Eine weitere, nützliche Fähigkeit von Emacs ist die Möglichkeit, mehr
1102als ein Fenster zur gleichen Zeit auf dem Bildschirm darzustellen. 1086als ein Fenster zur gleichen Zeit auf dem Bildschirm darzustellen.
1103 1087
1104>> Bewegen Sie den Cursor zu dieser Zeile und geben Sie C-u 0 C-l ein. 1088[Der Unterschied zu graphischen Fenstern im herkömmlichen Sinn
1089(»frame« in der Emacs-Terminologie) wurde bereits weiter oben
1090besprochen.]
1091
1092>> Bewegen Sie den Cursor zu dieser Zeile und geben Sie C-l C-l ein.
1105 1093
1106>> Drücken Sie nun C-x 2, um den Bildschirm in zwei Fenster zu teilen. 1094>> Drücken Sie nun C-x 2, um den Bildschirm in zwei Fenster zu teilen.
1107 Beide Fenster zeigen diese Einführung an, und der Cursor bleibt im 1095 Beide Fenster zeigen diese Einführung an, und der Cursor bleibt im
@@ -1111,8 +1099,8 @@ als ein Fenster zur gleichen Zeit auf dem Bildschirm darzustellen.
1111 statt dessen auch ESC C-v verwenden, falls Sie keine META-Taste 1099 statt dessen auch ESC C-v verwenden, falls Sie keine META-Taste
1112 haben; siehe auch weiter unten). 1100 haben; siehe auch weiter unten).
1113 1101
1114>> Mittels C-x o (das `o' steht für das englische Wort `other', `das 1102>> Mittels C-x o (das »o« steht für das englische Wort »other«, »das
1115 andere') können Sie den Cursor in das untere Fenster bewegen. 1103 andere«) können Sie den Cursor in das untere Fenster bewegen.
1116 1104
1117>> Benützen Sie C-v und M-v, um im unteren Fenster zu blättern. Lesen 1105>> Benützen Sie C-v und M-v, um im unteren Fenster zu blättern. Lesen
1118 Sie die Emacs-Einführung jedoch im oberen Fenster weiter. 1106 Sie die Emacs-Einführung jedoch im oberen Fenster weiter.
@@ -1122,16 +1110,16 @@ als ein Fenster zur gleichen Zeit auf dem Bildschirm darzustellen.
1122 1110
1123C-x o ist der Befehl, um zwischen (Emacs-)Fenstern hin- und 1111C-x o ist der Befehl, um zwischen (Emacs-)Fenstern hin- und
1124herzuschalten. Jedes Fenster hat eine eigene Cursorposition, aber nur 1112herzuschalten. Jedes Fenster hat eine eigene Cursorposition, aber nur
1125das aktuelle Fenster zeigt den Cursor an (unter X11 wird die 1113das aktuelle Fenster zeigt den Cursor an (auf einer graphischen
1126nicht-aktuelle Cursorposition durch ein leeres Rechteck dargestellt). 1114Oberfläche wird die nicht-aktuelle Cursorposition durch ein leeres
1127Alle normalen Editierbefehle betreffen das Fenster, in dem sich der 1115Rechteck dargestellt). Alle normalen Editierbefehle betreffen das
1128Cursor befindet. Wir nennen dieses Fenster `ausgewählt' (`selected 1116Fenster, in dem sich der Cursor befindet. Wir nennen dieses Fenster
1129window'). 1117»ausgewählt« (»selected window«).
1130 1118
1131Der Befehl M-C-v ist sehr nützlich, wenn man Text in einem Fenster 1119Der Befehl M-C-v ist sehr nützlich, wenn man Text in einem Fenster
1132editiert und das andere Fenster als Referenz verwendet. Der Cursor 1120editiert und das andere Fenster als Referenz verwendet. Ohne das
1133bleibt stets im gleichen Arbeitsfenster, und mit M-C-v kann man bequem 1121momentante Arbeitsfenster verlassen zu müssen, kann man mit M-C-v im
1134vorwärtsblättern. 1122anderen Fenster bequem vorwärtsblättern.
1135 1123
1136M-C-v ist ein Beispiel eines CONTROL-META-Zeichens. Haben Sie eine 1124M-C-v ist ein Beispiel eines CONTROL-META-Zeichens. Haben Sie eine
1137META-Taste, dann kann man M-C-v erzeugen, indem man CTRL und META 1125META-Taste, dann kann man M-C-v erzeugen, indem man CTRL und META
@@ -1147,24 +1135,24 @@ META oder CTRL.
1147 1135
1148Der umgekehrte Befehl zu M-C-v ist M-C-S-v, um im anderen Fenster 1136Der umgekehrte Befehl zu M-C-v ist M-C-S-v, um im anderen Fenster
1149rückwärts zu blättern (d.h., Sie müssen die META-Taste sowie die 1137rückwärts zu blättern (d.h., Sie müssen die META-Taste sowie die
1150CONTROL- und SHIFT-Taste zusammen mit `v' betätigen) -- jetzt werden 1138CONTROL- und SHIFT-Taste zusammen mit »v« betätigen) -- jetzt werden
1151Sie wahrscheinlich verstehen, warum manche Kritiker das Wort Emacs als 1139Sie wahrscheinlich verstehen, warum manche Kritiker das Wort Emacs als
1152Abkürzung von Escape-Meta-Alt-Control-Shift betrachten. Leider 1140Abkürzung von Escape-Meta-Alt-Control-Shift betrachten. Leider
1153funktioniert diese Befehlsfolge normalerweise nur mit graphischen 1141funktioniert diese Befehlsfolge normalerweise nur mit graphischen
1154Oberflächen wie X11, da C-v von C-S-v auf den meisten Textterminals 1142Oberflächen, da C-v von C-S-v auf den meisten Textterminals nicht
1155nicht unterschieden werden kann. 1143unterschieden werden kann.
1156 1144
1157[Unter X11 kann man außerdem in der Regel mit den bequemeren 1145[Auf graphischen Oberflächen kann man außerdem in der Regel mit den
1158Tastenkombinationen META-`Bild mit Aufwärtspfeil' bzw. META-`Bild mit 1146bequemeren Tastenkombinationen META-»Bild mit Aufwärtspfeil«
1159Abwärtspfeil' ebenfalls im anderen Fenster rück- bzw. vorwärts 1147bzw. META-»Bild mit Abwärtspfeil« ebenfalls im anderen Fenster rück-
1160blättern.] 1148bzw. vorwärts blättern.]
1161 1149
1162>> Entfernen Sie mit C-x 1 (eingegeben im oberen Fenster) das untere 1150>> Entfernen Sie mit C-x 1 (eingegeben im oberen Fenster) das untere
1163 Fenster. 1151 Fenster.
1164 1152
1165(Hätten Sie C-x 1 im unteren Fenster eingegeben, dann wäre das obere 1153(Hätten Sie C-x 1 im unteren Fenster eingegeben, dann wäre das obere
1166Fenster geschlossen worden -- eine Eselsbrücke für C-x 1 ist `ich will 1154Fenster geschlossen worden -- eine Eselsbrücke für C-x 1 ist »ich will
1167nur das *eine* Fenster, in dem ich mich gerade befinde.') 1155nur das *eine* Fenster, in dem ich mich gerade befinde.«)
1168 1156
1169Sie müssen nicht den gleichen Puffer in beiden Fenstern darstellen. 1157Sie müssen nicht den gleichen Puffer in beiden Fenstern darstellen.
1170Wenn Sie C-x C-f verwenden, um in einem Fenster eine Datei zu laden, 1158Wenn Sie C-x C-f verwenden, um in einem Fenster eine Datei zu laden,
@@ -1184,11 +1172,42 @@ Texte darzustellen:
1184 Sie C-x 1 ein, um das untere Fenster zu schließen. 1172 Sie C-x 1 ein, um das untere Fenster zu schließen.
1185 1173
1186 1174
1175* MEHRFACHE RAHMEN
1176------------------
1177
1178Emacs kann auch mehrfache Rahmen erzeugen, sobald das Programm auf
1179einer graphischen Oberfläche ausgeführt wird. In der
1180Emacs-Terminologie bezeichnet ein »Rahmen« eine Gruppe von Fenstern,
1181gemeinsam mit deren Menus, Scrollbars, Echo-Bereichen, usw. Auf einem
1182Textterminal kann genau ein Rahmen dargestellt werden.
1183
1184>> Geben Sie
1185
1186 M-x make-frame <Return>
1187
1188 ein, um einen neuen Rahmen zu erzeugen.
1189
1190Alles, was Sie im ursprünglichen, ersten Rahmen tun können,
1191funktioniert genauso im neuen Rahmen. Beide Rahmen sind also völlig
1192gleichwertig.
1193
1194>> Geben Sie
1195
1196 M-x delete-frame <Return>
1197
1198 ein, um den ausgewählten Rahmen zu entfernen.
1199
1200Ein Rahmen kann auch mit der normalen Methode der graphischen
1201Oberfläche entfernt werden; meistens gibt es dafür einen Knopf mit
1202einem »X« in der linken oder rechten oberen Ecke des Rahmens. Wird
1203der letzte Rahmen geschlossen, beendet man Emacs, wie erwartet.
1204
1205
1187* REKURSIVE EDITIER-EBENEN 1206* REKURSIVE EDITIER-EBENEN
1188-------------------------- 1207--------------------------
1189 1208
1190Manchmal kann es passieren, dass Sie in eine sogenannte rekursive 1209Manchmal kann es passieren, dass Sie in eine sogenannte rekursive
1191Editier-Ebene geraten (`recursive editing level'). Sie können das an 1210Editier-Ebene geraten (»recursive editing level«). Sie können das an
1192den eckigen Klammern in der Statuszeile erkennen, welche den 1211den eckigen Klammern in der Statuszeile erkennen, welche den
1193derzeitigen Hauptmodus zusätzlich umschließen, z.B. [(Fundamental)] 1212derzeitigen Hauptmodus zusätzlich umschließen, z.B. [(Fundamental)]
1194anstelle von (Fundamental). 1213anstelle von (Fundamental).
@@ -1211,91 +1230,49 @@ dargestellt. Details finden Sie im Emacs-Handbuch beschrieben.
1211* MULE 1230* MULE
1212------ 1231------
1213 1232
1214Mule ist die Abkürzung für `Multi-lingual Enhancement to GNU Emacs'. 1233Mule ist die Abkürzung für »Multi-lingual Enhancement to GNU Emacs«.
1215Früher wurde damit eine spezielle Emacs-Variante bezeichnet, die 1234Früher wurde damit eine spezielle Emacs-Variante bezeichnet, die
1216allerdings seit der Version 20 mit Emacs verschmolzen ist. 1235allerdings seit der Version 20 mit Emacs verschmolzen ist.
1217 1236
1218Emacs unterstützt eine große Anzahl von internationalen Zeichensätzen, 1237Emacs unterstützt eine große Anzahl von internationalen Zeichensätzen,
1219z.B. verschiedene europäische Varianten des lateinischen Alphabets, 1238z.B. verschiedene europäische Varianten des lateinischen Alphabets,
1220Chinesisch, Russisch oder Thai, um nur einige zu nennen. In dieser 1239Chinesisch, Russisch oder Thai, um nur einige zu nennen. In dieser
1221Einführung wird jedoch nur auf den deutschen Zeichensatz sowie 1240Einführung wird jedoch nur auf Unicode und Latin-1 sowie
1222Eingabemöglichkeiten für Deutsch näher eingegangen. 1241Eingabemöglichkeiten für Deutsch näher eingegangen.
1223 1242
1224Der Standard-Zeichensatz für Deutsch ist Latin-1 (auch bekannt unter 1243Lesen Sie im Emacs-Handbuch unter dem Stichwort »International« nach,
1225dem Namen ISO-8859-1), obwohl Unicode -- und da besonders die
1226Kodierungsvariante UTF-8 -- sich immer mehr durchzusetzt. Wenn
1227anstelle der deutschen Umlaute unansehnliche Konstrukte wie `\201ä'
1228dargestellt werden, dann ist die sogenannte
1229Multibyte-Zeichenunterstützung deaktiviert (intern werden in Emacs
1230Nicht-ASCII-Zeichensätze durch mehr als ein Byte repräsentiert). Der
1231Befehl `M-x toggle-enable-multibyte-characters' aktiviert die
1232Multibyte-Zeichenunterstützung. Denken Sie daran, die Tabulatortaste
1233zur Vervollständigung von Befehlsnamen zu benützen, z.B. `M-x
1234toggle-e<TAB><Return>'.
1235
1236Wenn anstelle der Umlaute `ä', `ö' oder `ü' die Zeichen `d', `v' und
1237`|' erscheinen (also `kleines D', `kleines V' und ein senkrechter
1238Strich), dann wird das achte Bit von jedem Byte abgeschnitten, sodass
1239nur ASCII-Zeichen dargestellt werden können. In der Regel gibt es
1240zwei Ursachen für dieses Problem: Sie haben sich nicht `8-bit clean'
1241(z.B. mittels `telnet -8 ...') eingeloggt oder Ihr
1242Telekommunikationsprogramm ist nicht für 8-bit konfiguriert. Beides
1243ist heutzutage eher unwahrscheinlich, daher wird hier nicht weiter
1244darauf eingegangen.
1245
1246>> Geben Sie `M-x toggle-enable-multibyte-characters' ein. Die
1247 deutschen Umlaute (so sie von Ihrem Terminal darstellbar sind)
1248 verschwinden und werden durch Zahlenkonstrukte ersetzt. So wird
1249 zum Beispiel Umlaut a (`ä') dargestellt als `\201ä'.
1250
1251>> Aktivieren Sie wieder die Multibyte-Zeichenunterstützung mittels
1252 `M-x toggle-enable-multibyte-characters'.
1253
1254Sehen Sie anstelle der Umlaute leere Kästchen (unter X11 oder anderen
1255graphischen Oberflächen), sollten Sie Emacs mit C-x C-c beenden und
1256folgendermaßen neu starten:
1257
1258 emacs -fn fontset-standard
1259
1260Sie können auch probieren, Emacs mit der `--unibyte'-Option zu
1261starten, um Latin-1-Zeichen direkt darzustellen.
1262
1263Falls das alles nichts nützt oder Sie Fragezeichen anstelle der
1264Umlaute auf ihrem Textterminal sehen, sollten Sie sich an Ihren
1265Systemadministrator wenden und sich beschweren, dass kein
1266Latin-1-Zeichensatz installiert ist (was heutzutage eigentlich eine
1267Selbstverständlichkeit sein sollte). Falls statt der Umlaute andere
1268Zeichen auf ihrem Textterminal erscheinen (z.B. kyrillische
1269Buchstaben), dann erkundigen Sie sich, wie sie auf Latin-1 umschalten
1270können.
1271
1272Lesen Sie im Emacs-Handbuch nach unter dem Stichwort `International',
1273welche weitere Optionen es bezüglich Zeichensätze gibt. 1244welche weitere Optionen es bezüglich Zeichensätze gibt.
1274 1245
1275Ist die Sprachumgebung (`locale') Ihres Betriebssystems korrekt auf 1246Die Standard-Zeichensätze für Deutsch sind Latin-1 (auch bekannt unter
1276Deutsch gesetzt, verwendet Emacs diese Einstellungen automatisch. 1247dem Namen ISO-8859-1) und Unicode -- und da besonders dessen
1277Anderenfalls empfiehlt es sich, Latin-1 als Standardkodierung zu 1248Kodierungsvariante UTF-8. Werden anstelle der deutschen Umlaute
1278aktivieren, wenn Sie primär Deutsch verwenden. Benutzen Sie zu diesem 1249unansehnliche Konstrukte wie »\374« dargestellt, hat Emacs die
1279Zweck die Befehlsfolge 1250Kodierung nicht richtig erkannt. Sie können die Anwendung einer
1280 1251Kodierung auf einen Befehl erzwingen, indem Sie diesen mit der Sequenz
1281 C-x <Return> l latin-1 <Return> 1252»C-x <Return> c KODIERUNG« einleiten. Das Laden einer Datei »foo« mit
1282 1253der Kodierung »UTF-8« ist beispielsweise
1283(C-x <Return> l führt die Funktion set-language-environment aus), um 1254
1284in einer laufenden Emacs-Sitzung auf Latin-1 umzuschalten. Dadurch 1255 C-x <Return> c utf-8 <Return> C-x C-f foo
1285wird erreicht, dass Emacs beim Laden einer Datei (und Speichern 1256
1286derselben) standardmäßig die Latin-1-Zeichenkodierung verwendet. Sie 1257Ist die Sprachumgebung (»locale«) Ihres Betriebssystems korrekt auf
1287können an der Ziffer 1 unmittelbar vor dem Doppelpunkt links unten in 1258Deutsch gesetzt, verwendet Emacs diese Einstellungen automatisch
1288der Statuszeile erkennen, dass Sie Latin-1 aktiviert haben. Beachten 1259(inklusive einer Standard-Kodierung). Wollen Sie andere Einstellungen
1289Sie allerdings, dass set-language-environment keinen Einfluss auf die 1260verwenden, geben Sie »C-x <Return> l« ein (ein Tastenkürzel für die
1290Kodierung bereits existierender Puffer hat! Haben Sie eine Datei mit 1261Funktion set-language-environment). Mittels
1291deutschem Text in Latin-1-Kodierung irrtümlicherweise in einer 1262
1292falschen Kodierung geladen, dann müssen Sie diesen Puffer aus Emacs 1263 C-x <Return> l latin-1 <Return>
1293mit dem Befehl C-x k (kill-buffer) entfernen und die Datei erneut 1264
1294laden, nachdem Sie mit set-language-environment auf Latin-1 1265können Sie z.B. in einer laufenden Emacs-Sitzung auf Latin-1
1295umgeschaltet haben. 1266umzuschalten. Dadurch wird erreicht, dass Emacs beim Laden einer
1267Datei (und Speichern derselben) standardmäßig die
1268Latin-1-Zeichenkodierung verwendet. Sie können an der Ziffer 1
1269unmittelbar vor dem Doppelpunkt links unten in der Statuszeile
1270erkennen, dass Sie Latin-1 aktiviert haben. Beachten Sie allerdings,
1271dass set-language-environment keinen Einfluss auf die Kodierung
1272bereits existierender Puffer hat!
1296 1273
1297>> Führen Sie jetzt C-x <Return> l latin-1 <Return> aus und öffnen Sie 1274>> Führen Sie jetzt C-x <Return> l latin-1 <Return> aus und öffnen Sie
1298 anschließend eine (neue) Datei mit dem Namen `bar' in einem anderen 1275 anschließend eine (neue) Datei mit dem Namen »bar« in einem anderen
1299 Fenster mittels C-x 4 C-f bar <Return>. In der Statuszeile des 1276 Fenster mittels C-x 4 C-f bar <Return>. In der Statuszeile des
1300 zweiten Fensters sehen Sie die Ziffer 1 unmittelbar vor dem 1277 zweiten Fensters sehen Sie die Ziffer 1 unmittelbar vor dem
1301 Doppelpunkt. 1278 Doppelpunkt.
@@ -1305,10 +1282,10 @@ umgeschaltet haben.
1305Wie können Sie nun deutsche Umlaute eingeben? Es gibt prinzipiell 1282Wie können Sie nun deutsche Umlaute eingeben? Es gibt prinzipiell
1306zwei unterschiedliche Fälle: Sie besitzen eine deutsche Tastatur mit 1283zwei unterschiedliche Fälle: Sie besitzen eine deutsche Tastatur mit
1307Tasten für die Umlaute oder Sie haben eine nicht-deutsche Tastatur. 1284Tasten für die Umlaute oder Sie haben eine nicht-deutsche Tastatur.
1308Im ersteren Fall sollten Sie die Eingabemethode `german' auswählen, 1285Im ersteren Fall sollten Sie die Eingabemethode »german« auswählen,
1309welche direkt die Umlaute auf die entsprechenden Tasten abbildet. Im 1286welche direkt die Umlaute auf die entsprechenden Tasten abbildet. Im
1310letzteren Fall gibt es mehrere Möglichkeiten, wovon zwei hier erklärt 1287letzteren Fall gibt es mehrere Möglichkeiten, wovon zwei hier erklärt
1311werden sollen, nämlich `latin-1-prefix' und `latin-1-postfix'. Die 1288werden sollen, nämlich »latin-1-prefix« und »latin-1-postfix«. Die
1312Präfix-Methode erwartet zuerst den Akzent und dann den Basisbuchstaben 1289Präfix-Methode erwartet zuerst den Akzent und dann den Basisbuchstaben
1313('a wird zu á, "s zu ß etc.), während bei der Postfix-Methode zuerst 1290('a wird zu á, "s zu ß etc.), während bei der Postfix-Methode zuerst
1314der Basisbuchstabe und dann der Akzent einzugeben ist (a" wird zu ä, 1291der Basisbuchstabe und dann der Akzent einzugeben ist (a" wird zu ä,
@@ -1326,8 +1303,8 @@ angezeigt. Ist der Eingabemodus einmal gewählt, kann man mit C-\ ihn
1326ein- und ausschalten. 1303ein- und ausschalten.
1327 1304
1328>> Geben Sie C-u C-\ latin-1-postfix <Return> ein. Beobachten Sie, 1305>> Geben Sie C-u C-\ latin-1-postfix <Return> ein. Beobachten Sie,
1329 wie links unten in der Statuszeile die Anzeige von `1:**' auf 1306 wie links unten in der Statuszeile die Anzeige von »1:** auf
1330 `1<1:**' springt. Probieren Sie ä einzugeben mittels a". 1307 »1<1:** springt. Probieren Sie ä einzugeben mittels a".
1331 1308
1332>> Deaktivieren Sie den Eingabemodus wieder mit C-\. 1309>> Deaktivieren Sie den Eingabemodus wieder mit C-\.
1333 1310
@@ -1338,9 +1315,9 @@ beschriebenen Eingabemethoden:
1338 1< latin-1-postfix 1315 1< latin-1-postfix
1339 1> latin-1-prefix 1316 1> latin-1-prefix
1340 1317
1341So bedeutet die Angabe `DE@1:**', dass Sie die Eingabemethode `german' 1318So bedeutet die Angabe »DE@1:**, dass Sie die Eingabemethode
1342in einem Puffer mit Latin-1-Kodierung verwenden, und dass die Datei 1319»german« in einem Puffer mit Latin-1-Kodierung verwenden, und dass die
1343bereits modifiziert wurde. 1320Datei bereits modifiziert wurde.
1344 1321
1345[Arbeitet Emacs in einem Terminal, werden noch zwei zusätzliche 1322[Arbeitet Emacs in einem Terminal, werden noch zwei zusätzliche
1346Spalten zwischen Eingabemethode und Pufferkodierung eingefügt, und 1323Spalten zwischen Eingabemethode und Pufferkodierung eingefügt, und
@@ -1356,7 +1333,7 @@ jedoch so mächtig und umfangreich, dass es den Rahmen einer Einführung
1356spränge, an dieser Stelle mehr zu erklären. Um Sie im weiteren 1333spränge, an dieser Stelle mehr zu erklären. Um Sie im weiteren
1357Lernverlauf zu unterstützen, stellt Emacs eine Reihe von 1334Lernverlauf zu unterstützen, stellt Emacs eine Reihe von
1358Hilfe-Funktionen zu Verfügung, die alle mit dem Präfix C-h (dem 1335Hilfe-Funktionen zu Verfügung, die alle mit dem Präfix C-h (dem
1359Hilfe-Zeichen, `Help character') beginnen. 1336Hilfe-Zeichen, »Help character«) beginnen.
1360 1337
1361Nach dem Drücken von C-h geben Sie ein weiteres Zeichen ein, um Emacs 1338Nach dem Drücken von C-h geben Sie ein weiteres Zeichen ein, um Emacs
1362zu sagen, worüber Sie mehr Informationen brauchen. Sollten Sie 1339zu sagen, worüber Sie mehr Informationen brauchen. Sollten Sie
@@ -1364,11 +1341,7 @@ WIRKLICH verloren sein, geben Sie C-h ? ein, und Emacs sagt Ihnen,
1364welche Art von Hilfe er Ihnen zu Verfügung stellen kann. Haben Sie 1341welche Art von Hilfe er Ihnen zu Verfügung stellen kann. Haben Sie
1365C-h versehentlich gedrückt, können Sie mit C-g sofort abbrechen. 1342C-h versehentlich gedrückt, können Sie mit C-g sofort abbrechen.
1366 1343
1367(Es kann vorkommen, dass bei manchen Computern bzw. Terminals C-h 1344(Alternativen zu C-h sind die F1-Taste und der lange Befehl M-x help
1368etwas anderes bedeutet. Da erfahrungsgemäß C-h eine der
1369meistbenötigten Emacs-Befehle ist, haben Sie einen wirklichen Grund,
1370sich in diesem Fall beim Systemadministrator zu beschweren.
1371Alternativen zu C-h sind die F1-Taste und der lange Befehl M-x help
1372<Return>.) 1345<Return>.)
1373 1346
1374Die elementarste Hilfestellung gibt C-h c. Drücken Sie C-h, dann das 1347Die elementarste Hilfestellung gibt C-h c. Drücken Sie C-h, dann das
@@ -1380,11 +1353,10 @@ Beschreibung des Befehls an.
1380 1353
1381 C-p runs the command previous-line 1354 C-p runs the command previous-line
1382 1355
1383Somit wissen Sie den `Namen der Funktion'. Funktionsnamen werden 1356Somit wissen Sie den »Namen der Funktion«. Da Namen in der Regel
1384hauptsächlich benutzt, um Emacs anzupassen bzw. zu erweitern. Aber da 1357beschreiben, was die jeweilige Funktion tut, können sie auch als sehr
1385Namen in der Regel beschreiben, was die jeweilige Funktion tut, können 1358kurze Beschreibung dienen -- ausreichend, um Sie an Befehle zu
1386sie auch als sehr kurze Beschreibung dienen -- ausreichend, um Sie an 1359erinnern, die Sie bereits gelernt haben.
1387Befehle zu erinnern, die Sie bereits gelernt haben.
1388 1360
1389Aus mehr als einem Zeichen bestehende Befehle, z.B. C-x C-s oder 1361Aus mehr als einem Zeichen bestehende Befehle, z.B. C-x C-s oder
1390<ESC>v, sind ebenfalls erlaubt nach C-h c. 1362<ESC>v, sind ebenfalls erlaubt nach C-h c.
@@ -1406,20 +1378,20 @@ Hier einige weitere nützliche Optionen von C-h:
1406 C-h f Beschreibt eine Funktion. Sie müssen den Namen der 1378 C-h f Beschreibt eine Funktion. Sie müssen den Namen der
1407 Funktion eingeben. 1379 Funktion eingeben.
1408 1380
1409>> Probieren Sie C-h f previous-line<Return>. 1381>> Probieren Sie C-h f previous-line <Return>.
1410 Alle Information über den C-p-Befehl wird angezeigt. 1382 Alle Information über den C-p-Befehl wird angezeigt.
1411 1383
1412Sie können die Tabulator-Taste stets benützen, um den Namen des 1384Sie können die Tabulator-Taste stets benützen, um den Namen des
1413jeweiligen Befehls zu vervollständigen. Geben Sie z.B. `C-h f 1385jeweiligen Befehls zu vervollständigen. Geben Sie z.B. »C-h f
1414previous<TAB>' ein, dann werden alle Befehle angezeigt, deren Namen 1386previous<TAB>« ein, dann werden alle Befehle angezeigt, deren Namen
1415mit `previous-' beginnen. Ergänzen Sie die Zeichenkette auf 1387mit »previous-« beginnen. Ergänzen Sie die Zeichenkette auf
1416`previous-l' und drücken Sie dann <TAB>, bleibt nur noch der Befehl 1388»previous-l« und drücken Sie dann <TAB>, bleibt nur noch der Befehl
1417`previous-line' übrig, und Sie können mit <Return> abschließen. 1389»previous-line« übrig, und Sie können mit <Return> abschließen.
1418 1390
1419Ein ähnlicher Befehl ist C-h v. Er zeigt den Wert und die 1391Ein ähnlicher Befehl ist C-h v. Er zeigt den Wert und die
1420Dokumentation von Variablen, deren Werte man ändern kann (um Emacs an 1392Dokumentation von Variablen, deren Werte man ändern kann (um
1421persönliche Bedürfnisse anzupassen). Auch hier kann man die 1393beispielsweise Emacs an persönliche Bedürfnisse anzupassen). Auch
1422Tabulator-Taste zur Vervollständigung benutzen. 1394hier kann man die Tabulator-Taste zur Vervollständigung benutzen.
1423 1395
1424 C-h a Ein Befehls-Apropos. Gibt man ein Schlüsselwort ein, 1396 C-h a Ein Befehls-Apropos. Gibt man ein Schlüsselwort ein,
1425 zeigt Emacs alle Befehle, die dieses Schlüsselwort 1397 zeigt Emacs alle Befehle, die dieses Schlüsselwort
@@ -1429,9 +1401,9 @@ Tabulator-Taste zur Vervollständigung benutzen.
1429 einem oder zwei Zeichen) aufgelistet, welche den 1401 einem oder zwei Zeichen) aufgelistet, welche den
1430 gleichen Befehl startet. 1402 gleichen Befehl startet.
1431 1403
1432>> Geben Sie C-h a file<Return> ein. 1404>> Geben Sie C-h a file <Return> ein.
1433 1405
1434Alle M-x-Befehle, die das Wort `file' in ihrem Namen enthalten, werden 1406Alle M-x-Befehle, die das Wort »file« in ihrem Namen enthalten, werden
1435angezeigt. Beachten Sie, dass auch C-x C-f aufgelistet wird neben dem 1407angezeigt. Beachten Sie, dass auch C-x C-f aufgelistet wird neben dem
1436zugehörigen langen Namen, find-file. 1408zugehörigen langen Namen, find-file.
1437 1409
@@ -1440,30 +1412,26 @@ zugehörigen langen Namen, find-file.
1440>> Schließen Sie das Hilfefenster mit C-x 1. 1412>> Schließen Sie das Hilfefenster mit C-x 1.
1441 1413
1442 C-h i Dieser Befehl öffnet einen speziellen Puffer, um 1414 C-h i Dieser Befehl öffnet einen speziellen Puffer, um
1443 Online-Handbücher zu lesen (im `Info'-Format), die auf 1415 Handbücher zu lesen (im »Info«-Format), die auf dem
1444 dem verwendeten Computersystem installiert sind. 1416 verwendeten Computersystem installiert sind. Geben
1445 Geben Sie z.B. m emacs <Return> ein, um das 1417 Sie z.B. m emacs <Return> ein, um das Emacs-Handbuch
1446 Emacs-Handbuch zu lesen. Haben Sie `Info' noch nie 1418 zu lesen. Haben Sie »Info« noch nie benutzt, tippen
1447 benutzt, tippen Sie ?, und Emacs führt Sie Schritt für 1419 Sie ?, und Emacs führt Sie Schritt für Schritt durch
1448 Schritt durch die Möglichkeiten des Info-Modus. Wenn 1420 die Möglichkeiten des Info-Modus. Wenn Sie diese
1449 Sie diese Einführung fertiggelesen haben, sollten Sie 1421 Einführung fertiggelesen haben, sollten Sie das
1450 das Info-Handbuch für Emacs als primäre Dokumentation 1422 Info-Handbuch für Emacs als primäre Dokumentation
1451 benutzen. 1423 benutzen.
1452 1424
1453 1425
1454* SCHLUSSBEMERKUNG 1426* SCHLUSSBEMERKUNG
1455------------------ 1427------------------
1456 1428
1457Das Wichtigste: Emacs wird mit C-x C-c beendet und mit C-z temporär 1429Das Wichtigste: Emacs wird mit C-x C-c beendet.
1458unterbrochen.
1459 1430
1460Diese Einführung soll für alle neuen Benutzer von Emacs verständlich 1431Diese Einführung soll für alle neuen Benutzer von Emacs verständlich
1461sein. Wenn daher etwas unklar sein sollte, hadern Sie nicht mit sich 1432sein. Wenn daher etwas unklar sein sollte, hadern Sie nicht mit sich
1462selbst. Schreiben Sie an die Free Software Foundation oder an den 1433selbst. Schreiben Sie an die Free Software Foundation, den Autor oder
1463Autor und erläutern Sie, was für Sie unklar geblieben ist. Eine 1434den Übersetzer und erläutern Sie, was für Sie unklar geblieben ist.
1464weitere Kontaktadresse ist die Mailing-Liste `de@li.org', in der
1465Probleme mit der Adaption von GNU-Programmen an das Deutsche
1466diskutiert werden.
1467 1435
1468 1436
1469* RECHTLICHES 1437* RECHTLICHES
diff --git a/etc/tutorials/TUTORIAL.sl b/etc/tutorials/TUTORIAL.sl
index ef1fecbc86a..804fe366d50 100644
--- a/etc/tutorials/TUTORIAL.sl
+++ b/etc/tutorials/TUTORIAL.sl
@@ -1,41 +1,42 @@
1Prvo berilo za Emacs. Pogoji uporabe in raz¹irjanja so navedeni na koncu. 1Prvo berilo za Emacs. Pogoji uporabe in razÅ¡irjanja so navedeni na koncu.
2 2
3Ukazi v Emacsu v splo¹nem vkljuèujejo tipki CONTROL (vèasih oznaèeni 3Ukazi v Emacsu v sploÅ¡nem vkljuÄujejo tipki CONTROL (vÄasih oznaÄeni
4CTRL ali CTL) in META (vèasih oznaèena EDIT ali ALT). Namesto, da bi ju 4CTRL ali CTL) in META (vÄasih oznaÄena EDIT ali ALT). Namesto, da bi ju
5vedno izpisali s celim imenom, bomo uporabili naslednji okraj¹avi: 5vedno izpisali s celim imenom, bomo uporabili naslednji okrajÅ¡avi:
6 6
7 C-<znak> pomeni, da moramo dr¾ati pritisnjeno tipko CONTROL, ko 7 C-<znak> pomeni, da moramo držati pritisnjeno tipko CONTROL, ko
8 vtipkamo <znak>. Oznaka C-f tako pomeni: dr¾imo pritisnjeno 8 vtipkamo <znak>. Oznaka C-f tako pomeni: držimo pritisnjeno
9 tipko CONTROL in pritisnemo tipko f. 9 tipko CONTROL in pritisnemo tipko f.
10 M-<znak> pomeni, da moramo dr¾ati pritisnjeno tipko META, EDIT ali 10 M-<znak> pomeni, da moramo držati pritisnjeno tipko META, EDIT ali
11 ALT, ko vtipkamo <znak>. Èe na tipkovnici ni tipk META, EDIT 11 ALT, ko vtipkamo <znak>. ÄŒe na tipkovnici ni tipk META, EDIT
12 ali ALT, pritisnemo tipko ESC, jo spustimo in zatem 12 ali ALT, pritisnemo tipko ESC, jo spustimo in zatem
13 pritisnemo tipko <chr>. Tipko ESC bomo oznaèevali z <ESC>. 13 pritisnemo tipko <chr>. Tipko ESC bomo oznaÄevali z <ESC>.
14 14
15Pomembno: Emacs zapustimo z ukazom C-x C-c (dva znaka). 15Pomembno: Emacs zapustimo z ukazom C-x C-c (dva znaka).
16V uèbeniku so vaje, s katerimi preskusite nove ukaze. Oznaèujeta jih 16Delno vneÅ¡en ukaz prekinete s C-g.
17znaka ,>>` ob levem robu. Zgled: 17V uÄbeniku so vaje, s katerimi preskusite nove ukaze. OznaÄujeta jih
18znaka »>>« ob levem robu. Zgled:
18<<Blank lines inserted here by startup of help-with-tutorial>> 19<<Blank lines inserted here by startup of help-with-tutorial>>
19[Sredina strani je iz didaktiènih razlogov prazna. Besedilo se nadaljuje spodaj] 20[Sredina strani je iz didaktiÄnih razlogov prazna. Besedilo se nadaljuje spodaj]
20>> Vtipkajte zdaj ukaz C-v (View next screen, Prika¾i naslednji zaslon), 21>> Vtipkajte zdaj ukaz C-v (View next screen, Prikaži naslednji zaslon),
21 da se premaknete na naslednji zaslon (kar poskusite, pritisnite 22 da se premaknete na naslednji zaslon (kar poskusite, pritisnite
22 hkrati tipko CONTROL in V). Od zdaj naprej boste morali to 23 hkrati tipko CONTROL in V). Od zdaj naprej boste morali to
23 napraviti sami vsakiè, ko pridete do konca zaslona. 24 napraviti sami vsakiÄ, ko pridete do konca zaslona.
24 25
25Ste opazili, da sta se dve vrstici s prej¹njega zaslona ponovili? Ta 26Ste opazili, da sta se dve vrstici s prejÅ¡njega zaslona ponovili? Ta
26kontinuiteta olaj¹a branje pri skakanju s strani na stran. 27kontinuiteta olajÅ¡a branje pri skakanju s strani na stran.
27 28
28Prva stvar, ki si jo morate zapomniti, je, kako se premikate po 29Prva stvar, ki si jo morate zapomniti, je, kako se premikate po
29datoteki. Zdaj ¾e veste, da se premaknete za cel zaslon naprej z 30datoteki. Zdaj že veste, da se premaknete za cel zaslon naprej z
30ukazom C-v. Za cel zaslon nazaj pa se premaknete z ukazom M-v 31ukazom C-v. Za cel zaslon nazaj pa se premaknete z ukazom M-v
31(pritisnite tipko META in jo dr¾ite ter pritisnite tipko v, ali pa 32(pritisnite tipko META in jo držite ter pritisnite tipko v, ali pa
32pritisnite in spustite <ESC> ter zatem pritisnite tipko v, èe tipke 33pritisnite in spustite <ESC> ter zatem pritisnite tipko v, Äe tipke
33META, EDIT ali ALT na va¹i tipkovnici ni). 34META, EDIT ali ALT na vaÅ¡i tipkovnici ni).
34 35
35>> Nekajkrat pritisnite M-v in C-v, da vidite, kako ukaza delujeta. 36>> Nekajkrat pritisnite M-v in C-v, da vidite, kako ukaza delujeta.
36 37
37 38
38* POVZETEK 39* povzetek
39---------- 40----------
40 41
41Za pregled celega zaslona besedila so uporabni naslednji ukazi: 42Za pregled celega zaslona besedila so uporabni naslednji ukazi:
@@ -43,110 +44,113 @@ Za pregled celega zaslona besedila so uporabni naslednji ukazi:
43 C-v Premik se za cel zaslon naprej 44 C-v Premik se za cel zaslon naprej
44 M-v Premik se za cel zaslon nazaj 45 M-v Premik se za cel zaslon nazaj
45 C-l Cel zaslon premaknemo tako, da je zdaj po vertikali 46 C-l Cel zaslon premaknemo tako, da je zdaj po vertikali
46 osredninjen okoli besedila, kjer se nahaja kazalèek 47 osredninjen okoli besedila, kjer se nahaja kazalÄek
47 (znak v C-l je èrka L, ne ¹tevka 1) 48 (znak v C-l je Ärka L, ne Å¡tevka 1)
48 49
49>> Poi¹èite kazalèek na zaslonu in si zapomnite besedilo okoli njega. 50>> PoiÅ¡Äite kazalÄek na zaslonu in si zapomnite besedilo okoli njega.
50 Vtipkajte C-l. 51 Zatem vtipkajte C-l. Ponovno poiÅ¡Äite kazalÄek. Opazili boste, da
51 Ponovno poi¹èite kazalèek. Besedilo okoli njega je ostalo isto. 52 je besedilo okoli njega ostalo isto, vendar se je pomaknilo na sredo
53 zaslona. Če še enkrat pritisnite C-l, se bo ta vrstica pomaknila na
54 vrh zaslona. Pritisnite C-l še enkrat, in vrstica se bo pomaknila
55 na dno zaslona.
52 56
53Za premikanje za cel zaslon naprej ali nazaj lahko tipkovnicah, ki 57Za premikanje za cel zaslon naprej ali nazaj lahko tipkovnicah, ki
54imajo ti tipki, uporabljate tudi PageUp in PageDown. Opisan postopek s 58imajo ti tipki, uporabljate tudi PageUp in PageDown. Opisan postopek s
55C-v in M-v pa deluje povsod. 59C-v in M-v pa deluje povsod.
56 60
57 61
58* PREMIKANJE KAZALÈKA 62* PREMIKANJE KAZALÄŒKA
59--------------------- 63---------------------
60 64
61Premiki za celo stran naprej in nazaj so sicer uporabni, ampak kako pa 65Premiki za celo stran naprej in nazaj so sicer uporabni, ampak kako pa
62pridemo do izbranega mesta na zaslonu? 66pridemo do izbranega mesta na zaslonu?
63 67
64Naèinov je veè. Najosnovnej¹i je uporaba ukazov C-p, C-b, C-f in 68NaÄinov je veÄ. NajosnovnejÅ¡i je uporaba ukazov C-p, C-b, C-f in
65C-n. Ti po vrsti premaknejo kazalèek v prej¹njo vrstico, znak nazaj, 69C-n. Ti po vrsti premaknejo kazalÄek v prejÅ¡njo vrstico, znak nazaj,
66znak naprej, in v naslednjo vrstico. Ti ¹tirje ukazi so enakovredni 70znak naprej, in v naslednjo vrstico. Ti Å¡tirje ukazi so enakovredni
67kurzorskim tipkam: 71kurzorskim tipkam:
68 72
69 prej¹nja vrstica, C-p 73 prejÅ¡nja vrstica, C-p
70 : 74 :
71 : 75 :
72 nazaj, C-b .... trenutni polo¾aj kazalèka .... naprej, C-f 76 nazaj, C-b .... trenutni položaj kazalÄka .... naprej, C-f
73 : 77 :
74 : 78 :
75 naslednja vrstica, C-n 79 naslednja vrstica, C-n
76 80
77>> S pritiski na C-n ali C-p premaknite kazalèek v sredinsko vrstico 81>> S pritiski na C-n ali C-p premaknite kazalÄek v sredinsko vrstico
78 na diagramu zgoraj. Zatem pritisnite C-l. S tem diagram postavite na 82 na diagramu zgoraj. Zatem pritisnite C-l. S tem diagram postavite na
79 sredino zaslona. 83 sredino zaslona.
80 84
81V angle¹èini ima izbor tipk nazoren pomen. P kot ,previous` 85V angleÅ¡Äini ima izbor tipk nazoren pomen. P kot »previous«
82(prej¹nji), N kot ,next` (naslednji), B kot ,backward` (nazaj) in F 86(prejÅ¡nji), N kot »next« (naslednji), B kot »backward« (nazaj) in F
83kot ,forward` (naprej). Te osnovne ukaze za premikanje kazalèka boste 87kot »forward« (naprej). Te osnovne ukaze za premikanje kazalÄka boste
84uporabljali ves èas. 88uporabljali ves Äas.
85 89
86>> Nekajkrat pritisnite C-n, da pride kazalèek do te vrstice. 90>> Nekajkrat pritisnite C-n, da pride kazalÄek do te vrstice.
87 91
88>> Z nekaj C-f se pomaknite na desno na sredo vrstice, nato pa nekajkrat 92>> Z nekaj C-f se pomaknite na desno na sredo vrstice, nato pa nekajkrat
89 pritisnite C-p. Opazujte, kaj se dogaja s kazalèkom na sredini 93 pritisnite C-p. Opazujte, kaj se dogaja s kazalÄkom na sredini
90 vrstice. 94 vrstice.
91 95
92Vsaka vrstice v besedilu je zakljuèena z znakom za novo vrstico 96Vsaka vrstice v besedilu je zakljuÄena z znakom za novo vrstico
93(angl. Newline). Ta loèuje vrstico v besedilu od naslednje. Tudi 97(angl. Newline). Ta loÄuje vrstico v besedilu od naslednje. (Tudi
94zadnja vrstica v datoteki mora biti zaljuèena z znakom za novo vrstico 98zadnja vrstica v datoteki je po navadi zakljuÄena z znakom za novo
95eprav tega Emacs ne zahteva). 99vrstico, Äeprav Emacs tega ne zahteva.)
96 100
97>> Poskusite ukaz C-b, ko je kazalèek na zaèetku vrstice. Kazalèek se 101>> Poskusite ukaz C-b, ko je kazalÄek na zaÄetku vrstice. KazalÄek se
98 mora premakniti na konec prej¹nje vrstice. To je zato, ker se je 102 mora premakniti na konec prejÅ¡nje vrstice. To je zato, ker se je
99 ravnokar premaknil prek znaka za konec vrstice. 103 ravnokar premaknil prek znaka za konec vrstice.
100 104
101Ukaz C-f premika kazalèek prek znaka za novo vrstico enako kot C-b. 105Ukaz C-f premika kazalÄek prek znaka za novo vrstico enako kot C-b.
102 106
103>> Poskusite ¹e nekajkrat pritisniti C-b, da dobite obèutek za 107>> Poskusite Å¡e nekajkrat pritisniti C-b, da dobite obÄutek za
104 premikanje kazalèka. Potem nekajkrat poskusite C-f, da pridete do konca 108 premikanje kazalÄka. Potem nekajkrat poskusite C-f, da pridete do konca
105 vrstice. ©e enkrat pritisnite C-f, da skoèite v naslednjo vrstico. 109 vrstice. Å e enkrat pritisnite C-f, da skoÄite v naslednjo vrstico.
106 110
107Ko s kazalèkom dose¾ete zgornji ali spodnji rob zaslona, se besedilo 111Ko s kazalÄkom dosežete zgornji ali spodnji rob zaslona, se besedilo
108toliko premakne, da kazalèek ostane na zaslonu. V angle¹èini se temu 112toliko premakne, da kazalÄek ostane na zaslonu. V angleÅ¡Äini se temu
109pravi ,,scrolling``. To omogoèa, da lahko premaknemo kazalèek na 113pravi »scrolling«. To omogoÄa, da lahko premaknemo kazalÄek na
110katerokoli mesto v besedilu, a vseeno ostanemo na zaslonu. 114katerokoli mesto v besedilu, a vseeno ostanemo na zaslonu.
111 115
112>> Poskusite kazalèek pripeljati s C-n èisto do dna zaslona in si oglejte, 116>> Poskusite kazalÄek pripeljati s C-n Äisto do dna zaslona in si oglejte,
113 kaj se zgodi. 117 kaj se zgodi.
114 118
115Èe se vam zdi premikanje po en znak prepoèasno, se lahko premikate za 119ÄŒe se vam zdi premikanje po en znak prepoÄasno, se lahko premikate za
116celo besedo. M-f (META-f) premakne kazalèek za eno besedo naprej, M-b 120celo besedo. M-f (META-f) premakne kazalÄek za eno besedo naprej, M-b
117pa za besedo nazaj. 121pa za besedo nazaj.
118 122
119>> Poskusite nekajkrat M-f in M-b. 123>> Poskusite nekajkrat M-f in M-b.
120 124
121Èe je kazalèek sredi besede, ga M-f prestavi na konec besede. Èe je v 125ÄŒe je kazalÄek sredi besede, ga M-f prestavi na konec besede. ÄŒe je v
122belini med besedami, ga M-f premakne na konec naslednje besede. M-b 126belini med besedami, ga M-f premakne na konec naslednje besede. M-b
123deluje podobno, a v nasprotni smeri. 127deluje podobno, a v nasprotni smeri.
124 128
125>> Nekajkrat poskusite M-f in M-b, vmes pa ¹e nekaj C-f in 129>> Nekajkrat poskusite M-f in M-b, vmes pa Å¡e nekaj C-f in
126 C-b. Opazujte uèinke M-f in M-b, ko je kazalèek sredi besede ali 130 C-b. Opazujte uÄinke M-f in M-b, ko je kazalÄek sredi besede ali
127 med besedami. 131 med besedami.
128 132
129Ste opazili paralelo med C-f in C-b na eni strani ter M-f in M-b na 133Ste opazili paralelo med C-f in C-b na eni strani ter M-f in M-b na
130drugi? V Emacsu se dostikrat ukazi Meta nana¹ajo na operacije nad 134drugi? V Emacsu se dostikrat ukazi Meta nanaÅ¡ajo na operacije nad
131enotami jezika (besede, stavki, odstavki), medtem ko se ukazi Control 135enotami jezika (besede, stavki, odstavki), medtem ko se ukazi Control
132nana¹ajo na operacije, neodvisne od zvrsti besedila (znaki, vrstice 136nanaÅ¡ajo na operacije, neodvisne od zvrsti besedila (znaki, vrstice
133ipd.). 137ipd.).
134 138
135Podobna zveza je tudi med vrsticami in stavki: ukaza C-a in C-e 139Podobna zveza je tudi med vrsticami in stavki: ukaza C-a in C-e
136premakneta kazalèek na zaèetek oz. konec vrstice, M-a in M-e pa na 140premakneta kazalÄek na zaÄetek oz. konec vrstice, M-a in M-e pa na
137zaèetek oz. konec stavka. 141zaÄetek oz. konec stavka.
138 142
139>> Poskusite nekaj ukazov C-a, potem pa nekaj ukazov C-e. 143>> Poskusite nekaj ukazov C-a, potem pa nekaj ukazov C-e.
140 Poskusite nekaj ukazov M-a, potem pa nekaj ukazov M-e. 144 Poskusite nekaj ukazov M-a, potem pa nekaj ukazov M-e.
141 145
142Ste opazili, da ponovljeni C-a ne napravijo niè, ponovljeni M-a pa se 146Ste opazili, da ponovljeni C-a ne napravijo niÄ, ponovljeni M-a pa se
143premikajo naprej? Èeprav se ne obna¹ata enako, pa je vendar obna¹anje 147premikajo naprej? ÄŒeprav se ne obnaÅ¡ata enako, pa je vendar obnaÅ¡anje
144enega in drugega po svoje naravno. 148enega in drugega po svoje naravno.
145 149
146Polo¾aju kazalèka na zaslonu pravimo tudi ,,point``, toèka. 150Položaju kazalÄka na zaslonu pravimo tudi »point«, toÄka.
147Parafrazirano: kazalèek ka¾e na zaslonu, kje je toèka v besedilu. 151Parafrazirano: kazalÄek kaže na zaslonu, kje je toÄka v besedilu.
148 152
149Povzetek preprostih ukazov za premikanje kazalèka, vkljuèno s premiki 153Povzetek preprostih ukazov za premikanje kazalÄka, vkljuÄno s premiki
150po besedo in stavek: 154po besedo in stavek:
151 155
152 C-f Premik za znak naprej 156 C-f Premik za znak naprej
@@ -156,335 +160,329 @@ po besedo in stavek:
156 M-b Premik za besedo nazaj 160 M-b Premik za besedo nazaj
157 161
158 C-n Premik v naslednjo vrstico 162 C-n Premik v naslednjo vrstico
159 C-p Premik v prej¹njo vrstico 163 C-p Premik v prejÅ¡njo vrstico
160 164
161 C-a Premik na zaèetek vrstice 165 C-a Premik na zaÄetek vrstice
162 C-e Premik na konec vrstice 166 C-e Premik na konec vrstice
163 167
164 M-a Premik na zaèetek stavka 168 M-a Premik na zaÄetek stavka
165 M-e Premik na konec stavka 169 M-e Premik na konec stavka
166 170
167>> Za vajo nekajkrat poskusite vsakega od teh ukazov. 171>> Za vajo nekajkrat poskusite vsakega od teh ukazov.
168 To so najpogosteje uporabljani ukazi. 172 To so najpogosteje uporabljani ukazi.
169 173
170©e dva pomembna ukaza za premikanje kazalèka sta M-< (META-manj¹i od), 174Å e dva pomembna ukaza za premikanje kazalÄka sta M-< (META-manjÅ¡i od),
171ki ga premakne na zaèetek datoteke, in M-> (META-veèji od), ki ga 175ki ga premakne na zaÄetek datoteke, in M-> (META-veÄji od), ki ga
172premakne na konec datoteke. 176premakne na konec datoteke.
173 177
174Na ameri¹kih tipkovnicah najdete znak < nad vejico in morate 178Na ameriÅ¡kih tipkovnicah najdete znak < nad vejico in morate
175pritisniti tipko Shift, da pridete do njega. Z ukazom M-< je enako - 179pritisniti tipko Shift, da pridete do njega. Z ukazom M-< je enako -
176prav tako morate pritisniti tipko Shift, sicer moste izvedli drug 180prav tako morate pritisniti tipko Shift, sicer moste izvedli drug
177ukaz, Meta-vejica. Na na¹ih tipkovnicah sta oba znaka na isti tipko, 181ukaz, Meta-vejica. Na naÅ¡ih tipkovnicah sta oba znaka na isti tipko,
178in za ukaz M-> morate pritisniti ¹e tipko Shift. 182in za ukaz M-> morate pritisniti Å¡e tipko Shift.
179 183
180>> Poskusite zdaj M-<, skok na zaèetek tega uèbenika. 184>> Poskusite zdaj M-<, skok na zaÄetek tega uÄbenika.
181 Potem se vrnite nazaj z zaporednimi C-v. 185 Potem se vrnite nazaj z zaporednimi C-v.
182 186
183>> Poskusite zdaj M->, skok na konec tega uèbenika. 187>> Poskusite zdaj M->, skok na konec tega uÄbenika.
184 Potem se vrnite nazaj z zaporednimi M-v. 188 Potem se vrnite nazaj z zaporednimi M-v.
185 189
186Èe ima va¹a tipkovnica kurzorske tipke, lahko premikate kazalèek po 190ÄŒe ima vaÅ¡a tipkovnica kurzorske tipke, lahko premikate kazalÄek po
187zaslonu tudi z njimi. Vseeno priporoèamo, da se privadite ukazov C-b, 191zaslonu tudi z njimi. Vseeno priporoÄamo, da se privadite ukazov C-b,
188C-f, C-n in C-p, in to iz treh razlogov. Prviè, delujejo na èisto vseh 192C-f, C-n in C-p, in to iz treh razlogov. PrviÄ, delujejo na Äisto vseh
189terminalih. Drugiè, z nekaj prakse v Emacsu boste opazili, da je 193terminalih. DrugiÄ, z nekaj prakse v Emacsu boste opazili, da je
190tipkanje ukazov s CONTROL hitrej¹e od tipkanja s kurzorskimi tipkami, ker 194tipkanje ukazov s CONTROL hitrejÅ¡e od tipkanja s kurzorskimi tipkami, ker
191ni treba ves èas premikati desnice s tipkovnice na kurzorske tipke in 195ni treba ves Äas premikati desnice s tipkovnice na kurzorske tipke in
192nazaj. In tretjiè, ko se enkrat navadite teh ukazov s CONTROL, se boste 196nazaj. In tretjiÄ, ko se enkrat navadite teh ukazov s CONTROL, se boste
193enostavneje nauèili tudi bolj zapletenih ukazov za premikanje kazalèka. 197enostavneje nauÄili tudi bolj zapletenih ukazov za premikanje kazalÄka.
194 198
195Veèini ukazov v Emacsu lahko podamo ¹tevilèni argument; najveèkrat ta 199VeÄini ukazov v Emacsu lahko podamo Å¡tevilÄni argument; najveÄkrat ta
196pove, kolikokrat zapovrstjo naj se ukaz izvede. Veèkratno ponovitev 200pove, kolikokrat zapovrstjo naj se ukaz izvede. VeÄkratno ponovitev
197ukaza izvedemo tako, da najprej vtipkamo C-u, zatem ¹tevilo, 201ukaza izvedemo tako, da najprej vtipkamo C-u, zatem Å¡tevilo,
198kolikokrat naj se ukaz ponovi, in nazadnje ¾eljeni ukaz. Èe ima va¹a 202kolikokrat naj se ukaz ponovi, in nazadnje željeni ukaz. ÄŒe ima vaÅ¡a
199tipkovnica tipko META (ali EDIT ali ALT), lahko izpustite ukaz C-u in 203tipkovnica tipko META (ali EDIT ali ALT), lahko izpustite ukaz C-u in
200namesto tega vtipkate ¹tevilo ponovitev, medtem ko dr¾ite pritisnjeno 204namesto tega vtipkate Å¡tevilo ponovitev, medtem ko držite pritisnjeno
201tipko META. Druga metoda je sicer kraj¹a, priporoèamo pa prvo, ker 205tipko META. Druga metoda je sicer krajÅ¡a, priporoÄamo pa prvo, ker
202deluje na vseh terminalih. Tak¹en ¹tevilèni argument je ,,prefiksni`` 206deluje na vseh terminalih. TakÅ¡en Å¡tevilÄni argument je »prefiksni«
203argument, ker vnesemo argument pred ukazom, na katerega se nana¹a. 207argument, ker vnesemo argument pred ukazom, na katerega se nanaÅ¡a.
204 208
205Zgled: C-u 8 C-f premakne kazalèek za osem znakov naprej. 209Zgled: C-u 8 C-f premakne kazalÄek za osem znakov naprej.
206 210
207>> Poskusite s primernim argumentom za ¹tevilo ponovitev ukaza 211>> Poskusite s primernim argumentom za Å¡tevilo ponovitev ukaza
208 C-n ali C-p priti èim bli¾e tej vrstici v enem samem skoku. 212 C-n ali C-p priti Äim bliže tej vrstici v enem samem skoku.
209 213
210Veèina ukazov, ne pa vsi, uporablja ¹tevilèni argument kot ¹tevilo 214VeÄina ukazov, ne pa vsi, uporablja Å¡tevilÄni argument kot Å¡tevilo
211ponovitev ukaza. Nekateri ukazi - nobeden od tistih, ki smo si jih 215ponovitev ukaza. Nekateri ukazi - nobeden od tistih, ki smo si jih
212ogledali do zdaj - ga uporabljajo kot stikalo: s podanim prefiksnim 216ogledali do zdaj - ga uporabljajo kot stikalo: s podanim prefiksnim
213argumentom napravi ukaz nekaj drugega kot obièajno. 217argumentom napravi ukaz nekaj drugega kot obiÄajno.
214 218
215Ukaza C-v in M-v sta tudi izjemi, a drugaèni. Èe jima podamo argument, 219Ukaza C-v in M-v sta tudi izjemi, a drugaÄni. ÄŒe jima podamo argument,
216premakneta zaslon za navedeno ¹tevilo vrstic, ne pa zaslonov. Ukaz C-u 220premakneta zaslon za navedeno Å¡tevilo vrstic, ne pa zaslonov. Ukaz C-u
2178 C-v, na primer, premakne zaslon navzgor za 8 vrstic. 2218 C-v, na primer, premakne zaslon navzgor za 8 vrstic.
218 222
219>> Poskusite zdaj C-u 8 C-v 223>> Poskusite zdaj C-u 8 C-v
220 224
221To bi moralo zaslon premakniti navzgor za osem vrstic. Èe bi ga radi 225To bi moralo zaslon premakniti navzgor za osem vrstic. ÄŒe bi ga radi
222premaknili nazaj, poskusite M-v z istim argumentom. 226premaknili nazaj, poskusite M-v z istim argumentom.
223 227
224Èe uporabljate grafièni vmesnik, denimo X11 ali MS Windows, imate 228ÄŒe uporabljate grafiÄni vmesnik, denimo X ali MS Windows, imate
225verjetno ob robu Emacsovega okna navpno pravokotno ploskev, 229verjetno ob robu Emacsovega okna pokonÄno pravokotno ploskev,
226imenovano drsnik. Pogled na besedilo lahko premikate tudi tako, da z 230imenovano drsnik. Pogled na besedilo lahko premikate tudi tako, da z
227mi¹ko kliknete na drsnik. 231miÅ¡ko kliknete na drsnik.
228 232
229>> Postavite kazalec na vrh oznaèenega obmoèja na drsniku in pritisnite
230 srednji gumb na mi¹ki. To bi moralo premakniti besedilo na mesto,
231 doloèeno s tem, kako visoko ali nizko na drsnik ste kliknili.
232 233
233>> Medtem ko dr¾ite srednji gumb pritisnjen, premikajte mi¹ko gor in 234* ÄŒE SE EMACS PRENEHA ODZIVATI
234 dol. Vidite, kako se premika besedilo v Emacsovem oknu, ko 235------------------------------
235 premikate mi¹ko?
236
237
238* ÈE SE EMACS OBESI
239-------------------
240 236
241Èe se Emacs preneha odzivati na va¹e ukaze, ga lahko varno prekinete z 237ÄŒe se Emacs preneha odzivati na vaÅ¡e ukaze, ga lahko varno prekinete z
242ukazom C-g. Z njim lahko prekinete ukaze, za katere bi trajalo 238ukazom C-g. Z njim lahko prekinete ukaze, za katere bi trajalo
243predolgo, da bi se izvedli. 239predolgo, da bi se izvedli.
244 240
245Isti ukaz, C-g, lahko uporabite tudi, da preklièete ¹tevilèni 241Isti ukaz, C-g, lahko uporabite tudi, da prekliÄete Å¡tevilÄni
246argument, ali pa zaèetek ukaza, ki ga ne ¾elite izvesti. 242argument, ali pa zaÄetek ukaza, ki ga ne želite izvesti.
247 243
248>> Vtipkajte C-u 100, s èimer ste izbrali ¹tevilèni argument 100, 244>> Vtipkajte C-u 100, s Äimer ste izbrali Å¡tevilÄni argument 100,
249 zatem pa vtipkajte C-g. Vtipkajte zdaj C-f. Kazalèek se je 245 zatem pa vtipkajte C-g. Vtipkajte zdaj C-f. KazalÄek se je
250 premaknil le za en znak, ker ste ¹tevilèni argument vmes preklicali 246 premaknil le za en znak, ker ste Å¡tevilÄni argument vmes preklicali
251 s C-g. 247 s C-g.
252 248
253Tudi èe ste po nesreèi vtipkali <ESC>, se ga lahko znebite s C-g. 249Tudi Äe ste po nesreÄi vtipkali <ESC>, se ga lahko znebite s C-g.
254 250
255 251
256* ONEMOGOÈENI UKAZI 252* ONEMOGOÄŒENI UKAZI
257------------------- 253-------------------
258 254
259Nekaj ukazov v Emacsu je namenoma ,,onemogoèenih``, da bi jih 255Nekaj ukazov v Emacsu je namenoma »onemogoÄenih«, da bi jih
260zaèetniki ne izvedli po nesreèi. 256zaÄetniki ne izvedli po nesreÄi.
261 257
262Èe vtipkate tak onemogoèen ukaz, se bo na zaslonu pojavilo novo okno z 258ÄŒe vtipkate tak onemogoÄen ukaz, se bo na zaslonu pojavilo novo okno z
263obvestilom, kateri ukaz ste sku¹ali izvesti, in vas vpra¹alo, èe ga 259obvestilom, kateri ukaz ste skuÅ¡ali izvesti, in vas vpraÅ¡alo, Äe ga
264res ¾elite izvesti. 260res želite izvesti.
265 261
266Èe v resnici ¾elite poskusiti ukaz, pritisnite preslednico kot odgovor 262ÄŒe v resnici želite poskusiti ukaz, pritisnite preslednico kot odgovor
267na vpra¹anje. Normalno verjetno ukaza ne ¾elite izvesti, zato na 263na vpraÅ¡anje. Normalno verjetno ukaza ne želite izvesti, zato na
268vpra¹anje odgovorite z ,n`. 264vpraÅ¡anje odgovorite z »n«.
269 265
270>> Vtipkajte C-x C-l (ki je onemogoèen ukaz), 266>> Vtipkajte C-x C-l (ki je onemogoÄen ukaz),
271 zatem na vpra¹anje odgovorite n. 267 zatem na vpraÅ¡anje odgovorite n.
272 268
273 269
274* OKNA 270* OKNA
275------ 271------
276 272
277Emacs lahko prika¾e veè oken in v vsakem svoje besedilo. Kasneje bomo 273Emacs lahko prikaže veÄ Â»oken« in v vsakem svoje besedilo. Kasneje
278razlo¾ili, kako uporabljamo veè oken hkrati. Zaenkrat bomo povedali 274bomo razložili, kako uporabljamo veÄ oken hkrati. Zaenkrat bomo
279le, kako se znebite dodatnih oken, ki jih lahko odpre vgrajena pomoè ali 275povedali le, kako se znebite dodatnih oken, ki jih lahko odpre
280pa izpis kak¹nega drugega programa. Preprosto je: 276vgrajena pomoÄ ali pa izpis kakÅ¡nega drugega programa. Preprosto je:
281 277
282 C-x 1 Eno okno (torej, zaprimo vsa ostala). 278 C-x 1 Eno okno (torej, zaprimo vsa ostala).
283 279
284To je CONTROL-x, ki mu sledi ¹tevka 1. Ukaz C-x 1 raztegne èez cel 280To je CONTROL-x, ki mu sledi Å¡tevka 1. Ukaz C-x 1 raztegne Äez cel
285zaslon okno, v katerem se nahaja kazalèek, ostala pa zapre. 281zaslon okno, v katerem se nahaja kazalÄek, ostala pa zapre.
286 282
287>> Premaknite kazalèek do te vrstice in vtipkajte C-u 0 C-l 283>> Premaknite kazalÄek do te vrstice in vtipkajte C-u 0 C-l
288>> Vtipkajte CONTROL-h k CONTROL-f. 284>> Vtipkajte C-h k C-f.
289 Vidite, kako se je to okno skrèilo in odstopilo prostor oknu, 285 Vidite, kako se je to okno skrÄilo in odstopilo prostor oknu,
290 ki pojasnjuje ukaz CONTROL-f? 286 ki pojasnjuje ukaz C-f?
291 287
292>> Vtipkajte C-x 1 in spodnje okno se bo zaprlo. 288>> Vtipkajte C-x 1 in spodnje okno se bo zaprlo.
293 289
294Za razliko od ukazov, ki smo se jih nauèili do zdaj, je ta ukaz 290Za razliko od ukazov, ki smo se jih nauÄili do zdaj, je ta ukaz
295sestavljen iz dveh znakov. Zaène se z znakom CONTROL-x. Cela vrsta 291sestavljen iz dveh znakov. ZaÄne se z znakom CONTROL-x. Cela vrsta
296ukazov se zaène enako, in mnogi od njih zadevajo delo z datotekami, 292ukazov se zaÄne enako, in mnogi od njih zadevajo delo z datotekami,
297delovnimi podroèji in podobnim. Vsem tem ukazom je skupno, da se 293delovnimi podroÄji in podobnim. Vsem tem ukazom je skupno, da se
298zaènejo s CONTROL-x, ki mu sledi ¹e en, dva ali trije znaki. 294zaÄnejo s CONTROL-x, ki mu sledi Å¡e en, dva ali trije znaki.
299 295
300 296
301* VRIVANJE IN BRISANJE 297* VRIVANJE IN BRISANJE
302---------------------- 298----------------------
303 299
304Èe ¾elite v obstojeèe besedilo vriniti novo, preprosto premaknite 300ÄŒe želite v obstojeÄe besedilo vriniti novo, preprosto premaknite
305kazalèek na ¾eljeno mesto in zaènite tipkati. Znake, ki jih lahko 301kazalÄek na želeno mesto in zaÄnite tipkati. Vidne znake, na primer A,
306vidite, na primer A, 7, * in podobno, razume Emacs kot del besedila in 3027, * in podobno, Emacs vrine takoj, ko jih vtipkate. S pritiskom na
307jih takoj vrine. S pritiskom na Return (ali Enter) vrinete znak za 303tipko <Return> (ali <Enter>) vrinete znak za skok v novo vrstico.
308skok v novo vrstico.
309
310Zadnji vtipkani znak lahko izbri¹ete s pritiskom na tipko
311<Delback>. To je tista tipka na tipkovnici, ki jo navadno uporabljate
312za brisanje nazadnje natipkanega znaka. Navadno je to velika tipka
313vrstico ali dve nad tipko <Return>, ki je oznaèena z "Backspace",
314"Delete" ali "Del".
315 304
316Èe imate na tipkovnici tipko "Backspace", je to tipka <Delback>. Naj 305Zadnji vtipkani znak lahko izbriÅ¡ete s pritiskom na tipko <DEL>. Ta
317vas ne zmede, èe imate poleg tega ¹e tipko "Delete" - <Delback> je 306tipka je na tipkovnici obiÄajno oznaÄena z »Backspace« - skratka, to
318"Backspace". 307je ista tipka, ki jo tudi v drugih programih uporabljate za brisanje
308nazadnje natipkanega znaka.
319 309
320Splo¹no <Delback> pobri¹e znak neposredno pred trenutnim polajem 310Najverjetneje imate na tipkovnici Å¡e tipko »Delete«. Naj vas to ne
321kazalèka. 311zmede - z <DEL> mislimo tipko »Backspace«.
322 312
323>> Vtipkajte zdaj nekaj znakov in jih zatem s tipko <Delback> pobri¹ite. 313>> Poskusite zdaj! Vtipkajte zdaj nekaj znakov in jih zatem s tipko
324 Niè naj vas ne skrbi, èe se je ta vrstica spremenila. Izvirnika 314 <DEL> pobriÅ¡ite. NiÄ naj vas ne skrbi, Äe se je ta vrstica
325 tega uèbenika ne boste pokvarili -- tole je samo va¹a osebna kopija. 315 spremenila. Izvirnika tega uÄbenika ne boste pokvarili -- tole je
316 samo vaša osebna delovna kopija.
326 317
327Ko vrstica postane predolga za zaslon, se ,,nadaljuje`` v naslednji 318Ko vrstica postane predolga za zaslon, se »nadaljuje« v naslednji
328vrstici na zaslonu. Obrnjena po¹evnica (znak ,\`) ali v grafiènih 319vrstici na zaslonu. ÄŒe uporabljate grafiÄno okolje, boste opazili
329okoljih zavita pu¹èica ob desnem robu oznaèuje vrstico, ki se 320zaviti puÅ¡Äici ob levem in desnem robu, ki oznaÄujeta vrstico, ki se
330nadaljuje v naslednji zaslonski vrstici. 321nadaljuje v naslednji zaslonski vrstici. ÄŒe uporabljate terminalski
322vmesnik, je vrstica, ki se nadaljuje v naslednji zaslonski vrstici,
323oznaÄena z obrnjeno poÅ¡evnico (znak »\«) v skrajnem desnem stolpcu.
331 324
332>> Zdaj zaènite tipkati besedilo, dokler ne dose¾ete desnega roba, in 325>> Zdaj zaÄnite tipkati besedilo, dokler ne dosežete desnega roba, in
333 ¹e naprej. Opazili boste, da se pojavi znak za nadaljevanje. 326 Å¡e naprej. Opazili boste, da se pojavi znak za nadaljevanje.
334 327
335>> S tipko <Delback> pobri¹ite toliko znakov, da vrstica ne sega 328>> S tipko <DEL> pobriÅ¡ite toliko znakov, da vrstica ne sega
336 veè èez ¹irino zaslona. Znak za nadaljevanje v naslednji 329 veÄ Äez Å¡irino zaslona. Znak za nadaljevanje v naslednji
337 vrstici je izginil. 330 vrstici je izginil.
338 331
339Znak za novo vrstico lahko pobri¹emo enako kot vsak drug znak. S tem, 332Znak za novo vrstico lahko pobriÅ¡emo enako kot vsak drug znak. S tem,
340ko pobri¹emo znak za novo vrstico, zdru¾imo vrstici v eno samo. Èe bo 333ko pobriÅ¡emo znak za novo vrstico, združimo vrstici v eno samo. ÄŒe bo
341nova vrstica predolga, da bi cela pri¹la na zaslon, bo razdeljena v 334nova vrstica predolga, da bi cela priÅ¡la na zaslon, bo razdeljena v
342veè zaslonskih vrstic. 335veÄ zaslonskih vrstic.
343 336
344>> Premaknite kazalèek na zaèetek vrstice in pritisnite <Delback>. To 337>> Premaknite kazalÄek na zaÄetek vrstice in pritisnite <DEL>. To
345 zdru¾i vrstico s prej¹njo. 338 združi vrstico s prejÅ¡njo.
346 339
347>> Pritisnite <Return>. S tem ste ponovno vrinili znak za skok v novo 340>> Pritisnite <Return>. S tem ste ponovno vrinili znak za skok v novo
348 vrstico, ki ste ga malo prej zbrisali. 341 vrstico, ki ste ga malo prej zbrisali.
349 342
350Spomnimo se, da lahko za veèino ukazov v Emacsu doloèimo, naj se 343Spomnimo se, da lahko za veÄino ukazov v Emacsu doloÄimo, naj se
351izvedejo veèkrat zaporedoma; to vkljuèuje tudi vnos teksta. Ponovitev 344izvedejo veÄkrat zaporedoma; to vkljuÄuje tudi vnos teksta. Ponovitev
352obièajnega znaka ga veèkrat vrine v besedilo. 345obiÄajnega znaka ga veÄkrat vrine v besedilo.
353 346
354>> Poskusite zdaj tole: da vnesete osem zvezdic, vtipkajte C-u 8 * 347>> Poskusite zdaj tole: da vnesete osem zvezdic, vtipkajte C-u 8 *
355 348
356Zdaj ste se nauèili najpreprostej¹i naèin, da v Emacsu nekaj natipkate 349Zdaj ste se nauÄili najpreprostejÅ¡i naÄin, da v Emacsu nekaj natipkate
357in popravite. Bri¹ete lahko tudi besede ali vrstice. Tu je povzetek 350in popravite. BriÅ¡ete lahko tudi besede ali vrstice. Tu je povzetek
358ukazov za brisanje: 351ukazov za brisanje:
359 352
360 <Delback> pobri¹e znak tik pred kazalèkom (levo od 353 <DEL> pobriÅ¡e znak tik pred kazalÄkom (levo od
361 oznake za kazalèek) 354 oznake za kazalÄek)
362 C-d pobri¹e znak tik za kazalèkom (,pod` oznako 355 C-d pobriÅ¡e znak tik za kazalÄkom (»pod« oznako
363 za kazalèek) 356 za kazalÄek)
364 357
365 M-<Delback> pobri¹e besedo tik pred kazalèkom 358 M-<DEL> pobriÅ¡e besedo tik pred kazalÄkom
366 M-d pobri¹e besedo tik za kazalèkom 359 M-d pobriÅ¡e besedo tik za kazalÄkom
367 360
368 C-k zavr¾e besedilo desno od kazalèka do konca vrstice 361 C-k zavrže besedilo desno od kazalÄka do konca vrstice
369 M-k zavr¾e besedilo od polo¾aja kazalèka do konca stavka 362 M-k zavrže besedilo od položaja kazalÄka do konca stavka
370 363
371Èrka ,d` je iz angle¹ke besede ,delete` (pobrisati), èrka ,k` pa iz 364ÄŒrka »d« je iz angleÅ¡ke besede »delete« (pobrisati), Ärka »k« pa iz
372besede ,kill` (pobiti). Ste opazili, da <Delback> in C-d na eni, ter 365besede »kill« (pobiti). Ste opazili, da <DEL> in C-d na eni, ter
373M-<Delback> in M-d na drugi strani nadaljujeta paralelo, ki sta jo zaèela 366M-<DEL> in M-d na drugi strani nadaljujeta paralelo, ki sta jo zaÄela
374C-f in M-f (<Delback> pravzaprav ni kontrolni znak, kar pa naj nas ne 367C-f in M-f (<DEL> pravzaprav ni kontrolni znak, kar pa naj nas ne
375moti). C-k in M-k sta v enakem sorodu s C-e in M-e: prvi deluje na 368moti). C-k in M-k sta v enakem sorodu s C-e in M-e: prvi deluje na
376vrstice, drugi na stavke. 369vrstice, drugi na stavke.
377 370
378Obstaja tudi splo¹en postopek za brisanje kateregakoli dela delovnega 371Obstaja tudi sploÅ¡en postopek za brisanje kateregakoli dela delovnega
379podroèja. Kazalèek postavimo na en konec podroèja, ki ga ¾elimo 372podroÄja. KazalÄek postavimo na en konec podroÄja, ki ga želimo
380izbrisati, in pritisnemo C-@ ali C-SPC (SPC je 373izbrisati, in pritisnemo C-@ ali C-<SPC> (<SPC> je preslednica).
381preslednica). Katerikoli od obeh ukazov deluje. Premaknite kazalèek na 374Katerikoli od obeh ukazov deluje. Premaknite kazalÄek na drug konec
382drug konec podroèja, ki ga ¾elite izbrisati, in pritisnite C-w. S tem 375podroÄja, ki ga želite izbrisati. Med premikanjem Emacs z barvo
383ste zavrgli vse besedilo med obema mejama. 376oznaÄuje podroÄje med kazalÄkom in mestom, kjer ste pritisnili
377C-<SPC>. KonÄno pritisnite C-w. S tem ste zavrgli vse besedilo med
378obema mejama.
384 379
385>> Premaknite kazalèek na èrko O, s katero se zaèenja prej¹nji 380>> Premaknite kazalÄek na Ärko O, s katero se zaÄenja prejÅ¡nji
386 odstavek. 381 odstavek.
387>> Vtipkajte C-SPC. Emacs prika¾e sporoèilo "Mark set" (slov. Oznaka 382>> Vtipkajte C-SPC. Emacs prikaže sporoÄilo »Mark set« (slov. »oznaka
388 postavljena) na dnu ekrana. 383 postavljena«) na dnu ekrana.
389>> Premaknite kazalèek na èrko V v "postavimo" v drugi vrstici istega 384>> Premaknite kazalÄek na Ärko V v »postavimo« v drugi vrstici istega
390 odstavka. 385 odstavka.
391>> Vtipkajte C-w. S tem zavr¾emo vse besedilo zaèen¹i z O in vse do 386>> Vtipkajte C-w. S tem zavržemo vse besedilo zaÄenÅ¡i z O in vse do
392 èrke V. 387 Ärke V.
393 388
394Razlika med tem, èe zavr¾ete cel odstavek besedila (angl. ,,kill``, 389Razlika med tem, Äe zavržete cel odstavek besedila (angl. »kill«,
395pobiti) ali pa èe pobri¹ete znak (angl. ,,delete``), je ta, da lahko 390pobiti) ali pa Äe pobriÅ¡ete znak (angl. »delete«), je ta, da lahko
396prvega vrnete nazaj z ukazom C-y, drugega pa ne. Na splo¹no ukazi, ki 391prvega povrnete - na katerokoli mesto v besedilu - z ukazom C-y,
397lahko povzroèijo veliko ¹kode (pobri¹ejo veliko besedila), shranijo 392drugega pa ne (seveda pa lahko prekliÄete brisanje - glejte nižje). Na
398pobrisano besedilo; tisti, ki pobri¹ejo samo posamezni znak, ali samo 393sploÅ¡no ukazi, ki lahko povzroÄijo veliko Å¡kode (pobriÅ¡ejo veliko
399prazne vrstice in presledke, pa ne. 394besedila), shranijo pobrisano besedilo; tisti, ki pobrišejo samo
400 395posamezni znak, ali samo prazne vrstice in presledke, pa ne.
401>> Postavite kazalèek na zaèetek neprazne vrstice. Pritisnite C-k, da 396
402 pobri¹ete vsebino vrstice. 397>> Postavite kazalÄek na zaÄetek neprazne vrstice. Pritisnite C-k, da
403>> ©e enkrat pritisnite C-k. To pobri¹e ¹e znak za novo vrstico. 398 pobriÅ¡ete vsebino vrstice.
404 399>> Še enkrat pritisnite C-k. To pobriše še znak za novo vrstico.
405Ste opazili, da prvi C-k pobri¹e vsebino vrstice, naslednji C-k pa ¹e 400
406vrstici samo, s èimer se vse besedilo pod biv¹o vrstico premakne za 401Ste opazili, da prvi C-k pobriÅ¡e vsebino vrstice, naslednji C-k pa Å¡e
407eno vrstico navzgor? Ukaz C-k obravnava ¹tevilèni argument malo 402vrstici samo, s Äimer se vse besedilo pod bivÅ¡o vrstico premakne za
408drugaèe: pobri¹e toliko in toliko vrstic z vsebinami vred. To ni zgolj 403eno vrstico navzgor? Ukaz C-k obravnava Å¡tevilÄni argument malo
409ponovitev. C-u 2 C-k pobri¹e dve polni vrstici besedila, kar je nekaj 404drugaÄe: pobriÅ¡e toliko in toliko vrstic z vsebinami vred. To ni zgolj
410drugega, kot èe dvakrat vtipkate C-k. 405ponovitev. C-u 2 C-k pobriÅ¡e dve polni vrstici besedila, kar je nekaj
411 406drugega, kot Äe dvakrat vtipkate C-k.
412Besedilo, ki ste ga prej pobili, lahko povrnete (angl. ,,yank`` -- 407
408Besedilo, ki ste ga prej pobili, lahko povrnete (angl. »yank« -
413potegniti). Predstavljajte si, kot da potegnete nazaj nekaj, kar vam 409potegniti). Predstavljajte si, kot da potegnete nazaj nekaj, kar vam
414je nekdo odnesel. Pobito besedilo lahko potegnete nazaj na isti ali pa 410je nekdo odnesel. Pobito besedilo lahko potegnete nazaj na isti ali pa
415na kak¹en drug kraj v besedilu, ali pa celo v kaki drugi 411na kakÅ¡en drug kraj v besedilu, ali pa celo v kaki drugi datoteki.
416datoteki. Isto besedilo lahko veèkrat potegnete nazaj, tako da je v 412Isto besedilo lahko veÄkrat potegnete nazaj, tako da je v delovnem
417delovnem podroèju poveèterjeno. 413podroÄju poveÄterjeno. Nekateri drugi urejevalniki uporabljajo namesto
414»kill« in »yank« izraza »cut« in »paste« (glejte glosar v priroÄniku
415za Emacs).
418 416
419Ukaz za vraèanje pobitega besedila je C-y. 417Ukaz za vraÄanje pobitega besedila je C-y.
420 418
421>> Poskusite z ukazom C-y povrniti pobrisano besedilo. 419>> Poskusite z ukazom C-y povrniti pobrisano besedilo.
422 420
423Èe ste uporabili veè zaporednih ukazov C-k, je vse pobrisano besedilo 421ÄŒe ste uporabili veÄ zaporednih ukazov C-k, je vse pobrisano besedilo
424shranjeno skupaj, in en sam C-y bo vrnil vse tako pobrisane vrstice. 422shranjeno skupaj, in en sam C-y bo vrnil vse tako pobrisane vrstice.
425 423
426>> Poskusite, nekajkrat vtipkajte C-k. 424>> Poskusite, nekajkrat vtipkajte C-k.
427 425
428Zdaj pa vrnimo pobrisano besedilo: 426Zdaj pa vrnimo pobrisano besedilo:
429 427
430>> Vtipkajte C-y. Zdaj pa premaknite kazalèek za nekaj vrstic navzdol 428>> Vtipkajte C-y. Zdaj pa premaknite kazalÄek za nekaj vrstic navzdol
431 in ¹e enkrat vtipkajte C-y. Vidite zdaj, kako se kopira dele 429 in Å¡e enkrat vtipkajte C-y. Vidite zdaj, kako se kopira dele
432 besedila? 430 besedila?
433 431
434Kaj pa, èe ste pobrisali nekaj besedila, ki bi ga radi vrnili, vendar 432Kaj pa, Äe ste pobrisali nekaj besedila, ki bi ga radi vrnili, vendar
435ste za iskanim odlomkom pobrisali ¹e nekaj? C-y vrne samo nazadnje 433ste za iskanim odlomkom pobrisali Å¡e nekaj? C-y vrne samo nazadnje
436pobrisan odlomek. Vendar tudi prej¹nje besedilo ni izgubljeno. Do 434pobrisan odlomek. Vendar tudi prejÅ¡nje besedilo ni izgubljeno. Do
437njega lahko pridete z ukazom M-y. Ko ste vrnili nazadnje zbrisano 435njega lahko pridete z ukazom M-y. Ko ste vrnili nazadnje zbrisano
438besedilo s C-y, pritisnite M-y, ki ga zamenja s predzanje pobrisanim 436besedilo s C-y, pritisnite M-y, ki ga zamenja s predzanje pobrisanim
439besedilom. Vsak naslednji M-y prika¾e ¹e eno prej. Ko ste konèno 437besedilom. Vsak naslednji M-y prikaže Å¡e eno prej. Ko ste konÄno
440pri¹li do iskanega besedila, ni treba napraviti niè posebnega, da bi 438priÅ¡li do iskanega besedila, ni treba napraviti niÄ posebnega, da bi
441ga obdr¾ali. Preprosto nadaljujte z urejanjem, in vrnjeno besedilo bo 439ga obdržali. Preprosto nadaljujte z urejanjem, in vrnjeno besedilo bo
442ostalo, kamor ste ga odlo¾ili. 440ostalo, kamor ste ga odložili.
443 441
444Èe pritisnete M-y dovolj velikokrat, se boste vrnili na zaèete, torej 442ÄŒe pritisnete M-y dovolj velikokrat, se boste vrnili na zaÄete, torej
445spet na zadnje pobrisano besedilo. 443spet na zadnje pobrisano besedilo.
446 444
447>> Pobri¹ite vrstico, premaknite se nekam drugam, in pobri¹ite ¹e 445>> PobriÅ¡ite vrstico, premaknite se nekam drugam, in pobriÅ¡ite Å¡e
448 eno vrstico. 446 eno vrstico.
449 Z ukazom C-y dobite nazaj to drugo vrstico. 447 Z ukazom C-y dobite nazaj to drugo vrstico.
450 Z ukazom M-y pa jo zamenjate s prvo vrstico. 448 Z ukazom M-y pa jo zamenjate s prvo vrstico.
451 Ponovite ukaz M-y ¹e nekajkrat in si oglejte, kaj dobite na 449 Ponovite ukaz M-y Å¡e nekajkrat in si oglejte, kaj dobite na
452 zaslon. Ponavljajte ga, dokler se ne prika¾e ponovno nazadnje 450 zaslon. Ponavljajte ga, dokler se ne prikaže ponovno nazadnje
453 pobrisana vrstica, in ¹e naprej. Èe ¾elite, lahko tudi ukazu 451 pobrisana vrstica, in Å¡e naprej. ÄŒe želite, lahko tudi ukazu
454 M-y podate pozitivno ali negativno ¹tevilo ponovitev. 452 M-y podate pozitivno ali negativno Å¡tevilo ponovitev.
455 453
456 454
457* PREKLIC UKAZA (UNDO) 455* PREKLIC UKAZA (UNDO)
458---------------------- 456----------------------
459 457
460Èe ste besedilo spremenili, a ste se kasneje premislili, lahko 458ÄŒe ste besedilo spremenili, a ste se kasneje premislili, lahko
461besedilo vrnete v prvotno stanje z ukazom Undo, C-x u. Normalno vrne 459besedilo vrnete v prvotno stanje z ukazom Undo, C-/.
462C-x u zadnjo spremembo besedila; èe ukaz ponovimo, preklièemo ¹e 460
463predzadnjo spremembo, in vsaka nadaljnja ponovitev se¾e ¹e eno 461ObiÄajno C-/ prekliÄe spremembo besedila, ki jo izvede en ukaz; Äe
462ukaz C-/ ponovimo, prekliÄemo Å¡e spremembo, ki jo je izvedel
463predzadnji ukaz, in vsaka nadaljnja ponovitev C-/ seže še eno
464spremembo globlje v zgodovino. 464spremembo globlje v zgodovino.
465 465
466Emacs hrani bolj ali manj celotno zgodovino na¹ih ukazov, z dvema 466Emacs hrani bolj ali manj celotno zgodovino naÅ¡ih ukazov, z dvema
467izjemama: ukazov, ki niso napravili nobene spremembe v besedilu 467izjemama: ukazov, ki niso napravili nobene spremembe v besedilu (npr.
468(npr. premik kazalèka), ne shranjuje, in zaporedje do 20 vrinjenih 468premik kazalÄka), ne shranjuje, in zaporedje do 20 vrinjenih znakov
469znakov shrani kot en sam ukaz. Slednje prihrani nekaj ukazov C-x u, ki 469shrani kot en sam ukaz. Slednje prihrani nekaj ukazov C-/, ki bi jih
470bi jih morali vtipkati. 470morali vtipkati.
471 471
472>> Pobri¹ite to vrstico z ukazom C-k, potem jo priklièite nazaj s C-x u. 472>> PobriÅ¡ite to vrstico z ukazom C-k, potem jo prikliÄite nazaj s C-/.
473 473
474C-_ je alternativni ukaz za preklic zadnjega ukaza. Deluje enako kot 474C-_ je alternativni ukaz za preklic zadnjega ukaza. Deluje povsem
475s C-x u, ga je pa la¾je odtipkati, èe morate ukaz ponoviti veèkrat 475enako kot C-/. Na nekaterih besedilnih terminalih v resnici pritisk
476zaporedoma. Te¾ava z ukazom C-_ je, da na nekaterih tipkovnicah ni 476C-/ poÅ¡lje Emacsu ukaz C-_. Å e tretja možnost je C-x u, ki tudi deluje
477povsem oèitno, kako ga vtipkati, zato je podvojen ¹e kot C-x u. Na 477povsem enako kot C-/, le z nekaj veÄ tipkanja.
478nekaterih terminalih moramo na primer vtipkati /, medtem ko dr¾imo
479pritisnjeno tipko CONTROL.
480 478
481Èe podamo ukazu C-_ ali C-x u numerièni argument, je to enako, kot èe 479ÄŒe podamo ukazu C-/, C-_ ali C-x u numeriÄni argument, je to enako,
482bi ukaz roèno ponovili tolikokrat, kot pravi argument. 480kot Äe bi ukaz roÄno ponovili tolikokrat, kot pravi argument.
483 481
484Ukaz za brisanje besedila lahko preklièete in besedilo povrnete, 482Ukaz za brisanje besedila lahko prekliÄete in besedilo povrnete,
485enako, kot èe bi besedilo pobili. Razlika med brisanjem in pobijanjem 483enako, kot Äe bi besedilo pobili. Razlika med brisanjem in pobijanjem
486besedila je le ta, da le slednje lahko potegnete nazaj z ukazom 484besedila je le ta, da le slednje lahko povrnete z ukazom C-y. Preklic
487C-y. Preklic ukaza pa velja za eno in drugo. 485ukaza pa velja za eno in drugo.
488 486
489 487
490* DATOTEKE 488* DATOTEKE
@@ -493,638 +491,657 @@ C-y. Preklic ukaza pa velja za eno in drugo.
493Da bi bile spremembe v besedilu trajne, morate besedilo shraniti v 491Da bi bile spremembe v besedilu trajne, morate besedilo shraniti v
494datoteko. V nasprotnem primeru jih boste za vedno izgubili tisti hip, 492datoteko. V nasprotnem primeru jih boste za vedno izgubili tisti hip,
495ko boste zapustili Emacs. Besedilo postavimo v datoteko tako, da 493ko boste zapustili Emacs. Besedilo postavimo v datoteko tako, da
496na disku ,,poi¹èemo`` (angl. find) datoteko, preden zaènemo tipkati 494na disku »poiÅ¡Äemo« (angl. find) datoteko, preden zaÄnemo tipkati
497(pravimo tudi, da ,,obi¹èemo`` datoteko). 495(pravimo tudi, da »obiÅ¡Äemo« datoteko).
498 496
499Poiskati datoteko pomeni, da v Emacsu vidimo vsebino datoteke. To je 497Poiskati datoteko pomeni, da v Emacsu vidimo vsebino datoteke. To je
500bolj ali manj tako, kot da z Emacsom urejamo datoteko samo. Vendar pa 498bolj ali manj tako, kot da z Emacsom urejamo datoteko samo. Vendar pa
501spremembe ne postanejo trajne, dokler datoteke ne shranimo 499spremembe ne postanejo trajne, dokler datoteke ne shranimo
502(angl. save) na disk. Tako imamo mo¾nost, da se izognemo temu, da bi 500(angl. save) na disk. Tako imamo možnost, da se izognemo temu, da bi
503nam na pol spremenjene datoteke le¾ale po disku, kadar tega ne 501nam na pol spremenjene datoteke ležale po disku, kadar tega ne
504¾elimo. Ker pa Emacs ohrani izvorno datoteko pod spremenjenim imenom, 502želimo. Ker pa Emacs ohrani izvorno datoteko pod spremenjenim imenom,
505lahko prvotno datoteko priklièemo nazaj celo ¹e potem, ko smo datoteko 503lahko prvotno datoteko prikliÄemo nazaj celo Å¡e potem, ko smo datoteko
506¾e shranili na disk. 504že shranili na disk.
507 505
508V predzadnji vrstici na dnu zaslona vidite vrstico, ki se zaène in 506V predzadnji vrstici na dnu zaslona vidite vrstico, ki se zaÄne z
509konèa z vezaji, in vsebuje niz znakov ,,--:-- TUTORIAL``. Ta del 507vezaji, na zaÄetku pa vsebuje niz znakov »--:--- TUTORIAL« ali nekaj
510zaslona navadno vsebuje ime datoteke, ki smo jo obiskali. Zdajle je to 508podobnega. Ta del zaslona navadno vsebuje ime datoteke, ki smo jo
511,,TUTORIAL``, va¹a delovna kopija uèbenika Emacsa. Ko boste poiskali 509obiskali. Zdajle je to »TUTORIAL«, vaÅ¡a delovna kopija uÄbenika
512kak¹no drugo datoteko, bo na tem mestu pisalo njeno ime. 510Emacsa. Ko boste poiskali kakÅ¡no drugo datoteko, bo na tem mestu
511izpisano ime te datoteke.
513 512
514Posebnost ukaza za iskanje datoteke je, da moramo povedati, katero 513Posebnost ukaza za iskanje datoteke je, da moramo povedati, katero
515datoteko i¹èemo. Pravimo, da ukaz ,,prebere argument s terminala`` (v 514datoteko iÅ¡Äemo. Pravimo, da ukaz »prebere argument« (v tem primeru je
516tem primeru je argument ime datoteke). Ko vtipkate ukaz 515argument ime datoteke). Ko vtipkate ukaz
517 516
518 C-x C-f (poi¹èi datoteko) 517 C-x C-f (poiÅ¡Äi datoteko)
519 518
520vas Emacs povpra¹a po imenu datoteke. Kar vtipkate, se sproti vidi v 519vas Emacs povpraÅ¡a po imenu datoteke. Kar vtipkate, se sproti vidi v
521vrstici na dnu zaslona. Temu delovnemu podroèju pravimo pogovorni 520vrstici na dnu zaslona. Temu delovnemu podroÄju pravimo pogovorni
522vmesnik (minibuffer), kadar se uporablja za tovrstni vnos. Znotraj 521vmesnik (minibuffer), kadar se uporablja za tovrstni vnos. Znotraj
523pogovornega vmesnika lahko uporabljate obièajne ukaze za urejanje, èe 522pogovornega vmesnika lahko uporabljate obiÄajne ukaze za urejanje, Äe
524ste se na primer pri tipkanju zmotili. 523ste se na primer pri tipkanju zmotili.
525 524
526Sredi tipkanja imena datoteke (ali katerega koli drugega opravila v 525Sredi tipkanja imena datoteke (ali katerega koli drugega opravila v
527pogovornem vmesniku) lahko ukaz preklièete s C-g. 526pogovornem vmesniku) lahko ukaz prekliÄete s C-g.
528 527
529>> Vtipkajte C-x C-f, zatem pa ¹e C-g. Zadnji ukaz od treh je 528>> Vtipkajte C-x C-f, zatem pa Å¡e C-g. Zadnji ukaz od treh je
530 zaprl pogovorni vmesnik in tudi preklical ukaz C-x C-f, ki je 529 zaprl pogovorni vmesnik in tudi preklical ukaz C-x C-f, ki je
531 uporabljal pogovorni vmesnik. Konec z iskanjem datoteke. 530 uporabljal pogovorni vmesnik. Konec z iskanjem datoteke.
532 531
533Ko ste dokonèali ime, ga vnesete s pritiskom na <Return>. S tem se 532Ko ste dokonÄali ime, ga vnesete s pritiskom na <Return>. Pogovorni
534po¾ene ukaz C-x C-f in poi¹èe iskano datoteko. Pogovorni vmesnik 533vmesnik izgine, ko je ukaz izveden.
535izgine, ko je ukaz izveden.
536 534
537Trenutek kasneje se vsebina datoteke pojavi na zaslonu. Zdaj lahko 535Vsebina datoteke se pojavi na zaslonu. Zdaj lahko dopolnjujete,
538dopolnjujete, urejate ali kako drugaèe spreminjate vsebino. Ko ¾elite, 536urejate ali kako drugaÄe spreminjate vsebino. Ko želite, da ostanejo
539da ostanejo spremembe trajne, izvedete ukaz: 537spremembe trajne, izvedete ukaz:
540 538
541 C-x C-s (shrani datoteko) 539 C-x C-s (shrani datoteko)
542 540
543Besedilo se s tem shrani iz pomnilnika raèunalnika na datoteko na 541Besedilo se s tem shrani iz pomnilnika raÄunalnika na datoteko na
544disk. Ko prviè izvedete ta ukaz, se izvorna datoteka preimenuje, tako 542disk. Ko prviÄ izvedete ta ukaz, se izvorna datoteka preimenuje, tako
545da ni izgubljena. Najdete jo pod novim imenom, ki se od starega 543da ni izgubljena. Najdete jo pod novim imenom, ki se od starega
546razlikuje po tem, da ima na koncu pripet znak ,,~``. 544razlikuje po tem, da ima na koncu pripet znak »~«.
547 545
548Ko je Emacs shranil datoteko, izpi¹e njeno ime. Shranjujte raje 546Ko je Emacs shranil datoteko, izpiÅ¡e njeno ime. Shranjujte raje
549pogosteje kot ne, da v primeru, èe gre z raèunalnikom kaj narobe, ne 547pogosteje kot ne, da v primeru, Äe gre z raÄunalnikom kaj narobe, ne
550izgubite veliko. 548izgubite veliko (oglejte si tudi razdelek o samodejnem shranjevanju
549nižje).
551 550
552>> Vtipkajte C-x C-s, s èimer boste shranili svojo kopijo tega 551>> Vtipkajte C-x C-s TUTORIAL <Return>.
553 uèbenika. Emacs bo v vrstici na dnu zaslona izpisal ,,Wrote 552 S tem boste shranili svojo kopijo tega uÄbenika. Emacs bo v vrstici
554 ...TUTORIAL``. 553 na dnu zaslona izpisal »Wrote ...TUTORIAL«.
555 554
556Poi¹èete lahko lahko ¾e obstojeèo datoteko, da si jo ogledate ali 555PoiÅ¡Äete lahko lahko že obstojeÄo datoteko, da si jo ogledate ali
557popravite, ali pa tudi datoteko, ki ¹e ne obstaja. To je naèin, kako z 556popravite, ali pa tudi datoteko, ki Å¡e ne obstaja. To je naÄin, kako z
558Emacsom ustvarimo novo datoteko: poi¹èite datoteko z izbranim imenom, 557Emacsom ustvarimo novo datoteko: poiÅ¡Äite datoteko z izbranim imenom,
559ki bo sprva prazna, in zaènite pisati. Ko jo boste prviè shranili, bo 558ki bo sprva prazna, in zaÄnite pisati. Ko jo boste prviÄ shranili, bo
560Emacs ustvaril datoteko z vne¹enim besedilom. Od tod dalje delate na 559Emacs ustvaril datoteko z vneÅ¡enim besedilom. Od tod dalje delate na
561¾e obstojeèi datoteki. 560že obstojeÄi datoteki.
562 561
563 562
564* DELOVNA PODROÈJA 563* DELOVNA PODROÄŒJA
565------------------ 564------------------
566 565
567Tudi èe ste z ukazom C-x C-f poiskali in odprli drugo datoteko, prva 566Tudi Äe ste z ukazom C-x C-f poiskali in odprli drugo datoteko, prva
568ostane v Emacsu. Nanjo se vrnete tako, da jo ¹e enkrat ,,poi¹èete`` z 567ostane v Emacsu. Nanjo se vrnete tako, da jo Å¡e enkrat »poiÅ¡Äete« z
569ukazom C-x C-f. Tako imate lahko v Emacsu hkrati kar precej datotek. 568ukazom C-x C-f. Tako imate lahko v Emacsu hkrati kar precej datotek.
570 569
571>> Ustvarite datoteko z imenom ,,bla`` tako, da vtipkate C-x C-f 570Emacs hrani besedilo vsake datoteke v takoimenovanem »delovnem
572 bla <Return>. Natipkajte nekaj besedila, ga po potrebi popravite, in 571podroÄju« (angl. buffer). Ko poiÅ¡Äemo datoteko, Emacs ustvari zanjo
573 shranite v datoteko ,,bla`` z ukazom C-x C-s. Ko ste konèali, se 572novo delovno podroÄje. Vsa obstojeÄa delovna podroÄja v Emacsu vidimo
574 vrnite v uèbenik z ukazom C-x C-f TUTORIAL <Return>.
575
576Emacs hrani besedilo vsake datoteke v takoimenovanem ,,delovnem
577podroèju`` (angl. buffer). Ko poi¹èemo datoteko, Emacs ustvari zanjo
578novo delovno podroèje. Vsa obstojeèa delovna podroèja v Emacsu vidimo
579z ukazom: 573z ukazom:
580 574
581 C-x C-b Seznam delovnih podroèij. 575 C-x C-b Seznam delovnih podroÄij.
582 576
583>> Poskusite C-x C-b zdaj. 577>> Poskusite C-x C-b zdaj.
584 578
585Vidite, da ima vsako delovno podroèje svoje ime, pri nekaterih pa pi¹e 579Vidite, da ima vsako delovno podroÄje svoje ime, pri nekaterih pa piÅ¡e
586tudi ime datoteke, katere vsebina se hrani v njem. Vsako besedilo, ki 580tudi ime datoteke, katere vsebina se hrani v njem. Vsako besedilo, ki
587ga vidite v katerem od Emacsovih oken, je vedno del kak¹nega delovnega 581ga vidite v katerem od Emacsovih oken, je vedno del kakÅ¡nega delovnega
588podroèja. 582podroÄja.
589 583
590>> Z ukazom C-x 1 se znebite seznama delovnih podroèij. 584>> Z ukazom C-x 1 se znebite seznama delovnih podroÄij.
591 585
592Tudi èe imate veè delovnih podroèij, pa je vedno le eno od njih 586Tudi Äe imate veÄ delovnih podroÄij, pa je vedno le eno od njih
593trenutno dejavno. To je tisto delovno podroèje, ki ga popravljate. Èe 587trenutno dejavno. To je tisto delovno podroÄje, ki ga popravljate. ÄŒe
594¾elite popravljati drugo delovno podroèje, morate ,,preklopiti`` 588želite popravljati drugo delovno podroÄje, morate »preklopiti«
595nanj. Èe bi radi preklopili na delovno podroèje, ki pripada kak¹ni 589nanj. ÄŒe bi radi preklopili na delovno podroÄje, ki pripada kakÅ¡ni
596datoteki, ¾e poznate en naèin, kako to storiti: ponovno ,,obi¹èete`` 590datoteki, že poznate en naÄin, kako to storiti: ponovno »obiÅ¡Äete«
597(odprete) to datoteko z ukazom C-x C-f. Obstaja pa ¹e la¾ji naèin: z 591(odprete) to datoteko z ukazom C-x C-f. Obstaja pa Å¡e lažji naÄin: z
598ukazom C-x b. Pri tem ukazu morate navesti ime delovnega podroèja. 592ukazom C-x b. Pri tem ukazu morate navesti ime delovnega podroÄja.
599 593
600>> Vtipkajte C-x b bla <Return>, s èimer se vrnete v delovno podroèje 594>> Ustvarite datoteko z imenom »bla« tako, da vtipkate C-x C-f bla
601 ,,bla`` z vsebino datoteke ,,bla``, ki ste jo maloprej 595 <Return>. Zatem se vrnite v ta uÄbenik z ukazom C-x C-f TUTORIAL
602 odprli. Zatem vtipkajte C-x b TUTORIAL <RETURN>, s èimer se vrnete 596 <Return>.
603 nazaj v ta uèbenik.
604 597
605Veèinoma se ime delovnega podroèja kar ujema z imenom datoteke (brez 598VeÄinoma se ime delovnega podroÄja kar ujema z imenom datoteke (brez
606poti do datoteke), ne pa vedno. Seznam delovnih podroèij, ki ga 599poti do datoteke), ne pa vedno. Seznam delovnih podroÄij, ki ga
607prika¾e ukaz C-x C-b, prika¾e imena vseh delovnih podroèij. 600prikaže ukaz C-x C-b, prikaže imena vseh delovnih podroÄij in
601pripadajoÄa imena datotek.
608 602
609Vsako besedilo, ki ga vidite v katerem od Emacsovih oken, je vedno del 603Vsako besedilo, ki ga vidite v katerem od Emacsovih oken, je vedno del
610kak¹nega delovnega podroèja. Nekatera delovna podroèja ne pripadajo 604kakÅ¡nega delovnega podroÄja. Nekatera delovna podroÄja ne pripadajo
611nobeni datoteki. Podroèje ,,*Buffer List*``, na primer, je ¾e eno 605nobeni datoteki. PodroÄje »*Buffer List*«, na primer, je že eno takih.
612takih. To delovno podroèje smo ustvarili ravnokar, ko smo pognali ukaz 606To delovno podroÄje smo ustvarili ravnokar, ko smo pognali ukaz C-x
613C-x C-b, in vsebuje seznam delovnih podroèij. Tudi delovno podroèje 607C-b, in vsebuje seznam delovnih podroÄij. Temu delovnemu podroÄju
614,,Messages`` ne pripada nobeni datoteki, ampak vsebuje sporoèila, ki 608TUTORIAL sprva ni pripadala datoteka, zdaj pa mu, ker smo v prejÅ¡njem
615jih je Emacs izpisoval v odzivnem podroèju na dnu zaslona. 609razdelku vtipkali C-x C-s in ga shranili v datoteko.
616 610
617>> Vtipkajte C-x b *Messages* <Return> in si oglejte delovno podroèje 611Tudi delovno podroÄje »Messages« ne pripada nobeni datoteki, ampak
618 s sporoèili, zatem pa vtipkajte C-x b TUTORIAL <Return> in se tako 612vsebuje sporoÄila, ki jih je Emacs izpisoval v odzivnem podroÄju na
619 vrnite v uèbenik. 613dnu zaslona.
620 614
621Èe ste spreminjali besedilo ene datoteke, potem pa poiskali drugo, to 615>> Vtipkajte C-x b *Messages* <Return> in si oglejte delovno podroÄje
616 s sporoÄili, zatem pa vtipkajte C-x b TUTORIAL <Return> in se tako
617 vrnite v uÄbenik.
618
619ÄŒe ste spreminjali besedilo ene datoteke, potem pa poiskali drugo, to
622ne shrani spremeb v prvo datoteko. Te ostanejo znotraj Emacsa, na 620ne shrani spremeb v prvo datoteko. Te ostanejo znotraj Emacsa, na
623delovnem podroèju, ki pripada prvi datoteki. Ustvarjenje ali 621delovnem podroÄju, ki pripada prvi datoteki. Ustvarjenje ali
624spreminjanje delovnega podroèja druge datoteke nima nobenega vpliva na 622spreminjanje delovnega podroÄja druge datoteke nima nobenega vpliva na
625podroèje prve. To je zelo uporabno, pomeni pa tudi, da potrebujemo 623podroÄje prve. To je zelo uporabno, pomeni pa tudi, da potrebujemo
626udobno pot, da shranimo delovno podroèje prve datoteke. Nerodno bi 624udobno pot, da shranimo delovno podroÄje prve datoteke. Nerodno bi
627bilo preklapljanje na prvo podroèje s C-x C-f, da bi shranili s C-x 625bilo preklapljanje na prvo podroÄje s C-x C-f, da bi shranili s C-x
628C-s. Namesto tega imamo: 626C-s. Namesto tega imamo:
629 627
630 C-x s Shrani nekatera delovna podroèja 628 C-x s Shrani nekatera delovna podroÄja
631 629
632Ukaz C-x poi¹èe delovna podroèja, katerih vsebina je bila spremenjena, 630Ukaz C-x poiÅ¡Äe delovna podroÄja, katerih vsebina je bila spremenjena,
633odkar je bila zadnjiè shranjena na datoteko. Za vsako tako delovno 631odkar je bila zadnjiÄ shranjena na datoteko. Za vsako tako delovno
634podroèje C-x s vpra¹a, èe ga ¾elite shraniti. 632podroÄje C-x s vpraÅ¡a, Äe ga želite shraniti.
635 633
636 634
637* RAZ©IRJEN NABOR UKAZOV 635* RAZÅ IRJEN NABOR UKAZOV
638------------------------ 636------------------------
639 637
640©e mnogo, mnogo je ukazov Emacsa, ki bi zaslu¾ili, da jih obesimo na 638Å e mnogo, mnogo je ukazov Emacsa, ki bi zaslužili, da jih obesimo na
641razne kontrolne in meta znake. Emacs se temu izogne z ukazom X (iz angl. 639razne kontrolne in meta znake. Emacs se temu izogne z ukazom X (iz angl.
642eXtend - raz¹iriti), ki uvede ukaz iz raz¹irjenega nabora. Dveh vrst je: 640eXtend - razÅ¡iriti), ki uvede ukaz iz razÅ¡irjenega nabora. Dveh vrst je:
643 641
644 C-x Znakovna raz¹iritev (angl. Character eXtend). 642 C-x Znakovna razÅ¡iritev (angl. Character eXtend).
645 Sledi mu en sam znak. 643 Sledi mu en sam znak.
646 M-x Raz¹iritev s poimenovanim ukazom. Sledi mu dolgo ime 644 M-x RazÅ¡iritev s poimenovanim ukazom. Sledi mu dolgo ime
647 ukaza. 645 ukaza.
648 646
649Tudi ti ukazi so na splo¹no uporabni, ne uporabljamo pa jih tako 647Tudi ti ukazi so na sploÅ¡no uporabni, ne uporabljamo pa jih tako
650pogosto kot tiste, ki ste se jih ¾e nauèili. Dva ukaza iz raz¹irjenega 648pogosto kot tiste, ki ste se jih že nauÄili. Dva ukaza iz razÅ¡irjenega
651nabora ¾e poznamo: C-x C-f, s katerim poi¹èemo datoteko, in C-x C-s, s 649nabora že poznamo: C-x C-f, s katerim poiÅ¡Äemo datoteko, in C-x C-s, s
652katerim datoteko shranimo. ©e en primer je ukaz, s katerim Emacsu 650katerim datoteko shranimo. Å e en primer je ukaz, s katerim Emacsu
653povemo, da ¾elimo konèati z delom iz iziti iz Emacsa. Ta ukaz je C-x 651povemo, da želimo konÄati z delom iz iziti iz Emacsa. Ta ukaz je C-x
654C-c (ne skrbite: preden konèa, Emacs ponudi, da shrani vse spremenjene 652C-c (ne skrbite: preden konÄa, Emacs ponudi, da shrani vse spremenjene
655datoteke). 653datoteke).
656 654
657Z ukazom C-z Emacs zapustimo samo *zaèasno*, tako da lahko ob vrnitvi 655ÄŒe uporabljate grafiÄni vmesnik, ne potrebujete posebnega ukaza za
658nadaljujemo z delom, kjer smo ostali. 656preklop iz Emacsa v katerikoli drug program, ampak to opravite z miško
657ali ukazom upravljalnika oken. ÄŒe pa uporabljate besedilni terminal,
658ki lahko prikazuje le en program naenkrat, morate zaÄasno zapustiti
659Emacs, da preklopite na drug program.
659 660
660Na sistemih, ki to dopu¹èajo, ukaz C-z izide iz Emacsa v ukazno 661Z ukazom C-z Emacs zapustimo samo *zaÄasno*, tako da lahko ob vrnitvi
661lupino, a ga ne konèa - èe uporabljate ukazno lupino C, se lahko 662nadaljujemo z delom, kjer smo ostali. Na sistemih, ki to dopuÅ¡Äajo,
662vrnete z ukazom ,fg` ali splo¹neje z ukazom ,,%emacs``. 663ukaz C-z izide iz Emacsa v ukazno lupino, a ga ne konÄa - Äe
664uporabljate ukazno lupino C, se lahko vrnete z ukazom »fg« ali
665splošneje z ukazom »%emacs«.
663 666
664Drugod ukaz C-z po¾ene sekundarno ukazno lupino, tako da lahko 667Drugod ukaz C-z požene sekundarno ukazno lupino, tako da lahko
665po¾enete kak¹en drug program in se kasneje vrnete v Emacs. V tem 668poženete kakÅ¡en drug program in se kasneje vrnete v Emacs. V tem
666primeru pravzaprav Emacsa ne zapustimo. Ukaz ,,exit`` v ukazni lupini 669primeru pravzaprav Emacsa ne zapustimo. Ukaz »exit« v ukazni lupini
667je navadno naèin, da zapremo sekundarno lupino in se vrnemo v Emacs. 670je navadno naÄin, da zapremo sekundarno lupino in se vrnemo v Emacs.
668 671
669Ukaz C-x C-c uporabimo, èe se nameravamo odjaviti s sistema. To je 672Ukaz C-x C-c uporabimo, Äe se nameravamo odjaviti s sistema. To je
670tudi pravilen naèin za izhod iz Emacsa, èe je tega pognal program za 673tudi pravilen naÄin za izhod iz Emacsa, Äe je tega pognal program za
671delo s po¹to ali kak drug program, saj ta verjetno ne ve, kaj 674delo s poÅ¡to ali kak drug program.
672napraviti z zaèasno prekinjenim Emacsom. V vseh ostalih primerih pa,
673èe se ne nameravate odjaviti s sistema, uporabite C-z, in se vrnite v
674Emacs, ko bi radi spet urejali besedilo.
675 675
676Ukazov C-x je veliko. Zaenkrat smo spoznali naslednje: 676Ukazov C-x je veliko. Zaenkrat smo spoznali naslednje:
677 677
678 C-x C-f Poi¹èi datoteko. 678 C-x C-f PoiÅ¡Äi datoteko.
679 C-x C-s Shrani datoteko. 679 C-x C-s Shrani datoteko.
680 C-x C-b Prika¾i seznam delovnih podroèij. 680 C-x C-b Prikaži seznam delovnih podroÄij.
681 C-x C-c Konèaj Emacs. 681 C-x C-c KonÄaj Emacs.
682 C-x 1 Zapri vsa okna razen enega. 682 C-x 1 Zapri vsa okna razen enega.
683 C-x u Preklic zadnjega ukaza. 683 C-x u Preklic zadnjega ukaza.
684 684
685Poimenovani raz¹irjeni ukazi so ukazi, ki se uporabljajo ¹e bolj 685Poimenovani razÅ¡irjeni ukazi so ukazi, ki se uporabljajo Å¡e bolj
686poredko, ali pa se uporabljajo samo v nekaterih naèinih dela. Eden 686poredko, ali pa se uporabljajo samo v nekaterih naÄinih dela. Eden
687takih je na primer ukaz replace-string, ki po vsem besedilu zamenja en 687takih je na primer ukaz replace-string, ki po vsem besedilu zamenja en
688niz znakov z drugim. Ko vtipkate M-x, se to izpi¹e v pogovornem 688niz znakov z drugim. Ko vtipkate M-x, se to izpiÅ¡e v pogovornem
689vmesniku na dnu zaslona, Emacs pa èaka, da vtipkate ime ukaza, ki ga 689vmesniku na dnu zaslona, Emacs pa Äaka, da vtipkate ime ukaza, ki ga
690¾elite priklicati; v tem primeru je to ,,replace-string``. Vtipkajte 690želite priklicati; v tem primeru je to »replace-string«. Vtipkajte
691samo ,,repl s<TAB>`` in Emacs bo dopolnil ime (<TAB> je tabulatorska 691samo »repl s<TAB>« in Emacs bo dopolnil ime (<TAB> je tabulatorska
692tipka; navadno jo najdemo nad tipko Caps Lock ali Shift na levi strani 692tipka; navadno jo najdemo nad tipko Caps Lock ali Shift na levi strani
693tipkovnice). Ukaz vnesete s pritiskom na <Return>. 693tipkovnice). Ukaz vnesete s pritiskom na <Return>.
694 694
695Ukaz replace-string potrebuje dva argumenta -- niz, ki ga ¾elite 695Ukaz replace-string potrebuje dva argumenta -- niz, ki ga želite
696zamenjati, in niz, s katerim bi radi zamenjali prvega. Vsakega posebej 696zamenjati, in niz, s katerim bi radi zamenjali prvega. Vsakega posebej
697vnesete in zakljuèite s pritiskom na tipko Return. 697vnesete in zakljuÄite s pritiskom na tipko Return.
698 698
699>> Premaknite kazalèek na prazno vrstico dve vrstici pod to, zatem 699>> Premaknite kazalÄek na prazno vrstico dve vrstici pod to, zatem
700 vtipkajte M-x repl s<Return>zamenjala<Return>spremenila<Return>. 700 vtipkajte M-x repl s<Return>zamenjala<Return>spremenila<Return>.
701 701
702 Opazite, kako se je ta vrstica zamenjala? Vse besede 702 Opazite, kako se je ta vrstica zamenjala? Vse besede
703 z-a-m-e-n-j-a-l-a od tod do konca besedila ste nadomestili z besedo 703 z-a-m-e-n-j-a-l-a od tod do konca besedila ste nadomestili z besedo
704 ,,spremenila``. 704 »spremenila«.
705 705
706 706
707* AVTOMATIÈNO SHRANJEVANJE 707* AVTOMATIÄŒNO SHRANJEVANJE
708-------------------------- 708--------------------------
709 709
710Spremembe v datoteki, ki jih ¹e niste shranili na disk, so izgubljene, 710Spremembe v datoteki, ki jih Å¡e niste shranili na disk, so izgubljene,
711èe medtem denimo zmanjka elektrike. Da bi vas zavaroval pred tem, 711Äe medtem denimo zmanjka elektrike. Da bi vas zavaroval pred tem,
712Emacs periodièno avtomatièno shrani vse datoteke, ki jih 712Emacs periodiÄno avtomatiÄno shrani vse datoteke, ki jih
713urejate. Avtomatièno shranjena datoteka se od izvorne razlikuje po 713urejate. AvtomatiÄno shranjena datoteka se od izvorne razlikuje po
714znaku ,#` na zaèetku in koncu imena: èe se je va¹a datoteka imenovala 714znaku »#« na zaÄetku in koncu imena: Äe se je vaÅ¡a datoteka imenovala
715,,hello.c``, se avtomatièno shranjena datoteka imenuje 715»hello.c«, se avtomatiÄno shranjena datoteka imenuje
716,,#hello.c#``. Ko normalno shranite datoteko, avtomatièno shranjena 716»#hello.c#«. Ko normalno shranite datoteko, avtomatiÄno shranjena
717datoteka ni veè potrebna, in Emacs jo pobri¹e. 717datoteka ni veÄ potrebna, in Emacs jo pobriÅ¡e.
718 718
719Èe res pride do izgube podatkov v pomnilniku, lahko povrnete avtomatièno 719ÄŒe res pride do izgube podatkov v pomnilniku, lahko povrnete avtomatiÄno
720shranjeno besedilo tako, da normalno poi¹èete datoteko (pravo ime 720shranjeno besedilo tako, da normalno poiÅ¡Äete datoteko (pravo ime
721datoteke, ne ime avtomatièno shranjene datoteke), zatem pa vtipkate M-x 721datoteke, ne ime avtomatiÄno shranjene datoteke), zatem pa vtipkate M-x
722recover file<Return>. Ko vas vpra¹a za potrditev, vtipkajte yes<Return> 722recover-file <Return>. Ko vas vpraÅ¡a za potrditev, vtipkajte yes<Return>
723za nadaljevanje in povrnitev avtomatièno shranjenenih podatkov. 723za nadaljevanje in povrnitev avtomatiÄno shranjenenih podatkov.
724 724
725 725
726* ODZIVNO PODROÈJE 726* ODZIVNO PODROÄŒJE
727------------------ 727------------------
728 728
729Kadar Emacs opazi, da poèasi vtipkavate ukaz, odpre v zadnji vrstici 729Kadar Emacs opazi, da poÄasi vtipkavate ukaz, odpre v zadnji vrstici
730na dnu zaslona odzivno podroèje in v njem sproti prikazuje natipkano. 730na dnu zaslona odzivno podroÄje in v njem sproti prikazuje natipkano.
731 731
732 732
733* STATUSNA VRSTICA 733* STATUSNA VRSTICA
734------------------ 734------------------
735 735
736Vrstica nad odzivnim podroèjem je statusna vrstica. Ta ka¾e verjetno 736Vrstica nad odzivnim podroÄjem je statusna vrstica. Ta kaže verjetno
737nekaj podobnega kot: 737nekaj podobnega kot:
738 738
739--:** TUTORIAL (Fundamental)--L670--58%---------------------- 739--:**- TUTORIAL (Fundamental)--L670--58%----------------------
740 740
741V njej so izpisani pomembni podatki o stanju Emacsa in besedilu, ki ga 741V njej so izpisani pomembni podatki o stanju Emacsa in besedilu, ki ga
742urejate. 742urejate.
743 743
744Zdaj ¾e veste, kaj pomeni ime datoteke -- to je datoteka, ki ste jo 744Zdaj že veste, kaj pomeni ime datoteke -- to je datoteka, ki ste jo
745poiskali. Oznaka --NN%-- pomeni, da je nad vrhom zaslona ¹e NN 745poiskali. Oznaka --NN%-- pomeni, da je nad vrhom zaslona Å¡e NN
746odstotkov celotne datoteke. Èe je zaèetek datoteke na zaslonu, bo 746odstotkov celotne datoteke. ÄŒe je zaÄetek datoteke na zaslonu, bo
747namesto --00%-- pisalo --Top--. Podobno bo pisalo --Bot--, èe je 747namesto »0%« pisalo »Top«. Podobno bo pisalo »Bot«, Äe je
748zadnja vrstica datoteke na zaslonu. Èe je datoteka, ki jo ogledujete, 748zadnja vrstica datoteke na zaslonu. ÄŒe je datoteka, ki jo ogledujete,
749tako kratka, da gre vsa na en zaslon, pa bo pisalo --All--. 749tako kratka, da gre vsa na en zaslon, pa bo pisalo »All«.
750 750
751Èrka L in ¹tevilke za njo ka¾ejo polo¾aj ¹e drugaèe, kot zaporedno 751ÄŒrka L in Å¡tevilke za njo kažejo položaj Å¡e drugaÄe, kot zaporedno
752¹tevilko vrstice, v kateri je kazalèek. 752Å¡tevilko vrstice, v kateri je kazalÄek.
753 753
754Zvezdice na zaèetku vrstice pomenijo, da ste datoteko ¾e spreminjali. 754Zvezdice na zaÄetku vrstice pomenijo, da ste datoteko že spreminjali.
755Tik po tem, ko ste odprli ali shranili datoteko, ni nobenih zvezdic, 755Tik po tem, ko ste odprli ali shranili datoteko, ni nobenih zvezdic,
756so samo èrtice. 756so samo Ärtice.
757 757
758Del statusne vrstice znotraj oklepajev vam pove, v kak¹nem naèinu dela 758Del statusne vrstice znotraj oklepajev vam pove, v kakÅ¡nem naÄinu dela
759Emacs. Privzeti naèin je osnovni naèin (Fundamental), v katerem ste 759Emacs. Privzeti naÄin je osnovni naÄin (Fundamental), v katerem ste
760sedaj. Fundamental je eden od glavnih naèinov (angl. major 760sedaj. Fundamental je eden od glavnih naÄinov (angl. major
761mode). Emacs pozna veliko razliènih glavnih naèinov. Nekateri od njih 761mode). Emacs pozna veliko razliÄnih glavnih naÄinov. Nekateri od njih
762so namenjeni pisanju programov, kot na primer Lisp, ali pisanju 762so namenjeni pisanju programov, kot na primer Lisp, ali pisanju
763besedil, kot npr. Text. Naenkrat je lahko aktiven le en glavni naèin, 763besedil, kot npr. Text. Naenkrat je lahko aktiven le en glavni naÄin,
764njegovo ime pa je vedno izpisano v statusni vrstici, kjer zdaj pi¹e 764njegovo ime pa je vedno izpisano v statusni vrstici, kjer zdaj piÅ¡e
765Fundamental. 765Fundamental.
766 766
767Glavni naèini lahko spremenijo pomen nekaterim ukazom. Obstajajo, 767Glavni naÄini lahko spremenijo pomen nekaterim ukazom. Obstajajo,
768denimo, ukazi za pisanje komentarjev v programu, in ker ima vsak 768denimo, ukazi za pisanje komentarjev v programu, in ker ima vsak
769programski jezik svoje predstave o tem, kako mora komentar izgledati, 769programski jezik svoje predstave o tem, kako mora komentar izgledati,
770mora vsak glavni naèin vnesti komentarje drugaèe. Ker je vsak glavni 770mora vsak glavni naÄin vnesti komentarje drugaÄe. Ker je vsak glavni
771naèin ime raz¹irjenega ukaza, lahko tako tudi izbiramo glavni 771naÄin ime razÅ¡irjenega ukaza, lahko tako tudi izbiramo glavni
772naèin. Na primer, M-x fundamental-mode vas postavi v naèin 772naÄin. Na primer, M-x fundamental-mode vas postavi v naÄin
773Fundamental. 773Fundamental.
774 774
775Èe nameravate popravljati slovensko (ali angle¹ko) besedilo, kot je na 775ÄŒe nameravate popravljati slovensko (ali angleÅ¡ko) besedilo, kot je na
776primer tole, boste verjetno izbrali tekstovni naèin (Text). 776primer tole, boste verjetno izbrali tekstovni naÄin (Text).
777>> Vtipkajte M-x text mode<Return>. 777>> Vtipkajte M-x text-mode <Return>.
778 778
779Brez skrbi, noben od ukazov Emacsa, ki ste se jih nauèili, se s tem ne 779Brez skrbi, noben od ukazov Emacsa, ki ste se jih nauÄili, se s tem ne
780spremeni kaj dosti. Lahko pa opazite, da Emacs zdaj jemlje opu¹èaje za 780spremeni kaj dosti. Lahko pa opazite, da Emacs zdaj jemlje opuÅ¡Äaje za
781dele besed, ko se premikate z M-f ali M-b. V osnovnem naèinu jih je 781dele besed, ko se premikate z M-f ali M-b. V osnovnem naÄinu jih je
782obravnaval kot meje med besedami. 782obravnaval kot meje med besedami.
783 783
784Glavni naèini navadno poèenjajo majhne spremembe, kot je ta: veèina 784Glavni naÄini navadno poÄenjajo majhne spremembe, kot je ta: veÄina
785ukazov ,,opravi isti posel``, vendar pa to poènejo na razlièen naèin. 785ukazov »opravi isti posel«, vendar pa to poÄnejo na razliÄen naÄin.
786 786
787Dokumentacijo o trenutno aktivnem glavnem naèinu dobite z ukazom C-h m. 787Dokumentacijo o trenutno aktivnem glavnem naÄinu dobite z ukazom C-h m.
788 788
789>> Uporabite C-u C-v enkrat ali veèkrat, toliko, da bo ta vrstica blizu 789>> Vtipkajte C-l C-l, da postavite to vrstico na vrh zaslona.
790 vrha zaslona. 790>> Vtipkajte C-h m, da vidite, v Äem se tekstovni naÄin (Text) razlikuje
791>> Vtipkajte C-h m, da vidite, v èem se tekstovni naèin (Text) razlikuje
792 od osnovnega (Fundamental). 791 od osnovnega (Fundamental).
793>> Vtipkajte C-x 1, da umaknete dokumentacijo z zaslona. 792>> Vtipkajte C-x 1, da umaknete dokumentacijo z zaslona.
794 793
795Glavnim naèinom pravimo glavni naèini zato, ker obstajajo tudi 794Glavnim naÄinom pravimo glavni naÄini zato, ker obstajajo tudi
796podnaèini (angl. minor modes). Podnaèini ne nadome¹èajo glavnih 795podnaÄini (angl. minor modes). PodnaÄini ne nadomeÅ¡Äajo glavnih
797naèinom, ampak le spreminjajo njihovo obna¹anje. Podnaèine lahko 796naÄinom, ampak le spreminjajo njihovo obnaÅ¡anje. PodnaÄine lahko
798aktiviramo ali deaktiviramo neodvisno od glavnega naèina in neodvisno 797aktiviramo ali deaktiviramo neodvisno od glavnega naÄina in neodvisno
799od ostalih podnaèinov. Tako lahko ne uporabljate nobenega podnaèina, 798od ostalih podnaÄinov. Tako lahko ne uporabljate nobenega podnaÄina,
800en podnaèin, ali kombinacijo veèih podnaèinov. 799en podnaÄin, ali kombinacijo veÄih podnaÄinov.
801 800
802Podnaèin, ki je zelo uporaben posebno za pisanje besedil, je Auto 801PodnaÄin, ki je zelo uporaben posebno za pisanje besedil, je Auto
803Fill. Ko je vklopljen, Emacs med pisanjem avtomatièno deli vrstice na 802Fill. Ko je vklopljen, Emacs med pisanjem avtomatiÄno deli vrstice na
804presledkih med besedami, tako da vrstice niso predolge. 803presledkih med besedami, tako da vrstice niso predolge.
805 804
806Vklopite ga lahko z ukazom M-x auto fill mode<Return>. Ko je 805Vklopite ga lahko z ukazom M-x auto-fill-mode <Return>. Ko je
807vklopljen, ga lahko izklopite z istim ukazom, M-x 806vklopljen, ga lahko izklopite z istim ukazom, M-x auto-fill-mode
808auto fill mode<Return>. Z istim ukazom torej preklapljamo 807<Return>. Z istim ukazom torej preklapljamo (angl. toggle) med
809(angl. toggle) med vklopljenim in izklopljenim stanjem. 808vklopljenim in izklopljenim stanjem.
810 809
811>> Vtipkajte zdaj M-x auto fill mode<Return>. Potem zaènite tipkati 810>> Vtipkajte zdaj M-x auto-fill-mode <Return>. Potem zaÄnite tipkati
812 "asdf asdkl sdjf sdjkf"... dokler ne opazite, da je Emacs razbil 811 »asdf asdkl sdjf sdjkf«... dokler ne opazite, da je Emacs razbil
813 vrstico na dve. Med tipkanjem mora biti dovolj presledkov, saj 812 vrstico na dve. Med tipkanjem mora biti dovolj presledkov, saj
814 Auto Fill prelamlja vrstice samo na presledkih. 813 Auto Fill prelamlja vrstice samo na presledkih.
815 814
816©irina besedila je navadno postavljena na 70 znakov, kar pa lahko 815Å irina besedila je navadno postavljena na 70 znakov, kar pa lahko
817spremenite z ukazom C-x f. Novo ¹irino morate podati kot ¹tevilèni 816spremenite z ukazom C-x f. Novo Å¡irino morate podati kot Å¡tevilÄni
818argument. 817argument.
819 818
820>> Vtipkajte C-x f in argument 20. (C-u 2 0 C-x f). Zatem vtipkajte 819>> Vtipkajte C-x f in argument 20. (C-u 2 0 C-x f). Zatem vtipkajte
821 nekaj besedila in poglejte, èe bo Emacs res delil vrstice pri 20 820 nekaj besedila in poglejte, Äe bo Emacs res delil vrstice pri 20
822 znakih. Potem z ukazom C-x f postavite mejo nazaj na 70. 821 znakih. Potem z ukazom C-x f postavite mejo nazaj na 70.
823 822
824Auto Fill deluje le, kadar pi¹ete novo besedilo, ne pa, 823Auto Fill deluje le, kadar piÅ¡ete novo besedilo, ne pa,
825kadar popravljate ¾e napisan odstavek. 824kadar popravljate že napisan odstavek.
826Tak odstavek lahko poravnate tako, da kazalèek premaknete nekam 825Tak odstavek lahko poravnate tako, da kazalÄek premaknete nekam
827znotraj odstavka in uka¾ete M-q (META-q). 826znotraj odstavka in ukažete M-q (META-q).
828 827
829>> Premaknite kazalèek v prej¹nji odstavek in izvedite M-q. 828>> Premaknite kazalÄek v prejÅ¡nji odstavek in izvedite M-q.
830 829
831 830
832* ISKANJE 831* ISKANJE
833--------- 832---------
834 833
835Emacs lahko v besedilu poi¹èe niz znakov (zaporedje znakov ali besed), 834Emacs lahko v besedilu poiÅ¡Äe niz znakov (»niz« je zaporedje soslednih
836naprej ali nazaj po besedilu. Iskanje spada v skupino ukazov za 835znakov), naprej ali nazaj po besedilu. Iskanje spada v skupino ukazov
837premikanje kazalèka, saj premakne kazalèek na kraj v besedilu, kjer je 836za premikanje kazalÄka, saj premakne kazalÄek na kraj v besedilu, kjer
838na¹el iskani niz. 837je naÅ¡el iskani niz.
839 838
840Iskanje v Emacsu je morda nekoliko drugaèno od tistega, ki ste ga 839Iskanje v Emacsu je »inkrementalno«. To pomeni, da se iskanje odvija
841navajeni, in sicer je ,,inkrementalno``. To pomeni, da se iskanje 840hkrati s tem, ko tipkate iskani niz.
842odvija hkrati s tem, ko tipkate iskani niz.
843 841
844Ukaza za iskanje sta C-s za iskanje naprej po datoteki in C-r za 842Ukaza za iskanje sta C-s za iskanje naprej po datoteki in C-r za
845iskanje nazaj po datoteki. POÈAKAJTE! Ne preizku¹ajte jih ¹e ta hip! 843iskanje nazaj po datoteki. POÄŒAKAJTE! Ne preizkuÅ¡ajte jih Å¡e ta hip!
846 844
847Ko boste natipkali C-s, boste opazili niz ,,I-search`` kot pozivnik 845Ko boste natipkali C-s, boste opazili niz »I-search« kot pozivnik
848v pogovornem vmesniku. To vam pove, da je Emacs v inkrementalnem iskanju 846v pogovornem vmesniku. To vam pove, da je Emacs v inkrementalnem iskanju
849in vas èaka, da zaènete tipkati, kar i¹èete. <Return> zakljuèi iskanje. 847in vas Äaka, da zaÄnete tipkati, kar iÅ¡Äete. <Return> zakljuÄi iskanje.
850 848
851>> Pritisnite zdaj C-s. POÈASI, èrko za èrko, vtipkajte besedo 849>> Pritisnite zdaj C-s. POÄŒASI, Ärko za Ärko, vtipkajte besedo
852 ,,kazalèek``. Za vsako vtipkano èrko se ustavite in si oglejte, kaj 850 »kazalÄek«. Za vsako vtipkano Ärko se ustavite in si oglejte, kaj
853 se je zgodilo s kazalèkom. 851 se je zgodilo s kazalÄkom.
854>> ©e enkrat pritisnite C-s, da poi¹èete naslednji ,,kazalèek``. 852>> Å e enkrat pritisnite C-s, da poiÅ¡Äete naslednji »kazalÄek«.
855>> ©estkrat pritisnite <Delback> in opazujte, kako se premika kazalèek. 853>> Å estkrat pritisnite <DEL> in opazujte, kako se premika kazalÄek.
856>> Konèajte iskanje s tipko <Return>. 854>> KonÄajte iskanje s tipko <Return>.
857 855
858Ste videli, kaj se je zgodilo? Emacs pri inkrementalnem iskanju sku¹a 856Ste videli, kaj se je zgodilo? Emacs pri inkrementalnem iskanju skuÅ¡a
859poiskati niz, ki ste ga natipkali do tistega hipa. Da poi¹èete 857poiskati niz, ki ste ga natipkali do tistega hipa. Da poiÅ¡Äete
860naslednje mesto, kjer se pojavi ,,kazalèek``, samo ¹e enkrat 858naslednje mesto, kjer se pojavi »kazalÄek«, samo Å¡e enkrat
861pritisnete C-s. Èe takega mesta ni, Emacs èivkne in vam sporoèi, da 859pritisnete C-s. ÄŒe takega mesta ni, Emacs Äivkne in vam sporoÄi, da
862iskanje ni uspelo. Tudi C-g prekine iskanje. 860iskanje ni uspelo. Tudi C-g prekine iskanje.
863 861
864OPOZORILO: Na nekaterih sistemih bo s pritiskom na C-s ekran 862ÄŒe sredi inkrementalnega iskanja pritisnete <DEL>, boste opazili,
865zmrznil. To je znak, da je operacijski sistem prestregel znak C-s in 863da to pobriÅ¡e zadnji znak v iskanem nizu, kazalÄek pa se premakne
866ga interpretiral kot znak za prekinitev toka podatkov, namesto da bi 864nazaj na mesto v besedilu, kjer je našel krajši niz. Na primer,
867ga posredoval programu Emacs. Ekran ,,odtajate`` s pritiskom na 865predpostavimo, da ste do zdaj natipkali »ka« in je kazalÄek na
868C-q. Potem si oglejte razdelek ,,Spontaneous Entry to Incremental 866mestu, kjer se prviÄ pojavi »ka«. ÄŒe zdaj pritisnete <DEL>, boste
869Search`` v priroèniku za nasvet, kako se spopasti s to nev¹eènostjo. 867s tem v pogovornem vmesniku izbrisali »a«, hkrati pa se bo kazalÄek
870 868postavil na mesto, kjer je prviÄ naÅ¡el »k«, preden ste natipkali Å¡e
871Èe sredi inkrementalnega iskanja pritisnete <Delback>, boste opazili, 869»a«.
872da to pobri¹e zadnji znak v iskanem nizu, kazalèek pa se premakne 870
873nazaj na mesto v besedilu, kjer je na¹el kraj¹i niz. Na primer, 871ÄŒe sredi iskanja vtipkate katerikoli kontrolni znaki ali metaznak
874predpostavimo, da ste do zdaj natipkali ,,ka`` in je kazalèek na
875mestu, kjer se prviè pojavi ,,ka``. Èe zdaj pritisnete <Delback>, boste
876s tem v pogovornem vmesniku izbrisali ,a`, hkrati pa se bo kazalèek
877postavil na mesto, kjer je prviè na¹el ,k`, preden ste natipkali ¹e
878,a`.
879
880Èe sredi iskanja vtipkate katerikoli kontrolni znaki ali metaznak
881(razen tistih, ki imajo poseben pomen pri iskanju, to sta C-s in C-r), 872(razen tistih, ki imajo poseben pomen pri iskanju, to sta C-s in C-r),
882se iskanje prekine. 873se iskanje prekine.
883 874
884C-s zaène iskati na mestu v datoteki, kjer trenutno stoji kazalèek, in 875C-s zaÄne iskati na mestu v datoteki, kjer trenutno stoji kazalÄek, in
885i¹èe do konca datoteke. Èe bi radi iskali proti zaèetku datoteke, 876iÅ¡Äe do konca datoteke. ÄŒe bi radi iskali proti zaÄetku datoteke,
886namesto C-s vtipkamo C-r. Vse, kar smo povedali o ukazu C-s, velja 877namesto C-s vtipkamo C-r. Vse, kar smo povedali o ukazu C-s, velja
887tudi za C-r, le smer iskanja je obrnjena. 878tudi za C-r, le smer iskanja je obrnjena.
888 879
889 880
890* VEÈ OKEN NA ZASLONU 881* VEÄŒ OKEN NA ZASLONU
891--------------------- 882---------------------
892 883
893Ena simpatiènih lastnosti Emacsa je, da zna hkrati prikazati veè oken 884Ena simpatiÄnih lastnosti Emacsa je, da zna hkrati prikazati veÄ oken
894na ekranu, tudi èe ne delamo v grafiènem naèinu. 885na zaslonu, tudi Äe ne delamo v grafiÄnem naÄinu. (Opozorimo naj, da
886Emacs uporablja izraz »okvir« (angl. »frame«) - razložen je v
887naslednjem razdelku - za tisto, Äemur nekateri drugi programi pravijo
888»okno« (angl. »window«). PriroÄnik za Emacs vsebuje glosar
889uporabljenih izrazov.)
895 890
896>> Premaknite kazalèek v to vrstico in vtipkajte C-u 0 C-l (zadnji 891>> Premaknite kazalÄek v to vrstico in vtipkajte C-l C-l.
897 znak je CONTROL-L, ne CONTROL-1)
898>> Zdaj vtipkajte C-x 2, da razdelite zaslon na dve okni. 892>> Zdaj vtipkajte C-x 2, da razdelite zaslon na dve okni.
899 V obeh oknih imate odprt ta priroènik. Kazalèek je ostal v zgornjem 893 V obeh oknih imate odprt ta priroÄnik. KazalÄek je ostal v zgornjem
900 oknu. 894 oknu.
901>> Pritisnite C-M-v za listanje v spodnjem oknu. 895>> Pritisnite C-M-v za listanje v spodnjem oknu.
902 (Èe nimate tipke META, tipkajte ESC C-v). 896 (ÄŒe nimate tipke META, tipkajte ESC C-v).
903>> Vtipkajte C-x o (o kot ,,other``, drugi), da preselite kazalèek v 897>> Vtipkajte C-x o (o kot »other«, drugi), da preselite kazalÄek v
904 spodnje okno. 898 spodnje okno.
905>> S C-v in M-v se v spodnjem oknu premikate po vsebini datoteke. 899>> Z ukazoma C-v in M-v se v spodnjem oknu premikate po vsebini
906 Zgornje okno ¹e vedno ka¾e ta navodila. 900 datoteke. Zgornje okno Å¡e vedno kaže ta navodila.
907>> Ponovni C-x o vas vrne v zgornje okno. Kazalèek se je vrnil na 901>> Ponovni C-x o vas vrne v zgornje okno. KazalÄek se je vrnil na
908 mesto, kjer je bil, preden smo skoèili v spodnje okno. 902 mesto, kjer je bil, preden smo skoÄili v spodnje okno.
909 903
910Z ukazom C-x o lahko preklapljamo med okni. Vsako okno si zapomni, kje 904Z ukazom C-x o lahko preklapljamo med okni. Izbrano okno, torej tisto,
911v oknu je ostal kazalèek, samo trenutno aktivno okno pa kazalèek tudi 905v katerem urejamo besedilo, je tisto z zelo opaznim kazalÄkom, ki
912v resnici prika¾e. Vsi obièajni ukazi za urejanje, ki smo se jih 906utripa, kadar ne tipkamo. Tudi ostala okna pa si zapomnijo, kje je
913nauèili, veljajo za aktivno okno. 907ostal kazalÄek. ÄŒe poganjate Emacs v grafiÄnem naÄinu, je položaj
908kazalÄka v teh oknih prikazan kot ne-utripajoÄ Ärtni pravokotnik.
914 909
915Ukaz C-M-v je zelo uporaben, kadar urejamo besedilo v enem oknu, 910Ukaz C-M-v je zelo uporaben, kadar urejamo besedilo v enem oknu,
916drugega pa uporabljamo samo za pomoè. Kazalèek ostaja ves èas v oknu, 911drugega pa uporabljamo samo za pomoÄ. Ne da bi zapustili izbrano okno,
917v katerem urejamo, po vsebini spodnjega okna pa se vseeno lahko 912se lahko premikamo po vsebini drugega okna z ukazon C-M-v.
918premikamo, ne da bi morali venomer skakati iz enega okna v drugega.
919 913
920C-M-v je primer znaka CONTROL-META. Èe imate v resnici tipko META (na 914C-M-v je primer znaka CONTROL-META. ÄŒe imate v resnici tipko META (na
921PC navadno levi Alt), lahko vtipkate C-M-v tako, da dr¾ite pritisnjeni 915PC navadno levi Alt), lahko vtipkate C-M-v tako, da držite pritisnjeni
922tako CONTROL kot META, medtem ko vtipkate v. Ni pomembno, katero od 916tako CONTROL kot META, medtem ko vtipkate v. Ni pomembno, katero od
923tipk, CONTROL ali META, pritisnete prvo, saj obe delujeta ¹ele, ko 917tipk, CONTROL ali META, pritisnete prvo, saj obe delujeta Å¡ele, ko
924pritisnete znak, ki sledi (v zgornjem primeru ,v`). 918pritisnete znak, ki sledi (v zgornjem primeru »v«).
925 919
926Nasprotno pa je vrstni red pritiskanja pomemben, èe nimate tipke META 920Nasprotno pa je vrstni red pritiskanja pomemben, Äe nimate tipke META
927in namesto nje uporabljate ESC. V tem primeru morate najprej 921in namesto nje uporabljate <ESC>. V tem primeru morate najprej
928pritisniti ESC, potem pa Control-v. Obratna kombinacija, CONTROL-ESC v 922pritisniti <ESC>, potem pa Control-v. Obratna kombinacija,
929ne deluje. To je zato, ker je ESC znak sam po sebi, ne pa modifikator, 923CONTROL-<ESC> ne deluje. To je zato, ker je <ESC> znak sam po sebi, ne
930kot sta CONTROL in META. 924pa modifikator, kot sta CONTROL in META.
931 925
932>> V zgornjem oknu vtipkajte C-x 1, da se znebite spodnjega okna. 926>> V zgornjem oknu vtipkajte C-x 1, da se znebite spodnjega okna.
933 927
934(Èe bi vtipkali C-x 1 v spodnjem oknu, bi se znebili 928(ÄŒe bi vtipkali C-x 1 v spodnjem oknu, bi se znebili
935zgornjega. Razmi¹ljajte o tem ukazu kot ,,Obdr¾i samo eno okno, in 929zgornjega. RazmiÅ¡ljajte o tem ukazu kot »Obdrži samo eno okno, in
936sicer tisto, v katerem sem zdaj.``) 930sicer tisto, v katerem sem zdaj.«)
937 931
938Seveda ni nujno, da obe okni ka¾eta isto delovno podroèje. Èe v enem 932Seveda ni nujno, da obe okni kažeta isto delovno podroÄje. ÄŒe v enem
939oknu izvedete C-x C-f in poi¹èete novo datoteko, se vsebina drugega 933oknu izvedete C-x C-f in poiÅ¡Äete novo datoteko, se vsebina drugega
940okna ne spremeni. V vsakem oknu lahko neodvisno obdelujete drugo 934okna ne spremeni. V vsakem oknu lahko neodvisno obdelujete drugo
941datoteko. 935datoteko.
942 936
943Pa ¹e ena pot, kako v dveh oknih prika¾ete dve razlièni datoteki: 937Pa Å¡e ena pot, kako v dveh oknih prikažete dve razliÄni datoteki:
944 938
945>> Vtipkajte C-x 4 C-f, in na pozivnik vtipkajte ime ene va¹ih 939>> Vtipkajte C-x 4 C-f, in na pozivnik vtipkajte ime ene vaÅ¡ih
946 datotek. Konèajte z <Return>. Odpre se ¹e eno okno in izbrana 940 datotek. KonÄajte z <Return>. Odpre se Å¡e eno okno in izbrana
947 datoteka se pojavi v drugem oknu. Tudi kazalèek se preseli v drugo 941 datoteka se pojavi v drugem oknu. Tudi kazalÄek se preseli v drugo
948 okno. 942 okno.
949 943
950>> Vtipkajte C-x o, da se vrnete nazaj v zgornje okno, in C-x 1, da 944>> Vtipkajte C-x o, da se vrnete nazaj v zgornje okno, in C-x 1, da
951 zaprete spodnje okno. 945 zaprete spodnje okno.
952 946
953 947
948* VEČ HKRATNIH OKVIROV
949----------------------
950
951Emacs lahko ustvari tudi veÄ Â»okvirov«. Okvir je zbirka oken, skupaj z
952menuji, drsniki, pogovornim vmesnikom ipd. V grafiÄnem naÄinu je
953Emacsov »okvir« tisto, Äemur veÄina drugih programov pravi »okno«. ÄŒe
954delate v grafiÄnem naÄinu, je lahko veÄ okvirov hkrati prikazanih na
955zaslonu. V besedilnem terminalu imamo seveda na voljo le en okvir.
956
957>> Vtipkajte M-x make-frame <Return>
958 Opazite, kako se je na zaslonu pojavil nov okvir.
959
960Vse, kar ste poÄeli v prvotnem okviru, lahko poÄnete tudi v novem.
961Prvi okvir ni v niÄemer poseben.
962
963>> Vtipkajte M-x delete-frame <Return>
964 Ukaz izbriše izbrani okvir.
965
966Okvir lahko izbriÅ¡ete tudi z obiÄajnim naÄinom, ki ga ponuja grafiÄni
967sistem - pogosto s klikom na simbol »X« v enem od zgornjih kotov okna.
968ÄŒe zaprete zadnji okvir, s tem obenem zaprete tudi Emacs.
969
970
954* REKURZIVNI NIVOJI UREJANJA 971* REKURZIVNI NIVOJI UREJANJA
955---------------------------- 972----------------------------
956 973
957Vèasih boste pri¹li v nekaj, èemur se pravi ,,rekurzivni nivo 974VÄasih boste priÅ¡li v nekaj, Äemur se pravi »rekurzivni nivo
958urejanja``. To se vidi po tem, da v statusni vrstici oglati oklepaji 975urejanja«. To se vidi po tem, da v statusni vrstici oglati oklepaji
959oklepajo ime glavnega naèina. V osnovnem naèinu bi, na primer, videli 976oklepajo ime glavnega naÄina. V osnovnem naÄinu bi, na primer, videli
960[(Fundamental)] namesto (Fundamental). 977[(Fundamental)] namesto (Fundamental).
961 978
962Iz rekurzivnega nivoja urejanja se re¹ite, èe vtipkate ESC ESC ESC. To 979Iz rekurzivnega nivoja urejanja se reÅ¡ite, Äe vtipkate ESC ESC ESC. To
963zaporedje je vsenamenski ukaz ,,pojdi ven``. Uporabite ga lahko tudi 980zaporedje je vsenamenski ukaz »pojdi ven«. Uporabite ga lahko tudi
964za ukinjanje odveènih oken, ali vrnitev iz pogovornega vmesnika. 981za ukinjanje odveÄnih oken, ali vrnitev iz pogovornega vmesnika.
965 982
966>> Pritisnite M-x, da odprete pogovorni vmesnik, zatem pa vtipkajte 983>> Pritisnite M-x, da odprete pogovorni vmesnik, zatem pa vtipkajte
967 ESC ESC ESC, da pridete ven iz njega. 984 ESC ESC ESC, da pridete ven iz njega.
968 985
969Z ukazom C-g ne morete iz rekurzivnega nivoja urejanja, ker C-g 986Z ukazom C-g ne morete iz rekurzivnega nivoja urejanja, ker C-g
970preklièe ukaze ali argumente ZNOTRAJ rekurzivnega nivoja. 987prekliÄe ukaze ali argumente ZNOTRAJ rekurzivnega nivoja.
971 988
972 989
973* DODATNA POMOÈ 990* DODATNA POMOÄŒ
974--------------- 991---------------
975 992
976V tem uvodu smo posku¹ali zbrati dovolj informacij, da lahko zaènete 993V tem uvodu smo poskuÅ¡ali zbrati dovolj informacij, da lahko zaÄnete
977Emacs uporabljati. Emacs ponuja toliko, da bi bilo nemogoèe vse to 994Emacs uporabljati. Emacs ponuja toliko, da bi bilo nemogoÄe vse to
978zbrati tukaj. Verjetno pa bi se vseeno radi nauèili kaj o ¹tevilnih 995zbrati tukaj. Verjetno pa bi se vseeno radi nauÄili kaj o Å¡tevilnih
979koristnih mo¾nostih, ki jih ¹e ne poznate. Emacs ima ¾e vgrajene 996koristnih možnostih, ki jih Å¡e ne poznate. Emacs ima že vgrajene
980veliko dokumentacije, do katere lahko pridete s pritiskom na CONTROL-h 997veliko dokumentacije, do katere lahko pridete s pritiskom na CONTROL-h
981(h kot ,,help``, pomoè). 998(h kot »help«, pomoÄ).
982 999
983Za pomoè pritisnete C-h, potem pa vtipkate znak, ki pove, kak¹no pomoè 1000Za pomoÄ pritisnete C-h, potem pa vtipkate znak, ki pove, kakÅ¡no pomoÄ
984¾elite. Èe ste poplnoma izgubljeni, vtipkajte C-h ? in Emacs vam bo 1001želite. ÄŒe ste poplnoma izgubljeni, vtipkajte C-h ? in Emacs vam bo
985povedal, kak¹na pomoè je sploh na voljo. Èe ste vtipkali C-h, pa ste 1002povedal, kakÅ¡na pomoÄ je sploh na voljo. ÄŒe ste vtipkali C-h, pa ste
986si premislili, lahko ukaz preklièete s C-g. 1003si premislili, lahko ukaz prekliÄete s C-g.
987 1004
988(Na nekaterih sistemih se znak C-h preslika v kaj drugega. To ni 1005(ÄŒe C-h ne prikaže sporoÄila o pomoÄi na dnu zaslona, poskusite
989dobro, in v takem primeru se prito¾ite sistemskemu vzdr¾evalcu. Medtem 1006namesto tega pritisniti tipko F1 ali pa vtipkajte M-x help <Return>.)
990pa, èe C-h ne prika¾e sporoèila o pomoèi na dnu zaslona, namesto tega
991poskusite pritisniti tipko F1 ali pa vtipkajte M-x help <Return>.)
992 1007
993Najosnovnej¹i tip pomoèi prika¾e C-h c. Pritisnite C-h, tipko c, zatem 1008NajosnovnejÅ¡i tip pomoÄi prikaže C-h c. Pritisnite C-h, tipko c, zatem
994pa ukazni znak ali zaporedje ukaznih znakov, in Emacs bo izpisal 1009pa ukazni znak ali zaporedje ukaznih znakov, in Emacs bo izpisal
995kratek opis ukaza. 1010kratek opis ukaza.
996 1011
997>> Vtipkajte C-h c C-p. 1012>> Vtipkajte C-h c C-p.
998 Izpi¹e se nekaj takega kot 1013 IzpiÅ¡e se nekaj takega kot
999 1014
1000 C-p runs the command previous-line 1015 C-p runs the command previous-line
1001 1016
1002Ukaz je izpisal ime funkcije, ki izvede ukaz. Imena funkcij 1017Ukaz je izpisal ime funkcije, ki izvede ukaz. Ker so navadno imena
1003uporabljamo, kadar pi¹emo prilagoditve in raz¹iritve Emacsa. Ker pa so 1018funkcij izbrana tako, da kaj povedo o tem, kaj funkcija poÄne, bo
1004navadno imena funkcij izbrana tako, da kaj povedo o tem, kaj funkcija 1019verjetno to tudi dovolj za kratko osvežitev, Äe ste se z ukazom že
1005poène, bo verjetno to tudi dovolj za kratko osve¾itev, èe ste se z 1020kdaj sreÄali.
1006ukazom ¾e kdaj sreèali.
1007 1021
1008Ukazu C-h lahko sledi tudi zaporedje znakov, kot na primer C-x C-s, 1022Ukazu C-h lahko sledi tudi zaporedje znakov, kot na primer C-x C-s,
1009ali, èe nimate tipke META, <Esc>v. 1023ali, Äe nimate tipke META, <Esc>v.
1010 1024
1011Za veè informacij o ukazu vtipkajte C-h k namesto C-h c. 1025Za veÄ informacij o ukazu vtipkajte C-h k namesto C-h c.
1012 1026
1013>> Vtipkajte C-h k C-p. 1027>> Vtipkajte C-h k C-p.
1014 1028
1015To odpre novo okno in v njem prika¾e dokumentacijo o funkciji, obenem 1029To odpre novo okno in v njem prikaže dokumentacijo o funkciji, obenem
1016z njenim imenom. Ko ste opravili, vtipkajte C-x 1, da se znebite okna 1030z njenim imenom. Ko ste opravili, vtipkajte C-x 1, da se znebite okna
1017z pomoèjo. Tega seveda ni potrebno napraviti takoj, ampak lahko 1031z pomoÄjo. Tega ni potrebno napraviti ta hip. Namesto tega lahko
1018urejate, medtem ko imate odprto okno s pomoèjo, in ga zaprete, ko ste 1032urejate, medtem ko imate odprto okno s pomoÄjo, in ga zaprete, ko ste
1019konèali. 1033konÄali.
1020 1034
1021Sledi ¹e nekaj uporabnih mo¾nosti, ki jih ponuja pomoè: 1035Sledi Å¡e nekaj uporabnih možnosti, ki jih ponuja pomoÄ:
1022 1036
1023 C-h f Opi¹i funkcijo. Kot argument morate podati ime 1037 C-h f OpiÅ¡i funkcijo. Kot argument morate podati ime
1024 funkcije. 1038 funkcije.
1025 1039
1026>> Poskusite C-h f previous-line<Return>. 1040>> Poskusite C-h f previous-line <Return>.
1027 To izpi¹e vse podatke, ki jih ima Emacs o funkciji, ki izvede ukaz C-p. 1041 To izpiÅ¡e vse podatke, ki jih ima Emacs o funkciji, ki izvede ukaz C-p.
1028 1042
1029Podoben ukaz C-h v izpi¹e dokumentacijo za spremenljivke, s katerimi 1043Podoben ukaz C-h v izpiÅ¡e dokumentacijo za spremenljivke, vkljuÄno s
1030lahko nastavite obna¹anje Emacsa. Ob pozivniku morate vpisati ime 1044tistimi, s katerimi lahko nastavite obnaÅ¡anje Emacsa. Ob pozivniku
1031spremenljivke. 1045morate vpisati ime spremenljivke.
1032 1046
1033 C-h a Apropos. Vtipkajte kljuèno besedo in Emacs bo izpisal 1047 C-h a Apropos. Vtipkajte kljuÄno besedo in Emacs bo izpisal
1034 vse ukaze, ki vsebujejo to kljuèno besedo. Vse te 1048 vse ukaze, ki vsebujejo to kljuÄno besedo. Vse te
1035 ukaze lahko priklièete z META-x. Pri nekaterih ukazih 1049 ukaze lahko prikliÄete z META-x. Pri nekaterih ukazih
1036 bo Apropos izpisal tudi eno ali dvoznakovno 1050 bo Apropos izpisal tudi eno ali dvoznakovno
1037 zaporedje, s katerim dose¾ete isti uèinek. 1051 zaporedje, s katerim dosežete isti uÄinek.
1038 1052
1039>> Vtipkajte C-h a file<Return>. 1053>> Vtipkajte C-h a file <Return>.
1040 1054
1041To odpre novo okno, v katerem so vsa dolga imena ukazov, ki vsebujejo 1055To odpre novo okno, v katerem so vsa dolga imena ukazov, ki vsebujejo
1042,,file`` v imenu. Izvedete jih lahko z M-x. Pri nekaterih se izpi¹e 1056»file« v imenu. Izvedete jih lahko z M-x. Pri nekaterih se izpiÅ¡e
1043tudi kratek ukaz, npr. C-x C-f ali C-x C-w pri ukazih find-file in 1057tudi kratek ukaz, npr. C-x C-f ali C-x C-w pri ukazih find-file in
1044write-file. 1058write-file.
1045 1059
1046>> Pritisnite C-M-v, da se sprehajate po oknu s pomoèjo. Poskusite 1060>> Pritisnite C-M-v, da se sprehajate po oknu s pomoÄjo. Poskusite
1047 nekajkrat. 1061 nekajkrat.
1048 1062
1049>> Vtipkajte C-x 1, da zaprete okno s pomoèjo. 1063>> Vtipkajte C-x 1, da zaprete okno s pomoÄjo.
1050 1064
1051 C-h i Priroèniki z navodili za uporabo (tkim. datoteke 1065 C-h i PriroÄniki z navodili za uporabo (tkim. datoteke
1052 "info"). Ta ukaz vas prestavi v posebno delovno 1066 »info«). Ta ukaz vas prestavi v posebno delovno
1053 podroèje, imenovano "info". V njem lahko prebirate 1067 podroÄje, imenovano »*info*«. V njem lahko prebirate
1054 priroènike za programe, ki so name¹èeni v sistemu. Z 1068 priroÄnike za programe, ki so nameÅ¡Äeni v sistemu. Z
1055 ukazom m emacs<Return> denimo dobite priroènik za 1069 ukazom m emacs<Return> denimo dobite priroÄnik za
1056 urejevalnik Emacs. Èe sistema Info ¹e niste 1070 urejevalnik Emacs. ÄŒe sistema Info Å¡e niste
1057 uporabljali, vtipkajte ? in Emacs vas bo popeljal na 1071 uporabljali, vtipkajte ? in Emacs vas bo popeljal na
1058 vódeni izlet po naèinu Info in mo¾nostih, ki jih 1072 vódeni izlet po naÄinu Info in možnostih, ki jih
1059 ponuja. Ko boste zakljuèili z branjem tega prvega 1073 ponuja. Ko boste zakljuÄili z branjem tega prvega
1060 berila, bo priroènik za Emacs v sistemu Info va¹ 1074 berila, bo priroÄnik za Emacs v sistemu Info vaÅ¡
1061 glavni vir dokumentacije. 1075 glavni vir dokumentacije.
1062 1076
1063 1077
1064* DRUGE MO®NOSTI 1078* DRUGE MOŽNOSTI
1065---------------- 1079----------------
1066 1080
1067©e veè se lahko nauèite o Emacsu z branjem priroènika, bodisi 1081Å e veÄ se lahko nauÄite o Emacsu z branjem priroÄnika, bodisi
1068natisnjenega, bodisi na zaslonu v sistemu Info (uporabite menu Help 1082natisnjenega, bodisi znotraj samega Emacsa (uporabite menu Help ali
1069ali vtipkajte F10 h r). Dve mo¾nosti, ki vam bosta morda posebej v¹eè, 1083vtipkajte C-h r). Dve možnosti, ki vam bosta morda posebej vÅ¡eÄ, sta
1070sta samodejno zakljuèevanje vrstice, s katerim prihranite nekaj 1084samodejno zakljuÄevanje vrstice, s katerim prihranite nekaj tipkanja,
1071tipkanja, in dired, s katerim poenostavimo delo z datotekami. 1085in dired, s katerim poenostavimo delo z datotekami.
1072 1086
1073Samodejno zakljuèevanje vrstic je naèin, s katerim prihranimo nekaj 1087Samodejno zakljuÄevanje vrstic je naÄin, s katerim prihranimo nekaj
1074tipkanja. Èe ¾elite denimo preklopiti v delovno podroèje *Messages*, 1088tipkanja. ÄŒe želite denimo preklopiti v delovno podroÄje *Messages*,
1075je dovolj, da vtipkate C-x b *M<Tab> in Emacs bo sam dopolnil 1089je dovolj, da vtipkate C-x b *M<Tab> in Emacs bo sam dopolnil
1076preostanek imena delovnega podroèja. Samodejno zakljuèevanje je 1090preostanek imena delovnega podroÄja. Samodejno zakljuÄevanje deluje
1077opisano v sistemu Info v priroèniku za Emacs, razdelek ,,Completion``. 1091tudi za imena ukazov in imena datotek. Samodejno zakljuÄevanje je
1092opisano v priroÄniku za Emacs, razdelek »Completion«.
1078 1093
1079Dired omogoèa izpis seznama datotek v imeniku (in po mo¾nosti tudi 1094Dired omogoÄa izpis seznama datotek v imeniku (in po možnosti tudi
1080podimenikih), premikanje po seznamu, obiskovanje (odpiranje), 1095podimenikih), premikanje po seznamu, obiskovanje (odpiranje),
1081preimenovanje, brisanje in druge operacije z datotekami. Dired je 1096preimenovanje, brisanje in druge operacije z datotekami. Dired je
1082opisav v sistemu Info v priroèniku za Emacs, razdelek ,,Dired``. 1097opisav v priroÄniku za Emacs, razdelek »Dired«.
1083 1098
1084Priroènik opisuje tudi mnoge druge mo¾nosti Emacsa. 1099PriroÄnik opisuje tudi mnoge druge možnosti Emacsa.
1085 1100
1086 1101
1087* ZAKLJUÈEK 1102* ZAKLJUÄŒEK
1088----------- 1103-----------
1089 1104
1090Zapomnite si, da Emacs zapustite z ukazom C-x C-c. Èe bi radi samo 1105Emacs zapustite z ukazom C-x C-c.
1091zaèasno skoèili v ukazno lupino in se kasneje vrnili v Emacs, pa
1092storite to z ukazom C-z.
1093 1106
1094Ta uèbenik je napisan z namenom, da bi bil razumljiv vsem novincem v 1107Ta uÄbenik je napisan z namenom, da bi bil razumljiv vsem novincem v
1095Emacsu. Èe se vam kaj ne zdi jasno napisano, ne valite krivde nase - 1108Emacsu. ÄŒe se vam kaj ne zdi jasno napisano, ne valite krivde nase -
1096prito¾ite se! 1109pritožite se!
1097 1110
1098 1111
1099* RAZMNO®EVANJE IN RAZ©IRJANJE 1112* RAZMNOŽEVANJE IN RAZÅ IRJANJE
1100------------------------------ 1113------------------------------
1101 1114
1102Angle¹ki izvirnik tega uvoda v Emacs je naslednik dolge vrste tovrstnih 1115AngleÅ¡ki izvirnik tega uvoda v Emacs je naslednik dolge vrste tovrstnih
1103besedil, zaèen¹i s tistim, ki ga je Stuart Cracraft napisal za izvorni 1116besedil, zaÄenÅ¡i s tistim, ki ga je Stuart Cracraft napisal za izvorni
1104Emacs. V sloven¹èino ga je prevedel Primo¾ Peterlin. 1117Emacs. V slovenÅ¡Äino ga je prevedel Primož Peterlin.
1105 1118
1106To besedilo, kot sam GNU Emacs, je avtorsko delo, in njegovo 1119To besedilo, kot sam GNU Emacs, je avtorsko delo, in njegovo
1107razmno¾evanje in raz¹irjanje je dovoljeno pod naslednjimi pogoji: 1120razmnoževanje in razÅ¡irjanje je dovoljeno pod naslednjimi pogoji:
1121
1122Copyright © 1985, 1996, 1998, 2001-2012 Free Software Foundation, Inc.
1108 1123
1109Copyright (C) 1985, 1996, 1998, 2001-2012 Free Software Foundation, Inc. 1124 Ta datoteka je del paketa GNU Emacs.
1110 1125
1111 Dovoljeno je izdelovati in raz¹irjati neokrnjene kopije tega spisa 1126 GNU Emacs je prost program; lahko ga redistribuirate in/ali prirejate
1112 v kakr¹nikoli obliki pod pogojem, da je ohranjena navedba o 1127 po pogojih, doloÄenih v dovoljenju za rabo »GNU General Public License«,
1113 avtorstvu in to dovoljenje, ter da distributer dovoljuje prejemniku 1128 izdanem pri Free Software Foundation, bodisi 3. izdaje tega dovoljenja,
1114 nadaljnje raz¹irjanje pod pogoji, navedenimi v tem dovoljenju. 1129 bodisi katerekoli kasnejÅ¡e izdaje, ki je na voljo.
1115 1130
1116 Pod pogoji iz prej¹njega odstavka je dovoljeno raz¹irjati 1131 GNU Emacs je ponujen v dobri veri, da je uporaben, vendar zanj NI
1117 spremenjene verzije tega spisa ali njegovih delov, èe je jasno 1132 NOBENEGA JAMSTVA, niti implicitnih jamstev PRIMERNOSTI ZA PRODAJO
1118 oznaèeno, kdo je nazadnje vnesel spremembe. 1133 ali USTREZNOSTI ZA DOLOÄŒEN NAMEN. Podrobnosti so na voljo v »GNU
1134 General Public License«.
1119 1135
1120Pogoji za razmno¾evanje in raz¹irjanje samega Emacsa so malo drugaèni, 1136 Kopijo »GNU General Public License« bi morali prejeti skupaj s paketom
1121a v istem duhu. Prosimo, preberite datoteko COPYING in potem dajte 1137 GNU Emacs. ÄŒe je niste, je na voljo na <http://www.gnu.org/licenses/>.
1122kopijo programa GNU Emacs svojim prijateljem. Pomagajte zatreti 1138
1123obstrukcionizem (,,lastni¹tvo``) v programju tako, da uporabljate, 1139Prosimo, preberite datoteko COPYING in potem ponudite kopijo programa
1124pi¹ete in delite prosto programje! 1140GNU Emacs svojim prijateljem. Pomagajte zatreti obstrukcionizem
1141(»lastništvo«) v programju tako, da uporabljate, pišete in delite
1142prosto programje!
1125 1143
1126;;; Local Variables: 1144;;; Local Variables:
1127;;; coding: iso-latin-2 1145;;; coding: utf-8
1128;;; sentence-end-double-space: nil 1146;;; sentence-end-double-space: nil
1129;;; End: 1147;;; End:
1130
diff --git a/etc/tutorials/TUTORIAL.translators b/etc/tutorials/TUTORIAL.translators
index 64780687bb1..3ec948eb79a 100644
--- a/etc/tutorials/TUTORIAL.translators
+++ b/etc/tutorials/TUTORIAL.translators
@@ -2,8 +2,8 @@ This file contains the list of translators and maintainers of the
2tutorial. 2tutorial.
3 3
4* TUTORIAL.bg: 4* TUTORIAL.bg:
5Author: Ognyan Kulev <ogi@fmi.uni-sofia.bg> 5Author: Ognyan Kulev <ogi@tower.3.bg>
6Maintainer: Ognyan Kulev <ogi@fmi.uni-sofia.bg> 6Maintainer: Ognyan Kulev <ogi@tower.3.bg>
7 7
8* TUTORIAL.cn: 8* TUTORIAL.cn:
9Author: Sun Yijiang <sunyijiang@gmail.com> 9Author: Sun Yijiang <sunyijiang@gmail.com>
@@ -75,8 +75,8 @@ Author: Miroslav Vaško <vasko@debian.cz>
75Maintainer: Maintainer needed. 75Maintainer: Maintainer needed.
76 76
77* TUTORIAL.sl: 77* TUTORIAL.sl:
78Author: Primož Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si> 78Author: Primož Peterlin <primozz.peterlin@gmail.com>
79Maintainer: Primož Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si> 79Maintainer: Primož Peterlin <primozz.peterlin@gmail.com>
80 80
81* TUTORIAL.sv: 81* TUTORIAL.sv:
82Author: Mats Lidell <matsl@contactor.se> 82Author: Mats Lidell <matsl@contactor.se>
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 2813d80d9ff..97281db4c7c 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,136 @@
12012-01-23 Mike Lamb <mrlamb@gmail.com> (tiny change)
2
3 * eshell/esh-util.el (eshell-read-hosts-file):
4 Skip comment lines. (Bug#10549)
5
6 * eshell/em-unix.el (pcomplete/ssh): Remove. (Bug#10548)
7
82012-01-23 Juanma Barranquero <lekktu@gmail.com>
9
10 * subr.el (display-delayed-warnings): Doc fix.
11 (collapse-delayed-warnings): New function to collapse identical
12 adjacent warnings.
13 (delayed-warnings-hook): Add it.
14
152012-01-22 Michael Albinus <michael.albinus@gmx.de>
16
17 * net/tramp.el (tramp-action-login): Set connection property "login-as".
18
19 * net/tramp-cache.el (tramp-dump-connection-properties): Do not dump
20 properties, when "login-as" is set.
21
22 * net/tramp-sh.el (tramp-methods): Add user spec to "pscp" and "psftp".
23 (tramp-default-user-alist): Don't add "pscp".
24 (tramp-do-copy-or-rename-file-out-of-band): Use connection
25 property "login-as", if set. (Bug#10530)
26
272012-01-21 Michael Albinus <michael.albinus@gmx.de>
28
29 * net/tramp-sh.el (tramp-default-user-alist): Don't add "plink",
30 "plink1" and "psftp". (Bug#10530)
31
322012-01-21 Kenichi Handa <handa@m17n.org>
33
34 * international/mule-cmds.el (prefer-coding-system): Show a
35 warning message if the default value of file-name-coding-system
36 was not changed.
37
382012-01-21 Jérémy Compostella <jeremy.compostella@gmail.com>
39
40 * windmove.el (windmove-reference-loc): Fix
41 windmove-reference-loc miscalculation.
42
432012-01-21 Jay Belanger <jay.p.belanger@gmail.com>
44
45 * calc/calc-units.el (math-put-default-units): Don't use "1" as a
46 default unit.
47
482012-01-21 Glenn Morris <rgm@gnu.org>
49
50 * international/mule.el (auto-coding-alist): Add .tbz.
51
52 * files.el (local-enable-local-variables): Doc fix.
53 (inhibit-local-variables-regexps): Rename from
54 inhibit-first-line-modes-regexps. Keep old name as obsolete alias.
55 Doc fix. Add some extensions from auto-coding-alist.
56 (inhibit-local-variables-suffixes):
57 Rename from inhibit-first-line-modes-suffixes. Doc fix.
58 (inhibit-local-variables-p):
59 New function, extracted from set-auto-mode-1.
60 (set-auto-mode): Doc fix. Respect inhibit-local-variables-regexps.
61 (set-auto-mode-1): Doc fix. Use inhibit-local-variables-p.
62 (hack-local-variables): Doc fix. Make the mode-only case
63 respect enable-local-variables and friends.
64 Respect inhibit-local-variables-regexps for file-locals, but
65 not for directory-locals.
66 (set-visited-file-name):
67 Take account of inhibit-local-variables-regexps.
68 Whether it applies may change as the file name is changed.
69 * jka-cmpr-hook.el (jka-compr-install):
70 * jka-compr.el (jka-compr-uninstall):
71 Update for inhibit-first-line-modes-suffixes name change.
72
732012-01-20 Martin Rudalics <rudalics@gmx.at>
74
75 * help-macro.el (make-help-screen): Temporarily restore original
76 binding for minor-mode-map-alist (Bug#10454).
77
782012-01-19 Julien Danjou <julien@danjou.info>
79
80 * color.el (color-name-to-rgb): Use the white color to find the max
81 color component value and return correctly computed values.
82 (color-name-to-rgb): Add missing float conversion for max value.
83
842012-01-19 Martin Rudalics <rudalics@gmx.at>
85
86 * window.el (window--state-get-1, window-state-get): Do not use
87 special state value for window-persistent-parameters. Rename
88 argument IGNORE to WRITABLE. Rewrite doc-string.
89 (window--state-put-2): Reset all window parameters to nil before
90 assigning values of persistent parameters.
91
922012-01-18 Alan Mackenzie <acm@muc.de>
93
94 Eliminate sluggishness and hangs in fontification of "semicolon
95 deserts".
96
97 * progmodes/cc-engine.el (c-state-nonlit-pos-interval): change
98 value 10000 -> 3000.
99 (c-state-safe-place): Reformulate so it doesn't stack up an
100 infinite number of wrong entries in c-state-nonlit-pos-cache.
101 (c-determine-limit-get-base, c-determine-limit): New functions to
102 determine backward search limits disregarding literals.
103 (c-find-decl-spots): Amend commenting.
104 (c-cheap-inside-bracelist-p): New function which detects "={".
105
106 * progmodes/cc-fonts.el
107 (c-make-font-lock-BO-decl-search-function): Give a limit to a
108 backward search.
109 (c-font-lock-declarations): Fix an occurrence of point being
110 undefined. Check additionally for point being in a bracelist or
111 near a macro invocation without a semicolon so as to avoid a
112 fruitless time consuming search for a declarator. Give a more
113 precise search limit for declarators using the new
114 c-determine-limit.
115
1162012-01-18 Glenn Morris <rgm@gnu.org>
117
118 * files.el (auto-mode-alist, inhibit-first-line-modes-regexps)
119 (set-auto-mode): Doc fixes.
120
1212012-01-17 Glenn Morris <rgm@gnu.org>
122
123 * isearch.el (search-nonincremental-instead): Fix doc typo.
124
125 * dired.el (dired-insert-directory): Handle newlines in directory name.
126 (dired-build-subdir-alist): Unescape newlines in directory name.
127
1282012-01-17 Michael Albinus <michael.albinus@gmx.de>
129
130 * net/tramp.el (tramp-local-end-of-line): New defcustom.
131 (tramp-action-login, tramp-action-yesno, tramp-action-yn)
132 (tramp-action-terminal): Use it. (Bug#10530)
133
12012-01-16 Stefan Monnier <monnier@iro.umontreal.ca> 1342012-01-16 Stefan Monnier <monnier@iro.umontreal.ca>
2 135
3 * minibuffer.el (completion--replace): Strip properties (bug#10062). 136 * minibuffer.el (completion--replace): Strip properties (bug#10062).
@@ -34,6 +167,17 @@
34 167
35 * dired.el (dired-get-filename): Fix 'verbatim case of previous change. 168 * dired.el (dired-get-filename): Fix 'verbatim case of previous change.
36 169
1702012-01-13 Alan Mackenzie <acm@muc.de>
171
172 Fix filling for when filladapt mode is enabled.
173
174 * progmodes/cc-cmds.el (c-fill-paragraph): In the invocation of
175 c-mask-paragraph, pass in `fill-paragraph' rather than
176 `fill-region-as-paragraph'. (This is a reversion of a previous
177 change.)
178 * progmodes/cc-mode.el (c-basic-common-init): Make
179 fill-paragraph-handle-comment buffer local and set it to nil.
180
372012-01-13 Glenn Morris <rgm@gnu.org> 1812012-01-13 Glenn Morris <rgm@gnu.org>
38 182
39 * dired.el (dired-switches-escape-p): New function. 183 * dired.el (dired-switches-escape-p): New function.
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index 8f4c79e3f0a..dcbf845c371 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -415,18 +415,19 @@ If EXPR is nil, return nil."
415 415
416(defun math-put-default-units (expr) 416(defun math-put-default-units (expr)
417 "Put the units in EXPR in the default units table." 417 "Put the units in EXPR in the default units table."
418 (let* ((units (math-get-units expr)) 418 (let ((units (math-get-units expr)))
419 (standard-units (math-get-standard-units expr)) 419 (unless (eq units 1)
420 (let* ((standard-units (math-get-standard-units expr))
420 (default-units (gethash 421 (default-units (gethash
421 standard-units 422 standard-units
422 math-default-units-table))) 423 math-default-units-table)))
423 (cond 424 (cond
424 ((not default-units) 425 ((not default-units)
425 (puthash standard-units (list units) math-default-units-table)) 426 (puthash standard-units (list units) math-default-units-table))
426 ((not (equal units (car default-units))) 427 ((not (equal units (car default-units)))
427 (puthash standard-units 428 (puthash standard-units
428 (list units (car default-units)) 429 (list units (car default-units))
429 math-default-units-table))))) 430 math-default-units-table)))))))
430 431
431 432
432(defun calc-convert-units (&optional old-units new-units) 433(defun calc-convert-units (&optional old-units new-units)
diff --git a/lisp/cedet/semantic/wisent/js-wy.el b/lisp/cedet/semantic/wisent/js-wy.el
index b8d3240aef1..05346b02c8d 100644
--- a/lisp/cedet/semantic/wisent/js-wy.el
+++ b/lisp/cedet/semantic/wisent/js-wy.el
@@ -1,7 +1,7 @@
1;;; semantic/wisent/js-wy.el --- Generated parser support file 1;;; semantic/wisent/js-wy.el --- Generated parser support file
2 2
3;; Copyright (C) 2005, 2009-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2005, 2009-2012 Free Software Foundation, Inc.
4;; Copyright (C) 1998-2011 Ecma International 4;; Copyright (C) 1998-2011 Ecma International.
5 5
6;; This file is part of GNU Emacs. 6;; This file is part of GNU Emacs.
7 7
diff --git a/lisp/cedet/semantic/wisent/python-wy.el b/lisp/cedet/semantic/wisent/python-wy.el
index cb0f37c8f16..e8229dcd9ea 100644
--- a/lisp/cedet/semantic/wisent/python-wy.el
+++ b/lisp/cedet/semantic/wisent/python-wy.el
@@ -1,7 +1,8 @@
1;;; semantic/wisent/python-wy.el --- Generated parser support file 1;;; semantic/wisent/python-wy.el --- Generated parser support file
2 2
3;; Copyright (C) 2002-2004, 2007, 2010-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2002-2004, 2007, 2010-2012 Free Software Foundation, Inc.
4;; Copyright (C) 2001-2010 Python Software Foundation 4;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
5;; 2009, 2010 Python Software Foundation; All Rights Reserved
5 6
6;; This file is part of GNU Emacs. 7;; This file is part of GNU Emacs.
7 8
diff --git a/lisp/color.el b/lisp/color.el
index ff7f0eee4e6..6fab613ba69 100644
--- a/lisp/color.el
+++ b/lisp/color.el
@@ -53,7 +53,10 @@ numbers, (RED GREEN BLUE), each between 0.0 and 1.0 inclusive.
53Optional arg FRAME specifies the frame where the color is to be 53Optional arg FRAME specifies the frame where the color is to be
54displayed. If FRAME is omitted or nil, use the selected frame. 54displayed. If FRAME is omitted or nil, use the selected frame.
55If FRAME cannot display COLOR, return nil." 55If FRAME cannot display COLOR, return nil."
56 (mapcar (lambda (x) (/ x 65535.0)) (color-values color frame))) 56 ;; `colors-values' maximum value is either 65535 or 65280 depending on the
57 ;; display system. So we use a white conversion to get the max value.
58 (let ((valmax (float (car (color-values "#ffffff")))))
59 (mapcar (lambda (x) (/ x valmax)) (color-values color frame))))
57 60
58(defun color-rgb-to-hex (red green blue) 61(defun color-rgb-to-hex (red green blue)
59 "Return hexadecimal notation for the color RED GREEN BLUE. 62 "Return hexadecimal notation for the color RED GREEN BLUE.
diff --git a/lisp/dired.el b/lisp/dired.el
index f1a778ad05a..57f67ca7c8c 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1172,7 +1172,22 @@ see `dired-use-ls-dired' for more details.")
1172 "\\015" 1172 "\\015"
1173 (text-properties-at (match-beginning 0))) 1173 (text-properties-at (match-beginning 0)))
1174 nil t)) 1174 nil t))
1175 (set-marker end nil))) 1175 (set-marker end nil))
1176 ;; Replace any newlines in DIR with literal "\n"s, for the sake
1177 ;; of the header line. To disambiguate a literal "\n" in the
1178 ;; actual dirname, we also replace "\" with "\\".
1179 ;; Personally, I think this should always be done, irrespective
1180 ;; of the value of dired-actual-switches, because:
1181 ;; i) Dired simply does not work with an unescaped newline in
1182 ;; the directory name used in the header (bug=10469#28), and
1183 ;; ii) "\" is always replaced with "\\" in the listing, so doing
1184 ;; it in the header as well makes things consistent.
1185 ;; But at present it is only done if "-b" is in ls-switches,
1186 ;; because newlines in dirnames are uncommon, and people may
1187 ;; have gotten used to seeing unescaped "\" in the headers.
1188 ;; Note: adjust dired-build-subdir-alist if you change this.
1189 (setq dir (replace-regexp-in-string "\\\\" "\\\\" dir nil t)
1190 dir (replace-regexp-in-string "\n" "\\n" dir nil t)))
1176 (dired-insert-set-properties opoint (point)) 1191 (dired-insert-set-properties opoint (point))
1177 ;; If we used --dired and it worked, the lines are already indented. 1192 ;; If we used --dired and it worked, the lines are already indented.
1178 ;; Otherwise, indent them. 1193 ;; Otherwise, indent them.
@@ -2541,12 +2556,31 @@ instead of `dired-actual-switches'."
2541 (delete-region (point) (match-end 1)) 2556 (delete-region (point) (match-end 1))
2542 (insert new-dir-name)) 2557 (insert new-dir-name))
2543 (setq count (1+ count)) 2558 (setq count (1+ count))
2559 ;; Undo any escaping of newlines and \ by dired-insert-directory.
2560 ;; Convert "n" preceded by odd number of \ to newline, and \\ to \.
2561 (when (and (dired-switches-escape-p switches)
2562 (string-match-p "\\\\" new-dir-name))
2563 (let (temp res)
2564 (mapc (lambda (char)
2565 (cond ((equal char ?\\)
2566 (if temp
2567 (setq res (concat res "\\")
2568 temp nil)
2569 (setq temp "\\")))
2570 ((and temp (equal char ?n))
2571 (setq res (concat res "\n")
2572 temp nil))
2573 (t
2574 (setq res (concat res temp (char-to-string char))
2575 temp nil))))
2576 new-dir-name)
2577 (setq new-dir-name res)))
2544 (dired-alist-add-1 new-dir-name 2578 (dired-alist-add-1 new-dir-name
2545 ;; Place a sub directory boundary between lines. 2579 ;; Place a sub directory boundary between lines.
2546 (save-excursion 2580 (save-excursion
2547 (goto-char (match-beginning 0)) 2581 (goto-char (match-beginning 0))
2548 (beginning-of-line) 2582 (beginning-of-line)
2549 (point-marker))))) 2583 (point-marker)))))
2550 (if (and (> count 1) (called-interactively-p 'interactive)) 2584 (if (and (> count 1) (called-interactively-p 'interactive))
2551 (message "Buffer includes %d directories" count))) 2585 (message "Buffer includes %d directories" count)))
2552 ;; We don't need to sort it because it is in buffer order per 2586 ;; We don't need to sort it because it is in buffer order per
diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el
index f24180b5c7f..296e2ee8b24 100644
--- a/lisp/eshell/em-unix.el
+++ b/lisp/eshell/em-unix.el
@@ -792,8 +792,6 @@ external command."
792 (funcall (or (pcomplete-find-completion-function (pcomplete-arg 1)) 792 (funcall (or (pcomplete-find-completion-function (pcomplete-arg 1))
793 pcomplete-default-completion-function))) 793 pcomplete-default-completion-function)))
794 794
795(defalias 'pcomplete/ssh 'pcomplete/rsh)
796
797(defvar block-size) 795(defvar block-size)
798(defvar by-bytes) 796(defvar by-bytes)
799(defvar dereference-links) 797(defvar dereference-links)
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el
index f111fd91230..8218e91ddc7 100644
--- a/lisp/eshell/esh-util.el
+++ b/lisp/eshell/esh-util.el
@@ -483,7 +483,7 @@ list."
483 (insert-file-contents eshell-hosts-file) 483 (insert-file-contents eshell-hosts-file)
484 (goto-char (point-min)) 484 (goto-char (point-min))
485 (while (re-search-forward 485 (while (re-search-forward
486 "^\\(\\S-+\\)\\s-+\\(\\S-+\\)\\(\\s-*\\(\\S-+\\)\\)?" nil t) 486 "^\\([^#[:space:]]+\\)\\s-+\\(\\S-+\\)\\(\\s-*\\(\\S-+\\)\\)?" nil t)
487 (if (match-string 1) 487 (if (match-string 1)
488 (add-to-list 'hosts (match-string 1))) 488 (add-to-list 'hosts (match-string 1)))
489 (if (match-string 2) 489 (if (match-string 2)
diff --git a/lisp/files.el b/lisp/files.el
index f15c523400d..7a72775ac3f 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -510,14 +510,36 @@ and ignores this variable."
510 (other :tag "Query" other)) 510 (other :tag "Query" other))
511 :group 'find-file) 511 :group 'find-file)
512 512
513;; This is an odd variable IMO.
514;; You might wonder why it is needed, when we could just do:
515;; (set (make-local-variable 'enable-local-variables) nil)
516;; These two are not precisely the same.
517;; Setting this variable does not cause -*- mode settings to be
518;; ignored, whereas setting enable-local-variables does.
519;; Only three places in Emacs use this variable: tar and arc modes,
520;; and rmail. The first two don't need it. They already use
521;; inhibit-local-variables-regexps, which is probably enough, and
522;; could also just set enable-local-variables locally to nil.
523;; Them setting it has the side-effect that dir-locals cannot apply to
524;; eg tar files (?). FIXME Is this appropriate?
525;; AFAICS, rmail is the only thing that needs this, and the only
526;; reason it uses it is for BABYL files (which are obsolete).
527;; These contain "-*- rmail -*-" in the first line, which rmail wants
528;; to respect, so that find-file on a BABYL file will switch to
529;; rmail-mode automatically (this is nice, but hardly essential,
530;; since most people are used to explicitly running a command to
531;; access their mail; M-x gnus etc). Rmail files may happen to
532;; contain Local Variables sections in messages, which Rmail wants to
533;; ignore. So AFAICS the only reason this variable exists is for a
534;; minor convenience feature for handling of an obsolete Rmail file format.
513(defvar local-enable-local-variables t 535(defvar local-enable-local-variables t
514 "Like `enable-local-variables' but meant for buffer-local bindings. 536 "Like `enable-local-variables' but meant for buffer-local bindings.
515The meaningful values are nil and non-nil. The default is non-nil. 537The meaningful values are nil and non-nil. The default is non-nil.
516If a major mode sets this to nil, buffer-locally, then any local 538If a major mode sets this to nil, buffer-locally, then any local
517variables list in the file will be ignored. 539variables list in a file visited in that mode will be ignored.
518 540
519This variable does not affect the use of major modes 541This variable does not affect the use of major modes specified
520specified in a -*- line.") 542in a -*- line.")
521 543
522(defcustom enable-local-eval 'maybe 544(defcustom enable-local-eval 'maybe
523 "Control processing of the \"variable\" `eval' in a file's local variables. 545 "Control processing of the \"variable\" `eval' in a file's local variables.
@@ -2405,9 +2427,6 @@ If the element has the form (REGEXP FUNCTION NON-NIL), then after
2405calling FUNCTION (if it's not nil), we delete the suffix that matched 2427calling FUNCTION (if it's not nil), we delete the suffix that matched
2406REGEXP and search the list again for another match. 2428REGEXP and search the list again for another match.
2407 2429
2408If the file name matches `inhibit-first-line-modes-regexps',
2409then `auto-mode-alist' is not processed.
2410
2411The extensions whose FUNCTION is `archive-mode' should also 2430The extensions whose FUNCTION is `archive-mode' should also
2412appear in `auto-coding-alist' with `no-conversion' coding system. 2431appear in `auto-coding-alist' with `no-conversion' coding system.
2413 2432
@@ -2478,16 +2497,55 @@ of a script, mode MODE is enabled.
2478 2497
2479See also `auto-mode-alist'.") 2498See also `auto-mode-alist'.")
2480 2499
2481(defvar inhibit-first-line-modes-regexps 2500(define-obsolete-variable-alias 'inhibit-first-line-modes-regexps
2482 (mapcar 'purecopy '("\\.tar\\'" "\\.tgz\\'" "\\.tiff?\\'" 2501 'inhibit-file-local-variables-regexps "24.1")
2483 "\\.gif\\'" "\\.png\\'" "\\.jpe?g\\'")) 2502
2484 "List of regexps; if one matches a file name, don't look for `-*-'.") 2503;; TODO really this should be a list of modes (eg tar-mode), not regexps,
2485 2504;; because we are duplicating info from auto-mode-alist.
2486(defvar inhibit-first-line-modes-suffixes nil 2505;; TODO many elements of this list are also in auto-coding-alist.
2487 "List of regexps for what to ignore, for `inhibit-first-line-modes-regexps'. 2506(defvar inhibit-local-variables-regexps
2488When checking `inhibit-first-line-modes-regexps', we first discard 2507 (mapcar 'purecopy '("\\.tar\\'" "\\.t[bg]z\\'"
2508 "\\.arc\\'" "\\.zip\\'" "\\.lzh\\'" "\\.lha\\'"
2509 "\\.zoo\\'" "\\.[jew]ar\\'" "\\.xpi\\'" "\\.rar\\'"
2510 "\\.7z\\'"
2511 "\\.sx[dmicw]\\'" "\\.odt\\'"
2512 "\\.tiff?\\'" "\\.gif\\'" "\\.png\\'" "\\.jpe?g\\'"))
2513 "List of regexps matching file names in which to ignore local variables.
2514This includes `-*-' lines as well as trailing \"Local Variables\" sections.
2515Files matching this list are typically binary file formats.
2516They may happen to contain sequences that look like local variable
2517specifications, but are not really, or they may be containers for
2518member files with their own local variable sections, which are
2519not appropriate for the containing file.
2520See also `inhibit-local-variables-suffixes'.")
2521
2522(define-obsolete-variable-alias 'inhibit-first-line-modes-suffixes
2523 'inhibit-local-variables-suffixes "24.1")
2524
2525(defvar inhibit-local-variables-suffixes nil
2526 "List of regexps matching suffixes to remove from file names.
2527When checking `inhibit-local-variables-regexps', we first discard
2489from the end of the file name anything that matches one of these regexps.") 2528from the end of the file name anything that matches one of these regexps.")
2490 2529
2530;; TODO explicitly add case-fold-search t?
2531(defun inhibit-local-variables-p ()
2532 "Return non-nil if file local variables should be ignored.
2533This checks the file (or buffer) name against `inhibit-local-variables-regexps'
2534and `inhibit-local-variables-suffixes'."
2535 (let ((temp inhibit-local-variables-regexps)
2536 (name (if buffer-file-name
2537 (file-name-sans-versions buffer-file-name)
2538 (buffer-name))))
2539 (while (let ((sufs inhibit-local-variables-suffixes))
2540 (while (and sufs (not (string-match (car sufs) name)))
2541 (setq sufs (cdr sufs)))
2542 sufs)
2543 (setq name (substring name 0 (match-beginning 0))))
2544 (while (and temp
2545 (not (string-match (car temp) name)))
2546 (setq temp (cdr temp)))
2547 temp))
2548
2491(defvar auto-mode-interpreter-regexp 2549(defvar auto-mode-interpreter-regexp
2492 (purecopy "#![ \t]?\\([^ \t\n]*\ 2550 (purecopy "#![ \t]?\\([^ \t\n]*\
2493/bin/env[ \t]\\)?\\([^ \t\n]+\\)") 2551/bin/env[ \t]\\)?\\([^ \t\n]+\\)")
@@ -2550,21 +2608,24 @@ Also applies to `magic-fallback-mode-alist'.")
2550(defun set-auto-mode (&optional keep-mode-if-same) 2608(defun set-auto-mode (&optional keep-mode-if-same)
2551 "Select major mode appropriate for current buffer. 2609 "Select major mode appropriate for current buffer.
2552 2610
2553To find the right major mode, this function checks for a -*- mode tag, 2611To find the right major mode, this function checks for a -*- mode tag
2554checks for a `mode:' entry in the Local Variables section of the file, 2612checks for a `mode:' entry in the Local Variables section of the file,
2555checks if it uses an interpreter listed in `interpreter-mode-alist', 2613checks if it uses an interpreter listed in `interpreter-mode-alist',
2556matches the buffer beginning against `magic-mode-alist', 2614matches the buffer beginning against `magic-mode-alist',
2557compares the filename against the entries in `auto-mode-alist', 2615compares the filename against the entries in `auto-mode-alist',
2558then matches the buffer beginning against `magic-fallback-mode-alist'. 2616then matches the buffer beginning against `magic-fallback-mode-alist'.
2559 2617
2560If `enable-local-variables' is nil, this function does not check for 2618If `enable-local-variables' is nil, or if the file name matches
2561any mode: tag anywhere in the file. 2619`inhibit-local-variables-regexps', this function does not check
2620for any mode: tag anywhere in the file. If `local-enable-local-variables'
2621is nil, then the only mode: tag that can be relevant is a -*- one.
2562 2622
2563If the optional argument KEEP-MODE-IF-SAME is non-nil, then we 2623If the optional argument KEEP-MODE-IF-SAME is non-nil, then we
2564set the major mode only if that would change it. In other words 2624set the major mode only if that would change it. In other words
2565we don't actually set it to the same mode the buffer already has." 2625we don't actually set it to the same mode the buffer already has."
2566 ;; Look for -*-MODENAME-*- or -*- ... mode: MODENAME; ... -*- 2626 ;; Look for -*-MODENAME-*- or -*- ... mode: MODENAME; ... -*-
2567 (let (end done mode modes) 2627 (let ((try-locals (not (inhibit-local-variables-p)))
2628 end done mode modes)
2568 ;; Once we drop the deprecated feature where mode: is also allowed to 2629 ;; Once we drop the deprecated feature where mode: is also allowed to
2569 ;; specify minor-modes (ie, there can be more than one "mode:"), we can 2630 ;; specify minor-modes (ie, there can be more than one "mode:"), we can
2570 ;; remove this section and just let (hack-local-variables t) handle it. 2631 ;; remove this section and just let (hack-local-variables t) handle it.
@@ -2572,7 +2633,9 @@ we don't actually set it to the same mode the buffer already has."
2572 (save-excursion 2633 (save-excursion
2573 (goto-char (point-min)) 2634 (goto-char (point-min))
2574 (skip-chars-forward " \t\n") 2635 (skip-chars-forward " \t\n")
2636 ;; Note by design local-enable-local-variables does not matter here.
2575 (and enable-local-variables 2637 (and enable-local-variables
2638 try-locals
2576 (setq end (set-auto-mode-1)) 2639 (setq end (set-auto-mode-1))
2577 (if (save-excursion (search-forward ":" end t)) 2640 (if (save-excursion (search-forward ":" end t))
2578 ;; Find all specifications for the `mode:' variable 2641 ;; Find all specifications for the `mode:' variable
@@ -2603,8 +2666,12 @@ we don't actually set it to the same mode the buffer already has."
2603 (or (set-auto-mode-0 mode keep-mode-if-same) 2666 (or (set-auto-mode-0 mode keep-mode-if-same)
2604 ;; continuing would call minor modes again, toggling them off 2667 ;; continuing would call minor modes again, toggling them off
2605 (throw 'nop nil)))))) 2668 (throw 'nop nil))))))
2669 ;; hack-local-variables checks local-enable-local-variables etc, but
2670 ;; we might as well be explicit here for the sake of clarity.
2606 (and (not done) 2671 (and (not done)
2607 enable-local-variables 2672 enable-local-variables
2673 local-enable-local-variables
2674 try-locals
2608 (setq mode (hack-local-variables t)) 2675 (setq mode (hack-local-variables t))
2609 (not (memq mode modes)) ; already tried and failed 2676 (not (memq mode modes)) ; already tried and failed
2610 (if (not (functionp mode)) 2677 (if (not (functionp mode))
@@ -2714,38 +2781,24 @@ same, do nothing and return nil."
2714(defun set-auto-mode-1 () 2781(defun set-auto-mode-1 ()
2715 "Find the -*- spec in the buffer. 2782 "Find the -*- spec in the buffer.
2716Call with point at the place to start searching from. 2783Call with point at the place to start searching from.
2717If one is found, set point to the beginning 2784If one is found, set point to the beginning and return the position
2718and return the position of the end. 2785of the end. Otherwise, return nil; may change point.
2719Otherwise, return nil; point may be changed." 2786The variable `inhibit-local-variables-regexps' can cause a -*- spec to
2787be ignored; but `enable-local-variables' and `local-enable-local-variables'
2788have no effect."
2720 (let (beg end) 2789 (let (beg end)
2721 (and 2790 (and
2722 ;; Don't look for -*- if this file name matches any 2791 ;; Don't look for -*- if this file name matches any
2723 ;; of the regexps in inhibit-first-line-modes-regexps. 2792 ;; of the regexps in inhibit-local-variables-regexps.
2724 (let ((temp inhibit-first-line-modes-regexps) 2793 (not (inhibit-local-variables-p))
2725 (name (if buffer-file-name
2726 (file-name-sans-versions buffer-file-name)
2727 (buffer-name))))
2728 (while (let ((sufs inhibit-first-line-modes-suffixes))
2729 (while (and sufs (not (string-match (car sufs) name)))
2730 (setq sufs (cdr sufs)))
2731 sufs)
2732 (setq name (substring name 0 (match-beginning 0))))
2733 (while (and temp
2734 (not (string-match (car temp) name)))
2735 (setq temp (cdr temp)))
2736 (not temp))
2737
2738 (search-forward "-*-" (line-end-position 2794 (search-forward "-*-" (line-end-position
2739 ;; If the file begins with "#!" 2795 ;; If the file begins with "#!" (exec
2740 ;; (exec interpreter magic), look 2796 ;; interpreter magic), look for mode frobs
2741 ;; for mode frobs in the first two 2797 ;; in the first two lines. You cannot
2742 ;; lines. You cannot necessarily 2798 ;; necessarily put them in the first line
2743 ;; put them in the first line of 2799 ;; of such a file without screwing up the
2744 ;; such a file without screwing up 2800 ;; interpreter invocation. The same holds
2745 ;; the interpreter invocation. 2801 ;; for '\" in man pages (preprocessor
2746 ;; The same holds for
2747 ;; '\"
2748 ;; in man pages (preprocessor
2749 ;; magic for the `man' program). 2802 ;; magic for the `man' program).
2750 (and (looking-at "^\\(#!\\|'\\\\\"\\)") 2)) t) 2803 (and (looking-at "^\\(#!\\|'\\\\\"\\)") 2)) t)
2751 (progn 2804 (progn
@@ -3090,19 +3143,41 @@ Uses `hack-local-variables-apply' to apply the variables.
3090If MODE-ONLY is non-nil, all we do is check whether a \"mode:\" 3143If MODE-ONLY is non-nil, all we do is check whether a \"mode:\"
3091is specified, and return the corresponding mode symbol, or nil. 3144is specified, and return the corresponding mode symbol, or nil.
3092In this case, we try to ignore minor-modes, and only return a 3145In this case, we try to ignore minor-modes, and only return a
3093major-mode." 3146major-mode.
3147
3148If `enable-local-variables' or `local-enable-local-variables' is nil,
3149this function does nothing. If `inhibit-local-variables-regexps'
3150applies to the file in question, the file is not scanned for
3151local variables, but directory-local variables may still be applied."
3152 ;; We don't let inhibit-local-variables-p influence the value of
3153 ;; enable-local-variables, because then it would affect dir-local
3154 ;; variables. We don't want to search eg tar files for file local
3155 ;; variable sections, but there is no reason dir-locals cannot apply
3156 ;; to them. The real meaning of inhibit-local-variables-p is "do
3157 ;; not scan this file for local variables".
3094 (let ((enable-local-variables 3158 (let ((enable-local-variables
3095 (and local-enable-local-variables enable-local-variables)) 3159 (and local-enable-local-variables enable-local-variables))
3096 result) 3160 result)
3097 (unless mode-only 3161 (unless mode-only
3098 (setq file-local-variables-alist nil) 3162 (setq file-local-variables-alist nil)
3099 (report-errors "Directory-local variables error: %s" 3163 (report-errors "Directory-local variables error: %s"
3164 ;; Note this is a no-op if enable-local-variables is nil.
3100 (hack-dir-local-variables))) 3165 (hack-dir-local-variables)))
3101 (when (or mode-only enable-local-variables) 3166 ;; This entire function is basically a no-op if enable-local-variables
3102 ;; If MODE-ONLY is non-nil, and the prop line specifies a mode, 3167 ;; is nil. All it does is set file-local-variables-alist to nil.
3103 ;; then we're done, and have no need to scan further. 3168 (when enable-local-variables
3104 (unless (and (setq result (hack-local-variables-prop-line mode-only)) 3169 ;; This part used to ignore enable-local-variables when mode-only
3105 mode-only) 3170 ;; was non-nil. That was inappropriate, eg consider the
3171 ;; (artificial) example of:
3172 ;; (setq local-enable-local-variables nil)
3173 ;; Open a file foo.txt that contains "mode: sh".
3174 ;; It correctly opens in text-mode.
3175 ;; M-x set-visited-file name foo.c, and it incorrectly stays in text-mode.
3176 (unless (or (inhibit-local-variables-p)
3177 ;; If MODE-ONLY is non-nil, and the prop line specifies a
3178 ;; mode, then we're done, and have no need to scan further.
3179 (and (setq result (hack-local-variables-prop-line mode-only))
3180 mode-only))
3106 ;; Look for "Local variables:" line in last page. 3181 ;; Look for "Local variables:" line in last page.
3107 (save-excursion 3182 (save-excursion
3108 (goto-char (point-max)) 3183 (goto-char (point-max))
@@ -3192,14 +3267,13 @@ major-mode."
3192 (indirect-variable var)) 3267 (indirect-variable var))
3193 val) result) 3268 val) result)
3194 (error nil))))) 3269 (error nil)))))
3195 (forward-line 1))))))))) 3270 (forward-line 1))))))))
3196 ;; Now we've read all the local variables. 3271 ;; Now we've read all the local variables.
3197 ;; If MODE-ONLY is non-nil, return whether the mode was specified. 3272 ;; If MODE-ONLY is non-nil, return whether the mode was specified.
3198 (cond (mode-only result) 3273 (if mode-only result
3199 ;; Otherwise, set the variables. 3274 ;; Otherwise, set the variables.
3200 (enable-local-variables 3275 (hack-local-variables-filter result nil)
3201 (hack-local-variables-filter result nil) 3276 (hack-local-variables-apply)))))
3202 (hack-local-variables-apply)))))
3203 3277
3204(defun hack-local-variables-apply () 3278(defun hack-local-variables-apply ()
3205 "Apply the elements of `file-local-variables-alist'. 3279 "Apply the elements of `file-local-variables-alist'.
@@ -3611,7 +3685,7 @@ the old visited file has been renamed to the new name FILENAME."
3611 (interactive "FSet visited file name: ") 3685 (interactive "FSet visited file name: ")
3612 (if (buffer-base-buffer) 3686 (if (buffer-base-buffer)
3613 (error "An indirect buffer cannot visit a file")) 3687 (error "An indirect buffer cannot visit a file"))
3614 (let (truename) 3688 (let (truename old-try-locals)
3615 (if filename 3689 (if filename
3616 (setq filename 3690 (setq filename
3617 (if (string-equal filename "") 3691 (if (string-equal filename "")
@@ -3636,7 +3710,8 @@ the old visited file has been renamed to the new name FILENAME."
3636 (progn 3710 (progn
3637 (and filename (lock-buffer filename)) 3711 (and filename (lock-buffer filename))
3638 (unlock-buffer))) 3712 (unlock-buffer)))
3639 (setq buffer-file-name filename) 3713 (setq old-try-locals (not (inhibit-local-variables-p))
3714 buffer-file-name filename)
3640 (if filename ; make buffer name reflect filename. 3715 (if filename ; make buffer name reflect filename.
3641 (let ((new-name (file-name-nondirectory buffer-file-name))) 3716 (let ((new-name (file-name-nondirectory buffer-file-name)))
3642 (setq default-directory (file-name-directory buffer-file-name)) 3717 (setq default-directory (file-name-directory buffer-file-name))
@@ -3656,59 +3731,63 @@ the old visited file has been renamed to the new name FILENAME."
3656 (setq buffer-file-number 3731 (setq buffer-file-number
3657 (if filename 3732 (if filename
3658 (nthcdr 10 (file-attributes buffer-file-name)) 3733 (nthcdr 10 (file-attributes buffer-file-name))
3659 nil))) 3734 nil))
3660 ;; write-file-functions is normally used for things like ftp-find-file 3735 ;; write-file-functions is normally used for things like ftp-find-file
3661 ;; that visit things that are not local files as if they were files. 3736 ;; that visit things that are not local files as if they were files.
3662 ;; Changing to visit an ordinary local file instead should flush the hook. 3737 ;; Changing to visit an ordinary local file instead should flush the hook.
3663 (kill-local-variable 'write-file-functions) 3738 (kill-local-variable 'write-file-functions)
3664 (kill-local-variable 'local-write-file-hooks) 3739 (kill-local-variable 'local-write-file-hooks)
3665 (kill-local-variable 'revert-buffer-function) 3740 (kill-local-variable 'revert-buffer-function)
3666 (kill-local-variable 'backup-inhibited) 3741 (kill-local-variable 'backup-inhibited)
3667 ;; If buffer was read-only because of version control, 3742 ;; If buffer was read-only because of version control,
3668 ;; that reason is gone now, so make it writable. 3743 ;; that reason is gone now, so make it writable.
3669 (if vc-mode 3744 (if vc-mode
3670 (setq buffer-read-only nil)) 3745 (setq buffer-read-only nil))
3671 (kill-local-variable 'vc-mode) 3746 (kill-local-variable 'vc-mode)
3672 ;; Turn off backup files for certain file names. 3747 ;; Turn off backup files for certain file names.
3673 ;; Since this is a permanent local, the major mode won't eliminate it. 3748 ;; Since this is a permanent local, the major mode won't eliminate it.
3674 (and buffer-file-name 3749 (and buffer-file-name
3675 backup-enable-predicate 3750 backup-enable-predicate
3676 (not (funcall backup-enable-predicate buffer-file-name)) 3751 (not (funcall backup-enable-predicate buffer-file-name))
3677 (progn 3752 (progn
3678 (make-local-variable 'backup-inhibited) 3753 (make-local-variable 'backup-inhibited)
3679 (setq backup-inhibited t))) 3754 (setq backup-inhibited t)))
3680 (let ((oauto buffer-auto-save-file-name)) 3755 (let ((oauto buffer-auto-save-file-name))
3681 ;; If auto-save was not already on, turn it on if appropriate. 3756 ;; If auto-save was not already on, turn it on if appropriate.
3682 (if (not buffer-auto-save-file-name) 3757 (if (not buffer-auto-save-file-name)
3683 (and buffer-file-name auto-save-default 3758 (and buffer-file-name auto-save-default
3684 (auto-save-mode t)) 3759 (auto-save-mode t))
3685 ;; If auto save is on, start using a new name. 3760 ;; If auto save is on, start using a new name.
3686 ;; We deliberately don't rename or delete the old auto save 3761 ;; We deliberately don't rename or delete the old auto save
3687 ;; for the old visited file name. This is because perhaps 3762 ;; for the old visited file name. This is because perhaps
3688 ;; the user wants to save the new state and then compare with the 3763 ;; the user wants to save the new state and then compare with the
3689 ;; previous state from the auto save file. 3764 ;; previous state from the auto save file.
3690 (setq buffer-auto-save-file-name 3765 (setq buffer-auto-save-file-name
3691 (make-auto-save-file-name))) 3766 (make-auto-save-file-name)))
3692 ;; Rename the old auto save file if any. 3767 ;; Rename the old auto save file if any.
3693 (and oauto buffer-auto-save-file-name 3768 (and oauto buffer-auto-save-file-name
3694 (file-exists-p oauto) 3769 (file-exists-p oauto)
3695 (rename-file oauto buffer-auto-save-file-name t))) 3770 (rename-file oauto buffer-auto-save-file-name t)))
3696 (and buffer-file-name 3771 (and buffer-file-name
3697 (not along-with-file) 3772 (not along-with-file)
3698 (set-buffer-modified-p t)) 3773 (set-buffer-modified-p t))
3699 ;; Update the major mode, if the file name determines it. 3774 ;; Update the major mode, if the file name determines it.
3700 (condition-case nil 3775 (condition-case nil
3701 ;; Don't change the mode if it is special. 3776 ;; Don't change the mode if it is special.
3702 (or (not change-major-mode-with-file-name) 3777 (or (not change-major-mode-with-file-name)
3703 (get major-mode 'mode-class) 3778 (get major-mode 'mode-class)
3704 ;; Don't change the mode if the local variable list specifies it. 3779 ;; Don't change the mode if the local variable list specifies it.
3705 (hack-local-variables t) 3780 ;; The file name can influence whether the local variables apply.
3706 ;; TODO consider making normal-mode handle this case. 3781 (and old-try-locals
3707 (let ((old major-mode)) 3782 ;; h-l-v also checks it, but might as well be explcit.
3708 (set-auto-mode t) 3783 (not (inhibit-local-variables-p))
3709 (or (eq old major-mode) 3784 (hack-local-variables t))
3710 (hack-local-variables)))) 3785 ;; TODO consider making normal-mode handle this case.
3711 (error nil))) 3786 (let ((old major-mode))
3787 (set-auto-mode t)
3788 (or (eq old major-mode)
3789 (hack-local-variables))))
3790 (error nil))))
3712 3791
3713(defun write-file (filename &optional confirm) 3792(defun write-file (filename &optional confirm)
3714 "Write current buffer into file FILENAME. 3793 "Write current buffer into file FILENAME.
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index c7358779818..8e790962c34 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,7 @@
12012-01-21 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * mm-decode.el (mm-interactively-view-part): Fix prompt.
4
12012-01-10 Teodor Zlatanov <tzz@lifelogs.com> 52012-01-10 Teodor Zlatanov <tzz@lifelogs.com>
2 6
3 * nntp.el (nntp-send-authinfo): Query `auth-source-search' with the 7 * nntp.el (nntp-send-authinfo): Query `auth-source-search' with the
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index 10e0fa2861c..dd3eb6c9d96 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -1353,7 +1353,7 @@ Use CMD as the process."
1353 (mailcap-mime-info type 'all))) 1353 (mailcap-mime-info type 'all)))
1354 (method (let ((minibuffer-local-completion-map 1354 (method (let ((minibuffer-local-completion-map
1355 mm-viewer-completion-map)) 1355 mm-viewer-completion-map))
1356 (completing-read "Viewer" methods)))) 1356 (completing-read "Viewer: " methods))))
1357 (when (string= method "") 1357 (when (string= method "")
1358 (error "No method given")) 1358 (error "No method given"))
1359 (if (string-match "^[^% \t]+$" method) 1359 (if (string-match "^[^% \t]+$" method)
diff --git a/lisp/help-macro.el b/lisp/help-macro.el
index 0bd6f3c4798..112c72778bc 100644
--- a/lisp/help-macro.el
+++ b/lisp/help-macro.el
@@ -184,9 +184,12 @@ and then returns."
184 (when config 184 (when config
185 (set-window-configuration config) 185 (set-window-configuration config)
186 (setq config nil)) 186 (setq config nil))
187 ;; `defn' must make sure that its frame is 187 ;; Temporarily rebind `minor-mode-map-alist'
188 ;; selected, so we won't iconify it below. 188 ;; to `new-minor-mode-map-alist' (Bug#10454).
189 (call-interactively defn) 189 (let ((minor-mode-map-alist new-minor-mode-map-alist))
190 ;; `defn' must make sure that its frame is
191 ;; selected, so we won't iconify it below.
192 (call-interactively defn))
190 (when new-frame 193 (when new-frame
191 ;; Do not iconify the selected frame. 194 ;; Do not iconify the selected frame.
192 (unless (eq new-frame (selected-frame)) 195 (unless (eq new-frame (selected-frame))
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index cbe548c2ccf..378cbc9badd 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -418,7 +418,10 @@ To prefer, for instance, utf-8, say the following:
418 (if (memq eol-type '(0 1 2)) 418 (if (memq eol-type '(0 1 2))
419 (setq base 419 (setq base
420 (coding-system-change-eol-conversion base eol-type))) 420 (coding-system-change-eol-conversion base eol-type)))
421 (set-default-coding-systems base))) 421 (set-default-coding-systems base)
422 (if (called-interactively-p 'interactive)
423 (or (eq base default-file-name-coding-system)
424 (message "The default value of `file-name-coding-system' was not changed because the specified coding system is not suitable for file names.")))))
422 425
423(defvar sort-coding-systems-predicate nil 426(defvar sort-coding-systems-predicate nil
424 "If non-nil, a predicate function to sort coding systems. 427 "If non-nil, a predicate function to sort coding systems.
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 17163071d3f..d4dd4e4cf24 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -1668,6 +1668,7 @@ in-place."
1668 1668
1669;;; FILE I/O 1669;;; FILE I/O
1670 1670
1671;; TODO many elements of this list are also in inhibit-local-variables-regexps.
1671(defcustom auto-coding-alist 1672(defcustom auto-coding-alist
1672 ;; .exe and .EXE are added to support archive-mode looking at DOS 1673 ;; .exe and .EXE are added to support archive-mode looking at DOS
1673 ;; self-extracting exe archives. 1674 ;; self-extracting exe archives.
@@ -1677,7 +1678,7 @@ arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|7z\\|\
1677ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|7Z\\)\\'" 1678ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|7Z\\)\\'"
1678 . no-conversion-multibyte) 1679 . no-conversion-multibyte)
1679 ("\\.\\(exe\\|EXE\\)\\'" . no-conversion) 1680 ("\\.\\(exe\\|EXE\\)\\'" . no-conversion)
1680 ("\\.\\(sx[dmicw]\\|odt\\|tar\\|tgz\\)\\'" . no-conversion) 1681 ("\\.\\(sx[dmicw]\\|odt\\|tar\\|t[bg]z\\)\\'" . no-conversion)
1681 ("\\.\\(gz\\|Z\\|bz\\|bz2\\|xz\\|gpg\\)\\'" . no-conversion) 1682 ("\\.\\(gz\\|Z\\|bz\\|bz2\\|xz\\|gpg\\)\\'" . no-conversion)
1682 ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion) 1683 ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion)
1683 ("\\.pdf\\'" . no-conversion) 1684 ("\\.pdf\\'" . no-conversion)
diff --git a/lisp/isearch.el b/lisp/isearch.el
index a6cc69be9a6..ce759116860 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -102,7 +102,7 @@ in Isearch mode is always downcased."
102 :group 'isearch) 102 :group 'isearch)
103 103
104(defcustom search-nonincremental-instead t 104(defcustom search-nonincremental-instead t
105 "If non-nil, do a nonincremental search instead if exiting immediately. 105 "If non-nil, do a nonincremental search instead of exiting immediately.
106Actually, `isearch-edit-string' is called to let you enter the search 106Actually, `isearch-edit-string' is called to let you enter the search
107string, and RET terminates editing and does a nonincremental search." 107string, and RET terminates editing and does a nonincremental search."
108 :type 'boolean 108 :type 'boolean
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el
index d09e64634c3..600ed549731 100644
--- a/lisp/jka-cmpr-hook.el
+++ b/lisp/jka-cmpr-hook.el
@@ -119,7 +119,7 @@ based on the filename itself and `jka-compr-compression-info-list'."
119(defun jka-compr-install () 119(defun jka-compr-install ()
120 "Install jka-compr. 120 "Install jka-compr.
121This adds entries to `file-name-handler-alist' and `auto-mode-alist' 121This adds entries to `file-name-handler-alist' and `auto-mode-alist'
122and `inhibit-first-line-modes-suffixes'." 122and `inhibit-local-variables-suffixes'."
123 123
124 (setq jka-compr-file-name-handler-entry 124 (setq jka-compr-file-name-handler-entry
125 (cons (jka-compr-build-file-regexp) 'jka-compr-handler)) 125 (cons (jka-compr-build-file-regexp) 'jka-compr-handler))
@@ -145,12 +145,12 @@ and `inhibit-first-line-modes-suffixes'."
145 ;; are chosen right according to the file names 145 ;; are chosen right according to the file names
146 ;; sans `.gz'. 146 ;; sans `.gz'.
147 (push (list (jka-compr-info-regexp x) nil 'jka-compr) auto-mode-alist) 147 (push (list (jka-compr-info-regexp x) nil 'jka-compr) auto-mode-alist)
148 ;; Also add these regexps to 148 ;; Also add these regexps to inhibit-local-variables-suffixes,
149 ;; inhibit-first-line-modes-suffixes, so that a 149 ;; so that a -*- line in the first file of a compressed tar file,
150 ;; -*- line in the first file of a compressed tar 150 ;; or a Local Variables section in a member file at the end of
151 ;; file doesn't override tar-mode. 151 ;; the tar file don't override tar-mode.
152 (push (jka-compr-info-regexp x) 152 (push (jka-compr-info-regexp x)
153 inhibit-first-line-modes-suffixes))) 153 inhibit-local-variables-suffixes)))
154 (setq auto-mode-alist 154 (setq auto-mode-alist
155 (append auto-mode-alist jka-compr-mode-alist-additions)) 155 (append auto-mode-alist jka-compr-mode-alist-additions))
156 156
diff --git a/lisp/jka-compr.el b/lisp/jka-compr.el
index 786e4292d5f..8a8d7cdbb52 100644
--- a/lisp/jka-compr.el
+++ b/lisp/jka-compr.el
@@ -657,16 +657,15 @@ It is not recommended to set this variable permanently to anything but nil.")
657(defun jka-compr-uninstall () 657(defun jka-compr-uninstall ()
658 "Uninstall jka-compr. 658 "Uninstall jka-compr.
659This removes the entries in `file-name-handler-alist' and `auto-mode-alist' 659This removes the entries in `file-name-handler-alist' and `auto-mode-alist'
660and `inhibit-first-line-modes-suffixes' that were added 660and `inhibit-local-variables-suffixes' that were added
661by `jka-compr-installed'." 661by `jka-compr-installed'."
662 ;; Delete from inhibit-first-line-modes-suffixes 662 ;; Delete from inhibit-local-variables-suffixes what jka-compr-install added.
663 ;; what jka-compr-install added.
664 (mapc 663 (mapc
665 (function (lambda (x) 664 (function (lambda (x)
666 (and (jka-compr-info-strip-extension x) 665 (and (jka-compr-info-strip-extension x)
667 (setq inhibit-first-line-modes-suffixes 666 (setq inhibit-local-variables-suffixes
668 (delete (jka-compr-info-regexp x) 667 (delete (jka-compr-info-regexp x)
669 inhibit-first-line-modes-suffixes))))) 668 inhibit-local-variables-suffixes)))))
670 jka-compr-compression-info-list--internal) 669 jka-compr-compression-info-list--internal)
671 670
672 (let* ((fnha (cons nil file-name-handler-alist)) 671 (let* ((fnha (cons nil file-name-handler-alist))
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el
index 03a5fe5b88e..d222dd1011d 100644
--- a/lisp/net/tramp-cache.el
+++ b/lisp/net/tramp-cache.el
@@ -243,7 +243,7 @@ PROPERTY is set persistent when KEY is a vector."
243 (aset key 3 nil)) 243 (aset key 3 nil))
244 (let ((hash (or (gethash key tramp-cache-data) 244 (let ((hash (or (gethash key tramp-cache-data)
245 (puthash key (make-hash-table :test 'equal) 245 (puthash key (make-hash-table :test 'equal)
246 tramp-cache-data)))) 246 tramp-cache-data))))
247 (puthash property value hash) 247 (puthash property value hash)
248 (setq tramp-cache-data-changed t) 248 (setq tramp-cache-data-changed t)
249 (tramp-message key 7 "%s %s" property value) 249 (tramp-message key 7 "%s %s" property value)
@@ -329,10 +329,15 @@ KEY identifies the connection, it is either a process or a vector."
329 tramp-cache-data-changed 329 tramp-cache-data-changed
330 (stringp tramp-persistency-file-name)) 330 (stringp tramp-persistency-file-name))
331 (let ((cache (copy-hash-table tramp-cache-data))) 331 (let ((cache (copy-hash-table tramp-cache-data)))
332 ;; Remove temporary data. 332 ;; Remove temporary data. If there is the key "login-as", we
333 ;; don't save either, because all other properties might
334 ;; depend on the login name, and we want to give the
335 ;; possibility to use another login name later on.
333 (maphash 336 (maphash
334 (lambda (key value) 337 (lambda (key value)
335 (if (and (vectorp key) (not (tramp-file-name-localname key))) 338 (if (and (vectorp key)
339 (not (tramp-file-name-localname key))
340 (not (gethash "login-as" value)))
336 (progn 341 (progn
337 (remhash "process-name" value) 342 (remhash "process-name" value)
338 (remhash "process-buffer" value) 343 (remhash "process-buffer" value)
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 2478253841f..38e19730a6d 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -380,7 +380,7 @@ detected as prompt when being sent on echoing hosts, therefore.")
380 (tramp-remote-shell "/bin/sh") 380 (tramp-remote-shell "/bin/sh")
381 (tramp-remote-shell-args ("-c")) 381 (tramp-remote-shell-args ("-c"))
382 (tramp-copy-program "pscp") 382 (tramp-copy-program "pscp")
383 (tramp-copy-args (("-P" "%p") ("-scp") ("-p" "%k") 383 (tramp-copy-args (("-l" "%u") ("-P" "%p") ("-scp") ("-p" "%k")
384 ("-q") ("-r"))) 384 ("-q") ("-r")))
385 (tramp-copy-keep-date t) 385 (tramp-copy-keep-date t)
386 (tramp-copy-recursive t) 386 (tramp-copy-recursive t)
@@ -394,7 +394,7 @@ detected as prompt when being sent on echoing hosts, therefore.")
394 (tramp-remote-shell "/bin/sh") 394 (tramp-remote-shell "/bin/sh")
395 (tramp-remote-shell-args ("-c")) 395 (tramp-remote-shell-args ("-c"))
396 (tramp-copy-program "pscp") 396 (tramp-copy-program "pscp")
397 (tramp-copy-args (("-P" "%p") ("-sftp") ("-p" "%k") 397 (tramp-copy-args (("-l" "%u") ("-P" "%p") ("-sftp") ("-p" "%k")
398 ("-q") ("-r"))) 398 ("-q") ("-r")))
399 (tramp-copy-keep-date t) 399 (tramp-copy-keep-date t)
400 (tramp-copy-recursive t) 400 (tramp-copy-recursive t)
@@ -419,13 +419,12 @@ detected as prompt when being sent on echoing hosts, therefore.")
419 `(,(concat "\\`" (regexp-opt '("su" "sudo" "ksu")) "\\'") 419 `(,(concat "\\`" (regexp-opt '("su" "sudo" "ksu")) "\\'")
420 nil "root")) 420 nil "root"))
421;; Do not add "ssh" based methods, otherwise ~/.ssh/config would be ignored. 421;; Do not add "ssh" based methods, otherwise ~/.ssh/config would be ignored.
422;; Do not add "plink" based methods, they ask interactively for the user.
422;;;###tramp-autoload 423;;;###tramp-autoload
423(add-to-list 'tramp-default-user-alist 424(add-to-list 'tramp-default-user-alist
424 `(,(concat 425 `(,(concat
425 "\\`" 426 "\\`"
426 (regexp-opt 427 (regexp-opt '("rcp" "remcp" "rsh" "telnet" "krlogin" "fcp"))
427 '("rcp" "remcp" "rsh" "telnet" "krlogin"
428 "plink" "plink1" "pscp" "psftp" "fcp"))
429 "\\'") 428 "\\'")
430 nil ,(user-login-name))) 429 nil ,(user-login-name)))
431 430
@@ -2281,8 +2280,10 @@ The method used must be an out-of-band method."
2281 ;; Set variables for computing the prompt for reading 2280 ;; Set variables for computing the prompt for reading
2282 ;; password. 2281 ;; password.
2283 (setq tramp-current-method (tramp-file-name-method v) 2282 (setq tramp-current-method (tramp-file-name-method v)
2284 tramp-current-user (tramp-file-name-user v) 2283 tramp-current-user (or (tramp-file-name-user v)
2285 tramp-current-host (tramp-file-name-real-host v)) 2284 (tramp-get-connection-property
2285 v "login-as" nil))
2286 tramp-current-host (tramp-file-name-real-host v))
2286 2287
2287 ;; Expand hops. Might be necessary for gateway methods. 2288 ;; Expand hops. Might be necessary for gateway methods.
2288 (setq v (car (tramp-compute-multi-hops v))) 2289 (setq v (car (tramp-compute-multi-hops v)))
@@ -2309,8 +2310,15 @@ The method used must be an out-of-band method."
2309 (setq port (string-to-number (match-string 2 host)) 2310 (setq port (string-to-number (match-string 2 host))
2310 host (string-to-number (match-string 1 host)))) 2311 host (string-to-number (match-string 1 host))))
2311 2312
2313 ;; Check for user. There might be an interactive setting.
2314 (setq user (or (tramp-file-name-user v)
2315 (tramp-get-connection-property v "login-as" nil)))
2316
2312 ;; Compose copy command. 2317 ;; Compose copy command.
2313 (setq spec (format-spec-make 2318 (setq host (or host "")
2319 user (or user "")
2320 port (or port "")
2321 spec (format-spec-make
2314 ?h host ?u user ?p port 2322 ?h host ?u user ?p port
2315 ?t (tramp-get-connection-property 2323 ?t (tramp-get-connection-property
2316 (tramp-get-connection-process v) "temp-file" "") 2324 (tramp-get-connection-process v) "temp-file" "")
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index afb7ab4312b..f13315bc662 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -460,6 +460,12 @@ usually suffice.")
460 "Regexp which matches `tramp-echo-mark' as it gets echoed by 460 "Regexp which matches `tramp-echo-mark' as it gets echoed by
461the remote shell.") 461the remote shell.")
462 462
463(defcustom tramp-local-end-of-line
464 (if (memq system-type '(windows-nt)) "\r\n" "\n")
465 "*String used for end of line in local processes."
466 :group 'tramp
467 :type 'string)
468
463(defcustom tramp-rsh-end-of-line "\n" 469(defcustom tramp-rsh-end-of-line "\n"
464 "*String used for end of line in rsh connections. 470 "*String used for end of line in rsh connections.
465I don't think this ever needs to be changed, so please tell me about it 471I don't think this ever needs to be changed, so please tell me about it
@@ -1902,7 +1908,7 @@ Falls back to normal file name handler if no Tramp file name handler exists."
1902 ;; operations shall return at least a default value 1908 ;; operations shall return at least a default value
1903 ;; in order to give the user a chance to correct the 1909 ;; in order to give the user a chance to correct the
1904 ;; file name in the minibuffer. 1910 ;; file name in the minibuffer.
1905 ;; We cannot use 'debug as error handler. In order 1911 ;; We cannot use `debug' as error handler. In order
1906 ;; to get a full backtrace, one could apply 1912 ;; to get a full backtrace, one could apply
1907 ;; (setq debug-on-error t debug-on-signal t) 1913 ;; (setq debug-on-error t debug-on-signal t)
1908 (error 1914 (error
@@ -3109,14 +3115,16 @@ beginning of local filename are not substituted."
3109(defun tramp-action-login (proc vec) 3115(defun tramp-action-login (proc vec)
3110 "Send the login name." 3116 "Send the login name."
3111 (when (not (stringp tramp-current-user)) 3117 (when (not (stringp tramp-current-user))
3112 (save-window-excursion 3118 (setq tramp-current-user
3113 (let ((enable-recursive-minibuffers t)) 3119 (with-connection-property vec "login-as"
3114 (pop-to-buffer (tramp-get-connection-buffer vec)) 3120 (save-window-excursion
3115 (setq tramp-current-user (read-string (match-string 0)))))) 3121 (let ((enable-recursive-minibuffers t))
3116 (tramp-message vec 3 "Sending login name `%s'" tramp-current-user) 3122 (pop-to-buffer (tramp-get-connection-buffer vec))
3123 (read-string (match-string 0)))))))
3117 (with-current-buffer (tramp-get-connection-buffer vec) 3124 (with-current-buffer (tramp-get-connection-buffer vec)
3118 (tramp-message vec 6 "\n%s" (buffer-string))) 3125 (tramp-message vec 6 "\n%s" (buffer-string)))
3119 (tramp-send-string vec tramp-current-user)) 3126 (tramp-message vec 3 "Sending login name `%s'" tramp-current-user)
3127 (tramp-send-string vec (concat tramp-current-user tramp-local-end-of-line)))
3120 3128
3121(defun tramp-action-password (proc vec) 3129(defun tramp-action-password (proc vec)
3122 "Query the user for a password." 3130 "Query the user for a password."
@@ -3148,7 +3156,7 @@ See also `tramp-action-yn'."
3148 (throw 'tramp-action 'permission-denied)) 3156 (throw 'tramp-action 'permission-denied))
3149 (with-current-buffer (tramp-get-connection-buffer vec) 3157 (with-current-buffer (tramp-get-connection-buffer vec)
3150 (tramp-message vec 6 "\n%s" (buffer-string))) 3158 (tramp-message vec 6 "\n%s" (buffer-string)))
3151 (tramp-send-string vec "yes")))) 3159 (tramp-send-string vec (concat "yes" tramp-local-end-of-line)))))
3152 3160
3153(defun tramp-action-yn (proc vec) 3161(defun tramp-action-yn (proc vec)
3154 "Ask the user for confirmation using `y-or-n-p'. 3162 "Ask the user for confirmation using `y-or-n-p'.
@@ -3162,7 +3170,7 @@ See also `tramp-action-yesno'."
3162 (throw 'tramp-action 'permission-denied)) 3170 (throw 'tramp-action 'permission-denied))
3163 (with-current-buffer (tramp-get-connection-buffer vec) 3171 (with-current-buffer (tramp-get-connection-buffer vec)
3164 (tramp-message vec 6 "\n%s" (buffer-string))) 3172 (tramp-message vec 6 "\n%s" (buffer-string)))
3165 (tramp-send-string vec "y")))) 3173 (tramp-send-string vec (concat "y" tramp-local-end-of-line)))))
3166 3174
3167(defun tramp-action-terminal (proc vec) 3175(defun tramp-action-terminal (proc vec)
3168 "Tell the remote host which terminal type to use. 3176 "Tell the remote host which terminal type to use.
@@ -3170,7 +3178,7 @@ The terminal type can be configured with `tramp-terminal-type'."
3170 (tramp-message vec 5 "Setting `%s' as terminal type." tramp-terminal-type) 3178 (tramp-message vec 5 "Setting `%s' as terminal type." tramp-terminal-type)
3171 (with-current-buffer (tramp-get-connection-buffer vec) 3179 (with-current-buffer (tramp-get-connection-buffer vec)
3172 (tramp-message vec 6 "\n%s" (buffer-string))) 3180 (tramp-message vec 6 "\n%s" (buffer-string)))
3173 (tramp-send-string vec tramp-terminal-type)) 3181 (tramp-send-string vec (concat tramp-terminal-type tramp-local-end-of-line)))
3174 3182
3175(defun tramp-action-process-alive (proc vec) 3183(defun tramp-action-process-alive (proc vec)
3176 "Check, whether a process has finished." 3184 "Check, whether a process has finished."
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index 76b9f304164..509bb203f78 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -4382,11 +4382,8 @@ Optional prefix ARG means justify paragraph as well."
4382 (let ((fill-paragraph-function 4382 (let ((fill-paragraph-function
4383 ;; Avoid infinite recursion. 4383 ;; Avoid infinite recursion.
4384 (if (not (eq fill-paragraph-function 'c-fill-paragraph)) 4384 (if (not (eq fill-paragraph-function 'c-fill-paragraph))
4385 fill-paragraph-function)) 4385 fill-paragraph-function)))
4386 (start-point (point-marker))) 4386 (c-mask-paragraph t nil 'fill-paragraph arg))
4387 (c-mask-paragraph
4388 t nil (lambda () (fill-region-as-paragraph (point-min) (point-max) arg)))
4389 (goto-char start-point))
4390 ;; Always return t. This has the effect that if filling isn't done 4387 ;; Always return t. This has the effect that if filling isn't done
4391 ;; above, it isn't done at all, and it's therefore effectively 4388 ;; above, it isn't done at all, and it's therefore effectively
4392 ;; disabled in normal code. 4389 ;; disabled in normal code.
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 2e0294341da..25344fe96a7 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -2074,7 +2074,7 @@ comment at the start of cc-engine.el for more info."
2074;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 2074;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2075;; We maintain a simple cache of positions which aren't in a literal, so as to 2075;; We maintain a simple cache of positions which aren't in a literal, so as to
2076;; speed up testing for non-literality. 2076;; speed up testing for non-literality.
2077(defconst c-state-nonlit-pos-interval 10000) 2077(defconst c-state-nonlit-pos-interval 3000)
2078;; The approximate interval between entries in `c-state-nonlit-pos-cache'. 2078;; The approximate interval between entries in `c-state-nonlit-pos-cache'.
2079 2079
2080(defvar c-state-nonlit-pos-cache nil) 2080(defvar c-state-nonlit-pos-cache nil)
@@ -2129,7 +2129,7 @@ comment at the start of cc-engine.el for more info."
2129 (widen) 2129 (widen)
2130 (save-excursion 2130 (save-excursion
2131 (let ((c c-state-nonlit-pos-cache) 2131 (let ((c c-state-nonlit-pos-cache)
2132 pos npos lit) 2132 pos npos lit macro-beg)
2133 ;; Trim the cache to take account of buffer changes. 2133 ;; Trim the cache to take account of buffer changes.
2134 (while (and c (> (car c) c-state-nonlit-pos-cache-limit)) 2134 (while (and c (> (car c) c-state-nonlit-pos-cache-limit))
2135 (setq c (cdr c))) 2135 (setq c (cdr c)))
@@ -2139,16 +2139,32 @@ comment at the start of cc-engine.el for more info."
2139 (setq c (cdr c))) 2139 (setq c (cdr c)))
2140 (setq pos (or (car c) (point-min))) 2140 (setq pos (or (car c) (point-min)))
2141 2141
2142 (while (<= (setq npos (+ pos c-state-nonlit-pos-interval)) 2142 (while
2143 here) 2143 ;; Add an element to `c-state-nonlit-pos-cache' each iteration.
2144 (setq lit (car (cddr (c-state-pp-to-literal pos npos)))) 2144 (and
2145 (setq pos (or (cdr lit) npos)) ; end of literal containing npos. 2145 (<= (setq npos (+ pos c-state-nonlit-pos-interval)) here)
2146 (progn
2147 (setq lit (car (cddr (c-state-pp-to-literal pos npos))))
2148 (cond
2149 ((null lit)
2150 (setq pos npos)
2151 t)
2152 ((<= (cdr lit) here)
2153 (setq pos (cdr lit))
2154 t)
2155 (t
2156 (setq pos (car lit))
2157 nil))))
2158
2146 (goto-char pos) 2159 (goto-char pos)
2147 (when (and (c-beginning-of-macro) (/= (point) pos)) 2160 (when (and (c-beginning-of-macro) (/= (point) pos))
2148 (c-syntactic-end-of-macro) 2161 (setq macro-beg (point))
2149 (or (eobp) (forward-char)) 2162 (c-syntactic-end-of-macro)
2150 (setq pos (point))) 2163 (or (eobp) (forward-char))
2151 (setq c-state-nonlit-pos-cache (cons pos c-state-nonlit-pos-cache))) 2164 (setq pos (if (<= (point) here)
2165 (point)
2166 macro-beg)))
2167 (setq c-state-nonlit-pos-cache (cons pos c-state-nonlit-pos-cache)))
2152 2168
2153 (if (> pos c-state-nonlit-pos-cache-limit) 2169 (if (> pos c-state-nonlit-pos-cache-limit)
2154 (setq c-state-nonlit-pos-cache-limit pos)) 2170 (setq c-state-nonlit-pos-cache-limit pos))
@@ -4351,6 +4367,78 @@ comment at the start of cc-engine.el for more info."
4351 (t 'c))) ; Assuming the range is valid. 4367 (t 'c))) ; Assuming the range is valid.
4352 range)) 4368 range))
4353 4369
4370(defsubst c-determine-limit-get-base (start try-size)
4371 ;; Get a "safe place" approximately TRY-SIZE characters before START.
4372 ;; This doesn't preserve point.
4373 (let* ((pos (max (- start try-size) (point-min)))
4374 (base (c-state-safe-place pos))
4375 (s (parse-partial-sexp base pos)))
4376 (if (or (nth 4 s) (nth 3 s)) ; comment or string
4377 (nth 8 s)
4378 (point))))
4379
4380(defun c-determine-limit (how-far-back &optional start try-size)
4381 ;; Return a buffer position HOW-FAR-BACK non-literal characters from START
4382 ;; (default point). This is done by going back further in the buffer then
4383 ;; searching forward for literals. The position found won't be in a
4384 ;; literal. We start searching for the sought position TRY-SIZE (default
4385 ;; twice HOW-FAR-BACK) bytes back from START. This function must be fast.
4386 ;; :-)
4387 (save-excursion
4388 (let* ((start (or start (point)))
4389 (try-size (or try-size (* 2 how-far-back)))
4390 (base (c-determine-limit-get-base start try-size))
4391 (pos base)
4392
4393 (s (parse-partial-sexp pos pos)) ; null state.
4394 stack elt size
4395 (count 0))
4396 (while (< pos start)
4397 ;; Move forward one literal each time round this loop.
4398 ;; Move forward to the start of a comment or string.
4399 (setq s (parse-partial-sexp
4400 pos
4401 start
4402 nil ; target-depth
4403 nil ; stop-before
4404 s ; state
4405 'syntax-table)) ; stop-comment
4406
4407 ;; Gather details of the non-literal-bit - starting pos and size.
4408 (setq size (- (if (or (nth 4 s) (nth 3 s))
4409 (nth 8 s)
4410 (point))
4411 pos))
4412 (if (> size 0)
4413 (setq stack (cons (cons pos size) stack)))
4414
4415 ;; Move forward to the end of the comment/string.
4416 (if (or (nth 4 s) (nth 3 s))
4417 (setq s (parse-partial-sexp
4418 (point)
4419 start
4420 nil ; target-depth
4421 nil ; stop-before
4422 s ; state
4423 'syntax-table))) ; stop-comment
4424 (setq pos (point)))
4425
4426 ;; Now try and find enough non-literal characters recorded on the stack.
4427 ;; Go back one recorded literal each time round this loop.
4428 (while (and (< count how-far-back)
4429 stack)
4430 (setq elt (car stack)
4431 stack (cdr stack))
4432 (setq count (+ count (cdr elt))))
4433
4434 ;; Have we found enough yet?
4435 (cond
4436 ((>= count how-far-back)
4437 (+ (car elt) (- count how-far-back)))
4438 ((eq base (point-min))
4439 (point-min))
4440 (t
4441 (c-determine-limit (- how-far-back count) base try-size))))))
4354 4442
4355;; `c-find-decl-spots' and accompanying stuff. 4443;; `c-find-decl-spots' and accompanying stuff.
4356 4444
@@ -4487,13 +4575,14 @@ comment at the start of cc-engine.el for more info."
4487 ;; Call CFD-FUN for each possible spot for a declaration, cast or 4575 ;; Call CFD-FUN for each possible spot for a declaration, cast or
4488 ;; label from the point to CFD-LIMIT. 4576 ;; label from the point to CFD-LIMIT.
4489 ;; 4577 ;;
4490 ;; CFD-FUN is called with point at the start of the spot. It's 4578 ;; CFD-FUN is called with point at the start of the spot. It's passed two
4491 ;; passed two arguments: The first is the end position of the token 4579 ;; arguments: The first is the end position of the token preceding the spot,
4492 ;; preceding the spot, or 0 for the implicit match at bob. The 4580 ;; or 0 for the implicit match at bob. The second is a flag that is t when
4493 ;; second is a flag that is t when the match is inside a macro. If 4581 ;; the match is inside a macro. Point should be moved forward by at least
4494 ;; CFD-FUN adds `c-decl-end' properties somewhere below the current 4582 ;; one token.
4495 ;; spot, it should return non-nil to ensure that the next search 4583 ;;
4496 ;; will find them. 4584 ;; If CFD-FUN adds `c-decl-end' properties somewhere below the current spot,
4585 ;; it should return non-nil to ensure that the next search will find them.
4497 ;; 4586 ;;
4498 ;; Such a spot is: 4587 ;; Such a spot is:
4499 ;; o The first token after bob. 4588 ;; o The first token after bob.
@@ -4867,7 +4956,8 @@ comment at the start of cc-engine.el for more info."
4867 (goto-char cfd-continue-pos) 4956 (goto-char cfd-continue-pos)
4868 (if (= cfd-continue-pos cfd-limit) 4957 (if (= cfd-continue-pos cfd-limit)
4869 (setq cfd-match-pos cfd-limit) 4958 (setq cfd-match-pos cfd-limit)
4870 (c-find-decl-prefix-search))))) 4959 (c-find-decl-prefix-search))))) ; Moves point, sets cfd-continue-pos,
4960 ; cfd-match-pos, etc.
4871 4961
4872 4962
4873;; A cache for found types. 4963;; A cache for found types.
@@ -8047,6 +8137,23 @@ comment at the start of cc-engine.el for more info."
8047 next-open-brace (c-pull-open-brace paren-state))) 8137 next-open-brace (c-pull-open-brace paren-state)))
8048 open-brace)) 8138 open-brace))
8049 8139
8140(defun c-cheap-inside-bracelist-p (paren-state)
8141 ;; Return the position of the L-brace if point is inside a brace list
8142 ;; initialization of an array, etc. This is an approximate function,
8143 ;; designed for speed over accuracy. It will not find every bracelist, but
8144 ;; a non-nil result is reliable. We simply search for "= {" (naturally with
8145 ;; syntactic whitespace allowed). PAREN-STATE is the normal thing that it
8146 ;; is everywhere else.
8147 (let (b-pos)
8148 (save-excursion
8149 (while
8150 (and (setq b-pos (c-pull-open-brace paren-state))
8151 (progn (goto-char b-pos)
8152 (c-backward-sws)
8153 (c-backward-token-2)
8154 (not (looking-at "=")))))
8155 b-pos)))
8156
8050(defun c-inside-bracelist-p (containing-sexp paren-state) 8157(defun c-inside-bracelist-p (containing-sexp paren-state)
8051 ;; return the buffer position of the beginning of the brace list 8158 ;; return the buffer position of the beginning of the brace list
8052 ;; statement if we're inside a brace list, otherwise return nil. 8159 ;; statement if we're inside a brace list, otherwise return nil.
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index e7d00815708..2d116e1ecdc 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -446,10 +446,12 @@
446 ;; `parse-sexp-lookup-properties' (when it exists). 446 ;; `parse-sexp-lookup-properties' (when it exists).
447 (parse-sexp-lookup-properties 447 (parse-sexp-lookup-properties
448 (cc-eval-when-compile 448 (cc-eval-when-compile
449 (boundp 'parse-sexp-lookup-properties)))) 449 (boundp 'parse-sexp-lookup-properties)))
450 (BOD-limit
451 (c-determine-limit 1000)))
450 (goto-char 452 (goto-char
451 (let ((here (point))) 453 (let ((here (point)))
452 (if (eq (car (c-beginning-of-decl-1)) 'same) 454 (if (eq (car (c-beginning-of-decl-1 BOD-limit)) 'same)
453 (point) 455 (point)
454 here))) 456 here)))
455 ,(c-make-font-lock-search-form regexp highlights)) 457 ,(c-make-font-lock-search-form regexp highlights))
@@ -1240,6 +1242,7 @@ casts and declarations are fontified. Used on level 2 and higher."
1240 ;; it finds any. That's necessary so that we later will 1242 ;; it finds any. That's necessary so that we later will
1241 ;; stop inside them to fontify types there. 1243 ;; stop inside them to fontify types there.
1242 (c-parse-and-markup-<>-arglists t) 1244 (c-parse-and-markup-<>-arglists t)
1245 lbrace ; position of some {.
1243 ;; The font-lock package in Emacs is known to clobber 1246 ;; The font-lock package in Emacs is known to clobber
1244 ;; `parse-sexp-lookup-properties' (when it exists). 1247 ;; `parse-sexp-lookup-properties' (when it exists).
1245 (parse-sexp-lookup-properties 1248 (parse-sexp-lookup-properties
@@ -1351,7 +1354,6 @@ casts and declarations are fontified. Used on level 2 and higher."
1351 (or (looking-at c-typedef-key) 1354 (or (looking-at c-typedef-key)
1352 (goto-char start-pos))) 1355 (goto-char start-pos)))
1353 1356
1354 ;; Now analyze the construct.
1355 ;; In QT, "more" is an irritating keyword that expands to nothing. 1357 ;; In QT, "more" is an irritating keyword that expands to nothing.
1356 ;; We skip over it to prevent recognition of "more slots: <symbol>" 1358 ;; We skip over it to prevent recognition of "more slots: <symbol>"
1357 ;; as a bitfield declaration. 1359 ;; as a bitfield declaration.
@@ -1360,6 +1362,8 @@ casts and declarations are fontified. Used on level 2 and higher."
1360 (concat "\\(more\\)\\([^" c-symbol-chars "]\\|$\\)"))) 1362 (concat "\\(more\\)\\([^" c-symbol-chars "]\\|$\\)")))
1361 (goto-char (match-end 1)) 1363 (goto-char (match-end 1))
1362 (c-forward-syntactic-ws)) 1364 (c-forward-syntactic-ws))
1365
1366 ;; Now analyze the construct.
1363 (setq decl-or-cast (c-forward-decl-or-cast-1 1367 (setq decl-or-cast (c-forward-decl-or-cast-1
1364 match-pos context last-cast-end)) 1368 match-pos context last-cast-end))
1365 1369
@@ -1428,6 +1432,39 @@ casts and declarations are fontified. Used on level 2 and higher."
1428 (c-fontify-recorded-types-and-refs) 1432 (c-fontify-recorded-types-and-refs)
1429 nil) 1433 nil)
1430 1434
1435 ;; Restore point, since at this point in the code it has been
1436 ;; left undefined by c-forward-decl-or-cast-1 above.
1437 ((progn (goto-char start-pos) nil))
1438
1439 ;; If point is inside a bracelist, there's no point checking it
1440 ;; being at a declarator.
1441 ((let ((paren-state (c-parse-state)))
1442 (setq lbrace (c-cheap-inside-bracelist-p paren-state)))
1443 ;; Move past this bracelist to prevent an endless loop.
1444 (goto-char lbrace)
1445 (unless (c-safe (progn (forward-list) t))
1446 (goto-char start-pos)
1447 (c-forward-token-2))
1448 nil)
1449
1450 ;; If point is just after a ")" which is followed by an
1451 ;; identifier which isn't a label, or at the matching "(", we're
1452 ;; at either a macro invocation, a cast, or a
1453 ;; for/while/etc. statement. The cast case is handled above.
1454 ;; None of these cases can contain a declarator.
1455 ((or (and (eq (char-before match-pos) ?\))
1456 (c-on-identifier)
1457 (save-excursion (not (c-forward-label))))
1458 (and (eq (char-after) ?\()
1459 (save-excursion
1460 (and
1461 (progn (c-backward-token-2) (c-on-identifier))
1462 (save-excursion (not (c-forward-label)))
1463 (progn (c-backward-token-2)
1464 (eq (char-after) ?\())))))
1465 (c-forward-token-2) ; Must prevent looping.
1466 nil)
1467
1431 ((and (not c-enums-contain-decls) 1468 ((and (not c-enums-contain-decls)
1432 ;; An optimization quickly to eliminate scans of long enum 1469 ;; An optimization quickly to eliminate scans of long enum
1433 ;; declarations in the next cond arm. 1470 ;; declarations in the next cond arm.
@@ -1441,13 +1478,14 @@ casts and declarations are fontified. Used on level 2 and higher."
1441 (progn 1478 (progn
1442 (c-backward-token-2) 1479 (c-backward-token-2)
1443 (looking-at c-brace-list-key))))))) 1480 (looking-at c-brace-list-key)))))))
1444 t) 1481 (c-forward-token-2)
1482 nil)
1445 1483
1446 (t 1484 (t
1447 ;; Are we at a declarator? Try to go back to the declaration 1485 ;; Are we at a declarator? Try to go back to the declaration
1448 ;; to check this. If we get there, check whether a "typedef" 1486 ;; to check this. If we get there, check whether a "typedef"
1449 ;; is there, then fontify the declarators accordingly. 1487 ;; is there, then fontify the declarators accordingly.
1450 (let ((decl-search-lim (max (- (point) 50000) (point-min))) 1488 (let ((decl-search-lim (c-determine-limit 1000))
1451 paren-state bod-res encl-pos is-typedef 1489 paren-state bod-res encl-pos is-typedef
1452 c-recognize-knr-p) ; Strictly speaking, bogus, but it 1490 c-recognize-knr-p) ; Strictly speaking, bogus, but it
1453 ; speeds up lisp.h tremendously. 1491 ; speeds up lisp.h tremendously.
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index b74d878516d..0c86b68f1d9 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -490,6 +490,7 @@ that requires a literal mode spec at compile time."
490 (make-local-variable 'paragraph-ignore-fill-prefix) 490 (make-local-variable 'paragraph-ignore-fill-prefix)
491 (make-local-variable 'adaptive-fill-mode) 491 (make-local-variable 'adaptive-fill-mode)
492 (make-local-variable 'adaptive-fill-regexp) 492 (make-local-variable 'adaptive-fill-regexp)
493 (make-local-variable 'fill-paragraph-handle-comment)
493 494
494 ;; now set their values 495 ;; now set their values
495 (set (make-local-variable 'parse-sexp-ignore-comments) t) 496 (set (make-local-variable 'parse-sexp-ignore-comments) t)
@@ -500,6 +501,9 @@ that requires a literal mode spec at compile time."
500 (set (make-local-variable 'comment-line-break-function) 501 (set (make-local-variable 'comment-line-break-function)
501 'c-indent-new-comment-line) 502 'c-indent-new-comment-line)
502 503
504 ;; For the benefit of adaptive file, which otherwise mis-fills.
505 (setq fill-paragraph-handle-comment nil)
506
503 ;; Install `c-fill-paragraph' on `fill-paragraph-function' so that a 507 ;; Install `c-fill-paragraph' on `fill-paragraph-function' so that a
504 ;; direct call to `fill-paragraph' behaves better. This still 508 ;; direct call to `fill-paragraph' behaves better. This still
505 ;; doesn't work with filladapt but it's better than nothing. 509 ;; doesn't work with filladapt but it's better than nothing.
diff --git a/lisp/subr.el b/lisp/subr.el
index 14f9192405c..c9e213c86a0 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1857,12 +1857,30 @@ FILE should be the name of a library, with no directory name."
1857 1857
1858(defun display-delayed-warnings () 1858(defun display-delayed-warnings ()
1859 "Display delayed warnings from `delayed-warnings-list'. 1859 "Display delayed warnings from `delayed-warnings-list'.
1860This is the default value of `delayed-warnings-hook'." 1860Used from `delayed-warnings-hook' (which see)."
1861 (dolist (warning (nreverse delayed-warnings-list)) 1861 (dolist (warning (nreverse delayed-warnings-list))
1862 (apply 'display-warning warning)) 1862 (apply 'display-warning warning))
1863 (setq delayed-warnings-list nil)) 1863 (setq delayed-warnings-list nil))
1864 1864
1865(defvar delayed-warnings-hook '(display-delayed-warnings) 1865(defun collapse-delayed-warnings ()
1866 "Remove duplicates from `delayed-warnings-list'.
1867Collapse identical adjacent warnings into one (plus count).
1868Used from `delayed-warnings-hook' (which see)."
1869 (let ((count 1)
1870 collapsed warning)
1871 (while delayed-warnings-list
1872 (setq warning (pop delayed-warnings-list))
1873 (if (equal warning (car delayed-warnings-list))
1874 (setq count (1+ count))
1875 (when (> count 1)
1876 (setcdr warning (cons (format "%s [%d times]" (cadr warning) count)
1877 (cddr warning)))
1878 (setq count 1))
1879 (push warning collapsed)))
1880 (setq delayed-warnings-list (nreverse collapsed))))
1881
1882(defvar delayed-warnings-hook '(collapse-delayed-warnings
1883 display-delayed-warnings)
1866 "Normal hook run to process delayed warnings. 1884 "Normal hook run to process delayed warnings.
1867Functions in this hook should access the `delayed-warnings-list' 1885Functions in this hook should access the `delayed-warnings-list'
1868variable (which see) and remove from it the warnings they process.") 1886variable (which see) and remove from it the warnings they process.")
diff --git a/lisp/vc/pcvs.el b/lisp/vc/pcvs.el
index 1066ebc7f81..9ba65cda143 100644
--- a/lisp/vc/pcvs.el
+++ b/lisp/vc/pcvs.el
@@ -31,19 +31,19 @@
31 31
32;;; Commentary: 32;;; Commentary:
33 33
34;; PCL-CVS is a front-end to the CVS version control system. For people 34;; PCL-CVS is a front-end to the CVS version control system.
35;; familiar with VC, it is somewhat like VC-dired: it presents the status of 35;; It presents the status of all the files in your working area and
36;; all the files in your working area and allows you to commit/update several 36;; allows you to commit/update several of them at a time.
37;; of them at a time. Compared to VC-dired, it is considerably better and 37;; Compare with the general Emacs utility vc-dir, which tries
38;; faster (but only for CVS). 38;; to be VCS-agnostic. You may find PCL-CVS better/faster for CVS.
39 39
40;; PCL-CVS was originally written by Per Cederqvist many years ago. This 40;; PCL-CVS was originally written by Per Cederqvist many years ago. This
41;; version derives from the XEmacs-21 version, itself based on the 2.0b2 41;; version derives from the XEmacs-21 version, itself based on the 2.0b2
42;; version (last release from Per). It is a thorough rework. 42;; version (last release from Per). It is a thorough rework.
43 43
44;; Contrary to what you'd expect, PCL-CVS is not a replacement for VC but only 44;; PCL-CVS is not a replacement for VC, but adds extra functionality.
45;; for VC-dired. As such, I've tried to make PCL-CVS and VC interoperate 45;; As such, I've tried to make PCL-CVS and VC interoperate seamlessly
46;; seamlessly (I also use VC). 46;; (I also use VC).
47 47
48;; To use PCL-CVS just use `M-x cvs-examine RET <dir> RET'. 48;; To use PCL-CVS just use `M-x cvs-examine RET <dir> RET'.
49;; There is a TeXinfo manual, which can be helpful to get started. 49;; There is a TeXinfo manual, which can be helpful to get started.
diff --git a/lisp/vc/vc-dav.el b/lisp/vc/vc-dav.el
index 6f9a6d6b7df..9d55e9c7b43 100644
--- a/lisp/vc/vc-dav.el
+++ b/lisp/vc/vc-dav.el
@@ -170,10 +170,7 @@ It should return a status of either 0 (no differences found), or
170;; Return a dav-specific mode line string for URL. Are there any 170;; Return a dav-specific mode line string for URL. Are there any
171;; specific states that we want exposed? 171;; specific states that we want exposed?
172;; 172;;
173;; vc-dav-dired-state-info(url) 173;; vc-dir support
174;; Translate the `vc-state' property of URL into a string that can
175;; be used in a vc-dired buffer. Are there any extra states that
176;; we want exposed?
177;; 174;;
178;; vc-dav-receive-file(url rev) 175;; vc-dav-receive-file(url rev)
179;; Let this backend `receive' a file that is already registered 176;; Let this backend `receive' a file that is already registered
diff --git a/lisp/windmove.el b/lisp/windmove.el
index 10a564419fb..0523530869b 100644
--- a/lisp/windmove.el
+++ b/lisp/windmove.el
@@ -417,17 +417,17 @@ supplied, if ARG is greater or smaller than zero, respectively."
417 (- (nth 3 edges) 1)))) 417 (- (nth 3 edges) 1))))
418 (cond 418 (cond
419 ((> effective-arg 0) 419 ((> effective-arg 0)
420 top-left) 420 top-left)
421 ((< effective-arg 0) 421 ((< effective-arg 0)
422 bottom-right) 422 bottom-right)
423 ((= effective-arg 0) 423 ((= effective-arg 0)
424 (windmove-coord-add 424 (windmove-coord-add
425 top-left 425 top-left
426 (let ((col-row 426 ;; Don't care whether window is horizontally scrolled -
427 (posn-col-row 427 ;; `posn-at-point' handles that already. See also:
428 (posn-at-point (window-point window) window)))) 428 ;; http://lists.gnu.org/archive/html/emacs-devel/2012-01/msg00638.html
429 (cons (- (car col-row) (window-hscroll window)) 429 (posn-col-row
430 (cdr col-row))))))))) 430 (posn-at-point (window-point window) window))))))))
431 431
432;; This uses the reference location in the current window (calculated 432;; This uses the reference location in the current window (calculated
433;; by `windmove-reference-loc' above) to find a reference location 433;; by `windmove-reference-loc' above) to find a reference location
diff --git a/lisp/window.el b/lisp/window.el
index 54e5ec9c74c..9122904b0bb 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -3568,7 +3568,7 @@ specific buffers."
3568 )) 3568 ))
3569 3569
3570;;; Window states, how to get them and how to put them in a window. 3570;;; Window states, how to get them and how to put them in a window.
3571(defun window--state-get-1 (window &optional ignore) 3571(defun window--state-get-1 (window &optional writable)
3572 "Helper function for `window-state-get'." 3572 "Helper function for `window-state-get'."
3573 (let* ((type 3573 (let* ((type
3574 (cond 3574 (cond
@@ -3585,29 +3585,22 @@ specific buffers."
3585 (normal-height . ,(window-normal-size window)) 3585 (normal-height . ,(window-normal-size window))
3586 (normal-width . ,(window-normal-size window t)) 3586 (normal-width . ,(window-normal-size window t))
3587 (combination-limit . ,(window-combination-limit window)) 3587 (combination-limit . ,(window-combination-limit window))
3588 ,@(let (list) 3588 ,@(let ((parameters (window-parameters window))
3589 ;; Make copies of persistent window parameters whose cdr 3589 list)
3590 ;; is either t or, when IGNORE is non-nil, is either nil 3590 ;; Make copies of those window parameters whose
3591 ;; or `state'. 3591 ;; persistence property is `writable' if WRITABLE is
3592 (dolist (pers window-persistent-parameters) 3592 ;; non-nil and non-nil if WRITABLE is nil.
3593 (when (and (consp pers) 3593 (dolist (par parameters)
3594 (or (eq (cdr pers) t) 3594 (let ((pers (cdr (assq (car par)
3595 (and (memq (cdr pers) '(state nil)) 3595 window-persistent-parameters))))
3596 (not ignore)))) 3596 (when (and pers (or (not writable) (eq pers 'writable)))
3597 (let ((par (assq (car pers) (window-parameters window)))) 3597 (setq list (cons (cons (car par) (cdr par)) list)))))
3598 (setq list (cons (cons (car pers) (when par (cdr par))) 3598 ;; Add `clone-of' parameter if necessary.
3599 list))))) 3599 (let ((pers (cdr (assq 'clone-of
3600 ;; Save `clone-of' parameter unless IGNORE or 3600 window-persistent-parameters))))
3601 ;; `window-persistent-parameters' prevail. 3601 (when (and pers (or (not writable) (eq pers 'writable))
3602 (when (and (not (assq 'clone-of (window-parameters window))) 3602 (not (assq 'clone-of list)))
3603 (let ((clone-of 3603 (setq list (cons (cons 'clone-of window) list))))
3604 (assq 'clone-of
3605 window-persistent-parameters)))
3606 (when clone-of
3607 (if ignore
3608 (eq (cdr clone-of) t)
3609 (memq (cdr clone-of) '(state nil))))))
3610 (setq list (cons (cons 'clone-of window) list)))
3611 (when list 3604 (when list
3612 `((parameters . ,list)))) 3605 `((parameters . ,list))))
3613 ,@(when buffer 3606 ,@(when buffer
@@ -3628,31 +3621,34 @@ specific buffers."
3628 (scroll-bars . ,(window-scroll-bars window)) 3621 (scroll-bars . ,(window-scroll-bars window))
3629 (vscroll . ,(window-vscroll window)) 3622 (vscroll . ,(window-vscroll window))
3630 (dedicated . ,(window-dedicated-p window)) 3623 (dedicated . ,(window-dedicated-p window))
3631 (point . ,(if ignore point (copy-marker point))) 3624 (point . ,(if writable point (copy-marker point)))
3632 (start . ,(if ignore start (copy-marker start))) 3625 (start . ,(if writable start (copy-marker start)))
3633 ,@(when mark 3626 ,@(when mark
3634 `((mark . ,(if ignore 3627 `((mark . ,(if writable
3635 mark (copy-marker mark)))))))))))) 3628 mark (copy-marker mark))))))))))))
3636 (tail 3629 (tail
3637 (when (memq type '(vc hc)) 3630 (when (memq type '(vc hc))
3638 (let (list) 3631 (let (list)
3639 (setq window (window-child window)) 3632 (setq window (window-child window))
3640 (while window 3633 (while window
3641 (setq list (cons (window--state-get-1 window ignore) list)) 3634 (setq list (cons (window--state-get-1 window writable) list))
3642 (setq window (window-right window))) 3635 (setq window (window-right window)))
3643 (nreverse list))))) 3636 (nreverse list)))))
3644 (append head tail))) 3637 (append head tail)))
3645 3638
3646(defun window-state-get (&optional window ignore) 3639(defun window-state-get (&optional window writable)
3647 "Return state of WINDOW as a Lisp object. 3640 "Return state of WINDOW as a Lisp object.
3648WINDOW can be any window and defaults to the root window of the 3641WINDOW can be any window and defaults to the root window of the
3649selected frame. 3642selected frame.
3650 3643
3651Optional argument IGNORE non-nil means do not use markers for 3644Optional argument WRITABLE non-nil means do not use markers for
3652sampling positions like `window-point' or `window-start' and do 3645sampling `window-point' and `window-start'. Together, WRITABLE
3653not record parameters unless `window-persistent-parameters' 3646and the variable `window-persistent-parameters' specify which
3654requests it. IGNORE should be non-nil when the return value 3647window parameters are saved by this function. WRITABLE should be
3655shall be written to a file and read back in another session. 3648non-nil when the return value shall be written to a file and read
3649back in another session. Otherwise, an application may run into
3650an `invalid-read-syntax' error while attempting to read back the
3651value from file.
3656 3652
3657The return value can be used as argument for `window-state-put' 3653The return value can be used as argument for `window-state-put'
3658to put the state recorded here into an arbitrary window. The 3654to put the state recorded here into an arbitrary window. The
@@ -3678,7 +3674,7 @@ value can be also stored on disk and read back in a new session."
3678 ;; These are probably not needed. 3674 ;; These are probably not needed.
3679 ,@(when (window-size-fixed-p window) `((fixed-height . t))) 3675 ,@(when (window-size-fixed-p window) `((fixed-height . t)))
3680 ,@(when (window-size-fixed-p window t) `((fixed-width . t)))) 3676 ,@(when (window-size-fixed-p window t) `((fixed-width . t))))
3681 (window--state-get-1 window ignore))) 3677 (window--state-get-1 window writable)))
3682 3678
3683(defvar window-state-put-list nil 3679(defvar window-state-put-list nil
3684 "Helper variable for `window-state-put'.") 3680 "Helper variable for `window-state-put'.")
@@ -3757,15 +3753,13 @@ value can be also stored on disk and read back in a new session."
3757 (state (cdr (assq 'buffer item)))) 3753 (state (cdr (assq 'buffer item))))
3758 (when combination-limit 3754 (when combination-limit
3759 (set-window-combination-limit window combination-limit)) 3755 (set-window-combination-limit window combination-limit))
3760 ;; Assign saved window parameters. If a parameter's value is nil, 3756 ;; Reset window's parameters and assign saved ones (we might want
3761 ;; don't assign it unless the new window has it set already (which 3757 ;; a `remove-window-parameters' function here).
3762 ;; shouldn't happen unless some `window-configuration-change-hook' 3758 (dolist (parameter (window-parameters window))
3763 ;; function installed it). 3759 (set-window-parameter window (car parameter) nil))
3764 (when parameters 3760 (when parameters
3765 (dolist (parameter parameters) 3761 (dolist (parameter parameters)
3766 (when (or (cdr parameter) 3762 (set-window-parameter window (car parameter) (cdr parameter))))
3767 (window-parameter window (car parameter)))
3768 (set-window-parameter window (car parameter) (cdr parameter)))))
3769 ;; Process buffer related state. 3763 ;; Process buffer related state.
3770 (when state 3764 (when state
3771 ;; We don't want to raise an error here so we create a buffer if 3765 ;; We don't want to raise an error here so we create a buffer if
diff --git a/src/ChangeLog b/src/ChangeLog
index aa4e92b4134..c8b1e654830 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,25 @@
12012-01-21 Chong Yidong <cyd@gnu.org>
2
3 * floatfns.c (Fcopysign): Make the second argument non-optional,
4 since nil is not allowed anyway.
5
62012-01-21 Andreas Schwab <schwab@linux-m68k.org>
7
8 * process.c (read_process_output): Use p instead of XPROCESS (proc).
9 (send_process): Likewise.
10
112012-01-19 Martin Rudalics <rudalics@gmx.at>
12
13 * window.c (save_window_save, Fcurrent_window_configuration)
14 (Vwindow_persistent_parameters): Do not use Qstate. Rewrite
15 doc-strings.
16
172012-01-19 Kenichi Handa <handa@m17n.org>
18
19 * character.c (char_width): New function.
20 (Fchar_width, c_string_width, lisp_string_width):
21 Use char_width (Bug#9496).
22
12012-01-16 Martin Rudalics <rudalics@gmx.at> 232012-01-16 Martin Rudalics <rudalics@gmx.at>
2 24
3 * window.c (Vwindow_persistent_parameters): New variable. 25 * window.c (Vwindow_persistent_parameters): New variable.
diff --git a/src/character.c b/src/character.c
index a2cb416d770..593fbcece0b 100644
--- a/src/character.c
+++ b/src/character.c
@@ -308,6 +308,31 @@ If the multibyte character does not represent a byte, return -1. */)
308 } 308 }
309} 309}
310 310
311
312/* Return width (columns) of C considering the buffer display table DP. */
313
314static int
315char_width (int c, struct Lisp_Char_Table *dp)
316{
317 int width = CHAR_WIDTH (c);
318
319 if (dp)
320 {
321 Lisp_Object disp = DISP_CHAR_VECTOR (dp, c), ch;
322 int i;
323
324 if (VECTORP (disp))
325 for (i = 0, width = 0; i < ASIZE (disp); i++)
326 {
327 ch = AREF (disp, i);
328 if (CHARACTERP (ch))
329 width += CHAR_WIDTH (XFASTINT (ch));
330 }
331 }
332 return width;
333}
334
335
311DEFUN ("char-width", Fchar_width, Schar_width, 1, 1, 0, 336DEFUN ("char-width", Fchar_width, Schar_width, 1, 1, 0,
312 doc: /* Return width of CHAR when displayed in the current buffer. 337 doc: /* Return width of CHAR when displayed in the current buffer.
313The width is measured by how many columns it occupies on the screen. 338The width is measured by how many columns it occupies on the screen.
@@ -315,21 +340,11 @@ Tab is taken to occupy `tab-width' columns.
315usage: (char-width CHAR) */) 340usage: (char-width CHAR) */)
316 (Lisp_Object ch) 341 (Lisp_Object ch)
317{ 342{
318 Lisp_Object disp;
319 int c, width; 343 int c, width;
320 struct Lisp_Char_Table *dp = buffer_display_table ();
321 344
322 CHECK_CHARACTER (ch); 345 CHECK_CHARACTER (ch);
323 c = XINT (ch); 346 c = XINT (ch);
324 347 width = char_width (c, buffer_display_table ());
325 /* Get the way the display table would display it. */
326 disp = dp ? DISP_CHAR_VECTOR (dp, c) : Qnil;
327
328 if (VECTORP (disp))
329 width = sanitize_char_width (ASIZE (disp));
330 else
331 width = CHAR_WIDTH (c);
332
333 return make_number (width); 348 return make_number (width);
334} 349}
335 350
@@ -350,22 +365,9 @@ c_string_width (const unsigned char *str, EMACS_INT len, int precision,
350 365
351 while (i_byte < len) 366 while (i_byte < len)
352 { 367 {
353 int bytes, thiswidth; 368 int bytes;
354 Lisp_Object val;
355 int c = STRING_CHAR_AND_LENGTH (str + i_byte, bytes); 369 int c = STRING_CHAR_AND_LENGTH (str + i_byte, bytes);
356 370 int thiswidth = char_width (c, dp);
357 if (dp)
358 {
359 val = DISP_CHAR_VECTOR (dp, c);
360 if (VECTORP (val))
361 thiswidth = sanitize_char_width (ASIZE (val));
362 else
363 thiswidth = CHAR_WIDTH (c);
364 }
365 else
366 {
367 thiswidth = CHAR_WIDTH (c);
368 }
369 371
370 if (precision > 0 372 if (precision > 0
371 && (width + thiswidth > precision)) 373 && (width + thiswidth > precision))
@@ -447,18 +449,7 @@ lisp_string_width (Lisp_Object string, EMACS_INT precision,
447 else 449 else
448 c = str[i_byte], bytes = 1; 450 c = str[i_byte], bytes = 1;
449 chars = 1; 451 chars = 1;
450 if (dp) 452 thiswidth = char_width (c, dp);
451 {
452 val = DISP_CHAR_VECTOR (dp, c);
453 if (VECTORP (val))
454 thiswidth = sanitize_char_width (ASIZE (val));
455 else
456 thiswidth = CHAR_WIDTH (c);
457 }
458 else
459 {
460 thiswidth = CHAR_WIDTH (c);
461 }
462 } 453 }
463 454
464 if (precision <= 0) 455 if (precision <= 0)
diff --git a/src/floatfns.c b/src/floatfns.c
index c44784f2120..305c78cae63 100644
--- a/src/floatfns.c
+++ b/src/floatfns.c
@@ -294,7 +294,7 @@ DEFUN ("isnan", Fisnan, Sisnan, 1, 1, 0,
294} 294}
295 295
296#ifdef HAVE_COPYSIGN 296#ifdef HAVE_COPYSIGN
297DEFUN ("copysign", Fcopysign, Scopysign, 1, 2, 0, 297DEFUN ("copysign", Fcopysign, Scopysign, 2, 2, 0,
298 doc: /* Copy sign of X2 to value of X1, and return the result. 298 doc: /* Copy sign of X2 to value of X1, and return the result.
299Cause an error if X1 or X2 is not a float. */) 299Cause an error if X1 or X2 is not a float. */)
300 (Lisp_Object x1, Lisp_Object x2) 300 (Lisp_Object x1, Lisp_Object x2)
diff --git a/src/process.c b/src/process.c
index 3dc753f5159..bdf16b7dbd2 100644
--- a/src/process.c
+++ b/src/process.c
@@ -5060,9 +5060,8 @@ read_process_output (Lisp_Object proc, register int channel)
5060 proc_buffered_char[channel] = -1; 5060 proc_buffered_char[channel] = -1;
5061 } 5061 }
5062#ifdef HAVE_GNUTLS 5062#ifdef HAVE_GNUTLS
5063 if (XPROCESS (proc)->gnutls_p) 5063 if (p->gnutls_p)
5064 nbytes = emacs_gnutls_read (XPROCESS (proc), 5064 nbytes = emacs_gnutls_read (p, chars + carryover + buffered,
5065 chars + carryover + buffered,
5066 readmax - buffered); 5065 readmax - buffered);
5067 else 5066 else
5068#endif 5067#endif
@@ -5527,9 +5526,8 @@ send_process (volatile Lisp_Object proc, const char *volatile buf,
5527#endif 5526#endif
5528 { 5527 {
5529#ifdef HAVE_GNUTLS 5528#ifdef HAVE_GNUTLS
5530 if (XPROCESS (proc)->gnutls_p) 5529 if (p->gnutls_p)
5531 written = emacs_gnutls_write (XPROCESS (proc), 5530 written = emacs_gnutls_write (p, buf, this);
5532 buf, this);
5533 else 5531 else
5534#endif 5532#endif
5535 written = emacs_write (outfd, buf, this); 5533 written = emacs_write (outfd, buf, this);
diff --git a/src/window.c b/src/window.c
index 3ee731e60bf..a3b58d648a1 100644
--- a/src/window.c
+++ b/src/window.c
@@ -59,7 +59,7 @@ static Lisp_Object Qreplace_buffer_in_windows, Qget_mru_window;
59static Lisp_Object Qwindow_resize_root_window, Qwindow_resize_root_window_vertically; 59static Lisp_Object Qwindow_resize_root_window, Qwindow_resize_root_window_vertically;
60static Lisp_Object Qscroll_up, Qscroll_down, Qscroll_command; 60static Lisp_Object Qscroll_up, Qscroll_down, Qscroll_command;
61static Lisp_Object Qsafe, Qabove, Qbelow; 61static Lisp_Object Qsafe, Qabove, Qbelow;
62static Lisp_Object Qauto_buffer_name, Qclone_of, Qstate; 62static Lisp_Object Qauto_buffer_name, Qclone_of;
63 63
64static int displayed_window_lines (struct window *); 64static int displayed_window_lines (struct window *);
65static struct window *decode_window (Lisp_Object); 65static struct window *decode_window (Lisp_Object);
@@ -5894,9 +5894,8 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i)
5894 tem = XCDR (tem)) 5894 tem = XCDR (tem))
5895 { 5895 {
5896 pers = XCAR (tem); 5896 pers = XCAR (tem);
5897 /* Save values for persistent window parameters whose cdr 5897 /* Save values for persistent window parameters. */
5898 is either nil or t. */ 5898 if (CONSP (pers) && !NILP (XCDR (pers)))
5899 if (CONSP (pers) && (NILP (XCDR (pers)) || EQ (XCDR (pers), Qt)))
5900 { 5899 {
5901 par = Fassq (XCAR (pers), w->window_parameters); 5900 par = Fassq (XCAR (pers), w->window_parameters);
5902 if (NILP (par)) 5901 if (NILP (par))
@@ -5971,7 +5970,9 @@ and for each displayed buffer, where display starts, and the positions of
5971point and mark. An exception is made for point in the current buffer: 5970point and mark. An exception is made for point in the current buffer:
5972its value is -not- saved. 5971its value is -not- saved.
5973This also records the currently selected frame, and FRAME's focus 5972This also records the currently selected frame, and FRAME's focus
5974redirection (see `redirect-frame-focus'). */) 5973redirection (see `redirect-frame-focus'). The variable
5974`window-persistent-parameters' specifies which window parameters are
5975saved by this function. */)
5975 (Lisp_Object frame) 5976 (Lisp_Object frame)
5976{ 5977{
5977 register Lisp_Object tem; 5978 register Lisp_Object tem;
@@ -6509,7 +6510,6 @@ syms_of_window (void)
6509 DEFSYM (Qbelow, "below"); 6510 DEFSYM (Qbelow, "below");
6510 DEFSYM (Qauto_buffer_name, "auto-buffer-name"); 6511 DEFSYM (Qauto_buffer_name, "auto-buffer-name");
6511 DEFSYM (Qclone_of, "clone-of"); 6512 DEFSYM (Qclone_of, "clone-of");
6512 DEFSYM (Qstate, "state");
6513 6513
6514 staticpro (&Vwindow_list); 6514 staticpro (&Vwindow_list);
6515 6515
@@ -6621,28 +6621,28 @@ function `set-window-combination-limit'. */);
6621 6621
6622 DEFVAR_LISP ("window-persistent-parameters", Vwindow_persistent_parameters, 6622 DEFVAR_LISP ("window-persistent-parameters", Vwindow_persistent_parameters,
6623 doc: /* Alist of persistent window parameters. 6623 doc: /* Alist of persistent window parameters.
6624Parameters in this list are saved by `current-window-configuration' and 6624This alist specifies which window parameters shall get saved by
6625`window-state-get' and subsequently restored to their previous values by 6625`current-window-configuration' and `window-state-get' and subsequently
6626`set-window-configuration' and `window-state-put'. 6626restored to their previous values by `set-window-configuration' and
6627`window-state-put'.
6627 6628
6628The car of each entry of this alist is the symbol specifying the 6629The car of each entry of this alist is the symbol specifying the
6629parameter. The cdr is one of the following: 6630parameter. The cdr is one of the following:
6630 6631
6631The symbol `state' means the parameter is saved by `window-state-get' 6632nil means the parameter is neither saved by `window-state-get' nor by
6632provided its IGNORE argument is nil. `current-window-configuration' 6633`current-window-configuration'.
6633does not save this parameter.
6634 6634
6635nil means the parameter is saved by `current-window-configuration' and, 6635t means the parameter is saved by `current-window-configuration' and,
6636provided its IGNORE argument is nil, by `window-state-get'. 6636provided its WRITABLE argument is nil, by `window-state-get'.
6637 6637
6638t means the parameter is saved unconditionally by both 6638The symbol `writable' means the parameter is saved unconditionally by
6639`current-window-configuration' and `window-state-get'. Parameters 6639both `current-window-configuration' and `window-state-get'. Do not use
6640without read syntax (like windows or frames) should not use that. 6640this value for parameters without read syntax (like windows or frames).
6641 6641
6642Parameters not saved by `current-window-configuration' or 6642Parameters not saved by `current-window-configuration' or
6643`window-state-get' are left alone by `set-window-configuration' 6643`window-state-get' are left alone by `set-window-configuration'
6644respectively are not installed by `window-state-put'. */); 6644respectively are not installed by `window-state-put'. */);
6645 Vwindow_persistent_parameters = list1 (Fcons (Qclone_of, Qstate)); 6645 Vwindow_persistent_parameters = list1 (Fcons (Qclone_of, Qt));
6646 6646
6647 defsubr (&Sselected_window); 6647 defsubr (&Sselected_window);
6648 defsubr (&Sminibuffer_window); 6648 defsubr (&Sminibuffer_window);