summaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2016-01-02 23:31:52 -0800
committerJohn Wiegley <johnw@newartisans.com>2016-01-02 23:31:52 -0800
commit91917dd58ec5278e555b9c693a830749083e8f89 (patch)
tree3b0c8104106f6dec7873378bccc1273e587f6051 /etc
parentc988877f436bbbb285a0b34f5e037f7758dd6349 (diff)
parent9f2f14a0725211b13a744573344636b57b9c98b9 (diff)
downloademacs-91917dd58ec5278e555b9c693a830749083e8f89.tar.gz
Merge branch 'emacs-25-merge'
Diffstat (limited to 'etc')
-rw-r--r--etc/DEBUG250
-rw-r--r--etc/NEWS689
-rw-r--r--etc/PROBLEMS4
-rw-r--r--etc/tutorials/TUTORIAL.it1587
-rw-r--r--etc/tutorials/TUTORIAL.pt_BR2
5 files changed, 1499 insertions, 1033 deletions
diff --git a/etc/DEBUG b/etc/DEBUG
index 4bb17e3156d..be6d9ec3513 100644
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -3,27 +3,163 @@ Debugging GNU Emacs
Copyright (C) 1985, 2000-2015 Free Software Foundation, Inc.
See the end of the file for license conditions.
+** Preliminaries
-[People who debug Emacs on Windows using Microsoft debuggers should
-read the Windows-specific section near the end of this document.]
+This section can be skipped if you are already familiar with building
+Emacs with debug info, configuring and starting GDB, and simple GDB
+debugging techniques.
-** When you debug Emacs with GDB, you should start GDB in the directory
+*** Configuring Emacs for debugging
+
+It is best to configure and build Emacs with special options that will
+make the debugging easier. Here's the configure-time options we
+recommend (they are in addition to any other options you might need,
+such as --prefix):
+
+ CFLAGS='-O0 -g3' ./configure --enable-checking='yes,glyphs' --enable-check-lisp-object-type
+
+The CFLAGS value is important: debugging optimized code can be very
+hard. (If the problem only happens with optimized code, you may need
+to enable optimizations. If that happens, try using -Og first,
+instead of -O2, as the former will disable some optimizations that
+make debugging some code exceptionally hard.)
+
+Modern versions of GCC support more elaborate debug info that is
+available by just using the -g3 compiler switch. Try using -gdwarf-4
+in addition to -g3, and if that fails, try -gdwarf-3. This is
+especially important if you have to debug optimized code. More info
+about this is available below; search for "analyze failed assertions".
+
+The 2 --enable-* switches are optional. They don't have any effect on
+debugging with GDB, but will compile additional code that might catch
+the problem you are debugging much earlier, in the form of assertion
+violation. The --enable-checking option also enables additional
+functionality useful for debugging display problems; see more about
+this below under "Debugging Emacs redisplay problems".
+
+Emacs needs not be installed to be debugged, you can debug the binary
+created in the 'src' directory.
+
+*** Configuring GDB
+
+When you debug Emacs with GDB, you should start GDB in the directory
where the Emacs executable was made (the 'src' directory in the Emacs
source tree). That directory has a .gdbinit file that defines various
"user-defined" commands for debugging Emacs. (These commands are
described below under "Examining Lisp object values" and "Debugging
Emacs Redisplay problems".)
+Starting the debugger from Emacs, via the "M-x gdb" command (described
+below), when the current buffer visits one of the Emacs C source files
+will automatically start GDB in the 'src' directory.
+
Some GDB versions by default do not automatically load .gdbinit files
in the directory where you invoke GDB. With those versions of GDB,
you will see a warning when GDB starts, like this:
warning: File ".../src/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
-There are several ways to overcome that difficulty, they are all
-described in the node "Auto-loading safe path" in the GDB user
-manual. If nothing else helps, type "source /path/to/.gdbinit RET" at
-the GDB prompt, to unconditionally load the GDB init file.
+The simplest way to fix this is to add the following line to your
+~/.gdbinit file:
+
+ add-auto-load-safe-path /path/to/emacs/src/.gdbinit
+
+There are other ways to overcome that difficulty, they are all
+described in the node "Auto-loading safe path" in the GDB user manual.
+If nothing else helps, type "source /path/to/.gdbinit RET" at the GDB
+prompt, to unconditionally load the GDB init file.
+
+*** Use the Emacs GDB UI front-end
+
+We recommend using the GUI front-end for GDB provided by Emacs. With
+it, you can start GDB by typing "M-x GDB RET". This will suggest the
+default binary to debug; if you are going to start a new Emacs
+process, change it as needed to point to the correct binary.
+Alternatively, if you want to attach the debugger to an already
+running Emacs process, change the GDB command shown in the minibuffer
+to say this:
+
+ gdb -i=mi -p PID
+
+where PID is the numerical process ID of the running Emacs process,
+displayed by system utilities such as 'top' or 'ps' on Posix hosts and
+Task Manager on MS-Windows.
+
+Once the debugger starts, open the additional windows provided by the
+GDB UI, by typing "M-x gdb-many-windows RET". (Alternatively, click
+Gud->GDB-MI->Display Other Windows" from the menu bar.) At this
+point, make your frame large enough (or full-screen) such that the
+windows you just opened have enough space to show the content without
+horizontal scrolling.
+
+You can later restore your window configuration with the companion
+command "M-x gdb-restore-windows RET", or by deselecting "Display
+Other Windows" from the menu bar.
+
+*** Setting initial breakpoints
+
+Before you let Emacs run, you should now set breakpoints in the code
+which you want to debug, so that Emacs stops there and lets GDB take
+control. If the code which you want to debug is executed under some
+rare conditions, or only when a certain Emacs command is manually
+invoked, then just set your breakpoint there, let Emacs run, and
+trigger the breakpoint by invoking that command or reproducing those
+rare conditions.
+
+If you are less lucky, and the code in question is run very
+frequently, you will have to find some way of avoiding triggering your
+breakpoint when the conditions for the buggy behavior did not yet
+happen. There's no single recipe for this, you will have to be
+creative and study the code to see what's appropriate. Some useful
+tricks for that:
+
+ . Make your breakpoint conditional on certain buffer or string
+ position. For example:
+
+ (gdb) break foo.c:1234 if PT >= 9876
+
+ . Set a break point in some rarely called function, then create the
+ conditions for the bug, call that rare function, and when GDB gets
+ control, set the breakpoint in the buggy code, knowing that it
+ will now be called when the bug happens.
+
+ . If the bug manifests itself as an error message, set a breakpoint
+ in Fsignal, and when it breaks, look at the backtrace to see what
+ triggers the error.
+
+Some additional techniques are described below under "Getting control
+to the debugger".
+
+You are now ready to start your debugging session.
+
+If you are starting a new Emacs session, type "run", followed by any
+command-line arguments (e.g., "-Q") into the *gud-emacs* buffer and
+press RET.
+
+If you attached the debugger to a running Emacs, type "continue" into
+the *gud-emacs* buffer and press RET.
+
+Many variables you will encounter while debugging are Lisp objects.
+These are displayed as integer values (or structures, if you used the
+"--enable-check-lisp-object-type" option at configure time) that are
+hard to interpret, especially if they represent long lists. You can
+use the 'pp' command to display them in their Lisp form. That command
+displays its output on the standard error stream (on GNU/Linux, you
+can redirect that to a file using "M-x redirect-debugging-output").
+This means that if you attach GDB to a running Emacs that was invoked
+from a desktop icon, chances are you will not see the output at all,
+or it will wind up in an obscure place (check the documentation of
+your desktop environment).
+
+Additional information about displaying Lisp objects can be found
+under "Examining Lisp object values" below.
+
+The rest of this document describes specific useful techniques for
+debugging Emacs; we suggest reading it in its entirety the first time
+you are about to debug Emacs, then look up your specific issues
+whenever you need.
+
+Good luck!
** When you are trying to analyze failed assertions or backtraces, it
is essential to compile Emacs with flags suitable for debugging.
@@ -111,6 +247,12 @@ You can also use 'pp value' to print the emacs value directly.
To see the current value of a Lisp Variable, use 'pv variable'.
+These commands send their output to stderr; if that is closed or
+redirected to some file you don't know, you won't see their output.
+This is particularly so for Emacs invoked on MS-Windows from the
+desktop shortcut. On GNU/Linux, you can use the command
+'redirect-debugging-output' to redirect stderr to a file.
+
Note: It is not a good idea to try 'pr', 'pp', or 'pv' if you know that Emacs
is in deep trouble: its stack smashed (e.g., if it encountered SIGSEGV
due to stack overflow), or crucial data structures, such as 'obarray',
@@ -181,7 +323,7 @@ Then Emacs hits the breakpoint:
[...]
}
-Now we can use 'pr' to print the frame parameters:
+Now we can use 'pp' to print the frame parameters:
(gdb) pp $->param_alist
((background-mode . light) (display-type . color) [...])
@@ -400,15 +542,16 @@ Debugging with GDB in Emacs offers some advantages over the command line (See
the GDB Graphical Interface node of the Emacs manual). There are also some
features available just for debugging Emacs:
-1) The command gud-pp is available on the tool bar (the 'pp' icon) and
+1) The command gud-print is available on the tool bar (the 'p' icon) and
allows the user to print the s-expression of the variable at point,
in the GUD buffer.
2) Pressing 'p' on a component of a watch expression that is a lisp object
in the speedbar prints its s-expression in the GUD buffer.
-3) The STOP button on the tool bar is adjusted so that it sends SIGTSTP
- instead of the usual SIGINT.
+3) The STOP button on the tool bar and the Signals->STOP menu-bar menu
+ item are adjusted so that they send SIGTSTP instead of the usual
+ SIGINT.
4) The command gud-pv has the global binding 'C-x C-a C-v' and prints the
value of the lisp variable at point.
@@ -753,91 +896,6 @@ recovering the contents of Emacs buffers from a core dump file. You
might also find those commands useful for displaying the list of
buffers in human-readable format from within the debugger.
-** Some suggestions for debugging on MS Windows:
-
- (written by Marc Fleischeuers, Geoff Voelker and Andrew Innes)
-
-To debug Emacs with Microsoft Visual C++, you either start emacs from
-the debugger or attach the debugger to a running emacs process.
-
-To start emacs from the debugger, you can use the file bin/debug.bat.
-The Microsoft Developer studio will start and under Project, Settings,
-Debug, General you can set the command-line arguments and Emacs's
-startup directory. Set breakpoints (Edit, Breakpoints) at Fsignal and
-other functions that you want to examine. Run the program (Build,
-Start debug). Emacs will start and the debugger will take control as
-soon as a breakpoint is hit.
-
-You can also attach the debugger to an already running Emacs process.
-To do this, start up the Microsoft Developer studio and select Build,
-Start debug, Attach to process. Choose the Emacs process from the
-list. Send a break to the running process (Debug, Break) and you will
-find that execution is halted somewhere in user32.dll. Open the stack
-trace window and go up the stack to w32_msg_pump. Now you can set
-breakpoints in Emacs (Edit, Breakpoints). Continue the running Emacs
-process (Debug, Step out) and control will return to Emacs, until a
-breakpoint is hit.
-
-To examine the contents of a Lisp variable, you can use the function
-'debug_print'. Right-click on a variable, select QuickWatch (it has
-an eyeglass symbol on its button in the toolbar), and in the text
-field at the top of the window, place 'debug_print(' and ')' around
-the expression. Press 'Recalculate' and the output is sent to stderr,
-and to the debugger via the OutputDebugString routine. The output
-sent to stderr should be displayed in the console window that was
-opened when the emacs.exe executable was started. The output sent to
-the debugger should be displayed in the 'Debug' pane in the Output
-window. If Emacs was started from the debugger, a console window was
-opened at Emacs' startup; this console window also shows the output of
-'debug_print'.
-
-For example, start and run Emacs in the debugger until it is waiting
-for user input. Then click on the 'Break' button in the debugger to
-halt execution. Emacs should halt in 'ZwUserGetMessage' waiting for
-an input event. Use the 'Call Stack' window to select the procedure
-'w32_msp_pump' up the call stack (see below for why you have to do
-this). Open the QuickWatch window and enter
-"debug_print(Vexec_path)". Evaluating this expression will then print
-out the contents of the Lisp variable 'exec-path'.
-
-If QuickWatch reports that the symbol is unknown, then check the call
-stack in the 'Call Stack' window. If the selected frame in the call
-stack is not an Emacs procedure, then the debugger won't recognize
-Emacs symbols. Instead, select a frame that is inside an Emacs
-procedure and try using 'debug_print' again.
-
-If QuickWatch invokes debug_print but nothing happens, then check the
-thread that is selected in the debugger. If the selected thread is
-not the last thread to run (the "current" thread), then it cannot be
-used to execute debug_print. Use the Debug menu to select the current
-thread and try using debug_print again. Note that the debugger halts
-execution (e.g., due to a breakpoint) in the context of the current
-thread, so this should only be a problem if you've explicitly switched
-threads.
-
-It is also possible to keep appropriately masked and typecast Lisp
-symbols in the Watch window, this is more convenient when steeping
-though the code. For instance, on entering apply_lambda, you can
-watch (struct Lisp_Symbol *) (0xfffffff & args[0]).
-
-Optimizations often confuse the MS debugger. For example, the
-debugger will sometimes report wrong line numbers, e.g., when it
-prints the backtrace for a crash. It is usually best to look at the
-disassembly to determine exactly what code is being run--the
-disassembly will probably show several source lines followed by a
-block of assembler for those lines. The actual point where Emacs
-crashes will be one of those source lines, but not necessarily the one
-that the debugger reports.
-
-Another problematic area with the MS debugger is with variables that
-are stored in registers: it will sometimes display wrong values for
-those variables. Usually you will not be able to see any value for a
-register variable, but if it is only being stored in a register
-temporarily, you will see an old value for it. Again, you need to
-look at the disassembly to determine which registers are being used,
-and look at those registers directly, to see the actual current values
-of these variables.
-
This file is part of GNU Emacs.
diff --git a/etc/NEWS b/etc/NEWS
index ca8f3373976..d23c7fa8aae 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -41,11 +41,18 @@ and Mac OS X machines.
+++
** Building Emacs now requires C99 or later.
++++
** Building Emacs now requires GNU make, version 3.81 or later.
++++
** New configure option --with-cairo.
-Maybe add text based on http://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00689.html
+This builds Emacs with Cairo drawing. As a side effect, it provides
+support for built-in printing, when Emacs was built with GTK+.
+** New configure option --with-modules.
+This enables support for loading dynamic modules; see below.
+
+---
** By default, Emacs no longer works on IRIX. We expect that Emacs
users are not affected by this, as SGI stopped supporting IRIX in
December 2013. If you are affected, please send a bug report. You
@@ -53,12 +60,14 @@ should be able to work around the problem either by porting the Emacs
undumping code to GCC under IRIX, or by configuring --with-wide-int,
or by sticking with Emacs 24.4.
+---
** The Emacs garbage collector assumes GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS.
The GC_MAKE_GCPROS_NOOPS stack-marking variant has been the default
since Emacs 24.4, and the other variants were undocumented and were
obstacles to maintenance and development. GC_MARK_STACK and its
related symbols have been removed from the C internals.
+---
** 'configure' now prefers gnustep-config when configuring GNUstep.
If gnustep-config is not available, the old heuristics are used.
@@ -77,6 +86,7 @@ supported, and its presence led to confusion during configuration.
This affects only the 'movemail' utility; Emacs itself can still
process MMDF-format files as before.
++++
** The configure option '--enable-silent-rules' is now the default,
and silent rules are now quieter. To get the old behavior where
'make' chatters a lot, configure with '--disable-silent-rules' or
@@ -94,6 +104,7 @@ be installed setgid. The option now defaults to the 'games' group.
It has no particular connection to Emacs and has not changed in years,
so if you want to use it, you can always take a copy from an older Emacs.
+---
** Emacs 25 comes with a new set of icons.
Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png.
The old Emacs logo icons are available as `emacs23.png' in the same location.
@@ -116,50 +127,47 @@ and can contain escape sequences for command keys, quotes, and the like.
* Changes in Emacs 25.1
-** Any file of the form .dir-locals*.el is now considered a dir-local
- file, and multiple can be used in the same directory. See the
- variable `dir-locals-file' for more information.
-** `xref-find-definitions' and `describe-function' now display
- information about mode local overrides (defined by
- cedet/mode-local.el `define-overloadable-function' and
- `define-mode-local-overrides').
-
-** New `display-buffer' action function `display-buffer-use-some-frame'
-This displays the buffer in an existing frame other than the current
-frame, and allows the caller to specify a frame predicate to exclude
-frames.
-
-** New doc command `describe-symbol'. Works for functions, vars, faces, etc...
-
-** New user option `search-default-regexp-mode' specifies the default mode for isearch
-
-** `isearch' and `query-replace' now perform character folding in matches.
-This is analogous to case-folding, but applies between Unicode
-characters and their ASCII counterparts. This means many characters
-will match entire groups of characters.
-
-For instance, the " will match all variants of unicode double quotes
-(like “ and ”), and the letter a will match all of its accented
-cousins, even those composed of multiple characters, as well as many
-other symbols like ℀, ℁, ⒜, and ⓐ.
-
-** New function `character-fold-to-regexp' can be used
-by searching commands to produce a regexp matching anything that
-character-folds into STRING.
-
-** New command `checkdoc-package-keywords' checks if the
-current package keywords are recognized. Set the new option
-`checkdoc-package-keywords-flag' to non-nil to make
-`checkdoc-current-buffer' call this function automatically.
-
-** New function `checkdoc-file' checks for style errors.
-It's meant for use together with `compile':
-emacs -batch --eval "(checkdoc-file \"subr.el\")"
-
-** New command `comment-line' bound to `C-x C-;'.
+** Emacs can now load shared/dynamic libraries (modules).
+A dynamic Emacs module is a shared library that provides additional
+functionality for use in Emacs Lisp programs, just like a package
+written in Emacs Lisp would. The functions `load', `require',
+`load-file', etc. were extended to load such modules, as they do with
+Emacs Lisp packages. The new variable `module-file-suffix' holds the
+system-dependent value of the file-name extension (`.so' on Posix
+hosts) of the module files.
+
+A module should export a C-callable function named
+`emacs_module_init', which Emacs will call as part of the call to
+`load' or `require' which loads the module. It should also export a
+symbol named `plugin_is_GPL_compatible' to indicate that its code is
+released under the GPL or compatible license; Emacs will refuse to
+load modules that don't export such a symbol.
+
+If a module needs to call Emacs functions, it should do so through the
+API defined and documented in the header file `emacs-module.h'. Note
+that any module that provides Lisp-callable functions will have to use
+Emacs functions such as `fset' and `funcall', in order to register its
+functions with the Emacs Lisp interpreter.
+
+Modules can create `user-ptr' Lisp objects that embed pointers to C
+struct's defined by the module. This is useful for keeping around
+complex data structures created by a module, to be passed back to the
+module's functions. User-ptr objects can also have associated
+"finalizers" -- functions to be run when the object is GC'ed; this is
+useful for freeing any resources allocated for the underlying data
+structure, such as memory, open file descriptors, etc. A new
+predicate `user-ptrp' returns non-nil if its argument is a `user-ptr'
+object.
+
+Loadable modules in Emacs are an experimental feature, and subject to
+change in future releases. For that reason, their support is disabled
+by default, and must be enabled by using the `--with-modules' option
+at configure time.
-** New function `custom-prompt-customize-unsaved-options' checks for
-unsaved customizations and prompts user to customize (if found).
++++
+** Any file of the form .dir-locals*.el is now considered a dir-local
+file, and multiple such files can be used in the same directory. See
+the variable `dir-locals-file' for more information.
+++
** Network security (TLS/SSL certificate validity and the like) is
@@ -171,6 +179,13 @@ the `network-security-level' variable.
puny.el library, so that one can visit web sites like
"http://méxico.icom.museum".
+** If Emacs isn't built with TLS support, an external TLS-capable
+program is used instead. This program used to be run in --insecure
+mode by default, but has now changed to be secure instead, and will
+fail if you try to connect to non-verifiable hosts. This is
+controlled by the `tls-program' variable.
+
++++
** C-h l now also lists the commands that were run.
** The new M-s M-w key binding uses eww to search the web for the
@@ -185,16 +200,21 @@ select-enable-primary is ineffective since the system doesn't
have the equivalent of a primary selection.
+++
-** terpri gets an optional arg ENSURE to conditionally output a newline.
+** New option `switch-to-buffer-in-dedicated-window' allows to customize
+how `switch-to-buffer' proceeds interactively when the selected window
+is strongly dedicated to its buffer.
+++
-** New macro `define-advice'.
+** The option `even-window-heights' has been renamed to
+`even-window-sizes' and now handles window widths as well.
+
++++
+** terpri gets an optional arg ENSURE to conditionally output a newline.
++++
** `insert-register' now leaves point after the inserted text
when called interactively. A prefix argument toggles this behavior.
-** New var `truncate-string-ellipsis' to choose how to indicate truncation.
-
+++
** The new variable `term-file-aliases' replaces some files from lisp/term.
The function `tty-run-terminal-initialization' consults this variable
@@ -210,114 +230,49 @@ for use in Emacs bug reports.
hiding character but the default `.' can be used by let-binding the
variable `read-hide-char'.
-** The new functions `string-collate-lessp' and `string-collate-equalp'
-preserve the collation order as defined by the system's locale(1)
-environment. For the time being this is implemented for modern POSIX
-systems and for MS-Windows, for other systems they fall back to their
-counterparts `string-lessp' and `string-equal'.
-
-*** The ls-lisp package uses `string-collate-lessp' to sort file names.
-If you want the old, locale-independent sorting, customize the new
-option `ls-lisp-use-string-collate' to a nil value.
-
-*** The MS-Windows specific variable `w32-collate-ignore-punctuation',
-if set to a non-nil value, causes the above 2 functions to ignore
-symbol and punctuation characters when collating strings. This
-emulates the behavior of modern Posix platforms when the locale's
-codeset is "UTF-8" (as in "en_US.UTF-8"). This is needed because
-MS-Windows doesn't support UTF-8 as codeset in its locales.
-
-+++
-** The new function `bidi-find-overridden-directionality' allows to
-find characters whose directionality was, perhaps maliciously,
-overridden by directional override control characters. Lisp programs
-can use this to detect potential phishing of URLs and other links that
-exploits bidirectional display reordering.
-
-+++
-** The new function `buffer-substring-with-bidi-context' allows to
-copy a portion of a buffer into a different location while preserving
-the visual appearance both of the copied text and the text at
-destination, even when the copied text includes mixed bidirectional
-text and directional control characters.
-
-** New variable `ns-use-fullscreen-animation' controls animation for
-non-native NS fullscreen. The default is nil. Set to t to enable
-animation when entering and leaving fullscreen. For native OSX fullscreen
-this has no effect.
-
-** A new text property `inhibit-read-only' can be used in read-only
-buffers to allow certain parts of the text to be writable.
-
-** A new function `directory-files-recursively' returns all matching
-files (recursively) under a directory.
+---
+** New input method: `tamil-dvorak'.
-** The new function `directory-name-p' can be used to check whether a file
-name (as returned from, for instance, `file-name-all-completions' is
-a directory file name. It returns non-nil if the last character in
-the name is a forward slash.
+
+* Editing Changes in Emacs 25.1
+++
-** New variable `fast-but-imprecise-scrolling' inhibits
-fontification during full screen scrolling operations, giving less
-hesitant operation during auto-repeat of C-v, M-v at the cost of
-possible inaccuracies in the end position.
-
-** The function `font-info' now returns more details about a font.
-In particular, it now returns the average width of the font's
-characters, which can be used for geometry-related calculations.
-
-** A new function `default-font-width' returns the average width of a
-character in the current buffer's default font. If the default face
-is remapped (see `face-remapping-alist'), the value for the remapped
-face is returned. This function complements the existing function
-`default-font-height'.
-
-** New functions `window-font-height' and `window-font-width' return
-the height and average width of characters in a specified face and
-window. If FACE is remapped (see `face-remapping-alist'), the
-function returns the information for the remapped face.
-
-** A new function `window-max-chars-per-line' returns the maximal
-number of characters that can be displayed on one line. If a face
-and/or window are provided, these values are used for the
-calculation. This function is different from `window-body-width' in
-that it accounts for (i) continuation glyphs, (ii) the size of the
-font, and (iii) the specified window.
+** M-x suggests shorthands and ignores obsolete commands for completion.
-** New possible value for `system-type': nacl.
+** Changes in undo
+++
-** New variable `inhibit-message', when bound to non-nil, inhibits
- `message' and related functions from displaying messages the Echo
- Area. The output is still logged to the *Messages* buffer.
+*** Successive single-char deletions are collapsed in the undo-log just like
+successive char insertions. Which commands invoke this behavior is
+controlled by the new `undo-auto-amalgamate' function. See the node
+"Undo" in the ELisp manual for more details.
+++
-** It is now safe for a mode that derives `tabulated-list-mode' to not
-call `tabulated-list-init-header', in which case it will have no
-header.
+*** The heuristic used to insert `undo-boundary' after each command
+has changed, so that if a command causes changes in more than just the
+current buffer, Emacs now calls `undo-boundary' in every buffer
+affected by the command.
+++
-** `tabulated-list-print' takes a second optional argument, update,
-which specifies an alternative printing method which is faster when
-few or no entries have changed.
-
-
-* Editing Changes in Emacs 25.1
+** New command `comment-line' bound to `C-x C-;'.
-** Successive single-char deletions are collapsed in the undo-log just like
-successive char insertions.
+** New and improved facilities for inserting Unicode characters
-** Unicode names entered via C-x 8 RET now use substring completion by default.
+---
+*** Unicode names entered via C-x 8 RET now use substring completion by default.
-** C-x 8 now has shorthands for these chars: ‐ ‑ ‒ – — ― ‘ ’ “ ” † ‡ • ′ ″
++++
+*** C-x 8 now has shorthands for these chars: ‐ ‑ ‒ – — ― ‘ ’ “ ” † ‡ • ′ ″
€ № ← → ↔ − ≈ ≠ ≤ ≥. As before, you can type C-x 8 C-h to list shorthands.
-** New minor mode electric-quote-mode for quoting ‘like this’ and “like this”
++++
+*** New minor mode electric-quote-mode for quoting ‘like this’ and “like this”
as you type. See also the new variable ‘text-quoting-style’.
+---
** New minor mode global-eldoc-mode is enabled by default.
+---
** Emacs now supports "bracketed paste mode" when running on a terminal
that supports it. This facility allows Emacs to understand pasted
chunks of text as strings to be inserted, instead of interpreting each
@@ -325,6 +280,7 @@ character in the pasted text as actual user input. This results in a
paste experience similar to that under a window system, and significant
performance improvements when pasting large amounts of text.
++++
** Emacs now supports the latest version of the UBA.
The Emacs implementation of the Unicode Bidirectional Algorithm (UBA)
was updated to support all the latest additions and changes introduced
@@ -333,73 +289,140 @@ This includes full support for directional isolates and the
Bidirectional Parentheses Algorithm (BPA) specified by these Unicode
standards.
++++
** You can access `mouse-buffer-menu' (C-down-mouse-1) using C-f10.
+++
** New buffer-local `electric-pair-local-mode'.
++++
+** New variable `fast-but-imprecise-scrolling' inhibits
+fontification during full screen scrolling operations, giving less
+hesitant operation during auto-repeat of C-v, M-v at the cost of
+possible inaccuracies in the end position.
+
++++
+** New documentation command `describe-symbol'.
+Works for functions, variables, faces, etc. It is bound to `C-h o' by
+default.
+
++++
+** New function `custom-prompt-customize-unsaved-options' checks for
+unsaved customizations and prompts user to customize (if found). It
+is intended for adding to 'kill-emacs-query-functions'.
+
* Changes in Specialized Modes and Packages in Emacs 25.1
+** Checkdoc
+
++++
+*** New command `checkdoc-package-keywords' checks if the
+current package keywords are recognized. Set the new option
+`checkdoc-package-keywords-flag' to non-nil to make
+`checkdoc-current-buffer' call this function automatically.
+
++++
+*** New function `checkdoc-file' checks for style errors.
+It's meant for use together with `compile':
+emacs -batch --eval "(checkdoc-file \"subr.el\")"
+
++++
** New function `bookmark-set-no-overwrite' bound to C-x r M.
It raises an error if a bookmark of that name already exists,
unlike `bookmark-set' which silently updates an existing bookmark.
+** IMAP
+
+---
+*** `imap-ssl-program' has been removed, and imap.el uses the internal
+GnuTLS encryption functions if possible.
+
** JSON
+
---
*** `json-pretty-print' and `json-pretty-print-buffer' now maintain
the ordering of object keys by default.
+
---
*** New commands `json-pretty-print-ordered' and
`json-pretty-print-buffer-ordered' pretty prints JSON objects with
object keys sorted alphabetically.
-** You can recompute the VC state of a file buffer with `M-x vc-refresh-state'
++++
** Prog mode has some support for multi-mode indentation.
-See `prog-indentation-context' and `prog-widen'.
+This allows better indentation support in modes that support multiple
+programming languages in the same buffer, like literate programming
+environments or ANTLR programs with embedded Python code.
+
+A major mode can provide indentation context for a sub-mode through
+the `prog-indentation-context' variable. To support this, modes that
+provide indentation should use `prog-widen' instead of `widen' and
+`prog-first-column' instead of a literal zero. See the node
+"Mode-Specific Indent" in the ELisp manual for more details.
** Prettify Symbols mode
+
++++
*** Prettify Symbols mode supports custom composition predicates. By
overriding the default `prettify-symbols-compose-predicate', modes can
-specify in which contexts a symbol map be composed to some unicode
+specify in which contexts a symbol may be displayed as some Unicode
character. `prettify-symbols-default-compose-p' is the default which
is suitable for most programming languages such as C or Lisp (but not
(La)TeX).
++++
*** Symbols can be unprettified while point is inside them.
New variable `prettify-symbols-unprettify-at-point' configures this.
-** New `xterm-screen-extra-capabilities' config.
+** Enhanced xterm support
+
+---
+*** The new variable `xterm-screen-extra-capabilities' for configuring xterm.
+This variable tells Emacs which advanced capabilities are available in
+the xterm terminal emulator used to display Emacs text-mode frames.
+The default is to check each capability, and use it if available.
+(This variable was introduced in Emacs 24.1, but was not announced in
+its NEWS.)
+
+---
+*** Killing text now also sets the CLIPBOARD/PRIMARY selection
+in the surrounding GUI (using the OSC-52 escape sequence). This only works
+if your xterm supports it and enables the `allowWindowOps' options (disabled
+by default at least in Debian, for security reasons).
-** The `save-place' variable is replaced by a `save-place-mode'.
+Similarly, you can yank the CLIPBOARD/PRIMARY selection (using the OSC-52
+escape sequence) if your xterm has the feature enabled but for that you
+additionally need to add `getSelection' to `xterm-extra-capabilities'.
+
++++
+*** `xterm-mouse-mode' now supports mouse-tracking (if your xterm supports it).
+
+---
+** The `save-place' variable is replaced by `save-place-mode'.
** ERC
-*** Hide message types by network or channel. `erc-hide-list' will
-hide all messages of the specified type, where `erc-network-hide-list'
-and `erc-channel-hide-list' will only hide the specified message types
-for the respective specified targets.
++++
+*** ERC can now hide message types by network or channel.
+`erc-hide-list' will hide all messages of the specified type, while
+`erc-network-hide-list' and `erc-channel-hide-list' will only hide the
+specified message types for the respective specified targets.
*** New variable `erc-default-port-tls' used to connect to TLS IRC
servers.
** Midnight-mode
-*** `midnight-mode' is a proper minor mode.
-*** clean-buffer-*-regexps can now specify buffers via predicate functions.
-** In xterms, killing text now also sets the CLIPBOARD/PRIMARY selection
-in the surrounding GUI (using the OSC-52 escape sequence). This only works
-if your xterm supports it and enables the `allowWindowOps' options (disabled
-by default at least in Debian, for security reasons).
-
-Similarly, you can yank the CLIPBOARD/PRIMARY selection (using the OSC-52
-escape sequence) if your xterm has the feature enabled but for that you
-additionally need to add `getSelection' to `xterm-extra-capabilities'.
+---
+*** `midnight-mode' is now a proper minor mode.
-** xterm-mouse-mode now supports mouse-tracking (if your xterm supports it).
+---
+*** clean-buffer-*-regexps can now specify buffers via predicate functions.
** package.el
++++
*** New "external" package status.
An external package is any installed package that's not built-in and
not from `package-user-dir', which usually means it's from an entry in
@@ -407,14 +430,16 @@ not from `package-user-dir', which usually means it's from an entry in
packages, in that they cannot be deleted through the package menu and
are not considered for upgrades.
-The effect, is that a user can manually place a specific version of a
+The effect is that a user can manually place a specific version of a
package inside `package-directory-list' and the package menu will
always respect that.
++++
*** If a package is available on multiple archives and one has higher
priority (as per `package-archive-priorities') only that one is
listed. This can be configured with `package-menu-hide-low-priority'.
++++
*** `package-menu-toggle-hiding' now toggles the hiding of packages.
This includes the above-mentioned low-priority packages, as well as
available packages whose version is lower than the currently installed
@@ -422,34 +447,43 @@ version (which were previously impossible to display).
This allows users to downgrade a package if a lower version is
available.
+---
*** When filtering the package menu, keywords starting with "arc:" or
"status:" represent package archive or status, respectively, instead
of actual keywords.
+---
*** Most functions which involve downloading information now take an
ASYNC argument. If it is non-nil, package.el performs the download(s)
asynchronously.
+---
*** New variable `package-menu-async' controls whether the
package-menu uses asynchronous downloads.
+---
*** `package-install-from-buffer' and `package-install-file' work on directories.
This follows the same rules as installing from a .tar file, except the
-pkg file is optional.
+---
*** Packages which are dependencies of other packages cannot be deleted.
The FORCE argument to `package-delete' overrides this.
+---
*** New custom variable `package-selected-packages' tracks packages
which were installed by the user (as opposed to installed as
dependencies). This variable can also be manually customized.
+---
*** New command `package-install-user-selected-packages' installs all
packages from `package-selected-packages' which are currently missing.
+---
*** New command `package-autoremove' removes all packages which were
installed strictly as dependencies but are no longer needed.
++++
** Shell
When you invoke `shell' interactively, the *shell* buffer will now
@@ -476,23 +510,61 @@ If you need your objects to be named, do it by inheriting from `eieio-named'.
*** `constructor' is now an obsolete alias for `make-instance'.
** ido
+
++++
*** New command `ido-bury-buffer-at-head' bound to C-S-b
Bury the buffer at the head of `ido-matches', analogous to how C-k
kills the buffer at head.
+
+---
*** A prefix argument to `ido-restrict-to-matches' will reverse its
meaning, and the list is restricted to those elements that do not
match the current input.
** Minibuffer
-*** You can use <up> and <down> keys to move point in the multi-line
-minibuffer just as in an ordinary buffer. Only when point moves over
++++
+*** You can use <UP> and <DOWN> arrow keys to move through history by lines.
+The new commands `next-line-or-history-element' and
+`previous-line-or-history-element', bound to <UP> and <DOWN> in the
+minibuffer, allow by-line movement through minibuffer history,
+similarly to an ordinary buffer. Only when point moves over
the bottom/top of the minibuffer it goes to the next/previous history
-element. The new commands bound to <up> and <down> in the minibuffer:
-`next-line-or-history-element' and `previous-line-or-history-element'.
+element. `M-p' and `M-n' still move directly to previous/next history
+item as before.
** Search and Replace
++++
+*** New user option `search-default-regexp-mode'
+specifies the default mode for I-search.
+
++++
+*** `isearch' and `query-replace' can now perform character folding in matches.
+Isearch does that by default, while `query-replace' will do that if
+the new variable `replace-character-fold' is customized to a non-nil
+value. This is analogous to case folding, but instead of disregarding
+case variants, it disregards wider classes of distinctions between
+similar characters. (Case folding is a special case of character
+folding.) This means many characters in the search string will match
+entire groups of characters instead of just themselves.
+
+For instance, the " will match all variants of double quotes (like “
+and ”), and the letter a will match all of its accented cousins, even
+those composed of multiple characters, as well as many other symbols
+like ℀, ℁, ⒜, and ⓐ.
+
++++
+*** New function `character-fold-to-regexp' can be used
+by searching commands to produce a regexp matching anything that
+character-folds into STRING.
+
++++
+*** The new M-s M-w key binding uses eww to search the web for the
+text in the region. The search engine to use for this is specified by
+the customizable variable `eww-search-prefix'.
+
++++
*** Query-replace history is enhanced.
When query-replace reads the FROM string from the minibuffer, typing
`M-p' will now show previous replacements as "FROM SEP TO", where FROM
@@ -513,8 +585,16 @@ this you can tell Edebug not to stop at the start of the first
instrumented function.
** ElDoc
+
++++
*** New minor mode `global-eldoc-mode'
+It is turned on by default, and affects `*scratch*' and other buffers
+whose major mode supports Emacs Lisp.
+
+---
*** `eldoc-documentation-function' now defaults to `ignore'
+
+---
*** `describe-char-eldoc' displays information about character at point,
and can be used as a default value of `eldoc-documentation-function'. It is
useful when, for example, one needs to distinguish various spaces (e.g. ] [,
@@ -575,31 +655,45 @@ invalid certificates are marked in red.
** Message mode
+---
*** text/html messages that contain inline image parts will be
transformed into multipart/related messages before sending.
-** pcase
-*** New UPatterns `quote', `app', `cl-struct', and `eieio'.
-*** New UPatterns can be defined with `pcase-defmacro'.
+++
-*** New vector QPattern.
+** In Show Paren Mode, a parenthesis can be highlighted when point
+stands inside it, and certain parens can be highlighted when point is
+at BOL or EOL, or in whitespace there. To enable these, customize,
+respectively, `show-paren-when-point-inside-paren' or
+`show-paren-when-point-in-periphery'.
** Lisp mode
*** Strings after `:documentation' are highlighted as docstrings.
** Rectangle editing
+
++++
*** Rectangle Mark mode can have corners past EOL or in the middle of a TAB.
+
++++
*** C-x C-x in rectangle-mark-mode now cycles through the four corners.
*** `string-rectangle' provides on-the-fly preview of the result.
-** New font-lock functions font-lock-ensure and font-lock-flush, which
-should be used instead of font-lock-fontify-buffer when called from Elisp.
++++
+** New font-lock functions `font-lock-ensure' and `font-lock-flush'.
+These should be used in preference to `font-lock-fontify-buffer' when
+called from Lisp.
+
+---
+** Macro `minibuffer-with-setup-hook' can optionally append a function
+to `minibuffer-setup-hook'.
-** Macro `minibuffer-with-setup-hook' takes (:append FUN) to mean
-appending FUN to `minibuffer-setup-hook'.
+If the first argument of the macro is of the form `(:append FUN)',
+then FUN will be appended to `minibuffer-setup-hook', instead of
+prepending it.
** cl-lib
-*** New functions cl-fresh-line, cl-digit-char-p and cl-parse-integer.
++++
+*** New functions `cl-fresh-line', `cl-digit-char-p', and `cl-parse-integer'.
** Calendar and diary
@@ -643,15 +737,26 @@ The remainder were:
**** The nil and list forms of `diary-display-function'.
++++
** New ERT function `ert-summarize-tests-batch-and-exit'.
+If the output of ERT tests in batch mode execution can be saved to a
+log file, then it can be passed as an argument to the above function
+to produce a neat summary.
** New js.el option `js-indent-first-init'.
+** Info
+
---
-** `Info-fontify-maximum-menu-size' can be t for no limit.
+** Info mode now displays symbol names in fixed-pitch font.
+If you want to get the old behavior back, customize the `Info-quoted'
+face to use the same definitions as the default face.
+
+---
+*** `Info-fontify-maximum-menu-size' can be t for no limit.
+++
-** `info-display-manual' can now be given a prefix argument which (any
+*** `info-display-manual' can now be given a prefix argument which (any
non-nil value) directs the command to limit the completion
alternatives to currently visited manuals.
@@ -660,9 +765,11 @@ alternatives to currently visited manuals.
** Rmail
-*** The Rmail commands d, C-d and u take optional repeat counts to delete or
-undelete multiple messages.
++++
+*** The Rmail commands `d', `C-d' and `u' take optional repeat counts
+to delete or undelete multiple messages.
++++
*** Rmail can now render HTML mail messages if your Emacs was built with
libxml2 or if you have the Lynx browser installed. By default, Rmail
will display the HTML version of a mail message that has both HTML and
@@ -673,14 +780,18 @@ plain text parts, if display of HTML email is possible; customize the
*** In the commands that make summaries by subject, recipients, or senders,
you can no longer use commas to separate regular expressions.
++++
** SES now supports local printer functions; see `ses-define-local-printer'.
-** sh-script
+** Shell-script Mode
+---
*** In sh-mode you can now use `sh-shell' as a file-local variable to
specify the type of shell in use (bash, csh, etc).
-*** New value `always' for sh-indent-after-continuation.
+---
+*** New value `always' for `sh-indent-after-continuation'.
This provides old-style ("dumb") indentation of continued lines.
+See the doc string of `sh-indent-after-continuation' for details.
** TLS
---
@@ -688,18 +799,22 @@ This provides old-style ("dumb") indentation of continued lines.
** URL
++++
*** The URL package accepts now the protocols "ssh", "scp" and "rsync".
When `url-handler-mode' is enabled, file operations for these
protocols as well as for "telnet" and "ftp" are passed to Tramp.
++++
*** The URL package allows customizing the `url-user-agent' string.
The new `url-user-agent' variable can be customized to be a string or
a function.
+---
*** The new interface variable `url-request-noninteractive' can be used
to specify that we're running in a noninteractive context, and that
we should not be queried about things like TLS certificate validity.
+---
*** If URL is used with a https connection, the first callback argument
plist will contain a :peer element that has the output of
`gnutls-peer-status' (if Emacs is built with GnuTLS support).
@@ -723,47 +838,72 @@ filesystem notifications.
** SQL mode
+---
*** New user variable `sql-default-directory' enables remote
connections using Tramp.
-*** New command `sql-send-line-and-next' sends the current line to the
-interactive buffer and advances to the next line, skipping whitespace
-and comments.
+---
+*** New command `sql-send-line-and-next'.
+This command, bound to `C-c C-n' by default, sends the current line to
+the SQL process and advances to the next line, skipping whitespace and
+comments.
-*** Add support for Vertica SQL.
+---
+*** Added support for Vertica SQL.
** VC and related modes
++++
*** Basic push support, via `vc-push', bound to `C-x v P'.
Implemented for Bzr, Git, Hg. As part of this change, the pre-existing
(undocumented) command vc-hg-push now behaves slightly differently.
++++
*** The new command vc-region-history shows the log+diff of the active region.
++++
+*** You can refresh the VC state of a file buffer with `M-x vc-refresh-state'.
+This command is useful when you perform version control commands
+outside Emacs (e.g., from the shell prompt), or if you switch the VC
+back-end for the buffer's file, or remove it from version control.
+
++++
*** New option `vc-annotate-background-mode' controls whether
the color range from `vc-annotate-color-map' is applied to the
background or to the foreground.
-*** `compare-windows' now compares text with the most recently used window
-instead of the next window. The new option `compare-windows-get-window-function'
-allows to customize this.
++++
+*** `compare-windows' now compares text with the most recently selected window
+instead of the next window. If you want the previous behavior of
+comparing with the next window, customize the new option
+`compare-windows-get-window-function' to the value
+`compare-windows-get-next-window'.
+---
*** Two new faces `compare-windows-removed' and `compare-windows-added'
-replace the obsolete face `compare-windows'.
+replace the face `compare-windows', which is now an obsolete alias for
+`compare-windows-added'.
---
*** `log-edit-insert-changelog' converts "(tiny change)" to
"Copyright-paperwork-exempt: yes". Set `log-edit-rewrite-tiny-change'
nil to disable this.
-** VHDL mode supports VHDL'08.
+---
+** VHDL mode now supports VHDL'08.
-** Calculator: decimal display mode uses "," groups, so it's more
-fitting for use in money calculations; factorial works with
-non-integer inputs.
+** Calculator
-** HideIfDef mode now support full C/C++ expressions, argumented macro expansions,
-interactive macro evaluation and automatic scanning of #defined symbols.
+---
+*** Decimal display mode uses "," groups, so it's more
+fitting for use in money calculations
+
+---
+*** Factorial works with non-integer inputs.
+
+** HideIfDef mode now support full C/C++ expressions, argumented macro
+expansions, interactive macro evaluation and automatic scanning of
+#defined symbols.
*** New custom variable `hide-ifdef-header-regexp' to define C/C++ header file
name patterns. Default case-insensitive .h, .hh, .hpp, .hxx, and .h++.
@@ -810,6 +950,11 @@ easier binding, which is now unoccupied (`M-,').
alias for a private variable. `xref-push-marker-stack' and
`xref-pop-marker-stack' should be used to mutate it instead.
+---
+*** `xref-find-definitions' and `describe-function' now display
+information about mode local overrides (defined by cedet/mode-local.el
+`define-overloadable-function' `define-mode-local-overrides').
+
** etags
As a result of the above, these commands are now obsolete:
`find-tag-other-window', `find-tag-other-frame', `find-tag-regexp',
@@ -850,6 +995,10 @@ to avoid interfering with the kill ring.
allow overriding the regular expression that recognizes the ldapsearch
command line's password prompt.
+EUDC's BBDB backend now supports BBDB 3.
+
+EUDC's PH backend (eudcb-ph.el) is obsolete.
+
** Eshell
+++
@@ -911,6 +1060,18 @@ compression command is determined from the new
*** `W' is now bound to `browse-url-of-dired-file', and is useful for
viewing HTML files and the like.
+** Tabulated List Mode
+
++++
+*** It is now safe for a mode that derives `tabulated-list-mode' to not
+call `tabulated-list-init-header', in which case it will have no
+header.
+
++++
+*** `tabulated-list-print' takes a second optional argument, update,
+which specifies an alternative printing method which is faster when
+few or no entries have changed.
+
** Obsolete packages
---
@@ -957,6 +1118,12 @@ support for JSX, an XML-like syntax extension to ECMAScript.
* Incompatible Lisp Changes in Emacs 25.1
+---
+** `setq' and `setf' must now be called with an even number of
+arguments. The earlier behavior of silently supplying a nil to the
+last variable when there was an odd number of arguments has been
+eliminated.
+
** `syntax-begin-function' is declared obsolete.
Removed font-lock-beginning-of-syntax-function and the SYNTAX-BEGIN
slot in font-lock-defaults.
@@ -983,6 +1150,7 @@ large portions of the Emacs display, and want to avoid changes in the
pointer shape during dragging, should bind the variable `track-mouse'
to the special value `dragging' in the body of the form.
+---
** The optional `predicate' argument of `lisp-complete-symbol' no longer
has any effect. (This change was made in Emacs 24.4 but was not
advertised at the time.)
@@ -990,6 +1158,7 @@ advertised at the time.)
** `indirect-function' does not signal `void-function' any more.
This is mostly a bug-fix, since this change was missed back in 24.4 when
symbol-function was changed not to signal `void-function' any more.
+
*** As a consequence, the second arg of `indirect-function' is now obsolete.
** Comint, term, and compile do not set the EMACS env var any more.
@@ -1089,6 +1258,12 @@ that happen, `unhandled-file-name-directory' now defaults to calling
* Lisp Changes in Emacs 25.1
+** pcase
+*** New UPatterns `quote', `app', `cl-struct', `eieio', `seq', and `map'.
+*** New UPatterns can be defined with `pcase-defmacro'.
++++
+*** New vector QPattern.
+
** syntax-propertize is now automatically called on-demand during forward
parsing functions like `forward-sexp'.
@@ -1118,6 +1293,27 @@ of subprocess.
process filter, sentinel, etc., through keyword arguments (similar to
`make-network-process').
++++
+** A new function `directory-files-recursively' returns all matching
+files (recursively) under a directory.
+
++++
+** New variable `inhibit-message', when bound to non-nil, inhibits
+`message' and related functions from displaying messages the Echo
+Area. The output is still logged to the *Messages* buffer.
+
++++
+** A new text property `inhibit-read-only' can be used in read-only
+buffers to allow certain parts of the text to be writable.
+
++++
+** A new variable `comment-end-can-be-escaped' is useful in languages
+ such as C and C++ where line comments with escaped newlines are
+ continued to the next line.
+
++++
+** New macro `define-advice'.
+
** `read-buffer' takes a new `predicate' argument.
** Emacs Lisp now supports generators.
@@ -1144,6 +1340,26 @@ evaluated (and should return a string) when the closure is built.
** New function `string-greaterp', which return the opposite result of
`string-lessp'.
++++
+** The new functions `string-collate-lessp' and `string-collate-equalp'
+preserve the collation order as defined by the system's locale(1)
+environment. For the time being this is implemented for modern POSIX
+systems and for MS-Windows, for other systems they fall back to their
+counterparts `string-lessp' and `string-equal'.
+
+---
+*** The ls-lisp package uses `string-collate-lessp' to sort file names.
+If you want the old, locale-independent sorting, customize the new
+option `ls-lisp-use-string-collate' to a nil value.
+
++++
+*** The MS-Windows specific variable `w32-collate-ignore-punctuation',
+if set to a non-nil value, causes the above 2 functions to ignore
+symbol and punctuation characters when collating strings. This
+emulates the behavior of modern Posix platforms when the locale's
+codeset is "UTF-8" (as in "en_US.UTF-8"). This is needed because
+MS-Windows doesn't support UTF-8 as codeset in its locales.
+
** New function `alist-get', which is also a valid place (aka lvalue).
** New function `funcall-interactively', which works like `funcall'
@@ -1153,6 +1369,20 @@ called interactively.
** New function `function-put' to use instead of `put' for function properties.
+++
+** The new function `bidi-find-overridden-directionality' allows to
+find characters whose directionality was, perhaps maliciously,
+overridden by directional override control characters. Lisp programs
+can use this to detect potential phishing of URLs and other links that
+exploits bidirectional display reordering.
+
++++
+** The new function `buffer-substring-with-bidi-context' allows to
+copy a portion of a buffer into a different location while preserving
+the visual appearance both of the copied text and the text at
+destination, even when the copied text includes mixed bidirectional
+text and directional control characters.
+
++++
** New properties that can be specified with `declare':
*** (interactive-only INSTEAD), says to use INSTEAD for non-interactive use.
*** (pure VAL), if VAL is non-nil, indicates the function is pure.
@@ -1178,6 +1408,35 @@ name. The variable `system-name' is now obsolete.
** If `pwd' is called with a prefix argument, insert the current default
directory at point.
++++
+** New functions return extended information about fonts and faces.
+
++++
+*** The function `font-info' now returns more details about a font.
+In particular, it now returns the average width of the font's
+characters, which can be used for geometry-related calculations.
+
++++
+*** A new function `default-font-width' returns the average width of a
+character in the current buffer's default font. If the default face
+is remapped (see `face-remapping-alist'), the value for the remapped
+face is returned. This function complements the existing function
+`default-font-height'.
+
++++
+*** New functions `window-font-height' and `window-font-width' return
+the height and average width of characters in a specified face and
+window. If FACE is remapped (see `face-remapping-alist'), the
+function returns the information for the remapped face.
+
++++
+*** A new function `window-max-chars-per-line' returns the maximal
+number of characters that can be displayed on one line. If a face
+and/or window are provided, these values are used for the
+calculation. This function is different from `window-body-width' in
+that it accounts for (i) continuation glyphs, (ii) the size of the
+font, and (iii) the specified window.
+
---
** New utilities in subr-x.el:
*** New macros `if-let' and `when-let' allow defining bindings and to
@@ -1239,12 +1498,26 @@ integers.
** New function `set-binary-mode' allows to switch a standard stream
of the Emacs process to binary I/O mode.
++++
+** The new function `directory-name-p' can be used to check whether a file
+name (as returned from, for instance, `file-name-all-completions') is
+a directory file name. It returns non-nil if the last character in
+the name is a directory separator character (forward slash on GNU and
+Unix systems, forward- or backslash on MS-Windows and MS-DOS).
+
** ASCII approximations to curved quotes are put in standard-display-table
if the terminal cannot display curved quotes.
** Standard output and error streams now transliterate characters via
standard-display-table, and encode output using locale-coding-system.
++++
+** New var `truncate-string-ellipsis' to choose how to indicate truncation.
+
++++
+** New possible value for `system-type': `nacl'.
+This is used by Google's Native Client (NaCl).
+
** Miscellaneous name change
For consistency with the usual Emacs spelling, the Lisp variable
@@ -1325,25 +1598,23 @@ windows without "fixing" it. It's supported by `fit-window-to-buffer',
`temp-buffer-resize-mode' and `display-buffer'.
+++
+** New `display-buffer' action function `display-buffer-use-some-frame'.
+This displays the buffer in an existing frame other than the current
+frame, and allows the caller to specify a frame predicate to exclude
+frames.
+
++++
** New minor mode `window-divider-mode' and options
`window-divider-default-places', `window-divider-default-bottom-width'
and `window-divider-default-right-width'.
-+++
-** New option `switch-to-buffer-in-dedicated-window' allows to customize
-how `switch-to-buffer' proceeds interactively when the selected window
-is strongly dedicated to its buffer.
-
-+++
-** The option `even-window-heights' has been renamed to
-`even-window-sizes' and now handles window widths as well.
-
** Tearoff menus and detachable toolbars for Gtk+ has been removed.
Those features have been deprecated in Gtk+ for a long time.
-** Miscellaneous
+** Etags
*** etags no longer qualifies class members by default.
+
By default, `etags' will not qualify class members for C-like
object-oriented languages with their class names and namespaces, and
will remove qualifications used explicitly in the code from the tag
@@ -1357,6 +1628,16 @@ using -Q might make some class members become "unknown" to `M-.'
(`xref-find-definitions'); if so, you can use `C-u M-.' to specify the
qualified names by hand.
+*** New language Ruby
+
+Names of modules, classes, methods, and functions are tagged.
+Overloaded operators are also tagged.
+
+*** Improved support for Lua
+
+Etags now tags functions even if the "function" keyword follows some
+whitespace at line beginning.
+
* Changes in Emacs 25.1 on Non-Free Operating Systems
@@ -1387,6 +1668,12 @@ Pass '--without-ns' to configure to create an X11 build, the old default.
** OS X on PowerPC is no longer supported.
---
+** New variable `ns-use-fullscreen-animation' controls animation for
+non-native NS fullscreen. The default is nil. Set to t to enable
+animation when entering and leaving fullscreen. For native OSX fullscreen
+this has no effect.
+
+---
** The new function 'w32-application-type' returns the type of an
MS-Windows application given the name of its executable program file.
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 0f76bfc521d..18b1f840726 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -2051,6 +2051,10 @@ pinned icon, a separate button appears on the taskbar, instead of the
expected effect of the icon you clicked on being converted to that
button.
+This is due to a bug in early versions of Windows 10, reportedly fixed
+in build 1511 of Windows 10 (a.k.a. "Windows 10 SP1"). If you cannot
+upgrade, read the work-around described below.
+
First, be sure to edit the Properties of the pinned icon to invoke
runemacs.exe, not emacs.exe. (The latter will cause an extra cmd
window to appear when you invoke Emacs from the pinned icon.)
diff --git a/etc/tutorials/TUTORIAL.it b/etc/tutorials/TUTORIAL.it
index 300fd223e00..1eb2573955c 100644
--- a/etc/tutorials/TUTORIAL.it
+++ b/etc/tutorials/TUTORIAL.it
@@ -1,36 +1,38 @@
Esercitazione di Emacs. Condizioni d'uso alla fine del file.
I comandi di Emacs comportano generalmente l'uso del tasto CONTROL (a
-volte indicato con CTRL o CTL) o del tasto META (a volte indicato con EDIT
-o ALT). Piuttosto che indicarli per esteso ogni volta, useremo le
-seguenti abbreviazioni:
-
- C-<car> significa che bisogna tenere abbassato il tasto CONTROL mentre si
- preme il carattere <car>. Quindi C-f significa: tieni premuto
- CONTROL e batti f.
-
- M-<car> significa che bisogna tenere abbassato il tasto META o EDIT o ALT
- mentre si preme il carattere <car>. Se non ci sono tasti META,
- EDIT o ALT, al loro posto si può premere e poi rilasciare il
- tasto ESC e quindi premere <car>. Useremo <ESC> per indicare il
- tasto ESC.
+volte indicato con CTRL o CTL) o del tasto META (a volte indicato con
+EDIT o ALT). Piuttosto che indicarli per esteso ogni volta, useremo
+le seguenti abbreviazioni:
+
+ C-<car> significa che bisogna tenere abbassato il tasto CONTROL
+ mentre si preme il carattere <car>. Quindi C-f significa:
+ tieni premuto CONTROL e batti f.
+ M-<car> significa che bisogna tenere abbassato il tasto META o EDIT
+ o ALT mentre si preme il carattere <car>. Se non ci sono
+ tasti META, EDIT o ALT, al loro posto si può premere e poi
+ rilasciare il tasto ESC e quindi premere <car>. Useremo
+ <ESC> per indicare il tasto ESC.
Nota importante: per chiudere una sessione di lavoro di Emacs usa C-x
-C-c. (Due caratteri.) I caratteri ">>" posti al margine sinistro
-indicano le direttive per provare a usare un comando. Per esempio:
+C-c (due caratteri). Per annullare un comando inserito parzialmente
+usa C-g. I caratteri “>>” posti al margine sinistro indicano le
+direttive per provare a usare un comando. Per esempio:
<<Blank lines inserted here by startup of help-with-tutorial>>
->> Adesso premi C-v (Vedi schermata successiva) per spostarti
- alla prossima schermata. (Vai avanti, tieni premuto il tasto
- CONTROL mentre premi v). D'ora in poi dovrai fare così ogni volta
- che finisci di leggere lo schermo.
+[Spaziatura inserita a scopo didattico. Il testo continua sotto]
+>> Adesso premi C-v (vedi schermata successiva) per spostarti alla
+ prossima schermata (vai avanti, tieni premuto il tasto
+ CONTROL mentre premi v). D'ora in poi dovrai fare così ogni
+ volta che finisci di leggere la schermata.
-Si noti che le ultime due righe di ogni schermata appaiono in cima alla
-schermata successiva, favorendo così la continuità di lettura.
+Si noti che le ultime due righe di ogni schermata appaiono in cima
+alla schermata successiva, favorendo così la continuità di lettura.
-La prima cosa che bisogna imparare è come raggiungere un certo punto del
-testo. Sai già come andare avanti di una schermata, con C-v. Per
-andare indietro di una schermata, premi M-v (tieni premuto il tasto META
-e poi premi v, oppure usa <ESC>v se non c'è un tasto META, EDIT o ALT).
+La prima cosa che bisogna imparare è come raggiungere un certo punto
+del testo. Sai già come andare avanti di una schermata, con C-v. Per
+andare indietro di una schermata, premi M-v (tieni premuto il tasto
+META e poi premi v, oppure usa <ESC>v se non c'è un tasto META, EDIT o
+ALT).
>> Ora prova: premi M-v e quindi C-v alcune volte.
@@ -38,213 +40,221 @@ e poi premi v, oppure usa <ESC>v se non c'è un tasto META, EDIT o ALT).
* SOMMARIO
----------
-I comandi seguenti sono utili per visualizzare le varie parti del testo:
+I comandi seguenti sono utili per visualizzare le schermate:
- C-v Vai avanti di una schermata
- M-v Vai indietro di una schermata
- C-l Cancella lo schermo e riscrivi tutto il testo, muovendo
- il testo che si trova vicino al cursore al centro dello
- schermo. (Il tasto è CONTROL-L, non CONTROL-1.)
+ C-v Vai avanti di una schermata
+ M-v Vai indietro di una schermata
+ C-l Cancella lo schermo e riscrivi tutto il testo,
+ muovendo il testo che si trova vicino al cursore al
+ centro dello schermo. (Il tasto è CONTROL-L,
+ non CONTROL-1.)
>> Trova il cursore, osserva quale parte di testo gli è vicina. Premi
C-l. Trova di nuovo il cursore e osserva che si trova sullo stesso
- punto del testo.
+ punto del testo, ma ora è al centro della schermata. Se premi C-l
+ di nuovo, il testo verrà posizionato in cima allo schermo.
+ Premendo nuovamente C-l verrà posizionato in fondo.
+
+Puoi anche usare i tasti PagSu (Pag ↑) o PagGiù (Pag ↓) per passare
+alle schermate precedenti o successive, se sono presenti sul tuo
+terminale, ma C-v e M-v consentono una editazione più efficiente.
-* CONTROLLO DEL CURSORE
------------------------
+* CONTROLLO DI BASE DEL CURSORE
+-------------------------------
-Spostarsi da una schermata all'altra è utile, ma come ci si può spostare
-fino ad un certo preciso punto del testo?
+Spostarsi da una schermata all'altra è utile, ma come ci si può
+spostare fino ad un certo preciso punto del testo?
-Ci sono diversi modi per farlo. Il più elementare consiste nell'usare i
-comandi C-p, C-b, C-f, C-n. Ognuno di essi muove il cursore di una riga o
-di una colonna in una data direzione sullo schermo. La tabella seguente
-mostra le direzioni in cui operano questi quattro comandi:
+Ci sono diversi modi per farlo. Puoi usare i tasti con le frecce, ma
+è più efficiente tenere le mani nella posizione standard e utilizzare
+i comandi C-p, C-b, C-f e C-n. Questi caratteri sono equivalenti ai
+quattro tasti con le frecce, in questo modo:
- Riga precedente, C-p
- :
- :
+ Riga precedente, C-p
+ :
+ :
Indietro, C-b .... Posizione attuale cursore .... Avanti, C-f
- :
- :
+ :
+ :
Riga successiva, C-n
->> Sposta il cursore sulla riga centrale del diagramma qui sopra usando
- C-n o C-p. Poi usa C-l per portare il diagramma al centro dello
- schermo.
+>> Sposta il cursore sulla riga centrale del diagramma qui sopra
+ usando C-n o C-p. Poi usa C-l per portare il diagramma al centro
+ dello schermo.
Le quattro lettere dei comandi sono mnemoniche in inglese: P per
-precedente (previous), N per successivo (next), B per indietro (backward)
-e F per avanti (forward). Questi sono tutti i comandi elementari per
-posizionare il cursore, li userai IN CONTINUAZIONE e conviene perciò
-impararli subito.
+precedente (previous), N per successivo (next), B per indietro
+(backward) e F per avanti (forward). Userai questi comandi elementari
+in continuazione.
>> Usa alcuni C-n per portare il cursore su questa riga.
+
>> Muovi il cursore sulla riga con C-f e poi in alto con C-p. Osserva
l'effetto di un C-p quando il cursore si trova a metà della riga.
-Ogni riga di testo termina con un carattere Newline, che serve a separarla
-dalla successiva. È bene che l'ultima riga del tuo file termini con un
-carattere Newline, benché Emacs non lo richieda.
+Ogni riga di testo termina con un carattere Newline (“a capo”), che
+serve a separarla dalla successiva. (Di solito l'ultima riga di un
+file termina con un carattere Newline, ma Emacs non lo richiede.)
->> Prova a usare C-b all'inizio di una riga. Sposterà il cursore
- alla fine della precedente. Questo avviene perché il cursore ha
+>> Prova a usare C-b all'inizio di una riga. Sposterà il cursore alla
+ fine della precedente. Questo avviene perché il cursore ha
superato all'indietro il carattere Newline.
-C-f sposta il cursore avanti attravero il carattere Newline proprio come
-C-b.
+C-f sposta il cursore avanti attraverso il carattere Newline proprio
+come C-b.
->> Premi alcune volte C-b per vedere dove si trova il cursore. Poi usa
- C-f per tornare alla fine della riga. Usa quindi C-f per andare alla
- riga successiva.
+>> Premi alcune volte C-b per vedere dove si trova il cursore. Poi
+ usa C-f per tornare alla fine della riga. Usa quindi C-f per
+ andare alla riga successiva.
-Quando ci si sposta oltre l'inizio o la fine della schermata, il testo che
-si trova oltre si sposta sullo schermo, ottenendo uno "scorrimento"
-(scrolling). In questo modo Emacs posiziona il cursore sulla parte di
-testo desiderata senza doverlo portare fuori dallo schermo visibile.
+Quando ci si sposta oltre l'inizio o la fine della schermata, il testo
+che si trova oltre si sposta sullo schermo, ottenendo uno
+“scorrimento” (scrolling). Questo consente a Emacs di spostare il
+cursore sulla parte di testo desiderata mantenendolo all'interno della
+schermata.
->> Prova a muovere il cursore al di là della fine dello schermo con C-n e
- osserva cosa succede.
+>> Prova a muovere il cursore al di là della fine dello schermo con
+ C-n e osserva cosa succede.
-Se lo spostamento di un solo carattere alla volta è troppo lento allora ci
-si può muovere di un'intera parola alla volta. M-f (META-f) e M-b
-spostano il cursore rispettivamente in avanti e indietro di una parola.
+Se lo spostamento di un solo carattere alla volta è troppo lento
+allora ci si può muovere di un'intera parola alla volta. M-f (META-f)
+e M-b spostano il cursore rispettivamente in avanti e indietro di una
+parola.
>> Prova alcune volte M-f e M-b.
-Quando il cursore è a metà di una parola, M-f lo sposta alla fine della
-stessa. Quando è sullo spazio bianco tra due parole, M-f lo sposta alla
-fine della parola successiva. M-b funziona in modo simile ma in direzione
-opposta.
+Quando il cursore è a metà di una parola, M-f lo sposta alla fine
+della stessa. Quando è sullo spazio bianco tra due parole, M-f lo
+sposta alla fine della parola successiva. M-b funziona in modo simile
+ma in direzione opposta.
->> Ora prova M-f e M-b alcune volte, alternandoli con C-f e C-b così da
- poter osservare l'azione di M-f e M-b da vari punti tra le parole e
- sulle stesse.
+>> Ora prova M-f e M-b alcune volte, alternandoli con C-f e C-b così
+ da poter osservare l'azione di M-f e M-b da vari punti tra le
+ parole e sulle stesse.
-Osserva il parallelo tra C-f e C-b da una parte e M-f e M-b dall'altra.
-Molto spesso i caratteri con Meta sono usati per operazioni relative alle
-unità definite dal linguaggio (parole, frasi, paragrafi), mentre i
-caratteri con Control operano su unità base indipendenti da ciò che si
-scrive (caratteri, righe, ecc.).
+Osserva il parallelo tra C-f e C-b da una parte e M-f e M-b
+dall'altra. Molto spesso i caratteri con Meta sono usati per
+operazioni relative alle unità definite dal linguaggio (parole, frasi,
+paragrafi), mentre i caratteri con Control operano su unità base
+indipendenti da ciò che si scrive (caratteri, righe, ecc.).
Questo parallelo funziona anche tra righe e frasi: C-a e C-e spostano
-all'inizio o alla fine di una riga, e M-a e M-e all'inizio o alla fine di
-una frase.
+all'inizio o alla fine di una riga, mentre M-a e M-e all'inizio o alla
+fine di una frase.
>> Prova due C-a e poi due C-e. Prova due M-a e poi due M-e.
Osserva come un C-a ripetuto non abbia effetto, mentre M-a ripetuti
-continuano a spostare il cursore all'inizio di frasi precendenti. Sebbene
-questi due ultimi comandi non siano perfettamente analoghi, riteniamo che
-il loro comportamento sia ragionevole.
+continuano a spostare il cursore all'inizio di frasi precedenti.
+Sebbene questi due ultimi comandi non siano perfettamente analoghi,
+riteniamo che il loro comportamento sia ragionevole.
-La posizione del cursore nel testo è anche chiamata "punto". Per meglio
-dire, il cursore mostra sullo schermo dove si trova, al momento, il punto
-nel testo.
+La posizione del cursore nel testo è anche chiamata “punto”. Per
+meglio dire, il cursore mostra sullo schermo dove si trova, al
+momento, il punto nel testo.
-Ecco un sommario delle più semplici operazioni di spostamento del cursore,
-compresi i comandi di spostamento di parola in parola o di frase in frase:
+Ecco un sommario delle più semplici operazioni di spostamento del
+cursore, compresi i comandi di spostamento di parola in parola o di
+frase in frase:
- C-f Sposta avanti di un carattere
- C-b Sposta indietro di un carattere
+ C-f Sposta avanti di un carattere
+ C-b Sposta indietro di un carattere
- M-f Sposta avanti di una parola
- M-b Sposta indietro di una parola
+ M-f Sposta avanti di una parola
+ M-b Sposta indietro di una parola
- C-n Sposta alla riga successiva
- C-p Sposta alla riga precedente
+ C-n Sposta alla riga successiva
+ C-p Sposta alla riga precedente
- C-a Sposta all'inizio della riga
- C-e Sposta alla fine della riga
+ C-a Sposta all'inizio della riga
+ C-e Sposta alla fine della riga
- M-a Sposta all'inizio della frase
- M-e Sposta alla fine della frase
+ M-a Sposta all'inizio della frase
+ M-e Sposta alla fine della frase
->> Prova tutti questi comandi alcune volte per fare pratica. Questi sono
- i comandi più usati.
+>> Prova tutti questi comandi alcune volte per fare pratica.
+ Questi sono i comandi più usati.
Altri due importanti comandi di spostamento del cursore sono M-< (META
Minore-di), che sposta all'inizio dell'intero testo, e M-> (META
Maggiore-di), che sposta alla fine dell'intero testo.
-Su molte tastiere il carattere ">" si raggiunge premendo il tasto SHIFT.
-Su queste tastiere bisogna usare il tasto SHIFT assieme a quello META;
-senza il tasto SHIFT si otterrebbe un carattere diverso.
+Su molte tastiere il carattere “<” trova sopra la virgola, quindi è
+necessario tenere premuto il tasto shift (⇑) per ottenerlo. Su questi
+terminali dovrai usare il tasto shift per ottenere M-<, perché
+altrimenti digiteresti M-virgola.
>> Prova M-< adesso per andare all'inizio del tutorial. Poi usa C-v
ripetutamente per tornare a questo punto.
->> Prova M-> adesso, per andare alla fine del tutorial. Quindi usa M-v
- ripetutamente per tornare a questo punto.
-Il cursore si può anche spostare con i tasti freccia, se il terminale li
-ha. Noi raccomandiamo di imparare C-b, C-f, C-n e C-p per tre motivi:
-primo, funzionano su tutti i terminali; secondo, una volta acquisita
-pratica nell'uso di Emacs, ci si accorgerà che raggiungere questi
-caratteri di controllo è più rapido che usare i tasti freccia perché non
-bisogna spostare le mani dalla posizione di scrittura sulla tastiera;
-terzo, una volta acquisita l'abitudine ad usare questi comandi con il
-carattere Control, si può allo stesso modo imparare ad usare altri comandi
-avanzati di spostamento del cursore.
-
-Molti comandi di Emacs accettano un argomento numerico che spesso serve a
-conteggiare per quante volte vanno ripetuti. Il modo in cui si può
-fornire ad un comando il numero di ripetizioni è il seguente: si usa C-u e
-quindi si indicano le cifre prima di impartire il comando stesso. Se
-esiste un tasto META (o EDIT o ALT) c'è un modo alternativo: si battono le
-cifre tenendo premuto il tasto META. Noi consigliamo di imparare il
-metodo con C-u perché funziona su tutti i terminali. L'argomento numerico
-è anche chiamato "argomento prefisso", perché viene indicato prima del
-comando a cui si riferisce.
+>> Prova M-> adesso, per andare alla fine del tutorial. Quindi usa
+ M-v ripetutamente per tornare a questo punto.
+
+Il cursore si può anche spostare con i tasti freccia, se il terminale
+li ha. Noi raccomandiamo di imparare C-b, C-f, C-n e C-p per tre
+motivi: primo, funzionano su tutti i terminali; secondo, una volta
+acquisita pratica nell'uso di Emacs, ci si accorgerà che raggiungere
+questi caratteri di controllo è più rapido che usare i tasti freccia
+(perché non bisogna spostare le mani dalla posizione di scrittura
+sulla tastiera); terzo, una volta acquisita l'abitudine ad usare
+questi comandi con il carattere Control, si può allo stesso modo
+imparare ad usare altri comandi avanzati di spostamento del cursore.
+
+Molti comandi di Emacs accettano un argomento numerico che spesso
+serve a conteggiare per quante volte vanno ripetuti. Il modo in cui
+si può fornire ad un comando il numero di ripetizioni è il seguente:
+si usa C-u e quindi si indicano le cifre prima di impartire il comando
+stesso. Se esiste un tasto META (o EDIT o ALT) c'è un modo
+alternativo: si battono le cifre tenendo premuto il tasto META. Noi
+consigliamo di imparare il metodo con C-u perché funziona su tutti i
+terminali. L'argomento numerico è anche chiamato “argomento
+prefisso”, perché viene indicato prima del comando a cui si riferisce.
Per esempio, C-u 8 C-f sposta il cursore in avanti di otto caratteri.
->> Prova ad usare C-n, o C-p, con un argomento numerico per spostare il
- cursore su una riga vicina a questa con un solo comando.
+>> Prova ad usare C-n, o C-p, con un argomento numerico per spostare
+ il cursore su una riga vicina a questa con un solo comando.
-La maggior parte dei comandi usa l'argomento numerico come numero delle
-ripetizioni da effettuare, tuttavia alcuni lo usano in modo diverso.
-Altri comandi (ma nessuno di quelli imparati fino ad ora) lo usano come
-indicatore di alternativa: la presenza di un argomento prefisso,
-indipendentemente dal suo valore, modifica il comportamento del comando.
+La maggior parte dei comandi usa l'argomento numerico come numero
+delle ripetizioni da effettuare, tuttavia alcuni lo usano in modo
+diverso. Altri comandi (ma nessuno di quelli imparati fino ad ora) lo
+usano come indicatore di alternativa: la presenza di un argomento
+prefisso, indipendentemente dal suo valore, modifica il comportamento
+del comando.
-C-v e M-v sono un'altra eccezione. Quando gli si fornisce un argomento
-spostano l'area di testo visualizzato in alto o in basso del numero di
-righe indicato invece che del numero di schermate. Per esempio, C-u 8 C-v
-fa scorrere lo schermo di 8 righe.
+C-v e M-v sono un'altra eccezione. Quando gli si fornisce un
+argomento spostano l'area di testo visualizzato in alto o in basso del
+numero di righe indicato invece che del numero di schermate. Per
+esempio, C-u 8 C-v fa scorrere lo schermo di 8 righe.
>> Ora prova con C-u 8 C-v.
-La schermata si sposta di 8 righe verso l'alto. Se vuoi tornare di nuovo
-in basso puoi usare un argomento numerico con M-v.
+La schermata si sposta di 8 righe verso l'alto. Se vuoi tornare di
+nuovo in basso puoi usare un argomento numerico con M-v.
-Quando si usa un sistema a finestre, come X11 o MS-Windows, ci dovrebbe
+Quando si usa un sistema a finestre, come X o MS-Windows, ci dovrebbe
essere un'area rettangolare allungata chiamata barra di scorrimento a
un lato della finestra di Emacs. Si può far scorrere il testo con un
click del mouse nella barra di scorrimento.
->> Prova a premere il pulsante centrale del mouse sopra all'area
- evidenziata nella barra di scorrimento. Verrà visualizzata una parte
- del testo, più verso l'inizio o la fine, a seconda del punto della
- barra che il puntatore indicava mentre premevi il pulsante del mouse.
->> Prova a spostare il mouse in su e in giù mentre tieni premuto il
- pulsante centrale. Osserva come il testo scorre in su e in giù mentre
- muovi il mouse.
+Se il tuo mouse dispone di una rotellina, puoi usare anche quella per
+far scorrere il testo.
* QUANDO EMACS SI BLOCCA
------------------------
-Se Emacs smette di rispondere ai comandi può essere fermato in modo sicuro
-premendo C-g. Si può usare C-g per fermare un comando che sta impiegando
-troppo tempo per l'esecuzione.
+Se Emacs smette di rispondere ai comandi può essere fermato in modo
+sicuro premendo C-g. Si può usare C-g per fermare un comando che sta
+impiegando troppo tempo per l'esecuzione.
-Si può anche usare C-g per annullare un argomento numerico o l'esecuzione
-di un comando che non si vuole più portare a termine.
+Si può anche usare C-g per annullare un argomento numerico o
+l'esecuzione di un comando che non si vuole più portare a termine.
->> Batti C-u 100 per indicare un argomento numerico di 100, quindi premi
- C-g. Ora premi C-f. Il cursore si sposta in avanti di un solo
- carattere perché hai annullato l'argomento numerico con C-g.
+>> Batti C-u 100 per indicare un argomento numerico di 100, quindi
+ premi C-g. Ora premi C-f. Il cursore si sposta in avanti di un
+ solo carattere perché hai annullato l'argomento numerico con C-g.
Se hai premuto <ESC> per errore puoi annullare con C-g.
@@ -252,170 +262,194 @@ Se hai premuto <ESC> per errore puoi annullare con C-g.
* COMANDI DISATTIVATI
---------------------
-Alcuni comandi di Emacs sono "disattivati", così da evitare che utenti
+Alcuni comandi di Emacs sono “disattivati”, così da evitare che utenti
principianti possano usarli per errore.
-Se si inserisce uno dei comandi disattivati Emacs mostra un messaggio in
-cui dice quale sia il comando e chiede se davvero si vuole procedere con
-l'esecuzione.
+Se si inserisce uno dei comandi disattivati Emacs mostra un messaggio
+in cui dice quale sia il comando e chiede se davvero si vuole
+procedere con l'esecuzione.
Se effettivamente si vuole provare il comando bisogna premere la barra
-spaziatrice come risposta a questa domanda. Normalmente, se non si vuole
-eseguire il comando disattivato, bisogna rispondere alla domanda con "n".
+spaziatrice come risposta a questa domanda. Normalmente, se non si
+vuole eseguire il comando disattivato, bisogna rispondere alla domanda
+con "n".
->> Prova C-x C-l (che è un comando disattivato), poi rispondi con "n" alla
- domanda.
+>> Prova C-x C-l (che è un comando disattivato), poi rispondi con “n”
+ alla domanda.
* FINESTRE
----------
-Emacs può avere diverse finestre, ognuna contenente il suo testo.
+Emacs può avere diverse “finestre”, ognuna contenente il suo testo.
Spiegheremo dopo come usare finestre multiple. Adesso ci occupiamo di
-come eliminare le finestre in più e tornare alla scrittura con una sola
-finestra. È semplice:
+come eliminare le finestre in più e tornare alla scrittura con una
+sola finestra. È semplice:
- C-x 1 Una finestra (cioè, elimina tutte le altre finestre).
+ C-x 1 Una finestra (cioè, elimina tutte le altre finestre).
È un CONTROL-x seguito dalla cifra 1. C-x 1 espande la finestra che
-continene il cursore su tutto lo schermo ed elimina tutte le altre
+contiene il cursore su tutto lo schermo ed elimina tutte le altre
finestre.
>> Sposta il cursore su questa riga e poi batti C-u 0 C-l.
+
>> Batti C-h k C-f. Osserva come questa finestra viene rimpicciolita
mentre ne appare un'altra che contiene la spiegazione del comando
CONTROL-f.
+
>> Batti C-x 1 e guarda come la finestra contenente la spiegazione
scompare.
-Questo comando è diverso da tutti quelli imparati finora perché contiene
-due caratteri. Inizia con il carattere CONTROL-x. C'è un'ampia serie di
-comandi che iniziano con CONTROL-x; molti di essi riguardano finestre,
-file, buffer, e cose simili. Questi comandi possono essere lunghi due,
-tre o quattro caratteri.
+C'è un'ampia serie di comandi che iniziano con CONTROL-x; molti di
+essi riguardano finestre, file, buffer e cose simili. Questi comandi
+possono essere lunghi due, tre o quattro caratteri.
* INSERIMENTO E CANCELLAZIONE
-----------------------------
Per inserire del testo basta premere i tasti corrispondenti alle varie
-lettere che lo compongono. I caratteri visibili, come A, 7, *, ecc., sono
-considerati testo e inseriti immediatamente. Si usa <Return> (il tasto
-Invio) per inserire un carattere Newline.
-
-L'ultimo carattere inserito si cancella usando <Delete>. <Delete> è un
-tasto che si trova sulla tastiera e che potrebbe essere etichettato come
-"Del" o "Canc". Spesso il tasto "Backspace" (quello con la freccia
-rivolta verso sinistra sopra il tasto Invio) serve da <Delete>, ma non
-sempre!
-
-Più in generale <Delete> cancella il carattere posto immediatamente prima
-della posizione attuale del cursore.
-
->> Prova questo adesso - batti alcuni caratteri e poi cancellali con
- <Delete> ripetuto alcune volte. Non preoccuparti delle modifiche fatte
- a questo file: l'esercitazione principale rimarrà intatta, quella che
- stai usando ne è una tua copia personale.
-
-Quando una riga di testo diventa troppo lunga per essere visualizzata su
-una riga di schermo essa viene "continuata" su una seconda riga dello
-schermo. Un carattere barra retroversa («\») posto accanto al margine
-sinistro indica la prosecuzione della riga precedente. Quando si usa un
-sistema a finestre grafico, invece della barra retroversa comparirà una
-piccola freccia ricurva.
+lettere che lo compongono. I caratteri visibili, come A, 7, *, ecc.,
+sono considerati testo e inseriti immediatamente. Per inserire un
+Newline usa il tasto <Invio> (a volte contrassegnato col simbolo ↲).
+
+Per cancellare il carattere immediatamente prima del cursore, digita
+<DEL>: solitamente è un tasto più largo del normale etichettato con
+“Backspace” o con una freccia che punta a sinistra, sopra il tasto
+<Invio>; generalmente elimina l'ultimo carattere inserito
+
+Può esserci un altro tasto etichettato “Canc”, ma non è quello a cui
+ci riferiamo con <DEL>.
+
+>> Prova questo adesso: batti alcuni caratteri e poi cancellali con
+ <DEL> ripetuto alcune volte. Non preoccuparti delle modifiche
+ fatte a questo file: l'esercitazione principale rimarrà intatta,
+ quella che stai usando ne è una tua copia personale.
+
+Quando una riga di testo diventa troppo lunga per essere visualizzata
+su una riga di schermo viene spezzata e “continua” su una seconda riga
+dello schermo. Se stai usando un sistema a finestre grafico,
+compaiono delle piccole frecce ricurve ai lati del testo (nelle
+“frange” sinistra e destra), indicando che la riga continua. Su un
+terminale testuale, la continuazione viene indicata da una barra
+rovescia (“\”) nell'ultima colonna a destra.
>> Inserisci del testo fino a raggiungere il margine destro e poi
continua. Vedrai apparire la prosecuzione della riga.
->> Usa <Delete> per cancellare il testo fino a quando la riga di testo è
+
+>> Usa <DEL> per cancellare il testo fino a quando la riga di testo è
di nuovo tutta contenuta in una sola riga dello schermo. La
prosecuzione alla riga successiva scompare.
-Si può cancellare un carattere Newline ("a capo", è un carattere che ha un
-effetto ma non viene visualizzato esplicitamente) proprio come ogni altro.
+Si può cancellare un carattere Newline proprio come ogni altro.
Quando si cancella il carattere Newline che separa due righe queste
-vengono unite in una riga sola. Se la riga risultante è troppo lunga per
-essere contenuta dallo schermo allora sarà continuata nella riga
+vengono unite in una riga sola. Se la riga risultante è troppo lunga
+per essere contenuta dallo schermo allora sarà continuata nella riga
successiva.
->> Muovi il cursore all'inizio di una riga e poi premi <Delete>. Questo
+>> Muovi il cursore all'inizio di una riga e poi premi <DEL>. Questo
unisce la riga alla precedente.
+
>> Premi <Invio> per inserire di nuovo il carattere Newline che hai
cancellato.
-Si ricordi che la maggior parte dei comandi di Emacs può ricevere un
-argomento numerico, compresi i caratteri per inserire il testo. Quando si
-ripete un carattere di testo questo viene inserito un certo numero di
-volte.
+Il tasto <Invio> è speciale in quanto può implicare più del semplice
+inserimento di un carattere Newline. A seconda del testo circostante,
+può inserire degli spazi dopo l'“a capo” in modo tale che inserendo
+ulteriori caratteri nella nuova riga, il testo rimanga allineato con
+quello nelle righe precedenti. Questo comportamento (cioè quando
+premendo un tasto vengono eseguite ulteriori azioni rispetto al
+semplice inserimento del carattere stesso) viene chiamato “elettrico”.
+
+>> Questo è un esempio del comportamento “elettrico” di <Invio>
+ Inserisci un <Invio> alla fine di questa riga.
->> Prova adesso - inserisci C-u 8 * per ottenere ********.
+Dovresti vedere che dopo essere andato a capo, Emacs ha inserito degli
+spazi per allineare il cursore sotto la “I” di “Inserisci”.
-Fino ad ora si è visto il modo più semplice di inserire testo in Emacs e
-di correggere gli errori. In modo analogo è possibile cancellare parola
-per parola o riga per riga. Ecco un sommario delle operazioni di
+Ricorda che la maggior parte dei comandi di Emacs può ricevere un
+argomento numerico, compresi i caratteri per inserire il testo.
+Quando si ripete un carattere di testo questo viene inserito un certo
+numero di volte.
+
+>> Prova adesso: inserisci C-u 8 * per ottenere ********.
+
+Fino ad ora si è visto il modo più semplice di inserire testo in Emacs
+e di correggere gli errori. In modo analogo è possibile cancellare
+parole o righe di testo. Ecco un sommario delle operazioni di
cancellazione:
- <Delete> cancella il carattere posto subito prima del cursore
- C-d cancella il carattere posto subito dopo il cursore
-
- M-<Delete> elimina la parola posta prima del cursore
- M-d elimina la parola posta subito dopo il cursore
-
- C-k cancella dalla posizione del cursore fino a fine riga
- M-k cancella fino alla fine della frase corrente.
-
-Si osservi che <Delete> e C-d da una parte e M-<Delete> e M-d dall'altra
-estendono il parallelo tra C-f e M-f (a dire il vero, <Delete> non è un
-vero e proprio carattere di controllo, ma non preoccupiamoci di questo).
-C-k è simile a C-e e M-k è simile a M-e, nel senso che i primi operano su
-righe e i secondi su frasi.
-
-Si può anche cancellare una qualsiasi parte del buffer in modo uniforme:
-si sposta il cursore alla fine di quella parte e poi si usa C-@ o C-SPC
-(uno o l'altro, SPC è la Barra Spaziatrice), poi si muove il cursore
-all'altro estremo della zona e si preme C-w. Questo cancella tutto il
-testo posto tra i due estremi.
-
->> Sposta il cursore sulla P all'inizio del paragrafo precedente. Premi
- C-SPC. Emacs dovrebbe mostrarti il messaggio "Mark set" nella parte
- bassa dello schermo. Muovi il cursore sulla s di "estremi" del
- paragrafo precedente. Premi C-w. Questo cancellerà il testo a partire
- dalla "P" e fino alla lettera che precede "s".
-
-La differenza tra "killing" (eliminazione) e "deleting" (cancellazione) è
-che il testo "eliminato" può essere inserito di nuovo, mentre quello che
-viene cancellato non si può recuperare. L'operazione di reinserimento del
-testo soppresso si chiama "yanking". In genere i comandi che possono
-rimuovere molto testo fanno un'operazione di eliminazione (così da poterlo
-eventualmente reinserire), mentre i comandi che rimuovono un solo
-carattere o solo righe vuote e spazi effettuano una cancellazione (quindi
-non è possibile recuperare quel testo).
-
->> Muovi il cursore all'inizio di una riga non vuota. Usa C-k per
- eliminare il testo di quella riga. Premi C-k una seconda volta. Ti
- accorgerai di come viene cancellato il carattere Newline posto dopo la
- riga stessa.
+ <DEL> cancella il carattere posto subito prima del cursore
+ C-d cancella il carattere posto subito dopo il cursore
+
+ M-<DEL> elimina la parola posta prima del cursore
+ M-d elimina la parola posta subito dopo il cursore
+
+ C-k cancella dalla posizione del cursore fino a fine riga
+ M-k cancella fino alla fine della frase corrente.
+
+Si osservi che <DEL> e C-d da una parte e M-<DEL> e M-d dall'altra
+estendono il parallelo tra C-f e M-f (a dire il vero, <DEL> non è un
+vero e proprio carattere di controllo, ma non preoccupiamoci di
+questo). C-k è simile a C-e e M-k è simile a M-e, nel senso che i
+primi operano su righe e i secondi su frasi.
+
+Si può anche cancellare una qualsiasi parte del buffer in modo
+uniforme: si sposta il cursore alla fine di quella parte e poi si usa
+C-<SPC> (<SPC> è la barra spaziatrice), poi si muove il cursore
+all'altro estremo della zona. Una volta fatto, Emacs evidenzia il
+testo compreso tra il cursore e la posizione dove hai digitato
+C-<SPC>. A questo punto premendo C-w il testo evidenziato viene
+eliminato.
+
+>> Sposta il cursore sulla “S” all'inizio del paragrafo precedente.
+>> Premi C-<SPC>. Emacs dovrebbe mostrarti il messaggio "Mark set"
+ nella parte bassa dello schermo.
+>> Muovi il cursore sulla “o” di “sposta”, nella seconda riga del
+ paragrafo.
+>> Premi C-w. Questo eliminerà il testo a partire dalla "S" e fino
+ alla lettera che precede “o”.
+
+La differenza tra “eliminazione” (“killing”) e “cancellazione”
+(“deleting”) è che il testo “eliminato” può essere inserito di nuovo
+(in qualsiasi posizione), mentre quello che viene cancellato non può
+essere reinserito nello stesso modo (si può comunque annullare una
+cancellazione, vedi sotto). L'operazione di reinserimento del testo
+cancellato si chiama “yanking”. In genere i comandi che possono
+rimuovere molto testo lo eliminano (così da poterlo eventualmente
+reinserire), mentre i comandi che rimuovono un solo carattere o solo
+righe vuote e spazi effettuano una cancellazione (quindi non è
+possibile recuperare quel testo). <DEL> e C-d eseguono una
+cancellazione nel caso più semplice, senza un argomento. Con un
+argomento invece eliminano il testo.
+
+>> Muovi il cursore all'inizio di una riga non vuota, poi usa C-k per
+ eliminare il testo di quella riga.
+>> Premi C-k una seconda volta. Ti accorgerai di come viene
+ eliminato il carattere Newline posto dopo la riga stessa.
Si noti che un singolo C-k elimina il contenuto di una sola riga, un
-secondo C-k cancella la riga stessa, e fa spostare in alto tutte le righe
-successive. C-k usa un eventuale argomento numerico in modo speciale:
-elimina quel numero di righe ed il loro contenuto. Non è una semplice
-ripetizione del comando. C-u 2 C-k elimina due righe e i rispettivi
-caratteri Newline; battere due volte C-k sarebbe diverso.
-
-Recuperare il testo eliminato è un'operazione chiamata "yanking".
-(Significa "strappare", si deve pensare di riprendere del testo che era
-stato portato via). Si può recuperare il testo che è stato eliminato sia
-nella sua posizione originaria che in un altro punto del buffer o anche in
-un diverso file. Si può reinserire diverse volte, facendone copie
-multiple.
+secondo C-k elimina la riga stessa, facendo spostare in alto tutte le
+righe successive. C-k usa un eventuale argomento numerico in modo
+speciale: elimina quel numero di righe ED il loro contenuto. Non è
+una semplice ripetizione del comando. C-u 2 C-k elimina due righe e i
+rispettivi caratteri Newline; battere due volte C-k sarebbe diverso.
+
+Puoi reinserire il testo eliminato sia nella stessa posizione dove è
+stato rimosso, in un altro punto del testo che stai modificando,
+oppure in un file diverso. Puoi reinserire lo stesso testo diverse
+volte, facendone copie multiple. Altri editor usano termini diversi
+per queste operazioni, tipicamente “taglia” e “incolla” (consulta il
+Glossario nel manuale di Emacs).
Il comando per fare "yanking" è C-y. Inserisce il testo eliminato per
ultimo nel punto in cui si trova attualmente il cursore.
>> Prova: premi C-y per recuperare il testo di prima.
-Se si eseguono operazioni di eliminazione immediatamente successive il
-testo eliminato è considerato un tutt'uno e quindi un solo C-y inserirà
+Se si eseguono operazioni di eliminazione consecutive il testo
+eliminato è considerato un tutt'uno e quindi un solo C-y inserirà
quelle righe tutte assieme.
>> Prova adesso, premi C-k alcune volte.
@@ -423,56 +457,55 @@ quelle righe tutte assieme.
Adesso, per recuperare il testo eliminato:
>> Premi C-y. Sposta il cursore alcune righe più in basso e premi di
- nuovo C-y. Hai appena visto come copiare una parte di testo.
+ nuovo C-y. Hai appena visto come duplicare una parte di testo.
Cosa succede se c'è del testo da recuperare tra quello eliminato ma è
stato eliminato altro testo dopo di esso? C-y restituirebbe il testo
-dell'ultima eliminazione, tuttavia il testo eliminato in precedenza non è
-perso. Si recupera con il comando M-y. Dopo aver usato C-y per
-recuperare il testo più recentemente eliminato, un M-y sostituisce quel
-testo con quello dell'eliminazione precedente. Premere M-y altre volte
-recupera il testo delle eliminazioni via via precedenti. Quando è stato
-trovato il testo cercato non si deve fare altro per tenerlo. Si può
-andare avanti con la scrittura lasciando il testo recuperato dove si
-trova.
-
-Quando si usa M-y un certo numero di volte si arriva di nuovo al testo di
-partenza (quello eliminato per ultimo).
-
->> Elimina una riga, sposta il cursore, elimina un'altra riga. Usa C-y per
- recuperare la seconda riga eliminata. Premi M-y e verrà sostituita
- dalla riga eliminata prima. Usa di nuovo M-y e osserva cosa succede.
- Continua fino a quando non ritrovi la riga che avevi eliminato per
- seconda. Se vuoi puoi usare un argomento numerico sia positivo che
- negativo per M-y.
+dell'ultima eliminazione, tuttavia il testo eliminato in precedenza
+non è perso. Si recupera con il comando M-y. Dopo aver usato C-y per
+recuperare il testo più recentemente eliminato, un M-y sostituisce
+quel testo con quello dell'eliminazione precedente. Premendo M-y in
+successione si recupera il testo delle eliminazioni via via
+precedenti. Quando è stato trovato il testo cercato non si deve fare
+altro per tenerlo. Si può andare avanti con la scrittura lasciando il
+testo recuperato dove si trova.
+
+Quando si usa M-y un certo numero di volte si arriva di nuovo al testo
+di partenza (quello eliminato per ultimo).
+
+>> Elimina una riga, sposta il cursore, elimina un'altra riga.
+ Premi C-y per recuperare la seconda riga eliminata.
+ Premi M-y e verrà sostituita dalla riga eliminata prima.
+ Usa di nuovo M-y e osserva cosa succede. Continua fino a quando
+ non ritrovi la riga che avevi eliminato per seconda. Se vuoi puoi
+ usare un argomento numerico sia positivo che negativo per M-y.
* ANNULLAMENTO
--------------
Se si modifica il testo e subito dopo ci si accorge di aver fatto un
-errore si può annullare la modifica con il comando di annullamento C-x u.
+errore si può annullare la modifica con il comando di annullamento,
+C-/.
-Normalmente C-x u annulla le modifiche fatte da un solo comando; se si usa
-C-x u alcune volte di seguito ogni ripetizione annulla un comando
-precedente.
+Normalmente C-/ annulla le modifiche fatte da un solo comando; se si
+usa C-/ di seguito ogni ripetizione annulla un ulteriore comando.
-Ci sono due eccezioni: i comandi che non modificano il testo non contano,
-tra questi i comandi di spostamento del cursore e quelli di scorrimento
-del testo; i caratteri inseriti nel testo sono gestiti in gruppi, fino a
-20 elementi, ciò per ridurre il numero di C-x u da usare per annullare
-l'inserimento del testo.
+Ci sono due eccezioni: i comandi che non modificano il testo non
+contano, tra questi i comandi di spostamento del cursore e quelli di
+scorrimento del testo; i caratteri inseriti nel testo sono gestiti in
+gruppi, fino a 20 elementi (al fine di ridurre il numero di C-/ da
+usare per annullare l'inserimento del testo).
->> Elimina questa riga con C-k poi usa C-x u e guardala ricomparire.
+>> Elimina questa riga con C-k poi usa C-/ e dovrebbe ricomparire.
-C-_ è un comando di annullamento alternativo; funziona come C-x u ma è più
-semplice da inserire più volte di seguito. Lo svantaggio di C-_ è che su
-alcune tastiere non è di inserimento immediato. Ecco perché abbiamo
-previsto anche C-x u. Su alcuni terminali si può ottenere C-_ dal simbolo
-/ mentre si tiene premuto il tasto CONTROL.
+C-_ è un comando di annullamento alternativo, funziona esattamente
+come C-/. Su alcuni terminali, la sequenza C-/ invia effettivamente
+C-_ a Emacs. Alternativamente, anche C-x u ha la stessa funzione di
+C-/, ma è leggermente più scomoda da inserire.
-Un argomento numerico per C-x u o C-_ agisce come numero delle ripetizioni
-da effettuare.
+Un argomento numerico per C-/, C-_ o C-x u agisce come numero delle
+ripetizioni da effettuare.
Si può annullare la cancellazione del testo proprio come se ne annulla
l'eliminazione. La distinzione tra l'eliminazione e la cancellazione
@@ -483,337 +516,361 @@ differenza rispetto all'operazione di annullamento.
* FILE
------
-Per conservare in modo permanente il testo inserito biaogna conservarlo in
-un file, altrimenti sarà perso al termine dell'esecuzione di Emacs. Per
-inserire il testo in un file bisogna aprire quel file prima di comporre il
-testo. (Questa operazione si chiama anche "visita" del file.)
-
-Aprire un file significa osservarne il contenuto all'interno di Emacs.
-Per molti versi è come se si operasse sul file stesso, tuttavia le
-modifiche apportate al contenuto non sono definitive fino a quando non si
-"salva" il file. Tutto questo avviene in modo tale da evitare di lasciare
-un file su disco quando è modificato solo in parte. Persino quando si
-salva il file Emacs conserva il contenuto originale dello stesso in un
-file con un altro nome, nel caso in cui si capisca più tardi che le
-modifiche sono state un errore.
-
-Osservando la parte bassa dello schermo si noti che c'è una riga che
-inizia e finisce con dei trattini e che all'inizio contiene questo testo
-"--:-- TUTORIAL.it" o qualcosa di simile. Questa parte dello schermo
-normalmente mostra il nome del file che si sta "visitando". In questo
-momento si "visita" un file che si chiama "TUTORIAL.it" che è poi una
-copia dell'esercitazione di Emacs. Quando si apre un file con Emacs il
-suo nome apparirà sempre in quel punto preciso.
-
-Una caratteristica particolare del comando per aprire i file è che bisogna
-fornirgli il nome del file. Diciamo in questo caso che il comando "legge
-un argomento dal terminale" (l'argomento è proprio il nome del file).
-Dopo aver scritto il comando
-
- C-x C-f Trova un file
+Per conservare in modo permanente il testo inserito bisogna
+conservarlo in un file, altrimenti sarà perso al termine
+dell'esecuzione di Emacs. Per inserire il testo in un file bisogna
+aprire quel file prima di comporre il testo. (Questa operazione si
+chiama anche “visita” del file.)
+
+Aprire un file implica vederne il contenuto all'interno di Emacs. Per
+molti versi è come se si operasse sul file stesso, tuttavia le
+modifiche apportate al contenuto non sono definitive fino a quando non
+si “salva” il file. Tutto questo avviene in modo tale da evitare di
+lasciare un file su disco quando è modificato solo in parte. Persino
+quando si salva il file Emacs conserva il contenuto originale dello
+stesso in un file con un altro nome, nel caso in cui si capisca più
+tardi che le modifiche sono state un errore.
+
+Osservando la parte bassa dello schermo puoi notare una riga che
+inizia qualcosa del tipo “--:-- TUTORIAL.it”. Questa parte dello
+schermo normalmente mostra il nome del file che si sta “visitando”.
+In questo momento stai osservando la tua copia personale
+dell'esercitazione di Emacs, chiamata “TUTORIAL.it”. Quando si apre
+un file con Emacs il suo nome apparirà sempre in quel punto preciso.
+
+Una caratteristica particolare del comando per aprire i file è che
+bisogna fornirgli il nome del file. Diciamo in questo caso che il
+comando “legge un argomento dal terminale” (l'argomento è proprio il
+nome del file). Dopo aver scritto il comando
+
+ C-x C-f Trova un file
Emacs chiede il nome del file. Il nome che si inserisce compare nella
-riga più in basso sullo schermo. La riga di fondo è chiamata "minibuffer"
-quando viene usato per questo genere di operazioni di inserimento. Si
-possono usare i consueti comandi di Emacs per operare sul nome del file.
+riga più in basso sullo schermo. La riga di fondo è chiamata
+“minibuffer” quando viene usato per questo genere di operazioni di
+inserimento. Si possono usare i consueti comandi di Emacs per operare
+sul nome del file.
Mentre si inserisce il nome del file (oppure ogni altro testo nel
-minibuffer), si può annullare il comando con un C-g.
+minibuffer), è possibile annullare l'operazione usando C-g.
->> Premi C-x C-f, poi premi C-g. Questo vuota il "minibuffer" e
+>> Premi C-x C-f, poi premi C-g. Questo annulla il minibuffer e
interrompe l'esecuzione del comando C-x C-f che stava usando il
- "minibuffer". Quindi non sarà aperto alcun file.
+ minibuffer. Quindi non sarà aperto alcun file.
-Quando si finisce di indicare il nome del file bisogna premere <Invio> per
-portare a termine il comando. Il comando C-x C-f inizia il suo lavoro e
-trova il file che è stato scelto. Il "minibuffer" scompare quando il
-comando C-x C-f ha terminato l'esecuzione.
+Quando hai finito di indicare il nome del file, premi <Invio> per
+portare a termine il comando. Il minibuffer scompare e il comando C-x
+C-f inizia il suo lavoro e trova il file che è stato scelto.
Subito dopo, il contenuto del file compare sullo schermo e si può
-modificare a piacere. Quando si desidera rendere permanenti le modifiche
-si usa il comando
+modificare a piacere. Quando si desidera rendere permanenti le
+modifiche si usa il comando
- C-x C-s Salva il file
+ C-x C-s Salva il file
Questo copia il testo contenuto in Emacs nel file su disco. La prima
-volta che si effetta questa operazione Emacs dà un nuovo nome al file
-originale in modo da conservarlo. Il nuovo nome è ottenuto aggiungendo un
-carattere "~" alla fine del nome originale.
-
-Quando il salvataggio è terminato Emacs mostra il nome del file appena
-scritto. Si dovrebbero salvare le modifiche piuttosto spesso in modo da
-non perdere troppo lavoro se per caso il sistema dovesse bloccarsi.
-
->> Usa C-x C-f per salvare la tua copia di questa esercitazione. Questo
- dovrebbe mostrare il messaggio "Wrote ...TUTORIAL.it" nella parte bassa
- dello schermo.
+volta che si effettua questa operazione Emacs rinomina il file
+originale in modo da conservarlo. Il nuovo nome è ottenuto
+aggiungendo un carattere "~" alla fine del nome originale. Quando il
+salvataggio termina, Emacs mostra il nome del file scritto.
+
+>> Premi C-x C-s TUTORIAL<Invio>.
+ Questo dovrebbe salvare questa esercitazione in un file chiamato
+ “TUTORIAL” e mostrare “Wrote ...TUTORIAL nella parte bassa dello
+ schermo.
-Si può aprire un file già esistente per leggerlo o modificarlo. Si può
-anche "visitare" un file che ancora non esiste. Questo è un modo per
-creare un nuovo file con Emacs: si apre il file che sarà inizialmente
-vuoto e quindi si inizia ad inserire il testo. Quando si chiederà di
-salvare il file Emacs lo creerà ed esso conterrà tutto il testo che è
-stato inserito. Da quel punto in poi si potrà pensare di operare su un
-file già esistente.
+Si può aprire un file già esistente per leggerlo o modificarlo. Si
+può anche “visitare” un file che ancora non esiste. Questo è un modo
+per creare un nuovo file con Emacs: si apre il file che sarà
+inizialmente vuoto e quindi si inizia ad inserire il testo. Quando si
+chiederà di salvare il file Emacs lo creerà ed esso conterrà tutto il
+testo che è stato inserito. Da quel punto in poi si potrà pensare di
+operare su un file già esistente.
* BUFFER
--------
-Se si apre un secondo file con C-x C-f il primo rimane aperto all'interno
-di Emacs. Si può tornare a visualizzarlo "visitandolo" di nuovo con il
-comando C-x C-f. In questo modo si possono aprire quanti file si vogliono
-all'interno di Emacs.
+Se si apre un secondo file con C-x C-f il primo rimane aperto
+all'interno di Emacs. Si può tornare a visualizzarlo “visitandolo” di
+nuovo con il comando C-x C-f. In questo modo si possono aprire quanti
+file si vogliono all'interno di Emacs.
->> Crea un file chiamato "pippo" usando C-x C-f pippo <Invio>. Inserisci
- del testo e poi salva "pippo" con C-x C-s. Poi usa C-x C-f TUTORIAL.it
- <Invio> per tornare all'esercitazione.
+Emacs conserva il testo di ogni file all'interno di un oggetto
+chiamato “buffer”. L'apertura di un file crea un nuovo buffer
+all'interno di Emacs. Per guardare una lista dei buffer che esistono
+attualmente nella tua sessione di Emacs si usa
-Emacs conserva il testo di ogni file all'interno di un oggetto chiamato
-"buffer". La "visita" di un file produce un nuovo buffer all'interno di
-Emacs. Per guardare una lista dei buffer che esistono attualmente nella
-tua sessione di Emacs si usa
-
- C-x C-b Elenca buffer
+ C-x C-b Elenca buffer
>> Prova C-x C-b adesso.
-Si osservi come ogni buffer abbia un nome e come possa avere anche il nome
-di un file del quale conserva il contenuto. Alcuni buffer non
-corrispondono ad alcun file. Per esempio il buffer che ha nome "*Buffer
-List*" non ha un file corrispondente, è quello che contiene la lista che è
-stata creata da C-x C-b. OGNI testo che si legge all'interno di Emacs è
-sempre parte di un buffer.
+Osserva come ogni buffer abbia un nome e come possa avere anche il
+nome di un file del quale conserva il contenuto. QUALSIASI testo
+mostrato in una finestra di Emacs appartiene a qualche buffer.
>> Usa C-x 1 per eliminare la lista dei buffer.
-Se si modifica in qualche modo il testo di un file e poi si visita un altro
-file questo non comporta un salvataggio del primo. Le modifiche rimangono
-solo all'interno di Emacs, nel buffer relativo a quel file. La creazione
-o la modifica del buffer del secondo file non ha alcun effetto sul buffer
-del primo. Sarebbe fastidioso dover tornare al primo file con C-x C-f per
-salvarlo con C-x C-s. Così c'è il comando
+Quando ci sono svariati buffer, solo uno di essi è quello “corrente”
+in un certo istante. Questo buffer è quello che è soggetto alle tue
+modifiche. Se vuoi modificare un altro buffer, devi prima
+“selezionarlo”. Se vuoi passare a un buffer che corrisponde a un
+file, puoi farlo visitando di nuovo quel file usando C-x C-f. Ma c'è
+un modo più semplice: usa il comando C-x b. Questo comando richiede
+il nome del buffer.
+
+>> Crea un file chiamato “pippo” con C-x C-f pippo<Invio>.
+ Torna poi a questa esercitazione con C-x b TUTORIAL<Invio>.
+
+La maggior parte delle volte, il nome del buffer corrisponde al nome
+del file (senza la parte relativa alla directory). Questo non è
+sempre vero. La lista dei buffer che ottieni con C-x C-b mostra sia
+il nome del buffer che il nome del file associato.
+
+Alcuni buffer non corrispondono ad alcun file. Per esempio il buffer
+che ha nome “*Buffer List*” non è associato a nessun file. Questo
+buffer TUTORIAL inizialmente non era associato a un file, mentre
+adesso lo è, dal momento che nella sezione precedente hai usato C-x
+C-s per salvarlo in un file.
+
+Anche il buffer chiamato “*Messages* non è associato ad alcun file.
+Quel buffer contiene tutti i messaggi che sono apparsi nella parte
+bassa dello schermo durante la sessione di Emacs.
+
+>> Passa al buffer con i messaggi con C-x b *Messages*<Invio>.
+ Torna poi a questa esercitazione con C-x b TUTORIAL<Invio>.
- C-x s Salva alcuni buffer
+Se si modifica in qualche modo il testo di un file e poi si visita un
+altro file questo non comporta il salvataggio del primo. Le modifiche
+rimangono solo all'interno di Emacs, nel buffer relativo a quel file.
+La creazione o la modifica del buffer del secondo file non ha alcun
+effetto sul buffer del primo. Questo è comodo, ma è conveniente avere
+la possibilità di salvare il buffer del primo file: sarebbe fastidioso
+dover prima passare a quel buffer per salvarlo con C-x C-s. Così c'è
+il comando
-C-x s chiede conferma del salvataggio per ogni buffer che contiene testo
-modificato e non ancora salvato. Chiede, per ognuno di quei buffer, se si
-voglia salvarne il contenuto nel file corrispondente.
+ C-x s Salva alcuni buffer
->> Inserisci una riga di testo e poi premi C-x s. Dovrebbe chiederti se
- vuoi salvare il buffer chiamato TUTORIAL.it. Rispondi di sì battendo
- "y".
+C-x s chiede conferma del salvataggio per ogni buffer che contiene
+testo modificato e non ancora salvato. Chiede, per ognuno di quei
+buffer, se si voglia salvarne il contenuto nel file corrispondente.
+
+>> Inserisci una riga di testo e poi premi C-x s.
+ Dovrebbe chiederti se vuoi salvare il file chiamato “...TUTORIAL”.
+ Rispondi di sì battendo “y”.
* ESTENDERE L'INSIEME DEI COMANDI
---------------------------------
Emacs ha molti comandi in più rispetto a quelli che potrebbero trovare
-posto su tutti i caratteri CONTROL e META. Emacs risolve questo problema
-usando il comando "estendi" (eXtend). Ce ne sono di due tipi:
-
- C-x Comando esteso carattere. Seguito da un carattere.
- M-x Comando esteso con nome. Seguito da un nome di comando.
-
-Si tratta di comandi utili ma meno utilizzati di quelli che già osservati.
-Se ne sono visti due: il comando C-x C-f per visitare un file e quello C-x
-C-s per salvarlo. Un altro esempio è quello che serve per chiudere la
-sessione Emacs - cioè il comando C-x C-c. Non bisogna temere di perdere
-le modifiche fatte: C-x C-c propone infatti di salvare ogni file
-modificato prima di chiudere Emacs.
-
-C-z è il comando che serve per uscire da Emacs *temporaneamente* - così da
-poter tornare alla stessa sessione di Emacs in un momento successivo.
-
-Su sistemi che lo permettono C-z "sospende" Emacs, cioè riporta alla shell
-che lo aveva invocato senza però porre termine alla sessione attuale.
-Nelle shell più comuni si può riaprire la sessione in corso con il comando
-"fg" oppure con "%emacs".
-
-Su sistemi che non prevedono la possibilità di "sospensione", C-z crea una
-subshell che funziona all'interno di Emacs per dare la possibilità di
-usare altri programmi e poi tornare a Emacs successivamente; in pratica
-non fa "uscire" veramente da Emacs. In questo caso il comando di shell
-"exit" è il modo comune per tornare ad Emacs dalla subshell.
-
-Il momento di usare C-x C-c è quando si sta per effettuare il log-out dal
-sistema. È anche il comando giusto quando si deve chiudere Emacs che è
-stato invocato da un programma che gestisce la posta o da altri programmi
-simili, dal momento che essi potrebbero non riuscire a gestire la
-sospensione di Emacs. In circostanze normali, invece, se non si è sul
-punto di fare un log-out è meglio sospendere l'esecuzione di Emacs
-piuttosto che interromperla.
-
-Ci sono molti comandi che usano C-x. Ecco una lista di quelli già
-conosciuti:
-
- C-x C-f Apri un file.
- C-x C-s Salva un file.
- C-x C-b Elenca buffer.
- C-x C-c Chiudi Emacs.
- C-x 1 Elimina tutte le finestre tranne una.
- C-x u Annulla.
-
-I comandi estesi con nome sono usati ancora meno spesso, oppure sono usati
-solo in certi "modi" di esecuzione. Un esempio è il comando
-replace-string per sostituire in tutto il testo una stringa di caratteri
-con un'altra. Quando si usa M-x Emacs visualizza "M-x" nella parte bassa
-dello schermo, quindi si deve inserire per esteso il nome del comando; in
-questo caso "replace-string". Inserisci solo "repl s<TAB>" ed Emacs
-completerà da solo il nome. (<TAB> è il tasto di tabulazione, che si
-trova di solito sul lato sinistro della tastiera sopra al tasto Blocca
-Maiuscole). Concludi l'inserimento del comando con il tasto <Invio>.
-
-Il comando replace-string richiede due argomenti: la stringa da sostituire
-e quella con cui sostituirla. Bisogna indicare la fine di ogni argomento
-con <Invio>.
-
->> Muovi il cursore sulla riga bianca qui sotto, quindi batti M-x repl s
- <Invio> cambiata <Invio> modificata <Invio>.
-
-Osserva come questa riga è cambiata: hai sostituito la parola cam-bia-ta
-con "modificata" tutte le volte che quella compariva nel testo, a partire
-dalla posizione iniziale del cursore.
+posto su tutti i caratteri CONTROL e META. Emacs risolve questo
+problema usando il comando X (eXtend). Ci sono due varianti:
+
+ C-x Comando esteso carattere. Seguito da un carattere.
+ M-x Comando esteso con nome. Seguito da un nome di comando.
+
+Si tratta di comandi utili ma meno utilizzati di quelli che già
+osservati. Se ne sono visti alcuni: il comando C-x C-f per visitare
+un file e C-x C-s per salvarlo, ad esempio. Un altro esempio è quello
+che serve per chiudere la sessione Emacs, cioè il comando C-x C-c.
+(Non preoccuparti di perdere le modifiche che hai apportato: C-x C-c
+propone infatti di salvare ogni file modificato prima di chiudere
+Emacs.)
+
+Se stai usando un terminale grafico, non devi fare niente di speciale
+per passare da Emacs a un'altra applicazione. Puoi farlo con il mouse
+oppure utilizzare i comandi del “window manager”. Al contrario, se
+stai usando un terminale a caratteri che può mostrare una sola
+applicazione alla volta, hai bisogno di un modo per “sospendere” Emacs
+e poter quindi usare un'altra applicazione.
+
+C-z è il comando che serve per uscire da Emacs *temporaneamente*, in
+modo tale da poter tornare alla stessa sessione di Emacs in un momento
+successivo. Quando si è su un terminale a caratteri, C-z sospende
+Emacs, cioè si ritorna alla shell senza distruggere la sessione
+corrente. Nelle shell più comuni, puoi ritornare in Emacs con il
+comando “fg” oppure con “%emacs”.
+
+Il momento di usare C-x C-c è quando si sta per effettuare il log-out
+dal sistema. È anche il comando giusto quando si deve chiudere Emacs
+che è stato invocato da un altro programma, ad esempio da quello che
+gestisce la posta.
+
+Ci sono molti comandi C-x. Ecco una lista di quelli già conosciuti:
+
+ C-x C-f Apri un file.
+ C-x C-s Salva un file.
+ C-x s Salva alcuni buffer.
+ C-x C-b Elenca buffer.
+ C-x b Passa a un altro buffer.
+ C-x C-c Chiudi Emacs.
+ C-x 1 Elimina tutte le finestre tranne una.
+ C-x u Annulla.
+
+I comandi estesi con nome sono usati ancora meno spesso, oppure sono
+usati solo in certe modalità. Un esempio è il comando replace-string
+per sostituire in tutto il testo una stringa di caratteri con
+un'altra. Quando si usa M-x Emacs visualizza "M-x" nella parte bassa
+dello schermo, quindi si deve inserire per esteso il nome del comando;
+in questo caso “replace-string”. Inserisci solo “repl s<TAB>” ed
+Emacs completerà da solo il nome. (<TAB> è il tasto di tabulazione,
+che si trova di solito sul lato sinistro della tastiera sopra al tasto
+Blocca Maiuscole.) Concludi l'inserimento del comando con il tasto
+<Invio>.
+
+Il comando replace-string richiede due argomenti: la stringa da
+sostituire e quella con cui sostituirla. Bisogna indicare la fine di
+ogni argomento con <Invio>.
+
+>> Muovi il cursore sulla riga vuota due righe sotto questa.
+ Inserisci quindi M-x repl s<Invio>cambiata<Invio>modificata<Invio>.
+
+ Osserva come questa riga sia cambiata: hai sostituito la parola
+ “cambiata” con “modificata” tutte le volte che quella compariva nel
+ testo, a partire dalla posizione iniziale del cursore.
* SALVATAGGIO AUTOMATICO
------------------------
-Quando si apportano delle modifiche ad un file ma non sono ancora state
-salvate potrebbero essere perse se per caso il sistema si bloccasse. Per
-proteggerti da questa eventualità Emacs scrive periodicamente un file di
-"salvataggio automatico" per ogni file che si sta scrivendo. Il nome del
-file di salvataggio automatico ha un carattere # all'inizio e alla fine;
-per esempio se il file si chiama "ciao.c" il nome del file di salvataggio
-automatico sarà "#ciao.c#". Quando si salva il file nel modo consueto
-Emacs cancella il file di salvataggio automatico.
+Quando si apportano delle modifiche ad un file ma non sono ancora
+state salvate potrebbero essere perse se per caso il sistema si
+bloccasse. Per proteggerti da questa eventualità Emacs scrive
+periodicamente un file di “salvataggio automatico” per ogni file che
+si sta modificando. Il nome del file di salvataggio automatico ha un
+carattere # all'inizio e alla fine; per esempio se il file si chiama
+“ciao.c” il nome del file di salvataggio automatico sarà “#ciao.c#”.
+Quando si salva il file nel modo consueto Emacs cancella il file di
+salvataggio automatico.
-Se il computer si blocca si può recuperare il file salvato automaticamente
-aprendo il file in modo normale (il file che si stava scrivendo, non
-quello di salvataggio automatico) e usando poi M-x recover file<Invio>.
-Quando viene chiesta la conferma si risponda con yes<Invio> per andare
-avanti nel recupero dei dati salvati automaticamente.
+Se il computer si blocca si può recuperare il file salvato
+automaticamente aprendo il file in modo normale (il file che si stava
+scrivendo, non quello di salvataggio automatico) e usando poi M-x
+recover-file<Invio>. Quando viene chiesta la conferma si risponda
+con yes<Invio> per procedere con il recupero dei dati salvati
+automaticamente.
* AREA DI ECO
-------------
Se Emacs si accorge che si inseriscono comandi multicarattere in modo
-troppo lento allora mostra la sequenza nella parte bassa dello schermo in
-un'area chiamata "area di eco". L'area in questione contiene l'ultima riga
-dello schermo.
+troppo lento allora mostra la sequenza nella parte bassa dello schermo
+in un'area chiamata "area di eco". L'area in questione contiene
+l'ultima riga dello schermo.
* MODE LINE
-----------
-La riga immediatamente sopra all'area di eco è chiamata "mode line" (riga
-di modo). La "mode line" si presenta più o meno così:
+La riga immediatamente sopra all'area di eco è chiamata "mode line"
+(riga di modo). La "mode line" si presenta più o meno così:
---:** TUTORIAL.it (Fundamental)--L720--64%---------------
+ -:**- TUTORIAL 62% L759 (Fundamental)
-Questa riga fornisce informazioni utili sullo stato di Emacs e sul testo
-che si inserisce.
+Questa riga fornisce informazioni utili sullo stato di Emacs e sul
+testo che si inserisce.
-Abbiamo già visto cosa significa il nome del file - è il file che si sta
-visitando. --NN%-- (due cifre e il segno %) indica la posizione attuale
-nel testo: significa che NN percento del testo si trova sopra al margine
-superiore dello schermo. Se si visualizza l'inizio del file ci sarà
-scritto --Top-- (inizio) invece che --00%--. Se invece ci si trova alla
-fine del file ci sarà scritto --Bot-- (fine). Se si osserva un file
-talmente piccolo da essere visualizzato per intero sullo schermo allora la
-"mode line" indicherà --All-- (tutto).
+Abbiamo già visto cosa significa il nome del file: è il file che si
+sta visitando. NN% indica la posizione attuale nel testo: significa
+che NN percento del testo si trova sopra al margine superiore dello
+schermo. Se si visualizza l'inizio del file ci sarà scritto “Top”
+(inizio) invece che “ 0%”. Se invece ci si trova alla fine del file
+ci sarà scritto “Bot” (fine). Se si osserva un file talmente piccolo
+da essere visualizzato per intero sullo schermo allora la mode line
+indicherà “All” (tutto).
La lettera L e le cifre indicano il numero di riga (Line) del punto
indicato dal cursore in quel momento.
I due asterischi vicino all'inizio indicano che sono state fatte delle
modifiche al testo. Se il file è stato appena aperto o appena salvato
-quella parte della "mode line" non mostra alcun asterisco, solo trattini.
-
-La parte di "mode line" racchiusa tra parentesi serve ad indicare in quale
-modo di scrittura ci si trovi. Il modo standard è "Fundamental" ed è
-quello che probabilmente è attivo adesso. È un esempio di "modalità
-primaria" (major mode).
-
-Emacs ha tanti diversi tipi di "modalità primarie". Alcuni di questi
-servono per la scrittura di diversi linguaggi di programmazione e/o tipi
-di testo, come la modalità Lisp, la modalità Testo, ecc. In un
-determinato momento una sola "modalità primaria" alla volta può essere
-attiva, e il suo nome è visualizzato sulla "mode line", proprio come
-"Fundamental" lo è adesso.
-
-Ogni "modalità primaria" condiziona il comportamento di alcuni comandi.
+quella parte della mode line non mostra alcun asterisco, solo
+trattini.
+
+La parte di mode line racchiusa tra parentesi serve ad indicare in
+quale modo di scrittura ci si trovi. Il modo standard è “Fundamental”
+ed è quello che probabilmente è attivo adesso. È un esempio di
+“modalità primaria” (major mode).
+
+Emacs ha tanti diversi tipi di modalità primarie. Alcuni di questi
+servono per la scrittura di diversi linguaggi di programmazione e/o
+tipi di testo, come la modalità Lisp, la modalità Testo, ecc. In
+qualsiasi momento c'è una e una sola modalità primaria attiva, e il
+suo nome è visualizzato sulla mode line, dove adesso c'è
+“Fundamental”.
+
+Ogni modalità primaria condiziona il comportamento di alcuni comandi.
Per esempio ci sono comandi per creare commenti in un programma e, dal
momento che ogni linguaggio di programmazione ha un diverso tipo di
-commento, ogni "modalità primaria" deve inserire i commenti in modo
-diverso. Ogni "modalità primaria" è anche il nome di un comando esteso
-con nome che serve per attivare quella "modalità primaria". Per esempio
-M-x fundamental-mode è il comando per attivare la modalità primaria
-"Fundamental".
+commento, ogni modalità primaria deve inserire i commenti in modo
+diverso. Ogni modalità primaria corrisponde al nome di un comando
+esteso, con cui puoi passare a quella modalità. Per esempio M-x
+fundamental-mode è il comando per attivare la modalità primaria
+“Fundamental”.
-Se si vuole inserire del testo in italiano, come questo file, serve
-probabilmente la modalità testo ("text-mode").
+Se si vuole inserire del testo in italiano, come questo file,
+probabilmente è più adeguata la modalità testo.
->> Inserisci M-x text mode<Invio>.
+>> Inserisci M-x text-mode<Invio>.
-Non preoccuparti, nessuno dei comandi che hai imparato verrà modificato in
-modo sostanziale. Tuttavia adesso puoi osservare come M-f e M-b
-considerino gli apostrofi come parti di parole. Al contrario, nella
-modalità "Fundamental", M-f e M-b consideravano gli apostrofi dei
-separatori di parole.
+Non preoccuparti, nessuno dei comandi che hai imparato verrà
+modificato in modo sostanziale. Tuttavia adesso puoi osservare come
+M-f e M-b considerino gli apostrofi come parti di parole. In
+precedenza, nella modalità “Fundamental”, M-f e M-b consideravano gli
+apostrofi dei separatori di parole.
-Le "modalità primarie" di solito producono nei comandi piccoli cambiamenti
-come questo: la maggior parte di essi "fa lo stesso lavoro" ma in maniera
-appena diversa.
+Le modalità primarie di solito producono nei comandi piccoli
+cambiamenti come quello: la maggior parte di essi “fa lo stesso
+lavoro” ma in maniera un po' diversa.
-Per leggere la documentazione sulla "modalità primaria" attuale si usa
+Per leggere la documentazione sulla modalità primaria attuale, usa
C-h m.
->> Usa C-u C-v una o più volte per portare questa riga vicino all'inizio
- dello schermo. Usa C-h m per leggere come il "text-mode" (modo testo)
- differisce dalla modalità "Fundamental". Premi C-x 1 per eliminare la
- finestra contenente la documentazione.
-
-Le "modalità primarie" sono chiamate così perché ci sono anche delle
-"modalità secondarie" (minor modes). Le "modalità secondarie" non sono
-alternative alle "modalità primarie" ma solo piccole varianti di esse.
-Ogni "modalità secondaria" può essere attivata o disattivata
-indipendentemente da tutte le altre "modalità secondarie" e
-indipendentemente dalla "modalità primaria" attiva in quel momento. Si
-può quindi usare nessuna "modalità secondaria", una soltanto oppure ogni
-altra combinazione di modalità secondarie.
-
-Una "modalità secondaria" molto utile, specialmente per il testo italiano,
-è la modalità "Auto Fill". Quando questa modalità è attiva, Emacs
-interrompe la riga tra due parole ogni volta che, nel corso
-dell'inserimento, essa diventa troppo lunga.
-
-Si può attivare il modo "Auto Fill" con: M-x auto fill mode<Invio>.
-Quando la modalità suddetta è attiva può essere disattivata con M-x auto
-fill mode<Invio>. Se la modalità è disattivata questo comando la attiva,
-viceversa se è già attiva. Un comando che funziona così si comporta come
-un interruttore, attiva o disattiva qualcosa ogni volta che viene premuto.
-
->> Usa M-x auto fill mode<Invio> adesso. Inserisci una riga di "asdf"
+>> Sposta il cursore sulla riga successiva a questa.
+>> Premi C-l C-l per portare questa riga in cima allo schermo.
+>> Usa C-h m per leggere come la modalità Testo differisca dalla
+ Fundamental.
+>> Premi C-x 1 per eliminare la finestra contenente la documentazione.
+
+Le modalità primarie sono chiamate così perché ci sono anche delle
+“modalità secondarie” (minor modes). Tali modalità non sono
+alternative a quelle primarie, introducono solo piccole varianti.
+Ogni modalità secondaria può essere attivata o disattivata,
+indipendentemente da tutte le altre modalità secondarie e
+indipendentemente dalla modalità primaria attiva in quel momento. Si
+può quindi usare nessuna modalità secondaria, una soltanto oppure
+qualsiasi combinazione di modalità secondarie.
+
+Una modalità secondaria molto utile, specialmente per scrivere del
+testo, è la modalità “Auto Fill” (riempimento automatico). Quando
+questa modalità è attiva, Emacs interrompe la riga tra due parole ogni
+volta che, nel corso dell'inserimento, essa diventa troppo lunga.
+
+Si può attivare il modo “Auto Fill” con M-x auto-fill-mode<Invio>.
+Quando la modalità suddetta è attiva può essere disattivata eseguendo
+di nuovo M-x auto-fill-mode<Invio>. Se la modalità è disattivata
+questo comando la attiva, viceversa se è già attiva. Un comando che
+funziona così si comporta come un interruttore, attiva o disattiva
+qualcosa ogni volta che viene premuto.
+
+>> Usa M-x auto fill mode<Invio> adesso. Inserisci una riga di “asdf ”
ripetuti fino a quando non la vedi dividersi in due righe. Devi
- interporre degli spazi perché la modalità "Auto Fill" spezza le righe
+ interporre degli spazi perché la modalità Auto Fill spezza le righe
solo in corrispondenza di uno spazio.
-Il margine di solito è predisposto a 70 caratteri ma può essere spostato
-con il comando C-x f. Bisogna fornire al comando l'argomento numerico del
-margine che si desidera.
+Il margine di solito è predisposto a 70 caratteri ma può essere
+spostato con il comando C-x f. Bisogna fornire al comando l'argomento
+numerico del margine che si desidera.
>> Usa C-x f con un argomento di 20 (C-u 2 0 C-x f), poi inserisci del
- testo e osserva come Emacs interrompe le righe a 20 caratteri. Infine
- torna di nuovo a un margine di 70 caratteri con C-x f.
+ testo e osserva come Emacs interrompe le righe a 20 caratteri.
+ Infine torna di nuovo a un margine di 70 caratteri con C-x f.
-Se si modifica il testo all'interno di un paragrafo la modalità
-"Auto Fill" non
-lo risistema.
-Per risistemare i margini di un paragrafo
-si usa M-q (META-q)
-quando il cursore si trova in quel paragrafo.
+Se si modifica il testo all'interno di un paragrafo la modalità "Auto
+Fill" non lo risistema. Per risistemare i margini di un paragrafo si
+usa M-q (META-q) quando il cursore si trova in quel paragrafo.
>> Muovi il cursore sul paragrafo precedente e premi M-q.
@@ -821,250 +878,309 @@ quando il cursore si trova in quel paragrafo.
* CERCARE DEL TESTO
-------------------
-Emacs può effettuare la ricerca di stringhe (che sono gruppi di caratteri
-contigui o parole) in posizione sia successiva che precedente nel testo.
-Cercare una stringa è un comando che provoca lo spostamento del cursore:
-lo porta lì dove la stringa compare.
-
-Il comando di ricerca di Emacs è diverso da quello di molti altri editor
-perché è "incrementale". Ciò significa che la ricerca avviene proprio
-mentre si inserisce la stringa da cercare.
-
-I comandi per iniziare la ricerca sono C-s per quella in avanti e C-r per
-quella all'indietro nel testo. ASPETTA! Non provarli ora.
-
-Quando si preme C-s si vede comparire il messaggio "I-search" nell'"area
-di eco", ciò significa che Emacs aspetta che si indichi ciò che deve
-cercare. <Invio> serve a concludere la ricerca.
-
->> Adesso usa C-s per inziare la ricerca. LENTAMENTE, una lettera alla
- volta, inserisci la parola "cursore", facendo una pausa dopo ogni
- carattere scritto per vedere cosa succede al cursore. Hai cercato
- "cursore" una volta sola.
->> Usa C-s un'altra volta per trovare il punto in cui la parola "cursore"
- compare successivamente.
->> Adesso premi <Delete> quattro volte e osserva come si muove il cursore.
+Emacs può effettuare la ricerca di stringhe (una “stringa” è un gruppo
+di caratteri contigui) in posizione sia successiva che precedente nel
+testo. Cercare una stringa è un comando che provoca lo spostamento
+del cursore: lo porta lì dove la stringa compare.
+
+Il comando di ricerca di Emacs è diverso da quello di molti altri
+editor perché è “incrementale”. Ciò significa che la ricerca avviene
+proprio mentre si inserisce la stringa da cercare.
+
+I comandi per iniziare la ricerca sono C-s per quella in avanti e C-r
+per quella all'indietro nel testo. ASPETTA! Non provarli ora.
+
+Quando si preme C-s si vede comparire il messaggio “I-search”
+nell'area di eco: ciò significa che Emacs aspetta che si indichi ciò
+che deve cercare. <Invio> serve a concludere la ricerca.
+
+>> Adesso usa C-s per iniziare la ricerca. LENTAMENTE, una lettera
+ alla volta, inserisci la parola “cursore”, facendo una pausa dopo
+ ogni carattere scritto per vedere cosa succede al cursore. Hai
+ cercato “cursore”, una volta sola.
+>> Usa C-s un'altra volta per trovare la successiva occorrenza della
+ parola “cursore”.
+>> Adesso premi <DEL> quattro volte e osserva come si muove il cursore.
>> Premi <Invio> per concludere la ricerca.
-Hai visto cos'è successo? Durante una ricerca incrementale Emacs prova ad
-andare al punto successivo in cui compare la stringa indicata fino a quel
-momento. Per raggiungere il punto successivo in cui compare di nuovo
-"cursore" basta solo premere C-s ancora una volta. Se la stringa cercata
-non compare in alcun punto successivo Emacs emette un "beep" e informa che
-la ricerca non è andata a buon fine ("failing"). C-g è un modo
-alternativo per concludere la ricerca.
-
-NOTA: su alcuni sistemi il comando C-s bloccherà lo schermo e poi non si
-vedrà alcun altro messaggio da Emacs. Questo significa che una
-caratteristica del sistema operativo chiamata "controllo di flusso" sta
-intercettando il carattere C-s e non gli permette di arrivare fino ad
-Emacs. Per sbloccare lo schermo si può usare C-q. Poi si legga la
-sezione "Spontaneous Entry to Incremental Search" nel manuale di Emacs per
-suggerimenti su come gestire questa caratteristica del proprio sistema.
-
-Se durante una ricerca incrementale si preme il tasto <Delete> ci si
-accorgerà che l'ultimo carattere della stringa da cercare scompare e la
-ricerca torna all'ultimo risultato trovato prima che fosse stato scritto.
-Per esempio, supponiamo di aver battuto una "c" e di aver trovato la prima
-"c" che compare nel testo. Se poi aggiungiamo una "u" il cursore si
-sposta alla prima stringa "cu" che trova. Ora se si preme <Delete> la "u"
-viene cancellata dalla stringa da cercare e il cursore torna sulla "c" che
-era stata trovata in precedenza.
+Hai visto cos'è successo? Durante una ricerca incrementale Emacs
+prova ad andare al punto successivo in cui compare la stringa indicata
+fino a quel momento. Per raggiungere il punto successivo in cui
+compare di nuovo “cursore” basta solo premere C-s ancora una volta.
+Se la stringa cercata non compare in alcun punto successivo Emacs
+emette un “beep” e informa che la ricerca non è andata a buon fine
+(“failing”). C-g è un modo alternativo per concludere la ricerca.
+
+Se durante una ricerca incrementale si preme il tasto <DEL> ci si
+accorgerà che l'ultimo carattere della stringa da cercare scompare e
+la ricerca torna all'ultimo risultato trovato prima che fosse stato
+scritto. Per esempio, supponiamo di aver battuto una “c” e di aver
+trovato la prima “c” che compare nel testo. Se poi aggiungiamo una
+“u” il cursore si sposta alla prima stringa “cu” che trova. Ora se si
+preme <DEL> la “u” viene rimossa dalla stringa da cercare e il cursore
+torna sulla “c” trovata in precedenza.
Se ci si trova nel mezzo di una operazione di ricerca e si usa un
-carattere control o meta (con poche eccezioni - i caratteri che hanno
-significato particolare durante la ricerca sono C-s e C-r) allora la
+carattere control o meta (con poche eccezioni, caratteri che hanno
+significato particolare durante la ricerca come C-s e C-r) allora la
ricerca viene conclusa.
-Il comando C-s inizia la ricerca di ogni presenza della stringa in
-posizione SUCCESSIVA a quella attuale del cursore. Se si vuole cercare
-qualcosa che nel testo precede il cursore allora bisogna usare il comando
-C-r. Tutto quello che abbiamo detto su C-s si applica allo stesso modo
-per C-r, invertendo ovviamente la direzione di ricerca.
+Il comando C-s inizia la ricerca di ogni occorrenza della stringa in
+posizione SUCCESSIVA a quella attuale del cursore. Se si vuole
+cercare qualcosa che nel testo precede il cursore allora bisogna usare
+il comando C-r. Tutto quello che abbiamo detto su C-s si applica allo
+stesso modo per C-r, invertendo ovviamente la direzione di ricerca.
* FINESTRE MULTIPLE
-------------------
Una delle caratteristiche interessanti di Emacs è che si possono
-visualizzare più finestre sullo schermo nello stesso momento.
+visualizzare più finestre sullo schermo nello stesso momento. (Nota
+che Emacs utilizza il termine “frame”, descritto nella sezione
+successiva, per indicare quello che altre applicazioni chiamano
+“window”. Il manuale di Emacs contiene un Glossario dei termini usati
+da Emacs.)
+
+>> Muovi il cursore su questa riga e inserisci C-l C-l.
->> Muovi il cursore su questa riga e inserisci C-u 0 C-l (è CONTROL-L, non
- CONTROL-1).
>> Adesso usa C-x 2 che divide lo schermo in due parti. Entrambe le
finestre visualizzano questo tutorial. Il cursore si trova nella
finestra superiore.
+
>> Premi C-M-v per far scorrere la finestra inferiore. (Se non hai un
tasto META usa <ESC> C-v.)
+
>> Usa C-x o per muovere il cursore nella finestra inferiore.
>> Usa C-v e M-v nella finestra inferiore per farvi scorrere il testo.
Continua a leggere queste indicazioni nella finestra superiore.
->> Premi C-x o di nuovo per muovere il cursore nella finestra superiore.
- Il cursore si trova sul punto che occupava in precedenza.
-Si può continuare a usare C-x o per andare da una finestra all'altra. Ogni
-finestra ha la sua posizione per il cursore ma solo una alla volta lo
-visualizza. Tutti i comandi impartiti funzionano sulla finestra in cui si
-trova il cursore. Noi la chiamiamo la "finestra selezionata".
+>> Premi C-x o di nuovo per muovere il cursore nella finestra
+ superiore. Il cursore si trova sul punto che occupava in
+ precedenza.
+
+Puoi continuare a usare C-x o per andare da una finestra all'altra.
+La “finestra selezionata”, dove avvengono le modifiche, è quella con
+un cursore che lampeggia quando non stai scrivendo. Le altre finestre
+conservano la loro posizione del cursore; se stai usando un terminale
+grafico, quei cursori appaiono come dei rettangoli vuoi e non
+lampeggianti.
Il comando C-M-v è molto utile quando si inserisce del testo in una
-finestra mentre si usa l'altra solo come riferimento. Si può tenere il
-cursore sempre nella finestra in cui si lavora e portare avanti
-sequenzialmente il testo contenuto nell'altra con C-M-v.
+finestra mentre si usa l'altra solo come riferimento. Si può tenere
+il cursore sempre nella finestra in cui si lavora e far scorrere il
+testo contenuto nell'altra con C-M-v.
-C-M-v è un esempio di carattere CONTROL-META. Se c'è un vero e proprio
-tasto META si può ottenere C-M-v tenendo premuti contemporaneamente
-CONTROL e META mentre si batte v. Non importa quale tra CONTROL e META
-viene premuto per primo perché essi agiscono assieme modificando i
-caratteri inseriti dopo.
+C-M-v è un esempio di carattere CONTROL-META. Se c'è un vero e
+proprio tasto META si può ottenere C-M-v tenendo premuti
+contemporaneamente CONTROL e META mentre si batte v. Non importa
+quale tra CONTROL e META viene premuto per primo perché essi agiscono
+assieme modificando i caratteri inseriti dopo.
Se non c'è un tasto META e si usa il tasto ESC l'ordine diventa
-importante: bisogna premere prima <ESC> e poi farlo seguire da CONTROL-v
-perché CONTROL-ESC-v non funziona. Questo perché <ESC> è un carattere a
-sé stante e non uno che ne modifica altri.
+importante: bisogna premere prima <ESC> e poi farlo seguire da
+CONTROL-v perché CONTROL-ESC-v non funziona. Questo perché <ESC> è un
+carattere a sé stante e non uno che ne modifica altri.
>> Usa C-x 1 (nella finestra superiore) per eliminare la finestra
inferiore.
(Se usi C-x 1 nella finestra inferiore allora viene eliminata quella
-superiore. Questo comando conserva una sola finestra, quella in cui si
-trova il cursore.)
+superiore. Pensa a questo comando come “conserva una sola finestra,
+quella attualmente selezionata.”)
+
+Non devi necessariamente visualizzare il medesimo buffer in entrambe
+le finestre. Se usi C-x C-f per visitare un file in una finestra, il
+contenuto dell'altra non cambia. Si può visitare in modo indipendente
+un file diverso in ogni finestra.
-Due finestre aperte contemporaneamente non devono necessariamente
-contenere lo stesso buffer. Quando si usa C-x C-f per visitare un file in
-una finestra il contenuto dell'altra non cambia. Si può "visitare" in
-modo indipendente un file diverso in ogni finestra.
+Ecco un altro modo per usare due finestre per visualizzare cose
+diverse:
-Ecco un altro modo per usare due finestre per visualizzare cose diverse:
+>> Inserisci C-x 4 C-f seguito dal nome di uno dei tuoi file e termina
+ con <Invio>. Osserva come il file viene aperto nella finestra
+ inferiore e il cursore venga posizionato là.
->> Inserisci C-x 4 C-f seguito dal nome di uno dei tuoi file. Premi
- <Invio>. Osserva come il file viene aperto nella finestra inferiore.
- Il cursore si posiziona in quella.
>> Usa C-x o per tornare alla finestra superiore e C-x 1 per eliminare
quella inferiore.
+* FRAME MULTIPLI
+----------------
+
+Emacs può anche creare dei “frame” multipli. Un frame il nome che
+diamo a una collezione di finestre, insieme con il suo menu, le barre
+di scorrimento, l'area di eco, ecc. Su un terminale grafico, Emacs
+chiama “frame” quello che la maggior parte delle altre applicazioni
+chiamano “finestra”, ed è possibile mostrarne più di uno
+contemporaneamente. Su un terminale testuale, è possibile mostrare un
+solo frame alla volta.
+
+>> Usa M-x make-frame<Invio>.
+ Un nuovo frame dovrebbe apparire sullo schermo.
+
+In questo nuovo frame puoi svolgere qualsiasi cosa come nel frame
+originale. Non c'è nulla di speciale nel primo frame.
+
+>> Usa M-x delete-frame<Invio>.
+ Questo rimuove il frame selezionato.
+
+Puoi anche eliminare un frame usando i metodi offerti dal sistema
+grafico (normalmente cliccando sul pulsante “X” in uno degli angoli
+superiori del frame). Se rimuovi in questo modo l'ultimo frame, la
+sessione Emacs viene terminata.
+
+
* LIVELLI DI EDITING RICORSIVO
------------------------------
-A volte ci si può trovare in quello che si chiama un "livello di editing
-ricorsivo", ciò è indicato dalla presenza di parentesi quadre nella "mode
-line", attorno alle parentesi della "modalità primaria" attualmente in
-uso. Per esempio si potrebbe leggere [(Fundamental)] invece che
-(Fundamental).
+A volte ci si può trovare in quello che si chiama un “livello di
+editing ricorsivo”: ciò è indicato dalla presenza di parentesi quadre
+nella mode line, attorno alle parentesi che delimitano il nome della
+modalità primaria. Per esempio si potrebbe leggere [(Fundamental)]
+invece che (Fundamental).
-Per uscire dal livello di editing ricorsivo si usa <ESC> <ESC> <ESC>. È
-un comando di uscita di uso piuttosto generale, si può anche usare per
-eliminare finestre in più e per uscire dal "minibuffer".
+Per uscire dal livello di editing ricorsivo si usa <ESC> <ESC> <ESC>.
+È un comando di uscita di uso piuttosto generale, si può anche usare
+per eliminare finestre in più e per uscire dal minibuffer.
>> Usa M-x per entrare nel "minibuffer": poi usa <ESC> <ESC> <ESC> per
uscirne.
-Non è possibile usare C-g per uscire da un livello di editing ricorsivo,
-ciò avviene perché C-g è usato per annullare i comandi all'INTERNO del
+Non è possibile usare C-g per uscire da un livello di editing
+ricorsivo, perché C-g è usato per annullare i comandi all'INTERNO del
livello di editing ricorsivo.
* COME IMPARARE ALTRO
---------------------
-In questo tutorial abbiamo provato a fornire le informazioni sufficienti
-per iniziare ad usare Emacs. Ci sono così tante opzioni in Emacs che
-sarebbe impossibile spiegarle tutte qui, ma è possibile imparare tutte le
-altre caratteristiche di Emacs utili per il proprio lavoro. Ci sono
-comandi per leggere la documentazione dei comandi disponibili in Emacs.
-Questi comandi di aiuto iniziano tutti con il carattere C-h, che infatti è
-chiamato "carattere di aiuto (help)".
+In questo tutorial abbiamo provato a fornire le informazioni
+sufficienti per iniziare ad usare Emacs. Ci sono così tante opzioni
+in Emacs che sarebbe impossibile spiegarle tutte qui. Tuttavia
+potresti voler saperne di più su Emacs, che offre molte altre utili
+funzionalità. Ci sono comandi per leggere la documentazione dei
+comandi disponibili in Emacs. Questi comandi di “aiuto” iniziano
+tutti con il carattere C-h, che infatti è chiamato “carattere di aiuto
+(help)”.
+
+Per raggiungere le voci di Aiuto si usa il carattere C-h e poi un
+altro carattere che specifica la richiesta. Quando davvero non si sa
+cosa fare si può provare con C-h ? ed Emacs indicherà tutti i tipi di
+aiuto che può fornire. Se si è attivato l'aiuto con C-h e si decide
+che non serve più si può annullare la richiesta con C-g.
-Per raggiungere le voci di Aiuto si usa il carattere C-h e poi un altro
-carattere che specifica la richiesta. Quando davvero non si sa cosa fare
-si può provare con C-h ? ed Emacs indicherà tutti i tipi di aiuto che può
-fornire. Se si è attivato l'aiuto con C-h e si decide che non serve più
-si può annullare la richiesta con C-g.
+(Se C-h non mostra un messaggio relativo all'aiuto nella parte bassa
+dello schermo, prova ad usare il tasto F1 oppure con M-x help<Invio>.)
-Alcuni sistemi fanno un diverso uso del carattere C-h perché questo viene
-indebitamente modificato dall'amministratore di sistema. A parte
-rivolgerti allo stesso perché risolva il problema puoi provare ad accedere
-alla funzione aiuto di Emacs con il tasto F1 oppure con M-x help<Invio>.
+La forma base di aiuto è data da C-h c. Si inserisce C-h, il
+carattere c e poi un carattere o una sequenza di caratteri; Emacs
+mostrerà una breve descrizione del comando stesso.
-La forma base di aiuto è data da C-h c. Si inserisce C-h, il carattere c
-e poi un carattere o una sequenza di caratteri; Emacs mostrerà una breve
-descrizione del comando stesso.
+>> Prova C-h c C-p.
->> Prova C-h c C-p. Dovresti leggere un messaggio del tipo
+Dovresti leggere un messaggio del tipo (purtroppo in inglese!):
- C-p runs the command previous-line (purtroppo in inglese!)
+ C-p runs the command previous-line
-Questo messaggio indica il "nome della funzione". I nomi di funzione sono
-usati principalmente per personalizzare ed estendere Emacs e sono scelti
-anche in modo da indicare che cosa il comando fa. Servono quindi anche da
-breve descrizione, sufficiente per ricordarsi di comandi già imparati.
+Questo messaggio indica il “nome della funzione”. Dal momento che i
+nomi di funzione sono scelti per indicare cosa fa il comando, servono
+quindi anche come breve descrizione, sufficiente per ricordarsi di
+comandi già imparati.
-I comandi con più caratteri come ad esempio C-x C-s e (se non c'è il tasto
-META o EDIT o ALT) <ESC>v sono permessi allo stesso modo dopo una
-richiesta di aiuto fatta con C-h c.
+I comandi con più caratteri come ad esempio C-x C-s e (se non c'è il
+tasto META o EDIT o ALT) <ESC>v sono permessi allo stesso modo dopo
+una richiesta di aiuto fatta con C-h c.
-Per avere ulteriori informazioni su un comando si usa C-h k invece che C-h
-c.
+Per avere ulteriori informazioni su un comando si usa C-h k invece che
+C-h c.
>> Prova C-h k C-p.
-Questo mostrerà la documentazione della funzione, così come il suo nome,
-all'interno di una finestra di Emacs. Quando hai finito di leggere usa
-C-x 1 per eliminare la finestra con il testo di aiuto. Non sei obbligato
-a farlo subito. Puoi anche lavorare sul tuo testo mentre fai riferimento
-al testo di aiuto e poi usare un C-x 1.
+Questo mostrerà la documentazione della funzione, così come il suo
+nome, all'interno di una finestra di Emacs. Quando hai finito di
+leggere usa C-x 1 per eliminare la finestra con il testo di aiuto.
+Non sei obbligato a farlo subito. Puoi anche lavorare sul tuo testo
+mentre fai riferimento al testo di aiuto e poi usare un C-x 1.
Ecco altre utili opzioni di C-h:
- C-h f Descrive una funzione. Inserisci il nome della funzione.
+ C-h f Descrive una funzione. Inserisci il nome della funzione.
->> Prova con C-h f previous-line<Invio>. Avrai tutte le informazioni che
- Emacs possiede sulla funzione che implementa il comando C-p.
+>> Prova con C-h f previous-line<Invio>.
+ Questo mostrerà tutte le informazioni che Emacs possiede sulla
+ funzione che implementa il comando C-p.
-Un comando simile è C-h v che mostra la documentazione di variabili i cui
-valori sono utilizzati per personalizzare il comportamento di Emacs. Devi
-inserire il nome della variabile quando Emacs lo richiede.
+Un comando simile è C-h v che mostra la documentazione delle
+variabili, comprese quelle di cui puoi modificare il valore per
+personalizzare il comportamento di Emacs. Devi inserire il nome della
+variabile quando Emacs lo richiede.
- C-h a "Apropos" comando. Inserisci una parola ed Emacs ti
- elencherà tutti i comandi il cui nome contiene quella
- parola. Questi comandi possono tutti essere eseguiti con
- META-x. Per alcuni comandi ti sarà mostrata anche una
- sequenza di uno o due caratteri che serve a far partire il
- comando senza doverlo inserire per esteso.
+ C-h a "Apropos" comando. Inserisci una parola ed Emacs ti
+ elencherà tutti i comandi il cui nome contiene quella
+ parola. Questi comandi possono tutti essere eseguiti
+ con META-x. Per alcuni comandi ti sarà mostrata anche
+ una sequenza di uno o due caratteri che serve a far
+ partire il comando senza doverlo inserire per esteso.
>> Prova C-h a file<Invio>
Questo mostrerà in un'altra finestra una lista di tutti i comandi che
-contengono la parola "file" nel nome. Nella lista si vedranno
-comandi-carattere, come C-x C-f, assieme ai corrispondenti nomi per esteso
-come "find-file".
+contengono la parola “file” nel nome. Nella lista si vedranno
+comandi-carattere, come C-x C-f, assieme ai corrispondenti nomi per
+esteso come find-file.
+
+>> Usa C-M-v per far scorrere il testo nella finestra di aiuto.
+ Ripeti per alcune volte.
->> Usa C-M-v per far scorrere il testo nella finestra di aiuto. Ripeti
- per alcune volte.
>> Usa C-x 1 per eliminare la finestra di aiuto.
- C-h i Leggi la documentazione. Questo comando apre un buffer
- speciale chiamato "*info*" in cui puoi leggere i manuali
- on-line dei pacchetti installati sul tuo sistema. Batti m
- emacs <Invio> per leggere il manuale di Emacs. Se non hai
- mai usato il sistema Info prima d'ora premi ? ed Emacs ti
- guiderà nell'uso delle opzioni del modo Info. Una volta
- terminata questa esercitazione il manuale di Emacs contenuto
- nel sistema Info dovrebbe diventare la tua principale fonte
- di documentazione.
+ C-h i Leggi la documentazione. Questo comando apre un
+ buffer speciale chiamato “*info*” in cui puoi leggere
+ i manuali on-line dei pacchetti installati sul tuo
+ sistema. Batti m emacs<Invio> per leggere il manuale
+ di Emacs. Se non hai mai usato il sistema Info prima
+ d'ora premi ? ed Emacs ti guiderà nell'uso delle
+ opzioni del modo Info. Una volta terminata questa
+ esercitazione il manuale di Emacs contenuto nel
+ sistema Info dovrebbe diventare la tua principale
+ fonte di documentazione.
+
+
+* ALTRE FUNZIONALITÀ
+--------------------
+
+Puoi imparare di più su Emacs leggendo il suo manuale, sia nella forma
+stampata piuttosto che da dentro Emacs stesso (usa il menu Help oppure
+C-h r). Due funzionalità che possono farti comodo sono il
+completamento automatico, che consente di ridurre il numero di
+caratteri da digitare, e dired, che semplifica la gestione dei file.
+
+Il completamento è un modo per evitare la pressione di tasti quando
+non sia necessario. Ad esempio, quando vuoi passare al buffer
+*Messages*, puoi inserire C-x b *M<Tab> e Emacs cercherà di completare
+il nome del buffer usando la parte che hai già inserito. Questa
+funzione può essere usata anche sui nomi dei comandi oppure su quelli
+dei file, ed è descritta nel manuale Emacs nel nodo chiamato
+“Completion”.
+
+Dired ti consente di elencare i file in una directory (e opzionalmente
+nelle directory sottostanti), muoverti tra quei file, visitarli,
+rinominarli, cancellarli e in generale eseguire qualche operazione su
+quei file. Dired è descritta nel manuale Emacs nel nodo chiamato
+“Dired”.
+
+Il manuale descrive molte altre funzionalità di Emacs.
* CONCLUSIONI
-------------
-Ricorda che per chiudere una sessione di Emacs si usa C-x C-c. Per
-tornare temporaneamente alla shell, così da poter rientrare in Emacs
-successivamente, si usa C-z.
+Per chiudere una sessione di Emacs si usa C-x C-c.
-Questo documento è stato creato per essere utile a tutti i nuovi utenti,
-se qualcosa per te è stato poco chiaro non dare la colpa a te stesso -
-lamentati!
+Questo documento è stato creato per essere utile a tutti i nuovi
+utenti, se qualcosa per te è stato poco chiaro non dare la colpa a te
+stesso: lamentati!
* COPIA
@@ -1072,8 +1188,8 @@ lamentati!
La versione inglese di questo testo (disponibile nel file "TUTORIAL")
deriva da una lunga serie di tutorial di Emacs che iniziò con quello
-scritto da Stuart Cracraft per il primo Emacs. La versione italiana è a
-cura di Alfredo Finelli (alfredofnl@tiscali.it).
+scritto da Stuart Cracraft per il primo Emacs. La versione italiana è
+a cura di Alfredo Finelli (alfredofnl@tiscali.it).
Questo documento, come GNU Emacs, è coperto da copyright e viene
distribuito con il permesso di farne copie a determinate condizioni:
@@ -1082,22 +1198,23 @@ distribuito con il permesso di farne copie a determinate condizioni:
secondo i quali è possibile la copia e la distribuzione di questo
documento è quella originale in lingua inglese contenuta nel file
"TUTORIAL". Qui di seguito se ne riporta una traduzione a scopo
- indicativo, restando comunque inteso il fatto che è quella originale a
- fare fede.
+ indicativo, restando comunque inteso il fatto che è quella
+ originale a fare fede.
Copyright (C) 2003-2015 Free Software Foundation, Inc.
- È permesso a chiunque copiare e distribuire attraverso ogni mezzo copie
- fedeli di questo documento così come viene ricevuto, a condizione che
- le informazioni sul copyright e sui permessi garantiti siano conservate
- intatte e che il distributore riconosca a colui che riceve la copia il
- diritto ad un'ulteriore distribuzione, che deve avvenire così come
- definito in questa clausola.
-
- È permesso distribuire versioni modificate di questo documento, o di
- ogni sua parte, alle condizioni indicate precedentemente, purché esse
- portino chiaramente indicato il nome di colui che le ha modificate per
- ultimo.
+ È permesso a chiunque copiare e distribuire attraverso ogni mezzo
+ copie fedeli di questo documento così come viene ricevuto, a
+ condizione che le informazioni sul copyright e sui permessi
+ garantiti siano conservate intatte e che il distributore riconosca
+ a colui che riceve la copia il diritto ad un'ulteriore
+ distribuzione, che deve avvenire così come definito in questa
+ clausola.
+
+ È permesso distribuire versioni modificate di questo documento, o
+ di ogni sua parte, alle condizioni indicate precedentemente, purché
+ esse portino chiaramente indicato il nome di colui che le ha
+ modificate per ultimo.
Le condizioni per copiare Emacs sono più complesse ma definite con lo
stesso spirito. Per favore, leggete il file COPYING e poi distribuite
diff --git a/etc/tutorials/TUTORIAL.pt_BR b/etc/tutorials/TUTORIAL.pt_BR
index 619f4fc13e1..5fd05170f7a 100644
--- a/etc/tutorials/TUTORIAL.pt_BR
+++ b/etc/tutorials/TUTORIAL.pt_BR
@@ -847,7 +847,7 @@ saída do Emacs. Isso indica que um "recurso" do sistema operacional
chamado "controle de fluxo" (flow control) esta interceptando o C-s e
não deixando que passe pelo Emacs. Para destravar a tela, digite
C-q. Então, leia na seção "Spontaneous Entry to Incremental Search" no
-manual do Emacs para uma dica de como lhe dar com esse "recurso".
+manual do Emacs para uma dica de como lidar com esse "recurso".
Se você estiver no meio de uma pesquisa incremental e digitar <Delete>,
você perceberá que o último caractere da pesquisa será apagado e a