diff options
Diffstat (limited to 'doc/emacs')
30 files changed, 748 insertions, 304 deletions
diff --git a/doc/emacs/ChangeLog.1 b/doc/emacs/ChangeLog.1 index 99faff1623c..b9f7e49fc91 100644 --- a/doc/emacs/ChangeLog.1 +++ b/doc/emacs/ChangeLog.1 @@ -4398,7 +4398,7 @@ mail-header-separator. (Mail Headers): Put info about initialization and changing in one place at the start. Update FCC section for mbox Rmail. Clarify From - section, mention mail-setup-with-from. Clarify Reply-to section. + section, mention mail-setup-with-from. Clarify Reply-To section. Add Mail-followup-to and mail-mailing-lists. Clarify References section. (Mail Aliases): Update example, make less contentious. diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in index fa451b1f927..01c6700197c 100644 --- a/doc/emacs/Makefile.in +++ b/doc/emacs/Makefile.in @@ -206,8 +206,8 @@ doc-emacsver: ## Temp files. mostlyclean: - rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \ - *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs + rm -f ./*.aux ./*.log ./*.toc ./*.cp ./*.cps ./*.fn ./*.fns ./*.ky ./*.kys \ + ./*.op ./*.ops ./*.pg ./*.pgs ./*.tp ./*.tps ./*.vr ./*.vrs ## Products not in the release tarfiles. clean: mostlyclean diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi index cd7c1ff895e..37e2f9e5818 100644 --- a/doc/emacs/arevert-xtra.texi +++ b/doc/emacs/arevert-xtra.texi @@ -4,8 +4,9 @@ @c @c This file is included either in emacs-xtra.texi (when producing the @c printed version) or in the main Emacs manual (for the on-line version). -@node Autorevert -@section Auto Reverting Non-File Buffers + +@node Non-File Buffers +@subsection Auto Reverting Non-File Buffers Global Auto Revert Mode normally only reverts file buffers. There are two ways to auto-revert certain non-file buffers: by enabling Auto @@ -34,6 +35,14 @@ the Buffer Menu.) In this case, Auto Revert does not print any messages while reverting, even when @code{auto-revert-verbose} is non-@code{nil}. +@vindex buffer-auto-revert-by-notification +Some non-file buffers can be updated reliably by file notification on +their default directory; Dired buffers is an example. The major mode +can indicate this by setting @code{buffer-auto-revert-by-notification} +to a non-@code{nil} value in that buffer, allowing Auto Revert to +avoid periodic polling. Such notification does not include changes to +files in that directory, only to the directory itself. + The details depend on the particular types of buffers and are explained in the corresponding sections. @@ -43,7 +52,7 @@ explained in the corresponding sections. @end menu @node Auto Reverting the Buffer Menu -@subsection Auto Reverting the Buffer Menu +@subsubsection Auto Reverting the Buffer Menu If auto-reverting of non-file buffers is enabled, the Buffer Menu @iftex @@ -65,7 +74,7 @@ adding marks sets the buffer's modified flag prevents Auto Revert from automatically erasing the marks. @node Auto Reverting Dired -@subsection Auto Reverting Dired buffers +@subsubsection Auto Reverting Dired buffers Dired buffers only auto-revert when the file list of the buffer's main directory changes (e.g., when a new file is added or deleted). They diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi index 27fcb7369a9..14a0a01ca8b 100644 --- a/doc/emacs/buffers.texi +++ b/doc/emacs/buffers.texi @@ -568,10 +568,10 @@ mode in this buffer, as long as it is not marked modified. Global Auto Revert mode applies to the @file{*Buffer List*} buffer only if @code{global-auto-revert-non-file-buffers} is non-@code{nil}. @iftex -@inforef{Autorevert,, emacs-xtra}, for details. +@inforef{Auto Reverting the Buffer Menu,, emacs-xtra}, for details. @end iftex @ifnottex -@xref{Autorevert, global-auto-revert-non-file-buffers}, for details. +@xref{Auto Reverting the Buffer Menu, global-auto-revert-non-file-buffers}, for details. @end ifnottex @node Indirect Buffers diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 246a04c2824..6e16588861e 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -204,6 +204,9 @@ compilation buffer produce automatic source display. @item g Re-run the last command whose output is shown in the @file{*compilation*} buffer. +@item M-x next-error-select-buffer +Select a buffer to be used by next invocation of @code{next-error} and +@code{previous-error}. @end table @kindex M-g M-n @@ -216,16 +219,18 @@ Re-run the last command whose output is shown in the This command can be invoked from any buffer, not just a Compilation mode buffer. The first time you invoke it after a compilation, it visits the locus of the first error message. Each subsequent -@w{@kbd{C-x `}} visits the next error, in a similar fashion. If you +@w{@kbd{M-g M-n}} visits the next error, in a similar fashion. If you visit a specific error with @key{RET} or a mouse click in the -@file{*compilation*} buffer, subsequent @w{@kbd{C-x `}} commands -advance from there. When @w{@kbd{C-x `}} finds no more error messages -to visit, it signals an error. @w{@kbd{C-u C-x `}} starts again from +@file{*compilation*} buffer, subsequent @w{@kbd{M-g M-n}} commands +advance from there. When @w{@kbd{M-g M-n}} finds no more error messages +to visit, it signals an error. @w{@kbd{C-u M-g M-n}} starts again from the beginning of the compilation buffer, and visits the first locus. @kbd{M-g M-p} or @kbd{M-g p} (@code{previous-error}) iterates through errors in the opposite direction. +@vindex next-error-find-buffer-function +@findex next-error-select-buffer The @code{next-error} and @code{previous-error} commands don't just act on the errors or matches listed in @file{*compilation*} and @file{*grep*} buffers; they also know how to iterate through error or @@ -233,10 +238,15 @@ match lists produced by other commands, such as @kbd{M-x occur} (@pxref{Other Repeating Search}). If the current buffer contains error messages or matches, these commands will iterate through them; otherwise, Emacs looks for a buffer containing error messages or -matches amongst the windows of the selected frame, then for any buffer -that @code{next-error} or @code{previous-error} previously visited, -and finally all other buffers. Any buffer these commands iterate -through that is not currently displayed in a window will be displayed. +matches amongst the windows of the selected frame (if the variable +@code{next-error-find-buffer-function} is customized to the value +@code{next-error-buffer-on-selected-frame}), then for a buffer used +previously by @code{next-error} or @code{previous-error}, and finally +all other buffers. Any buffer these commands iterate through that is +not currently displayed in a window will be displayed. You can use +the @command{next-error-select-buffer} command to switch to +a different buffer to be used by the subsequent invocation of +@code{next-error}. @vindex compilation-skip-threshold By default, the @code{next-error} and @code{previous-error} commands @@ -408,8 +418,8 @@ grep -nH -e foo *.el | grep bar | grep toto @end example The output from @command{grep} goes in the @file{*grep*} buffer. You -can find the corresponding lines in the original files using @w{@kbd{C-x -`}}, @key{RET}, and so forth, just like compilation errors. +can find the corresponding lines in the original files using @w{@kbd{M-g +M-n}}, @key{RET}, and so forth, just like compilation errors. @xref{Compilation Mode}, for detailed description of commands and key bindings available in the @file{*grep*} buffer. @@ -463,6 +473,18 @@ the variable @code{grep-files-aliases}. @kbd{M-x rgrep}. The default value includes the data directories used by various version control systems. +@vindex grep-find-abbreviate +@findex grep-find-toggle-abbreviation + By default, the shell commands constructed for @code{lgrep}, +@code{rgrep}, and @code{zgrep} are abbreviated for display by +concealing the part that contains a long list of files and directories +to ignore. You can reveal the concealed part by clicking on the +button with ellipsis, which represents them. You can also +interactively toggle viewing the concealed part by typing @kbd{M-x +grep-find-toggle-abbreviation}. To disable this abbreviation of the +shell commands, customize the option @code{grep-find-abbreviate} to a +@code{nil} value. + @node Flymake @section Finding Syntax Errors On The Fly @cindex checking syntax diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index 9b60c2c3e33..34a5ff5f2c1 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -385,6 +385,21 @@ verify that their module conforms to the module API requirements. The option makes Emacs abort if a module-related assertion triggers. @xref{Writing Dynamic Modules,, Writing Dynamically-Loaded Modules, elisp, The GNU Emacs Lisp Reference Manual}. + +@item --dump-file=@var{file} +@opindex --dump-file +@cindex specify dump file +Load the dumped Emacs state from the named @var{file}. By default, an +installed Emacs will look for its dump state in a file named +@file{@var{emacs}.pdmp} in the directory where the Emacs installation +puts the architecture-dependent files; the variable +@code{exec-directory} holds the name of that directory. @var{emacs} +is the name of the Emacs executable file, normally just @file{emacs}. +(When you invoke Emacs from the @file{src} directory where it was +built without installing it, it will look for the dump file in the +directory of the executable.) If you rename or move the dump file to +a different place, you can use this option to tell Emacs where to find +that file. @end table @node Command Example @@ -530,12 +545,17 @@ This variable defaults to @file{~/.bash_history} if you use Bash, to otherwise. @item HOME @vindex HOME@r{, environment variable} -The location of your files in the directory tree; used for -expansion of file names starting with a tilde (@file{~}). On MS-DOS, -it defaults to the directory from which Emacs was started, with -@samp{/bin} removed from the end if it was present. On Windows, the -default value of @env{HOME} is the @file{Application Data} -subdirectory of the user profile directory (normally, this is +The location of your files in the directory tree; used for expansion +of file names starting with a tilde (@file{~}). If set, it should be +set to an absolute file name. (If set to a relative file name, Emacs +interprets it relative to the directory where Emacs was started, but +we don't recommend to use this feature.) If unset, @env{HOME} +normally defaults to the home directory of the user given by +@env{LOGNAME}, @env{USER} or your user ID, or to @file{/} if all else +fails. On MS-DOS, it defaults to the directory from which Emacs was +started, with @samp{/bin} removed from the end if it was present. On +Windows, the default value of @env{HOME} is the @file{Application +Data} subdirectory of the user profile directory (normally, this is @file{C:/Documents and Settings/@var{username}/Application Data}, where @var{username} is your user name), though for backwards compatibility @file{C:/} will be used instead if a @file{.emacs} file diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index 3fd655048b4..982cea1f213 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi @@ -380,7 +380,7 @@ lines of code to your initialization file, to set the variable file. For example: @example -(setq custom-file "~/.emacs-custom.el") +(setq custom-file "~/.config/emacs-custom.el") (load custom-file) @end example @@ -390,14 +390,14 @@ Emacs versions, like this: @example (cond ((< emacs-major-version 22) ;; @r{Emacs 21 customization.} - (setq custom-file "~/.custom-21.el")) + (setq custom-file "~/.config/custom-21.el")) ((and (= emacs-major-version 22) (< emacs-minor-version 3)) ;; @r{Emacs 22 customization, before version 22.3.} - (setq custom-file "~/.custom-22.el")) + (setq custom-file "~/.config/custom-22.el")) (t ;; @r{Emacs version 22.3 or later.} - (setq custom-file "~/.emacs-custom.el"))) + (setq custom-file "~/.config/emacs-custom.el"))) (load custom-file) @end example @@ -765,6 +765,8 @@ expects (@pxref{Examining}). * Locals:: Per-buffer values of variables. * File Variables:: How files can specify variable values. * Directory Variables:: How variable values can be specified by directory. +* Connection Variables:: Variables which are valid for buffers with a + remote default directory. @end menu @node Examining @@ -799,6 +801,7 @@ Its value is 70 Automatically becomes buffer-local when set. This variable is safe as a file local variable if its value satisfies the predicate ‘integerp’. + Probably introduced at or before Emacs version 18. Documentation: Column beyond which automatic line-wrapping should happen. @@ -1443,6 +1446,52 @@ variables are handled in the same way as unsafe file-local variables do not visit a file directly but perform work within a directory, such as Dired buffers (@pxref{Dired}). +@node Connection Variables +@subsection Per-Connection Local Variables +@cindex local variables, for all remote connections +@cindex connection-local variables +@cindex per-connection local variables + + Most of the variables reflect the situation on the local machine. +Often, they must use a different value when you operate in buffers +with a remote default directory. Think about the shell to be applied +when calling @code{shell} -- it might be @file{/bin/bash} on your +local machine, and @file{/bin/ksh} on a remote machine. + + This can be accomplished with @dfn{connection-local variables}. +Directory and file local variables override connection-local +variables. Unsafe connection-local variables are handled in the same +way as unsafe file-local variables (@pxref{Safe File Variables}). + +@findex connection-local-set-profile-variables +@findex connection-local-set-profiles + Connection-local variables are declared as a group of +variables/value pairs in a @dfn{profile}, using the +@code{connection-local-set-profile-variables} function. The function +@code{connection-local-set-profiles} activates profiles for a given +criteria, identifying a remote machine: + +@example +(connection-local-set-profile-variables 'remote-ksh + '((shell-file-name . "/bin/ksh") + (shell-command-switch . "-c"))) + +(connection-local-set-profile-variables 'remote-bash + '((shell-file-name . "/bin/bash") + (shell-command-switch . "-c"))) + +(connection-local-set-profiles + '(:application tramp :machine "remotemachine") 'remote-ksh) +@end example + + This code declares two different profiles, @code{remote-ksh} and +@code{remote-bash}. The profile @code{remote-ksh} is applied to all +buffers which have a remote default directory matching the regexp +@code{"remotemachine} as host name. Such a criteria can also +discriminate for the properties @code{:protocol} (this is the Tramp +method) or @code{:user} (a remote user name). The @code{nil} criteria +matches all buffers with a remote default directory. + @node Key Bindings @section Customizing Key Bindings @cindex key bindings @@ -2166,16 +2215,28 @@ as a function from Lisp programs. @cindex init file @cindex .emacs file @cindex ~/.emacs file +@cindex ~/.config/emacs file @cindex Emacs initialization file @cindex startup (init file) When Emacs is started, it normally tries to load a Lisp program from an @dfn{initialization file}, or @dfn{init file} for short. This file, if it exists, specifies how to initialize Emacs for you. Emacs -looks for your init file using the filenames @file{~/.emacs}, -@file{~/.emacs.el}, or @file{~/.emacs.d/init.el}; you can choose to -use any one of these three names (@pxref{Find Init}). Here, @file{~/} -stands for your home directory. +looks for your init file using the filenames +@file{~/.config/emacs},. @file{~/.emacs}, @file{~/.config/emacs.el}, +@file{~/.emacs.el}, @file{~/.config/emacs.d/init.el} or +@file{~/.emacs.d/init.el}; you can choose to use any one of these +names (@pxref{Find Init}). Here, @file{~/} stands for your home +directory. + + While the @file{~/.emacs} and @file{~/.emacs.d/init.el} locations +are backward-compatible to older Emacs versions, and the rest of this +chapter will use them to name your initialization file, it is better practice +to group all of your dotfiles under @file{.config} so that if you have +to troubleshoot a problem that might be due to a bad init file, or +archive a collection of them, it can be done by renaming or +copying that directory. Note that the @file{.config} versions +don't have a leading dot on the basename part of the file. You can use the command line switch @samp{-q} to prevent loading your init file, and @samp{-u} (or @samp{--user}) to specify a @@ -2233,6 +2294,7 @@ Manual}. * Terminal Init:: Each terminal type can have an init file. * Find Init:: How Emacs finds the init file. * Init Non-ASCII:: Using non-@acronym{ASCII} characters in an init file. +* Early Init File:: Another init file, which is read early on. @end menu @node Init Syntax @@ -2580,15 +2642,16 @@ library. @xref{Hooks}. @node Find Init @subsection How Emacs Finds Your Init File - Normally Emacs uses the environment variable @env{HOME} -(@pxref{General Variables, HOME}) to find @file{.emacs}; that's what -@samp{~} means in a file name. If @file{.emacs} is not found inside -@file{~/} (nor @file{.emacs.el}), Emacs looks for -@file{~/.emacs.d/init.el} (which, like @file{~/.emacs.el}, can be -byte-compiled). + Normally Emacs uses your home directory to find +@file{~/.config/emacs} or @file{~/.emacs}; that's what @samp{~} means +in a file name. @xref{General Variables, HOME}. If none of +@file{~/.config/emacs}, @file{~/.emacs}, @file{~/.config/emacs.el} nor +@file{~/.emacs.el} is found, Emacs looks for +@file{~/.config/emacs.d/init.el} or @file{~/.emacs.d/init.el} (these, +like @file{~/.emacs.el}, can be byte-compiled). However, if you run Emacs from a shell started by @code{su}, Emacs -tries to find your own @file{.emacs}, not that of the user you are +tries to find your own initialization files, not that of the user you are currently pretending to be. The idea is that you should get your own editor customizations even if you are running as the super user. @@ -2634,6 +2697,36 @@ instance: @noindent Type @kbd{C-q}, followed by the key you want to bind, to insert @var{char}. +@node Early Init File +@subsection The Early Init File +@cindex early init file + + Most customizations for Emacs should be put in the normal init file, +@file{.config/emacs} or @file{~/.config/emacs.d/init.el}. However, it is sometimes desirable +to have customizations that take effect during Emacs startup earlier than the +normal init file is processed. Such customizations can be put in the early +init file, @file{~/.config/emacs.d/early-init.el} or @file{~/.emacs.d/early-init.el}. This file is loaded before the +package system and GUI is initialized, so in it you can customize variables +that affect frame appearance as well as the package initialization process, +such as @code{package-enable-at-startup}, @code{package-load-list}, and +@code{package-user-dir}. Note that variables like @code{package-archives} +which only affect the installation of new packages, and not the process of +making already-installed packages available, may be customized in the regular +init file. @xref{Package Installation}. + + We do not recommend that you move into @file{early-init.el} +customizations that can be left in the normal init files. That is +because the early init file is read before the GUI is initialized, so +customizations related to GUI features will not work reliably in +@file{early-init.el}. By contrast, the normal init files are read +after the GUI is initialized. If you must have customizations in the +early init file that rely on GUI features, make them run off hooks +provided by the Emacs startup, such as @code{window-setup-hook} or +@code{tty-setup-hook}. @xref{Hooks}. + + For more information on the early init file, @pxref{Init File,,, +elisp, The Emacs Lisp Reference Manual}. + @node Authentication @section Keeping Persistent Authentication Information diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index cf9665ac5b4..9f454ea2ad6 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi @@ -663,6 +663,14 @@ Copy the specified files (@code{dired-do-copy}). The argument @var{new} is the directory to copy into, or (if copying a single file) the new name. This is like the shell command @code{cp}. +@vindex dired-create-destination-dirs +The option @code{dired-create-destination-dirs} controls whether Dired +should create non-existent directories in the destination while +copying/renaming files. The default value @code{nil} means Dired +never creates such missing directories; the value @code{always}, +means Dired automatically creates them; the value @code{ask} +means Dired asks you for confirmation before creating them. + @vindex dired-copy-preserve-time If @code{dired-copy-preserve-time} is non-@code{nil}, then copying with this command preserves the modification time of the old file in @@ -694,6 +702,9 @@ single file, the argument @var{new} is the new name of the file. If you rename several files, the argument @var{new} is the directory into which to move the files (this is like the shell command @command{mv}). +The option @code{dired-create-destination-dirs} controls whether Dired +should create non-existent directories in @var{new}. + Dired automatically changes the visited file name of buffers associated with renamed files so that they refer to the new names. @@ -1463,6 +1474,11 @@ rotation is lossless, and uses an external utility called directory's name, and creates that directory. It signals an error if the directory already exists. +@findex dired-create-empty-file + The command (@code{dired-create-empty-file}) reads a +file name, and creates that file. It signals an error if +the file already exists. + @cindex searching multiple files via Dired @kindex M-s a C-s @r{(Dired)} @kindex M-s a M-C-s @r{(Dired)} diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 9cf6baa7e91..4985fabd541 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -974,8 +974,10 @@ the buffer is loaded. For example, to highlight all occurrences of the word ``whim'' using the default face (a yellow background), type @kbd{M-s h r whim @key{RET} @key{RET}}. Any face can be used for highlighting, Hi Lock provides several of its own and these are -pre-loaded into a list of default values. While being prompted -for a face use @kbd{M-n} and @kbd{M-p} to cycle through them. +pre-loaded into a list of default values. While being prompted for a +face use @kbd{M-n} and @kbd{M-p} to cycle through them. A prefix +numeric argument limits the highlighting to the corresponding +subexpression. @vindex hi-lock-auto-select-face Setting the option @code{hi-lock-auto-select-face} to a non-@code{nil} @@ -1139,6 +1141,55 @@ right-to-left paragraphs. @node Displaying Boundaries @section Displaying Boundaries +@cindex mode, display-fill-column-indicator +@findex display-fill-column-indicator-mode +@findex global-display-fill-column-indicator-mode + Emacs can add an indicator to display a fill column position. The +fill column indicator is a useful functionality specially in +prog-mode to indicate the position of an specific column. + + You can set the buffer-local variables @code{display-fill-column-indicator} +and @code{display-fill-column-indicator-character} to activate the +indicator and controls how the indicator looks. + +Alternatively you can type @w{@kbd{M-x display-fill-column-indicator-mode}} +or @w{@kbd{M-x global-display-fill-column-indicator-mode}} which enables the +indicator locally and globally respectively and also chooses the +character to use if none is set already. It is possible to use the +first one to activate the indicator in a hook or the second one to +enable it globally. + +There are 2 buffer local variables and 1 face to customize this mode: + +@table @code +@item display-fill-column-indicator-column +@vindex display-fill-column-indicator-column +Specifies the column number where the indicator should be set. It can +take positive numerical values for the column or the special value +@code{t} which means that the variable @code{fill-column} will be +used. + +Any other value disables the indicator. The default value is @code{t}. + +@item display-fill-column-indicator-char +@vindex display-fill-column-indicator-char +Specifies the character used for the indicator. This character can be +any valid char including unicode ones if the actual font supports +them. + +When the mode is enabled through the functions +@code{display-fill-column-indicator-mode} or +@code{global-display-fill-column-indicator-mode}, the initialization +functions check if this variable is @code{non-nil}, otherwise the +initialization tries to set it to U+2502 or @samp{|}. + +@item fill-column-indicator +@vindex fill-column-indicator +Specifies the face used to display the indicator. It inherits its +default values from shadow but without background color. To change +the indicator color you need to set only the foreground color of this face. +@end table + @vindex indicate-buffer-boundaries On graphical displays, Emacs can indicate the buffer boundaries in the fringes. If you enable this feature, the first line and the last diff --git a/doc/emacs/emacs-xtra.texi b/doc/emacs/emacs-xtra.texi index dcd8fae1b61..e9231b4e3a9 100644 --- a/doc/emacs/emacs-xtra.texi +++ b/doc/emacs/emacs-xtra.texi @@ -59,7 +59,7 @@ modify this GNU manual.'' * Picture Mode:: Editing pictures made up of characters using the quarter-plane screen model. -* Autorevert:: Auto Reverting non-file buffers. +* Non-File Buffers:: Auto Reverting non-file buffers. * Subdir Switches:: Subdirectory switches in Dired. * Advanced Calendar/Diary Usage:: Advanced Calendar/Diary customization. * Emerge:: A convenient way of merging two versions of a program. diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index 5b16d5034f1..a34cef221e1 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -443,9 +443,7 @@ File Handling * Visiting:: Visiting a file prepares Emacs to edit the file. * Saving:: Saving makes your changes permanent. * Reverting:: Reverting cancels all the changes not saved. -@ifnottex -* Autorevert:: Auto Reverting non-file buffers. -@end ifnottex +* Auto Revert:: Keeping buffers automatically up-to-date. * Auto Save:: Auto Save periodically protects against loss of data. * File Aliases:: Handling multiple names for one file. * Directories:: Creating, deleting, and listing file directories. @@ -1135,6 +1133,8 @@ Variables * Locals:: Per-buffer values of variables. * File Variables:: How files can specify variable values. * Directory Variables:: How variable values can be specified by directory. +* Connection Variables:: Variables which are valid for buffers with a + remote default directory. Local Variables in Files @@ -1164,6 +1164,7 @@ The Emacs Initialization File * Terminal Init:: Each terminal type can have an init file. * Find Init:: How Emacs finds the init file. * Init Non-ASCII:: Using non-@acronym{ASCII} characters in an init file. +* Early Init File:: Another init file, which is read early on. Dealing with Emacs Trouble @@ -1481,7 +1482,7 @@ Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F. Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto Takahashi, Steven Tamm, Jan Tatarik, Luc Teirlinck, Jean-Philippe Theberge, Jens T. Berger Thielemann, Spencer Thomas, Jim Thompson, Toru Tomabechi, -David O'Toole, Markus Triska, Tom Tromey, Enami Tsugutomo, Eli +David O'Toole, Markus Triska, Tom Tromey, Eli Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil W. Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey Voelker, Johan Vromans, Inge Wallin, John Paul Wallington, Colin diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index cd64fb109ea..36ef1dcea21 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -25,9 +25,7 @@ on file directories. * Visiting:: Visiting a file prepares Emacs to edit the file. * Saving:: Saving makes your changes permanent. * Reverting:: Reverting cancels all the changes not saved. -@ifnottex -* Autorevert:: Auto Reverting non-file buffers. -@end ifnottex +* Auto Revert:: Keeping buffers automatically up-to-date. * Auto Save:: Auto Save periodically protects against loss of data. * File Aliases:: Handling multiple names for one file. * Directories:: Creating, deleting, and listing file directories. @@ -206,7 +204,10 @@ saved it. If the file has changed, Emacs offers to reread it. If you try to visit a file larger than @code{large-file-warning-threshold} (the default is 10000000, which is about 10 megabytes), Emacs asks you for confirmation first. You can -answer @kbd{y} to proceed with visiting the file. Note, however, that +answer @kbd{y} to proceed with visiting the file or @kbd{l} to visit +the file literally (see below). Visiting large files literally speeds +up navigation and editing of such files, because various +potentially-expensive features are turned off. Note, however, that Emacs cannot visit files that are larger than the maximum Emacs buffer size, which is limited by the amount of memory Emacs can allocate and by the integers that Emacs can represent (@pxref{Buffers}). If you @@ -400,11 +401,14 @@ possible responses are analogous to those of @code{query-replace}: @table @kbd @item y +@item @key{SPC} Save this buffer and ask about the rest of the buffers. @item n +@item @key{DEL} Don't save this buffer, but ask about the rest of the buffers. @item ! Save this buffer and all the rest with no more questions. +@item q @c following generates acceptable underfull hbox @item @key{RET} Terminate @code{save-some-buffers} without any more saving. @@ -949,6 +953,11 @@ revert it automatically if it has changed---provided the buffer itself is not modified. (If you have edited the text, it would be wrong to discard your changes.) + You can also tell Emacs to revert buffers automatically when their +visited files change on disk; @pxref{Auto Revert}. + +@node Auto Revert +@section Auto Revert: Keeping buffers automatically up-to-date @cindex Global Auto Revert mode @cindex mode, Global Auto Revert @cindex Auto Revert mode @@ -956,22 +965,39 @@ discard your changes.) @findex global-auto-revert-mode @findex auto-revert-mode @findex auto-revert-tail-mode -@vindex auto-revert-interval -@vindex auto-revert-remote-files + + A buffer can get out of sync with respect to its visited file on +disk if that file is changed by another program. To keep it up to +date, you can enable Auto Revert mode by typing @kbd{M-x auto-revert-mode}. +This automatically reverts the buffer when its visited file changes on +disk. To do the same for all file buffers, type +@kbd{M-x global-auto-revert-mode} to enable Global Auto Revert mode. + + Auto Revert will not revert a buffer if it has unsaved changes, or if +its file on disk is deleted or renamed. + + One use of Auto Revert mode is to ``tail'' a file such as a system +log, so that changes made to that file by other programs are +continuously displayed. To do this, just move the point to the end of +the buffer, and it will stay there as the file contents change. +However, if you are sure that the file will only change by growing at +the end, use Auto Revert Tail mode instead +(@code{auto-revert-tail-mode}). It is more efficient for this. +Auto Revert Tail mode also works for remote files. + @vindex auto-revert-verbose - You can also tell Emacs to revert buffers periodically. To do this -for a specific buffer, enable the minor mode Auto-Revert mode by -typing @kbd{M-x auto-revert-mode}. This automatically reverts the -current buffer when its visited file changes on disk. To do the same -for all file buffers, type @kbd{M-x global-auto-revert-mode} to enable -Global Auto-Revert mode. These minor modes do not check or revert -remote files, because that is usually too slow. This behavior can be -changed by setting the variable @code{auto-revert-remote-files} to -non-@code{nil}. + When a buffer is auto-reverted, a message is generated. This can be +suppressed by setting @code{auto-revert-verbose} to @code{nil}. + +@vindex auto-revert-remote-files + The Auto Revert modes do not check or revert remote files, because +that is usually too slow. This behavior can be changed by setting the +variable @code{auto-revert-remote-files} to non-@code{nil}. @cindex file notifications @vindex auto-revert-use-notify - By default, Auto-Revert mode works using @dfn{file notifications}, +@vindex auto-revert-interval + By default, Auto Revert mode works using @dfn{file notifications}, whereby changes in the filesystem are reported to Emacs by the OS. You can disable use of file notifications by customizing the variable @code{auto-revert-use-notify} to a @code{nil} value, then Emacs will @@ -982,19 +1008,22 @@ the polling interval through the variable @code{auto-revert-interval}. supported, @code{auto-revert-use-notify} will be @code{nil} by default. - One use of Auto-Revert mode is to ``tail'' a file such as a system -log, so that changes made to that file by other programs are -continuously displayed. To do this, just move the point to the end of -the buffer, and it will stay there as the file contents change. -However, if you are sure that the file will only change by growing at -the end, use Auto-Revert Tail mode instead -(@code{auto-revert-tail-mode}). It is more efficient for this. -Auto-Revert Tail mode works also for remote files. - - When a buffer is auto-reverted, a message is generated. This can be -suppressed by setting @code{auto-revert-verbose} to @code{nil}. - - In Dired buffers (@pxref{Dired}), Auto-Revert mode refreshes the +@vindex auto-revert-avoid-polling +@vindex auto-revert-notify-exclude-dir-regexp + By default, Auto Revert mode will poll files for changes +periodically even when file notifications are used. Polling is +unnecessary in many cases, and turning it off may save power by +relying on notifications only. To do so, set the variable +@code{auto-revert-avoid-polling} to non-@code{nil}. However, +notification is ineffective on certain file systems; mainly network +file system on Unix-like machines, where files can be altered from +other machines. For such file systems, polling may be necessary. +To force polling when +@code{auto-revert-avoid-polling} is non-@code{nil}, set +@code{auto-revert-notify-exclude-dir-regexp} to match files that +should be excluded from using notification. + + In Dired buffers (@pxref{Dired}), Auto Revert mode refreshes the buffer when a file is created or deleted in the buffer's directory. @xref{VC Undo}, for commands to revert to earlier versions of files @@ -1002,6 +1031,9 @@ under version control. @xref{VC Mode Line}, for Auto Revert peculiarities when visiting files under version control. @ifnottex +@menu +* Non-File Buffers:: Auto Reverting Non-File Buffers. +@end menu @include arevert-xtra.texi @end ifnottex @@ -1016,13 +1048,16 @@ separate file, without altering the file you actually use. This is called @dfn{auto-saving}. It prevents you from losing more than a limited amount of work if the system crashes. +@vindex auto-save-no-message When Emacs determines that it is time for auto-saving, it considers each buffer, and each is auto-saved if auto-saving is enabled for it -and it has been changed since the last time it was auto-saved. The -message @samp{Auto-saving...} is displayed in the echo area during -auto-saving, if any files are actually auto-saved. Errors occurring -during auto-saving are caught so that they do not interfere with the -execution of commands you have been typing. +and it has been changed since the last time it was auto-saved. When +the @code{auto-save-no-message} variable is set to @code{nil} (the +default), the message @samp{Auto-saving...} is displayed in the echo +area during auto-saving, if any files are actually auto-saved; to +disable these messages, customize the variable to a non-@code{nil} +value. Errors occurring during auto-saving are caught so that they do +not interfere with the execution of commands you have been typing. @menu * Files: Auto Save Files. The file where auto-saved changes are @@ -1309,17 +1344,8 @@ default), and @code{list-directory-verbose-switches} is a string giving the switches to use in a verbose listing (@code{"-l"} by default). -@vindex directory-free-space-program -@vindex directory-free-space-args In verbose directory listings, Emacs adds information about the -amount of free space on the disk that contains the directory. You can -customize how this is done for local filesystems via the variables -@code{directory-free-space-program} and -@code{directory-free-space-args}: the former specifies what program to -run (default: @command{df}), the latter which arguments to pass to -that program (default is system-dependent). (On MS-Windows and -MS-DOS, these two variables are ignored, and an internal Emacs -implementation of the same functionality is used instead.) +amount of free space on the disk that contains the directory. The command @kbd{M-x delete-directory} prompts for a directory's name using the minibuffer, and deletes the directory if it is empty. If @@ -1448,7 +1474,7 @@ automatic line number correction, change the variable @code{diff-update-on-the-fly} to @code{nil}. Diff mode arranges for hunks to be treated as compiler error -messages by @kbd{C-x `} and other commands that handle error messages +messages by @kbd{M-g M-n} and other commands that handle error messages (@pxref{Compilation Mode}). Thus, you can use the compilation-mode commands to visit the corresponding source locations. @@ -1461,26 +1487,19 @@ manipulate and apply parts of patches: Move to the next hunk-start (@code{diff-hunk-next}). With prefix argument @var{n}, move forward to the @var{n}th next hunk. -@findex diff-auto-refine-mode -@cindex mode, Diff Auto-Refine -@cindex Diff Auto-Refine mode -This command has a side effect: it @dfn{refines} the hunk you move to, -highlighting its changes with better granularity. To disable this -feature, type @kbd{M-x diff-auto-refine-mode} to toggle off the minor -mode Diff Auto-Refine mode. To disable Diff Auto-Refine mode by -default, add this to your init file (@pxref{Hooks}): - -@example -(add-hook 'diff-mode-hook - (lambda () (diff-auto-refine-mode -1))) -@end example +@vindex diff-refine +By default, Diff mode @dfn{refines} hunks as Emacs displays them, +highlighting their changes with better granularity. Alternatively, if +you set @code{diff-refine} to the symbol @code{navigation}, Diff mode +only refines the hunk you move to with this command or with +@code{diff-hunk-prev}. @item M-p @findex diff-hunk-prev Move to the previous hunk-start (@code{diff-hunk-prev}). With prefix argument @var{n}, move back to the @var{n}th previous hunk. Like -@kbd{M-n}, this has the side-effect of refining the hunk you move to, -unless you disable Diff Auto-Refine mode. +@kbd{M-n}, this command refines the hunk you move to if you set +@code{diff-refine} to the symbol @code{navigation}. @item M-@} @findex diff-file-next @@ -1518,6 +1537,11 @@ Highlight the changes of the hunk at point with a finer granularity (@code{diff-refine-hunk}). This allows you to see exactly which parts of each changed line were actually changed. +@vindex diff-refine +By default, Diff mode refines hunks as Emacs displays them, so you may +find this command useful if you customize @code{diff-refine} to a +non-default value. + @item C-c C-c @findex diff-goto-source @vindex diff-jump-to-old-file @@ -1530,6 +1554,10 @@ default jumps to the ``old'' file, and the meaning of the prefix argument is reversed. If the prefix argument is a number greater than 8 (e.g., if you type @kbd{C-u C-u C-c C-c}), then this command also sets @code{diff-jump-to-old-file} for the next invocation. +If the source file is under version control (@pxref{Version Control}), +this jumps to the work file by default. With a prefix argument, jump +to the ``old'' revision of the file (@pxref{Old Revisions}), when +point is on the old line, or otherwise jump to the ``new'' revision. @item C-c C-e @findex diff-ediff-patch @@ -1613,6 +1641,10 @@ displayed in the echo area). With a prefix argument, it tries to modify the original (``old'') source files rather than the patched (``new'') source files. +@vindex diff-font-lock-syntax + If non-@code{nil}, fragments of source in hunks are highlighted +according to the appropriate major mode. + @node Copying and Naming @section Copying, Naming and Renaming Files diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi index bb1b4c87137..fc610583c87 100644 --- a/doc/emacs/fixit.texi +++ b/doc/emacs/fixit.texi @@ -149,6 +149,12 @@ Transpose two words (@code{transpose-words}). Transpose two balanced expressions (@code{transpose-sexps}). @item C-x C-t Transpose two lines (@code{transpose-lines}). +@item M-x transpose-sentences +Transpose two sentences (@code{transpose-sentences}). +@item M-x transpose-paragraphs +Transpose two paragraphs (@code{transpose-paragraphs}). +@item M-x transpose-regions +Transpose two regions. @end table @kindex C-t @@ -183,10 +189,14 @@ punctuation characters between the words do not move. For example, @w{@samp{BAR FOO,}}. When point is at the end of the line, it will transpose the word before point with the first word on the next line. +@findex transpose-sentences +@findex transpose-paragraphs @kbd{C-M-t} (@code{transpose-sexps}) is a similar command for transposing two expressions (@pxref{Expressions}), and @kbd{C-x C-t} -(@code{transpose-lines}) exchanges lines. They work like @kbd{M-t} -except as regards the units of text they transpose. +(@code{transpose-lines}) exchanges lines. @kbd{M-x +transpose-sentences} and @kbd{M-x transpose-paragraphs} transpose +sentences and paragraphs, respectively. These commands work like +@kbd{M-t} except as regards the units of text they transpose. A numeric argument to a transpose command serves as a repeat count: it tells the transpose command to move the character (or word or @@ -204,6 +214,15 @@ otherwise a command with a repeat count of zero would do nothing): to transpose the character (or word or expression or line) ending after point with the one ending after the mark. +@findex transpose-regions + @kbd{M-x transpose-regions} transposes the text between point and +mark with the text between the last two marks pushed to the mark ring +(@pxref{Setting Mark}). With a numeric prefix argument, it transposes +the text between point and mark with the text between two successive +marks that many entries back in the mark ring. This command is best +used for transposing multiple characters (or words or sentences or +paragraphs) in one go. + @node Fixing Case @section Case Conversion diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index 05aabd0e15b..6001096f35b 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi @@ -899,6 +899,16 @@ input stream for each server. Each server also has its own selected frame. The commands you enter with a particular X server apply to that server's selected frame. + On multi-monitor displays it is possible to use the command +@code{make-frame-on-monitor}: + +@findex make-frame-on-monitor +@table @kbd +@item M-x make-frame-on-monitor @key{RET} @var{monitor} @key{RET} +Create a new frame on monitor @var{monitor} whose screen area is +a part of the current display. +@end table + @node Frame Parameters @section Frame Parameters @vindex default-frame-alist diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi index 9ffea416827..4851659b8b7 100644 --- a/doc/emacs/help.texi +++ b/doc/emacs/help.texi @@ -523,13 +523,17 @@ currently in use. @xref{Coding Systems}. @section Other Help Commands @kindex C-h i +@kindex C-h 4 i @findex info +@findex info-other-window @cindex Info @cindex manuals, included @kbd{C-h i} (@code{info}) runs the Info program, which browses -structured documentation files. The entire Emacs manual is available -within Info, along with many other manuals for the GNU system. Type -@kbd{h} after entering Info to run a tutorial on using Info. +structured documentation files. @kbd{C-h 4 i} +(@code{info-other-window}) does the same, but shows the Info buffer in +another window. The entire Emacs manual is available within Info, +along with many other manuals for the GNU system. Type @kbd{h} after +entering Info to run a tutorial on using Info. @cindex find Info manual by its file name With a numeric argument @var{n}, @kbd{C-h i} selects the Info buffer diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi index a6aa75bbb42..5f40acba151 100644 --- a/doc/emacs/indent.texi +++ b/doc/emacs/indent.texi @@ -110,6 +110,10 @@ parentheses, or if the junction follows another newline. If there is a fill prefix, @kbd{M-^} deletes the fill prefix if it appears after the newline that is deleted. @xref{Fill Prefix}. +With a prefix argument, join the current line line to the following +line. If the region is active, and no prefix argument is given, join +all lines in the region instead. + @item C-M-\ @kindex C-M-\ @findex indent-region diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi index 6d27e978217..d9920957ad7 100644 --- a/doc/emacs/macos.texi +++ b/doc/emacs/macos.texi @@ -170,8 +170,25 @@ the requested line (@code{ns-open-file-select-line}). This event occurs when a user drags an object from another application into an Emacs frame. The default behavior is to open a file in the window under the mouse, or to insert text at point of the window under -the mouse. It may sometimes be necessary to use the @key{Meta} key in -conjunction with dragging to force text insertion. +the mouse. + +The sending application has some limited ability to decide how Emacs +handles the sent object, but the user may override the default +behaviour by holding one or more modifier key. + +@table @kbd +@item control +Insert as text in the current buffer. If the object is a file, this +will insert the filename. +@item alt/option +Attempt to open the object as though it is a file or URL. +@item super/command +Perform the default action for the type. This can be useful when an +application is overriding the default behaviour. +@end table + +The modifier keys listed above are defined by macOS and are unaffected +by user changes to the modifiers in Emacs. @item ns-change-font This event occurs when the user selects a font in a Nextstep font diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index 93dbce47595..0fbf91ae613 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -831,6 +831,14 @@ working tree containing the current VC fileset). If you invoke this command from a Dired buffer, it applies to the working tree containing the directory. +@findex vc-root-version-diff +@kindex C-u C-x v D + To compare two arbitrary revisions of the whole trees, call +@code{vc-root-diff} with a prefix argument: @kbd{C-u C-x v D}. This +prompts for two revision IDs (@pxref{VCS Concepts}), and displays a +diff between those versions of the entire version-controlled directory +trees (RCS, SCCS, CVS, and SRC do not support this feature). + @vindex vc-diff-switches You can customize the @command{diff} options that @kbd{C-x v =} and @kbd{C-x v D} use for generating diffs. The options used are taken @@ -963,6 +971,7 @@ and the maximum number of revisions to display. Directory Mode}) or a Dired buffer (@pxref{Dired}), it applies to the file listed on the current line. +@kindex C-x v L @findex vc-print-root-log @findex log-view-toggle-entry-display @kbd{C-x v L} (@code{vc-print-root-log}) displays a @@ -1024,6 +1033,7 @@ systems support modifying change comments. Visit the revision indicated at the current line. @item d +@itemx = Display a diff between the revision at point and the next earlier revision, for the specific file. @@ -1038,6 +1048,16 @@ L}), toggle between showing and hiding the full log entry for the revision at point. @end table +To compare two arbitrary revisions, activate the region: set the +beginning of the region to the line with the first revision and the +end of the region to the line with the second revision to compare, +then type @kbd{d} or @kbd{=}. When the beginning of the region is on +the top line that has no revision, it uses the current working revision +as the first revision to compare. When the end of the region is on +the bottom non-revision line after the last revision line, then it +uses the next earlier revision after the last displayed revision as +the second revision to compare. + @vindex vc-log-show-limit Because fetching many log entries can be slow, the @file{*vc-change-log*} buffer displays no more than 2000 revisions by @@ -1639,21 +1659,35 @@ entry is considered a page. This facilitates editing the entries. @kbd{C-j} and auto-fill indent each new line like the previous line; this is convenient for entering the contents of an entry. -You can use the @code{next-error} command (by default bound to -@kbd{C-x `}) to move between entries in the Change Log, when Change -Log mode is on. You will jump to the actual site in the file that was -changed, not just to the next Change Log entry. You can also use -@code{previous-error} to move back in the same list. +@findex change-log-goto-source + You can use the command @code{change-log-goto-source} (by default +bound to @kbd{C-c C-c}) to go to the source location of the change log +entry near point, when Change Log mode is on. Then subsequent +invocations of the @code{next-error} command (by default bound to +@kbd{M-g M-n} and @kbd{C-x `}) will move between entries in the change +log. You will jump to the actual site in the file that was changed, +not just to the next change log entry. You can also use +@code{previous-error} to move back through the change log entries. @findex change-log-merge You can use the command @kbd{M-x change-log-merge} to merge other log files into a buffer in Change Log Mode, preserving the date ordering of entries. +@vindex add-log-dont-create-changelog-file Version control systems are another way to keep track of changes in -your program and keep a change log. In the VC log buffer, typing -@kbd{C-c C-a} (@code{log-edit-insert-changelog}) inserts the relevant -Change Log entry, if one exists. @xref{Log Buffer}. +your program and keep a change log. Many projects that use a VCS don't +keep a separate versioned change log file nowadays, so you may wish to +avoid having such a file in the repository. If the value of +@code{add-log-dont-create-changelog-file} is non-@code{nil}, commands +like @kbd{C-x 4 a} (@code{add-change-log-entry-other-window}) will +record changes in a suitably named temporary buffer instead of a file, +if such a file does not already exist. + +Whether you have a change log file or use a temporary buffer for +change logs, you can type @kbd{C-c C-a} +(@code{log-edit-insert-changelog}) in the VC Log buffer to insert the +relevant change log entries, if they exist. @xref{Log Buffer}. @node Format of ChangeLog @subsection Format of ChangeLog @@ -1808,6 +1842,8 @@ Find definitions of identifier, but display it in another window @item C-x 5 .@: @key{RET} Find definition of identifier, and display it in a new frame (@code{xref-find-definitions-other-frame}). +@item M-x xref-find-definitions-at-mouse +Find definition of identifier at mouse click. @item M-, Go back to where you previously invoked @kbd{M-.} and friends (@code{xref-pop-marker-stack}). @@ -1848,6 +1884,11 @@ former is @w{@kbd{C-x 4 .}} (@code{xref-find-definitions-other-window}), and the latter is @w{@kbd{C-x 5 .}} (@code{xref-find-definitions-other-frame}). + The command @code{xref-find-definitions-at-mouse} works like +@code{xref-find-definitions}, but it looks for the identifier name at +or around the place of a mouse event. This command is intended to be +bound to a mouse event, such as @kbd{C-M-mouse-1}, for example. + @findex xref-find-apropos @kindex C-M-. The command @kbd{C-M-.} (@code{xref-find-apropos}) finds the @@ -1959,7 +2000,7 @@ table. @item M-x tags-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET} Perform a @code{query-replace-regexp} on each file in the selected tags table. -@item M-x tags-loop-continue +@item M-x fileloop-continue Restart one of the last 2 commands above, from the current location of point. @end table @@ -1995,9 +2036,9 @@ you can follow its progress. As soon as it finds an occurrence, @code{tags-search} returns. This command requires tags tables to be available (@pxref{Tags Tables}). -@findex tags-loop-continue +@findex fileloop-continue Having found one match with @code{tags-search}, you probably want to -find all the rest. @kbd{M-x tags-loop-continue} resumes the +find all the rest. @kbd{M-x fileloop-continue} resumes the @code{tags-search}, finding one more match. This searches the rest of the current buffer, followed by the remaining files of the tags table. @@ -2020,10 +2061,10 @@ default is to use the same setting as the value of single invocation of @kbd{M-x tags-query-replace}. But often it is useful to exit temporarily, which you can do with any input event that has no special query replace meaning. You can resume the query -replace subsequently by typing @kbd{M-x tags-loop-continue}; this +replace subsequently by typing @kbd{M-x fileloop-continue}; this command resumes the last tags search or replace command that you did. For instance, to skip the rest of the current file, you can type -@w{@kbd{M-> M-x tags-loop-continue}}. +@w{@kbd{M-> M-x fileloop-continue}}. Note that the commands described above carry out much broader searches than the @code{xref-find-definitions} family. The @@ -2055,7 +2096,7 @@ Display a list of all known identifiers matching @var{regexp}. Display a list of the identifiers defined in the program file @var{file}. -@item M-x next-file +@item M-x tags-next-file Visit files recorded in the selected tags table. @end table @@ -2094,8 +2135,8 @@ variable @code{tags-apropos-additional-actions}; see its documentation for details. @end ignore -@findex next-file - @kbd{M-x next-file} visits files covered by the selected tags table. +@findex tags-next-file + @kbd{M-x tags-next-file} visits files covered by the selected tags table. The first time it is called, it visits the first file covered by the table. Each subsequent call visits the next covered file, unless a prefix argument is supplied, in which case it returns to the first diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi index d17ef2dad63..820d3baad13 100644 --- a/doc/emacs/mini.texi +++ b/doc/emacs/mini.texi @@ -362,14 +362,26 @@ While in the completion list buffer, this chooses the completion at point (@code{choose-completion}). @findex next-completion +@item @key{TAB} @item @key{RIGHT} -While in the completion list buffer, this moves point to the following -completion alternative (@code{next-completion}). +While in the completion list buffer, these keys move point to the +following completion alternative (@code{next-completion}). @findex previous-completion +@item @key{S-TAB} @item @key{LEFT} -While in the completion list buffer, this moves point to the previous -completion alternative (@code{previous-completion}). +While in the completion list buffer, these keys move point to the +previous completion alternative (@code{previous-completion}). + +@findex quit-window +@item @kbd{q} +While in the completion list buffer, this quits the window showing it +and selects the window showing the minibuffer (@code{quit-window}). + +@findex kill-current-buffer +@item @kbd{z} +While in the completion list buffer, kill it and delete the window +showing it (@code{kill-current-buffer}). @end table @node Completion Exit diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index 75cca721900..cfc50d33b5f 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -314,7 +314,28 @@ You can decide to register a permanent security exception for an unverified connection, a temporary exception, or refuse the connection entirely. -Below is a list of the checks done on the @code{medium} level. +@vindex network-security-protocol-checks +In addition to the basic certificate correctness checks, several +@acronym{TLS} algorithm checks are available. Some encryption +technologies that were previously thought to be secure have shown +themselves to be fragile, so Emacs (by default) warns you about some +of these problems. + +The protocol network checks is controlled via the +@code{network-security-protocol-checks} variable. + +It's an alist where the first element of each association is the name +of the check, the second element is the security level where the check +should be used, and the optional third element is a parameter supplied +to the check. + +An element like @code{(rc4 medium)} will result in the function +@code{nsm-protocol-check--rc4} being called like thus: +@w{@code{(nsm-protocol-check--rc4 host port status optional-parameter)}}. +The function should return non-@code{nil} if the connection should +proceed and @code{nil} otherwise. + +Below is a list of the checks done on the default @code{medium} level. @table @asis @@ -352,12 +373,44 @@ over these connections. Similarly, if you're sending email via connection to be encrypted. If the connection isn't encrypted, @acronym{NSM} will warn you. +@item Diffie-Hellman low prime bits +When doing the public key exchange, the number of prime bits should be +high enough to ensure that the channel can't be eavesdropped on by third +parties. If this number is too low, Emacs will warn you. (This is the +@code{diffie-hellman-prime-bits} check in +@code{network-security-protocol-checks}). + +@item @acronym{RC4} stream cipher +The @acronym{RC4} stream cipher is believed to be of low quality and +may allow eavesdropping by third parties. (This is the @code{rc4} +check in @code{network-security-protocol-checks}). + +@item @acronym{SHA1} in the host certificate or in intermediate certificates +It is believed that if an intermediate certificate uses the +@acronym{SHA1} hashing algorithm, then third parties can issue +certificates pretending to be that issuing instance. These +connections are therefore vulnerable to man-in-the-middle attacks. +(These are the @code{signature-sha1} and @code{intermediate-sha1} +checks in @code{network-security-protocol-checks}). + +@item @acronym{SSL1}, @acronym{SSL2} and @acronym{SSL3} +The protocols older than @acronym{TLS1.0} are believed to be +vulnerable to a variety of attacks, and you may want to avoid using +these if what you're doing requires higher security. (This is the +@code{ssl} check in @code{network-security-protocol-checks}). + @end table If @code{network-security-level} is @code{high}, the following checks will be made, in addition to the above: @table @asis +@item @acronym{3DES} cipher +The @acronym{3DES} stream cipher provides at most 112 bits of +effective security, which is considered to be towards the low end. +(This is the @code{3des} check in +@code{network-security-protocol-checks}). + @item a validated certificate changes the public key Servers change their keys occasionally, and that is normally nothing to be concerned about. However, if you are worried that your network @@ -365,19 +418,6 @@ connections are being hijacked by agencies who have access to pliable Certificate Authorities which issue new certificates for third-party services, you may want to keep track of these changes. -@item Diffie-Hellman low prime bits -When doing the public key exchange, the number of prime bits -should be high to ensure that the channel can't be eavesdropped on by -third parties. If this number is too low, you will be warned. - -@item @acronym{RC4} stream cipher -The @acronym{RC4} stream cipher is believed to be of low quality and -may allow eavesdropping by third parties. - -@item @acronym{SSL1}, @acronym{SSL2} and @acronym{SSL3} -The protocols older than @acronym{TLS1.0} are believed to be -vulnerable to a variety of attacks, and you may want to avoid using -these if what you're doing requires higher security. @end table Finally, if @code{network-security-level} is @code{paranoid}, you will @@ -402,6 +442,7 @@ This means that one can't casually read the settings file to see what servers the user has connected to. If this variable is @code{t}, @acronym{NSM} will also save host names in the @code{nsm-settings-file}. + @end table @@ -734,6 +775,13 @@ documentation for more possibilities. displayed only when the command generates output, set @code{async-shell-command-display-buffer} to @code{nil}. +@vindex async-shell-command-width + The option @code{async-shell-command-width} defines the number of display +columns available for output of asynchronous shell commands. +A positive integer tells the shell to use that number of columns for +command output. The default value is @code{nil} that means to use +the same number of columns as provided by the shell. + @kindex M-| @findex shell-command-on-region @kbd{M-|} (@code{shell-command-on-region}) is like @kbd{M-!}, but @@ -754,6 +802,10 @@ to @command{gpg}. This will output the list of keys to the name is relative, Emacs searches the directories listed in @code{exec-path} (@pxref{Shell}). + If the default directory is remote (@pxref{Remote Files}), the +default value is @file{/bin/sh}. This can be changed by declaring +@code{shell-file-name} connection-local (@pxref{Connection Variables}). + To specify a coding system for @kbd{M-!} or @kbd{M-|}, use the command @kbd{C-x @key{RET} c} immediately beforehand. @xref{Communication Coding}. @@ -985,8 +1037,8 @@ Move backward across one shell command, but not beyond the current line Ask the shell for its working directory, and update the Shell buffer's default directory. @xref{Directory Tracking}. -@item M-x send-invisible @key{RET} @var{text} @key{RET} -@findex send-invisible +@item M-x comint-send-invisible @key{RET} @var{text} @key{RET} +@findex comint-send-invisible Send @var{text} as input to the shell, after reading it without echoing. This is useful when a shell command runs a program that asks for a password. @@ -1133,7 +1185,7 @@ Fetch the next subsequent command from the history @item C-c . @kindex C-c . @r{(Shell mode)} -@findex comint-input-previous-argument +@findex comint-insert-previous-argument Fetch one argument from an old shell command (@code{comint-input-previous-argument}). @@ -1180,14 +1232,20 @@ you just repeated. Then type @key{RET} to reexecute this command. You can reexecute several successive commands by typing @kbd{C-c C-x @key{RET}} over and over. - The command @kbd{C-c .}@: (@code{comint-input-previous-argument}) + The command @kbd{C-c .}@: (@code{comint-insert-previous-argument}) copies an individual argument from a previous command, like -@kbd{@key{ESC} .} in Bash. The simplest use copies the last argument from the -previous shell command. With a prefix argument @var{n}, it copies the -@var{n}th argument instead. Repeating @kbd{C-c .} copies from an -earlier shell command instead, always using the same value of @var{n} -(don't give a prefix argument when you repeat the @kbd{C-c .} -command). +@kbd{@key{ESC} .}@: in Bash and @command{zsh}. The simplest use +copies the last argument from the previous shell command. With a +prefix argument @var{n}, it copies the @var{n}th argument instead. +Repeating @kbd{C-c .} copies from an earlier shell commands, always +using the same value of @var{n} (don't give a prefix argument when +you repeat the @kbd{C-c .} command). + +@vindex comint-insert-previous-argument-from-end + If you set @code{comint-insert-previous-argument-from-end} to a +non-@code{nil} value, @kbd{C-c .}@: will instead copy the @var{n}th +argument counting from the last one; this emulates @kbd{@key{ESC} .}@: +in @command{zsh}. These commands get the text of previous shell commands from a special history list, not from the shell buffer itself. Thus, editing the shell @@ -1726,10 +1784,10 @@ a specific server file, use the @samp{-f} or @samp{--server-file} option, or set the @env{EMACS_SERVER_FILE} environment variable (@pxref{emacsclient Options}). If @code{server-auth-dir} is set to a non-standard value, or if @code{server-name} is set to an absolute -file name, @command{emacsclient} needs an absolute file name -to the server file, as the default @code{server-auth-dir} is -hard-coded in @command{emacsclient} to be used as the directory for -resolving relative filenames. +file name, @command{emacsclient} needs an absolute file name to the +server file, as the default @code{server-auth-dir} is hard-coded in +@command{emacsclient} to be used as the directory for resolving +relative filenames. @node Invoking emacsclient @subsection Invoking @code{emacsclient} @@ -1929,6 +1987,10 @@ You need to use this option if you started Emacs as daemon (@pxref{Initial Options}) and specified the name for the server started by the daemon. +Alternatively, you can set the @env{EMACS_SOCKET_NAME} environment +variable to point to the server socket. (The command-line option +overrides the environment variable.) + @item -t @itemx --tty @itemx -nw @@ -2584,7 +2646,7 @@ e.g., the daemon cannot use GUI features, so parameters such as frame position, size, and decorations cannot be restored. For that reason, you may wish to delay restoring the desktop in daemon mode until the first client connects, by calling @code{desktop-read} in a hook -function that you add to @code{after-make-frame-functions} +function that you add to @code{server-after-make-frame-hook} (@pxref{Creating Frames,,, elisp, The Emacs Lisp Reference Manual}). @node Recursive Edit diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi index fb876340b41..9fc4b6262fb 100644 --- a/doc/emacs/msdos.texi +++ b/doc/emacs/msdos.texi @@ -808,6 +808,13 @@ communications with subprocesses to programs that exhibit unusual behavior with respect to buffering pipe I/O. @ifnottex +@vindex w32-pipe-read-delay + If you need to invoke MS-DOS programs as Emacs subprocesses, you may +see low rate of reading data from such programs. Setting the variable +@code{w32-pipe-read-delay} to a non-zero value may improve throughput +in these cases; we suggest the value of 50 for such situations. The +default is zero. + @findex w32-shell-execute The function @code{w32-shell-execute} can be useful for writing customized commands that run MS-Windows applications registered to diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi index b3e7d218c62..6a26667510a 100644 --- a/doc/emacs/mule.texi +++ b/doc/emacs/mule.texi @@ -397,7 +397,7 @@ messages. But if your locale matches an entry in the variable coding system instead. For example, if the locale @samp{ja_JP.PCK} matches @code{japanese-shift-jis} in @code{locale-preferred-coding-systems}, Emacs uses that encoding even -though it might normally use @code{japanese-iso-8bit}. +though it might normally use @code{utf-8}. You can override the language environment chosen at startup with explicit use of the command @code{set-language-environment}, or with diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index 99e04740d3c..26e64243301 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -241,57 +241,53 @@ lower-priority archives will not be shown in the menu, if the same package is available from a higher-priority archive. (This is controlled by the value of @code{package-menu-hide-low-priority}.) - Once a package is downloaded and installed, it is @dfn{loaded} into -the current Emacs session. Loading a package is not quite the same as -loading a Lisp library (@pxref{Lisp Libraries}); loading a package -adds its directory to @code{load-path} and loads its autoloads. The -effect of a package's autoloads varies from package to package. Most -packages just make some new commands available, while others have more + Once a package is downloaded and installed, it is made available to +the current Emacs session. Making a package available adds its +directory to @code{load-path} and loads its autoloads. The effect of +a package's autoloads varies from package to package. Most packages +just make some new commands available, while others have more wide-ranging effects on the Emacs session. For such information, consult the package's help buffer. - By default, Emacs also automatically loads all installed packages in -subsequent Emacs sessions. This happens at startup, after processing -the init file (@pxref{Init File}). As an exception, Emacs does not -load packages at startup if invoked with the @samp{-q} or + After a package is installed, it is automatically made available by +Emacs in all subsequent sessions. This happens at startup, before +processing the init file but after processing the early init file +(@pxref{Early Init File}). As an exception, Emacs does not make +packages available at startup if invoked with the @samp{-q} or @samp{--no-init-file} options (@pxref{Initial Options}). @vindex package-enable-at-startup - To disable automatic package loading, change the variable -@code{package-enable-at-startup} to @code{nil}. - -@findex package-initialize - The reason automatic package loading occurs after loading the init -file is that user options only receive their customized values after -loading the init file, including user options which affect the -packaging system. In some circumstances, you may want to load -packages explicitly in your init file (usually because some other code -in your init file depends on a package). In that case, your init file -should call the function @code{package-initialize}. It is up to you -to ensure that relevant user options, such as @code{package-load-list} -(see below), are set up prior to the @code{package-initialize} call. -This will automatically set @code{package-enable-at-startup} to @code{nil}, to -avoid loading the packages again after processing the init file. -Alternatively, you may choose to completely inhibit package loading at -startup, and invoke the command @kbd{M-x package-initialize} to load -your packages manually. + To keep Emacs from automatically making packages available at +startup, change the variable @code{package-enable-at-startup} to +@code{nil}. You must do this in the early init file, as the variable +is read before loading the regular init file. Currently this variable +cannot be set via Customize. + +@findex package-activate-all + If you have set @code{package-enable-at-startup} to @code{nil}, you +can still make packages available either during or after startup. To +make installed packages available during startup, call the function +@code{package-activate-all} in your init file. To make installed +packages available after startup, invoke the command @kbd{M-: +(package-activate-all) RET}. @vindex package-load-list - For finer control over package loading, you can use the variable -@code{package-load-list}. Its value should be a list. A list element -of the form @code{(@var{name} @var{version})} tells Emacs to load -version @var{version} of the package named @var{name}. Here, -@var{version} should be a version string (corresponding to a specific -version of the package), or @code{t} (which means to load any -installed version), or @code{nil} (which means no version; this -disables the package, preventing it from being loaded). A list -element can also be the symbol @code{all}, which means to load the -latest installed version of any package not named by the other list -elements. The default value is just @code{'(all)}. - - For example, if you set @code{package-load-list} to @code{'((muse -"3.20") all)}, then Emacs only loads version 3.20 of the @samp{muse} -package, plus any installed version of packages other than + For finer control over which packages are made available at startup, +you can use the variable @code{package-load-list}. Its value should +be a list. A list element of the form @w{@code{(@var{name} +@var{version})}} tells Emacs to make available version @var{version} of +the package named @var{name}. Here, @var{version} should be a version +string (corresponding to a specific version of the package), or +@code{t} (which means to make available any installed version), or +@code{nil} (which means no version; this disables the package, +preventing it from being made available). A list element can also be +the symbol @code{all}, which means to make available the latest +installed version of any package not named by the other list elements. +The default value is just @code{'(all)}. + + For example, if you set @code{package-load-list} to @w{@code{'((muse +"3.20") all)}}, then Emacs only makes available version 3.20 of the +@samp{muse} package, plus any installed version of packages other than @samp{muse}. Any other version of @samp{muse} that happens to be installed will be ignored. The @samp{muse} package will be listed in the package menu with the @samp{held} status. diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index df14fd8a05a..28bfa5b578f 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -156,56 +156,22 @@ Emacs we use it for all languages. @cindex open-parenthesis in leftmost column @cindex ( in leftmost column - Many programming-language modes assume by default that any opening -delimiter found at the left margin is the start of a top-level -definition, or defun. Therefore, @strong{don't put an opening -delimiter at the left margin unless it should have that significance}. -For instance, never put an open-parenthesis at the left margin in a -Lisp file unless it is the start of a top-level list. - - The convention speeds up many Emacs operations, which would -otherwise have to scan back to the beginning of the buffer to analyze -the syntax of the code. - - If you don't follow this convention, not only will you have trouble -when you explicitly use the commands for motion by defuns; other -features that use them will also give you trouble. This includes the -indentation commands (@pxref{Program Indent}) and Font Lock mode -(@pxref{Font Lock}). - - The most likely problem case is when you want an opening delimiter -at the start of a line inside a string. To avoid trouble, put an -escape character (@samp{\}, in C and Emacs Lisp, @samp{/} in some -other Lisp dialects) before the opening delimiter. This will not -affect the contents of the string, but will prevent that opening -delimiter from starting a defun. Here's an example: - -@example - (insert "Foo: -\(bar) -") -@end example - - To help you catch violations of this convention, Font Lock mode -highlights confusing opening delimiters (those that ought to be -quoted) in bold red. + Many programming-language modes have traditionally assumed that any +opening parenthesis or brace found at the left margin is the start of +a top-level definition, or defun. So, by default, commands which seek +the beginning of a defun accept such a delimiter as signifying that +position. @vindex open-paren-in-column-0-is-defun-start - If you need to override this convention, you can do so by setting -the variable @code{open-paren-in-column-0-is-defun-start}. -If this user option is set to @code{t} (the default), opening -parentheses or braces at column zero always start defuns. When it is + If you want to override this convention, you can do so by setting +the user option @code{open-paren-in-column-0-is-defun-start} to +@code{nil}. If this option is set to @code{t} (the default), commands +seeking the start of a defun will stop at opening parentheses or +braces at column zero which aren't in a comment or string. When it is @code{nil}, defuns are found by searching for parens or braces at the -outermost level. - - Usually, you should leave this option at its default value of -@code{t}. If your buffer contains parentheses or braces in column -zero which don't start defuns, and it is somehow impractical to remove -these parentheses or braces, it might be helpful to set the option to -@code{nil}. Be aware that this might make scrolling and display in -large buffers quite sluggish. Furthermore, the parentheses and braces -must be correctly matched throughout the buffer for it to work -properly. +outermost level. Since low-level Emacs routines no longer depend on +this convention, you usually won't need to change +@code{open-paren-in-column-0-is-defun-start} from its default. @node Moving by Defuns @subsection Moving by Defuns diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi index b9d0afe42ee..1881b49627e 100644 --- a/doc/emacs/regs.texi +++ b/doc/emacs/regs.texi @@ -80,7 +80,9 @@ information until you store something else in it. @kindex C-x r j @findex jump-to-register The command @kbd{C-x r j @var{r}} switches to the buffer recorded in -register @var{r}, and moves point to the recorded position. The +register @var{r}, pushes a mark, and moves point to the recorded +position. (The mark is not pushed if point was already at the +recorded position, or in successive calls to the command.) The contents of the register are not changed, so you can jump to the saved position any number of times. diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi index 94e1e63d44e..4901ca9709e 100644 --- a/doc/emacs/rmail.texi +++ b/doc/emacs/rmail.texi @@ -529,13 +529,18 @@ file name from the message @samp{Subject} header. @kindex C-o @r{(Rmail)} @findex rmail-output-as-seen The commands @kbd{o} and @kbd{C-o} copy the current message into a -specified file, adding it at the end. The two commands differ mainly -in how much to copy: @kbd{o} copies the full message headers, even if -they are not all visible, while @kbd{C-o} copies exactly the headers -currently displayed and no more. @xref{Rmail Display}. In addition, -@kbd{o} converts the message to Babyl format (used by Rmail in Emacs -version 22 and before) if the file is in Babyl format; @kbd{C-o} -cannot output to Babyl files at all. +specified file, adding it at the end. A positive prefix argument +serves as a repeat count: that many consecutive messages will be +copied to the specified file, starting with the current one and +ignoring deleted messages. + +The two commands differ mainly in how much to copy: @kbd{o} copies the +full message headers, even if they are not all visible, while +@kbd{C-o} copies exactly the headers currently displayed and no more. +@xref{Rmail Display}. In addition, @kbd{o} converts the message to +Babyl format (used by Rmail in Emacs version 22 and before) if the +file is in Babyl format; @kbd{C-o} cannot output to Babyl files at +all. @c FIXME remove BABYL mention in some future version? If the output file is currently visited in an Emacs buffer, the @@ -565,17 +570,29 @@ second says which files in that directory to offer (all those that match the regular expression). If no files match, you cannot select this menu item. -@vindex rmail-delete-after-output Copying a message with @kbd{o} or @kbd{C-o} gives the original copy of the message the @samp{filed} attribute, so that @samp{filed} appears in the mode line when such a message is current. +@vindex rmail-delete-after-output If you like to keep just a single copy of every mail message, set the variable @code{rmail-delete-after-output} to @code{t}; then the @kbd{o}, @kbd{C-o} and @kbd{w} commands delete the original message after copying it. (You can undelete it afterward if you wish, see @ref{Rmail Deletion}.) +@vindex rmail-output-reset-deleted-flag + By default, @kbd{o} will leave the deleted status of a message it +outputs as it was on the original message; thus, a message deleted +before it was output will appear as deleted in the output file. +Setting the variable @code{rmail-output-reset-deleted-flag} to a +non-@code{nil} value countermands that: the copy of the message will +have its deleted status reset, so the message will appear as undeleted +in the output file. In addition, when this variable is +non-@code{nil}, specifying a positive argument to @kbd{o} will not +ignore deleted messages when looking for consecutive messages to +output. + @vindex rmail-output-file-alist The variable @code{rmail-output-file-alist} lets you specify intelligent defaults for the output file, based on the contents of the @@ -753,7 +770,7 @@ Try sending a bounced message a second time (@code{rmail-retry-failure}). to the message you are reading. To do this, type @kbd{r} (@code{rmail-reply}). This displays a mail composition buffer in another window, much like @kbd{C-x 4 m}, but preinitializes the -@samp{Subject}, @samp{To}, @samp{CC}, @samp{In-reply-to} and +@samp{Subject}, @samp{To}, @samp{CC}, @samp{In-Reply-To} and @samp{References} header fields based on the message you are replying to. The @samp{To} field starts out as the address of the person who sent the message you received, and the @samp{CC} field starts out with diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 9611d341860..a1c987c1252 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -253,6 +253,13 @@ character or word at point to the search string. This is an easy way to search for another occurrence of the text at point. (The decision of whether to copy a character or a word is heuristic.) +@kindex C-M-w @r{(Incremental search)} +@findex isearch-yank-symbol-or-char + @kbd{C-M-w} (@code{isearch-yank-symbol-or-char}) appends the next +character or symbol at point to the search string. This is an easy way +to search for another occurrence of the symbol at point. (The decision +of whether to copy a character or a symbol is heuristic.) + @kindex M-s C-e @r{(Incremental search)} @findex isearch-yank-line Similarly, @kbd{M-s C-e} (@code{isearch-yank-line}) appends the rest @@ -274,11 +281,11 @@ appended text with an earlier kill, similar to the usual @kbd{M-y} in the echo area appends the current X selection (@pxref{Primary Selection}) to the search string (@code{isearch-yank-x-selection}). -@kindex C-M-w @r{(Incremental search)} +@kindex C-M-d @r{(Incremental search)} @kindex C-M-y @r{(Incremental search)} @findex isearch-del-char @findex isearch-yank-char - @kbd{C-M-w} (@code{isearch-del-char}) deletes the last character + @kbd{C-M-d} (@code{isearch-del-char}) deletes the last character from the search string, and @kbd{C-M-y} (@code{isearch-yank-char}) appends the character after point to the search string. An alternative method to add the character after point is to enter the @@ -308,7 +315,7 @@ string that failed to match is highlighted using the face At this point, there are several things you can do. If your string was mistyped, use @key{DEL} to cancel a previous input item -(@pxref{Basic Isearch}), @kbd{C-M-w} to erase one character at a time, +(@pxref{Basic Isearch}), @kbd{C-M-d} to erase one character at a time, or @kbd{M-e} to edit it. If you like the place you have found, you can type @key{RET} to remain there. Or you can type @kbd{C-g}, which removes from the search string the characters that could not be found @@ -468,7 +475,7 @@ of the keymap @code{isearch-mode-map} (@pxref{Keymaps}). This subsection describes how to control whether typing a command not specifically meaningful in searches exits the search before executing -the command. It also describes two categories of commands which you +the command. It also describes three categories of commands which you can type without exiting the current incremental search, even though they are not themselves part of incremental search. @@ -477,7 +484,7 @@ they are not themselves part of incremental search. search exits the search before executing the command. Thus, the command operates on the buffer from which you invoked the search. However, if you customize the variable @code{search-exit-option} to -@code{nil}, the characters which you type that are not interpreted by +@code{append}, the characters which you type that are not interpreted by the incremental search are simply appended to the search string. This is so you could include in the search string control characters, such as @kbd{C-a}, that would normally exit the search and invoke the @@ -538,6 +545,18 @@ change point, the buffer contents, the match data, the current buffer, or the selected window and frame. The command must not itself attempt an incremental search. This feature is disabled if @code{isearch-allow-scroll} is @code{nil} (which it is by default). + +@item Motion Commands +@cindex motion commands, during incremental search +When @code{isearch-yank-on-move} is customized to @code{shift}, +you can extend the search string by holding down the shift key while +typing cursor motion commands. It will yank text that ends at the new +position after moving point in the current buffer. + +When @code{isearch-yank-on-move} is @code{t}, you can extend the +search string without using the shift key for cursor motion commands, +but it applies only for certain motion command that have the +@code{isearch-move} property on their symbols. @end table @node Isearch Minibuffer @@ -955,11 +974,10 @@ character class inside a character alternative. For instance, elisp, The Emacs Lisp Reference Manual}, for a list of character classes. -To include a @samp{]} in a character set, you must make it the first -character. For example, @samp{[]a]} matches @samp{]} or @samp{a}. To -include a @samp{-}, write @samp{-} as the first or last character of the -set, or put it after a range. Thus, @samp{[]-]} matches both @samp{]} -and @samp{-}. +To include a @samp{]} in a character set, you must make it the first character. +For example, @samp{[]a]} matches @samp{]} or @samp{a}. To include a @samp{-}, +write @samp{-} as the last character of the set, tho you can also put it first +or after a range. Thus, @samp{[]-]} matches both @samp{]} and @samp{-}. To include @samp{^} in a set, put it anywhere but at the beginning of the set. (At the beginning, it complements the set---see below.) @@ -1819,7 +1837,7 @@ In the @file{*Occur*} buffer, you can click on each entry, or move point there and type @key{RET}, to visit the corresponding position in the buffer that was searched. @kbd{o} and @kbd{C-o} display the match in another window; @kbd{C-o} does not select it. Alternatively, you -can use the @kbd{C-x `} (@code{next-error}) command to visit the +can use the @kbd{M-g M-n} (@code{next-error}) command to visit the occurrences one by one (@pxref{Compilation Mode}). @cindex Occur Edit mode @@ -1855,11 +1873,13 @@ region instead. @findex flush-lines @item M-x flush-lines Prompt for a regexp, and delete each line that contains a match for -it, operating on the text after point. This command deletes the -current line if it contains a match starting after point. If the -region is active, it operates on the region instead; if a line -partially contained in the region contains a match entirely contained -in the region, it is deleted. +it, operating on the text after point. When the command finishes, +it prints the number of deleted matching lines. + +This command deletes the current line if it contains a match starting +after point. If the region is active, it operates on the region +instead; if a line partially contained in the region contains a match +entirely contained in the region, it is deleted. If a match is split across lines, @code{flush-lines} deletes all those lines. It deletes the lines before starting to look for the next diff --git a/doc/emacs/sending.texi b/doc/emacs/sending.texi index f5d69abf279..c6b8912e2e3 100644 --- a/doc/emacs/sending.texi +++ b/doc/emacs/sending.texi @@ -70,7 +70,7 @@ or using some other method. @xref{Mail Sending}, for details. @example To: subotai@@example.org -Cc: mongol.soldier@@example.net, rms@@gnu.org +CC: mongol.soldier@@example.net, rms@@gnu.org Subject: Re: What is best in life? From: conan@@example.org --text follows this line-- @@ -170,14 +170,14 @@ writes in Babyl format. If an Rmail buffer is visiting the file, Emacs updates it accordingly. To specify more than one file, use several @samp{FCC} fields, with one file name in each field. -@item Reply-to +@item Reply-To An address to which replies should be sent, instead of @samp{From}. This is used if, for some reason, your @samp{From} address cannot receive replies. -@item Mail-reply-to -This field takes precedence over @samp{Reply-to}. It is used because -some mailing lists set the @samp{Reply-to} field for their own +@item Mail-Reply-To +This field takes precedence over @samp{Reply-To}. It is used because +some mailing lists set the @samp{Reply-To} field for their own purposes (a somewhat controversial practice). @item Mail-Followup-To @@ -186,14 +186,14 @@ messages. This is typically used when you reply to a message from a mailing list that you are subscribed to, and want replies to go to the list without sending an extra copy to you. -@item In-reply-to +@item In-Reply-To An identifier for the message you are replying to. Most mail readers use this information to group related messages together. Normally, this header is filled in automatically when you reply to a message in any mail program built into Emacs. @item References -Identifiers for previous related messages. Like @samp{In-reply-to}, +Identifiers for previous related messages. Like @samp{In-Reply-To}, this is normally filled in automatically for you. @end table @@ -220,12 +220,12 @@ To: foo@@example.net, this@@example.net, You can direct Emacs to insert certain default headers into the mail buffer by setting the variable @code{mail-default-headers} to a string. Then @kbd{C-x m} inserts this string into the message -headers. For example, here is how to add a @samp{Reply-to} and +headers. For example, here is how to add a @samp{Reply-To} and @samp{FCC} header to each message: @smallexample (setq mail-default-headers - "Reply-to: foo@@example.com\nFCC: ~/Mail/sent") + "Reply-To: foo@@example.com\nFCC: ~/Mail/sent") @end smallexample @noindent @@ -293,7 +293,7 @@ alias definitions and include commands. Mail aliases expand as abbrevs---that is to say, as soon as you type a word-separator character after an alias (@pxref{Abbrevs}). This expansion takes place only within the @samp{To}, @samp{From}, -@samp{CC}, @samp{BCC}, and @samp{Reply-to} header fields (plus their +@samp{CC}, @samp{BCC}, and @samp{Reply-To} header fields (plus their @samp{Resent-} variants); it does not take place in other header fields, such as @samp{Subject}. @@ -422,7 +422,7 @@ Move to the @samp{CC} header (@code{message-goto-cc}). @item C-c C-f C-b Move to the @samp{BCC} header (@code{message-goto-bcc}). @item C-c C-f C-r -Move to the @samp{Reply-to} header (@code{message-goto-reply-to}). +Move to the @samp{Reply-To} header (@code{message-goto-reply-to}). @item C-c C-f C-f Move to the @samp{Mail-Followup-To} header field (@code{message-goto-followup-to}). diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index e9b17dbb651..7892b346d2a 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@ -459,6 +459,13 @@ non-@code{nil}, and in programming-language strings if @code{nil} for @code{electric-quote-string} and @code{t} for the other variables. +@vindex electric-quote-replace-double + You can also set the option @code{electric-quote-replace-double} to +a non-@code{nil} value. Then, typing @t{"} insert an appropriate +curved double quote depending on context: @t{“} at the beginning of +the buffer or after a line break, whitespace, opening parenthesis, or +quote character, and @t{”} otherwise. + Electric Quote mode is disabled by default. To toggle it in a single buffer, use @kbd{M-x electric-quote-local-mode}. To toggle it globally, type @@ -631,8 +638,15 @@ line. If a function returns a non-@code{nil} value, Emacs will not break the line there. Functions you can use there include: @code{fill-single-word-nobreak-p} (don't break after the first word of a sentence or before the last); @code{fill-single-char-nobreak-p} -(don't break after a one-letter word); and @code{fill-french-nobreak-p} -(don't break after @samp{(} or before @samp{)}, @samp{:} or @samp{?}). +(don't break after a one-letter word preceded by a whitespace +character); @code{fill-french-nobreak-p} (don't break after @samp{(} +or before @samp{)}, @samp{:} or @samp{?}); and +@code{fill-polish-nobreak-p} (don't break after a one letter word, +even if preceded by a non-whitespace character). + + Emacs can display an indicator in the @code{fill-column} position +using the Display fill column indicator mode +(@pxref{Displaying Boundaries, display-fill-column-indicator}). @node Fill Prefix @subsection The Fill Prefix @@ -2406,11 +2420,13 @@ to the commands above. @subsection Setting Other Text Properties The Special Properties submenu of Text Properties has entries for -adding or removing three other text properties: @code{read-only}, +adding or removing four other text properties: @code{read-only}, (which disallows alteration of the text), @code{invisible} (which -hides text), and @code{intangible} (which disallows moving point -within the text). The @samp{Remove Special} menu item removes all of -these special properties from the text in the region. +hides text), @code{intangible} (which disallows moving point within +the text), and @code{charset} (which is important for selecting a +proper font to display a character). The @samp{Remove Special} menu +item removes all of these special properties from the text in the +region. The @code{invisible} and @code{intangible} properties are not saved. diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index c4c724e6bc2..ece53130531 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi @@ -157,7 +157,9 @@ this option is @code{nil}. @item C-x o Select another window (@code{other-window}). @item C-M-v -Scroll the next window (@code{scroll-other-window}). +Scroll the next window upward (@code{scroll-other-window}). +@item C-M-S-v +Scroll the next window downward (@code{scroll-other-window-down}). @item mouse-1 @kbd{mouse-1}, in the text area of a window, selects the window and moves point to the position clicked. Clicking in the mode line @@ -181,13 +183,18 @@ back and finish supplying the minibuffer argument that is requested. @kindex C-M-v @findex scroll-other-window +@kindex C-M-S-v +@findex scroll-other-window-down The usual scrolling commands (@pxref{Display}) apply to the selected -window only, but there is one command to scroll the next window. +window only, but there are also commands to scroll the next window. @kbd{C-M-v} (@code{scroll-other-window}) scrolls the window that -@kbd{C-x o} would select. It takes arguments, positive and negative, -like @kbd{C-v}. (In the minibuffer, @kbd{C-M-v} scrolls the help -window associated with the minibuffer, if any, rather than the next -window in the standard cyclic order; @pxref{Minibuffer Edit}.) +@kbd{C-x o} would select. In other respects, the command behaves like +@kbd{C-v}; both move the buffer text upward relative to the window, and +take positive and negative arguments. (In the minibuffer, @kbd{C-M-v} +scrolls the help window associated with the minibuffer, if any, rather +than the next window in the standard cyclic order; @pxref{Minibuffer +Edit}.) @kbd{C-M-S-v} (@code{scroll-other-window-down}) scrolls the +next window downward in a similar way. @vindex mouse-autoselect-window If you set @code{mouse-autoselect-window} to a non-@code{nil} value, @@ -359,7 +366,7 @@ various help commands (@pxref{Help}), work by calling Other commands do the same as @code{display-buffer}, and additionally select the displaying window so that you can begin -editing its buffer. The command @kbd{C-x `} (@code{next-error}) is +editing its buffer. The command @kbd{M-g M-n} (@code{next-error}) is one example (@pxref{Compilation Mode}). Such commands work by calling the function @code{pop-to-buffer} internally. @xref{Switching Buffers,,Switching to a Buffer in a Window, elisp, The Emacs Lisp |