=== modified file 'doc/emacs/ChangeLog' *** doc/emacs/ChangeLog 2013-12-25 02:18:43 +0000 --- doc/emacs/ChangeLog 2013-12-25 22:39:00 +0000 *************** *** 1,3 **** --- 1,15 ---- + 2013-12-25 Jarek Czekalski + + * mini.texi (Completion Options): Add a link to Shell Mode Completion + Options. + * misc.texi (Shell Mode): Document new variable + shell-completion-cur-dir. + Move documentation of shell-completion-fignore from Shell Mode to Shell + Mode Options. + Add an unnumbered subsubsection to group completion options. This also + required to move pushd paragraph above this group. + + 2013-12-25 Xue Fuqiao * files.texi (Diff Mode): Add an index. === modified file 'doc/emacs/mini.texi' *** doc/emacs/mini.texi 2013-01-01 09:11:05 +0000 --- doc/emacs/mini.texi 2013-12-25 22:35:50 +0000 *************** previous example, @samp{foo.e} completes *** 550,555 **** --- 550,558 ---- disregards @code{completion-ignored-extensions} when showing completion alternatives in the completion list. + Shell completion is an extended version of filename completion, + @xref{Shell Mode Completion Options}. + @vindex completion-auto-help If @code{completion-auto-help} is set to @code{nil}, the completion commands never display the completion list buffer; you must type === modified file 'doc/emacs/misc.texi' *** doc/emacs/misc.texi 2013-12-23 13:01:25 +0000 --- doc/emacs/misc.texi 2013-12-25 22:36:30 +0000 *************** in the shell buffer to submit the curren *** 677,696 **** @item @key{TAB} @kindex TAB @r{(Shell mode)} @findex completion-at-point Complete the command name or file name before point in the shell buffer (@code{completion-at-point}). This uses the usual Emacs completion rules (@pxref{Completion}), with the completion alternatives being file names, environment variable names, the shell command history, and history references (@pxref{History References}). ! ! @vindex shell-completion-fignore ! @vindex comint-completion-fignore ! The variable @code{shell-completion-fignore} specifies a list of file ! name extensions to ignore in Shell mode completion. The default ! setting is @code{nil}, but some users prefer @code{("~" "#" "%")} to ! ignore file names ending in @samp{~}, @samp{#} or @samp{%}. Other ! related Comint modes use the variable @code{comint-completion-fignore} ! instead. @item M-? @kindex M-? @r{(Shell mode)} --- 677,689 ---- @item @key{TAB} @kindex TAB @r{(Shell mode)} @findex completion-at-point + @cindex shell completion Complete the command name or file name before point in the shell buffer (@code{completion-at-point}). This uses the usual Emacs completion rules (@pxref{Completion}), with the completion alternatives being file names, environment variable names, the shell command history, and history references (@pxref{History References}). ! Also @xref{Shell Mode Completion Options}. @item M-? @kindex M-? @r{(Shell mode)} *************** value means to omit an input that is the *** 1161,1169 **** --- 1154,1176 ---- The default is @code{nil}, which means to store each input even if it is equal to the previous input. + @findex shell-pushd-tohome + @findex shell-pushd-dextract + @findex shell-pushd-dunique + You can configure the behavior of @samp{pushd}. Variables control + whether @samp{pushd} behaves like @samp{cd} if no argument is given + (@code{shell-pushd-tohome}), pop rather than rotate with a numeric + argument (@code{shell-pushd-dextract}), and only add directories to the + directory stack if they are not already on it + (@code{shell-pushd-dunique}). The values you choose should match the + underlying shell, of course. + + @unnumberedsubsubsec Shell Mode Completion Options + @anchor{Shell Mode Completion Options} @vindex comint-completion-addsuffix @vindex comint-completion-recexact @vindex comint-completion-autolist + @cindex shell completion Three variables customize file name completion. The variable @code{comint-completion-addsuffix} controls whether completion inserts a space or a slash to indicate a fully completed file or directory name *************** the possible completions whenever comple *** 1179,1194 **** If you set @code{shell-completion-execonly} to @code{nil}, it considers nonexecutable files as well. ! @findex shell-pushd-tohome ! @findex shell-pushd-dextract ! @findex shell-pushd-dunique ! You can configure the behavior of @samp{pushd}. Variables control ! whether @samp{pushd} behaves like @samp{cd} if no argument is given ! (@code{shell-pushd-tohome}), pop rather than rotate with a numeric ! argument (@code{shell-pushd-dextract}), and only add directories to the ! directory stack if they are not already on it ! (@code{shell-pushd-dunique}). The values you choose should match the ! underlying shell, of course. @node Terminal emulator @subsection Emacs Terminal Emulator --- 1186,1208 ---- If you set @code{shell-completion-execonly} to @code{nil}, it considers nonexecutable files as well. ! @vindex shell-completion-fignore ! @vindex comint-completion-fignore ! The variable @code{shell-completion-fignore} specifies a list of file ! name extensions to ignore in Shell mode completion. The default ! setting is @code{nil}, but some users prefer @code{("~" "#" "%")} to ! ignore file names ending in @samp{~}, @samp{#} or @samp{%}. Other ! related Comint modes use the variable @code{comint-completion-fignore} ! instead. ! ! @vindex shell-completion-cur-dir ! The variable @code{shell-completion-cur-dir} controls whether filenames from ! the current buffer's directory will also be used as potential commands. ! ! @findex shell-dynamic-complete-command ! Some implementation details of the shell command completion may also be found ! in the lisp documentation of the @code{shell-dynamic-complete-command} ! function. @node Terminal emulator @subsection Emacs Terminal Emulator === modified file 'etc/NEWS' *** etc/NEWS 2013-12-25 03:05:11 +0000 --- etc/NEWS 2013-12-25 23:09:58 +0000 *************** the variable `explicit-shell-file-name' *** 2943,2948 **** --- 2943,2954 ---- *** TAB is now bound to the standard `completion-at-point' command, which now implements the pcomplete rules for shell command completion. + --- + *** New customizable variable shell-completion-cur-dir, which controls + whether filenames from current directory will be found by + completion. Initialized to t on systems on which this is default + behavior. + ** SMTPmail *** SMTPmail now uses encrypted connections (via STARTTLS) by default === modified file 'lisp/ChangeLog' *** lisp/ChangeLog 2013-12-24 19:48:40 +0000 --- lisp/ChangeLog 2013-12-25 21:17:16 +0000 *************** *** 1,3 **** --- 1,9 ---- + 2013-12-25 Jarek Czekalski + + * shell.el (shell-completion-cur-dir): New variable to allow shell + completion to use filenames from current directory. + (shell--command-completion-data): Use it. + 2013-12-24 Fabián Ezequiel Gallina * progmodes/python.el (python-nav-beginning-of-statement): Speed === modified file 'lisp/shell.el' *** lisp/shell.el 2013-09-12 05:40:50 +0000 --- lisp/shell.el 2013-12-25 22:54:47 +0000 *************** Detecting executability of files may slo *** 211,216 **** --- 211,223 ---- :type 'boolean :group 'shell) + (defcustom shell-completion-cur-dir + (member system-type '(windows-nt ms-dos t)) + "Non-nil if completion should match filenames from the current buffer's + directory. Initialized to t on systems in which this behavior is a default." + :type 'boolean + :group 'shell) + (defcustom shell-popd-regexp "popd" "Regexp to match subshell commands equivalent to popd." :type 'regexp *************** searches `exec-path' (minus the trailing *** 1112,1119 **** candidates. Note that this may not be the same as the shell's idea of the path. ! Completion is dependent on the value of `shell-completion-execonly', plus ! those that effect file completion. Returns t if successful." (interactive) --- 1119,1127 ---- candidates. Note that this may not be the same as the shell's idea of the path. ! Completion is dependent on the value of `shell-completion-execonly', ! `shell-completion-fignore', `shell-completion-cur-dir', plus those that affect ! file completion. See Info node `Shell Mode Completion Options'. Returns t if successful." (interactive) *************** Returns t if successful." *** 1138,1144 **** (start (if (zerop (length filename)) (point) (match-beginning 0))) (end (if (zerop (length filename)) (point) (match-end 0))) (filenondir (file-name-nondirectory filename)) ! (path-dirs (cdr (reverse exec-path))) ;FIXME: Why `cdr'? (cwd (file-name-as-directory (expand-file-name default-directory))) (ignored-extensions (and comint-completion-fignore --- 1146,1155 ---- (start (if (zerop (length filename)) (point) (match-beginning 0))) (end (if (zerop (length filename)) (point) (match-end 0))) (filenondir (file-name-nondirectory filename)) ! ; why cdr? see `shell-dynamic-complete-command', however on Windows ! ; we have 3 library directories and this does not fully work ! (path-dirs (append (cdr (reverse exec-path)) ! (if shell-completion-cur-dir '(".")))) (cwd (file-name-as-directory (expand-file-name default-directory))) (ignored-extensions (and comint-completion-fignore === modified file 'src/ChangeLog' *** src/ChangeLog 2013-12-24 17:21:06 +0000 --- src/ChangeLog 2013-12-25 22:44:31 +0000 *************** *** 1,3 **** --- 1,7 ---- + 2013-12-25 Jarek Czekalski + + * callproc.c (Vexec_path): Documentation of the library path in it. + 2013-12-24 Eli Zaretskii * w32fns.c (Fw32_shell_execute): Ensure DOCUMENT is an absolute === modified file 'src/callproc.c' *** src/callproc.c 2013-12-18 20:36:50 +0000 --- src/callproc.c 2013-12-25 08:45:33 +0000 *************** default if SHELL is not set. */); *** 1686,1692 **** DEFVAR_LISP ("exec-path", Vexec_path, doc: /* List of directories to search programs to run in subprocesses. ! Each element is a string (directory name) or nil (try default directory). */); DEFVAR_LISP ("exec-suffixes", Vexec_suffixes, doc: /* List of suffixes to try to find executable file names. --- 1686,1696 ---- DEFVAR_LISP ("exec-path", Vexec_path, doc: /* List of directories to search programs to run in subprocesses. ! Each element is a string (directory name) or nil (try default directory). ! ! By default the last element of this list is Emacs library path. The ! last element is not always used, for example in shell completion ! (`shell-dynamic-complete-command'). */); DEFVAR_LISP ("exec-suffixes", Vexec_suffixes, doc: /* List of suffixes to try to find executable file names.