From: Jarek Czekalski <jarekczek@poczta.onet.pl>
To: 15461@debbugs.gnu.org
Subject: bug#15461: 24.3; [PATCH] exec-path on ms windows should contain current directory
Date: Thu, 26 Dec 2013 00:14:47 +0100 [thread overview]
Message-ID: <52BB66E7.2060302@poczta.onet.pl> (raw)
In-Reply-To: <5242E42A.4050109@poczta.onet.pl>
[-- Attachment #1: Type: text/plain, Size: 2041 bytes --]
I am attaching a patch to fix this thing. The change is very small, but
when documenting it, I discovered some inconsistencies in the manual
regarding shell completion options. I did my best to fix them. Now the
documentation changes are bigger than the functional change.
Below I pointed several things that may need attention:
- Whether such broad changes in manual may be done together with a lisp
change (new variable)
- Whether an unnumbered subsubsection Shell Mode Completion Options in
Shell Mode Options is a good idea
- Whether anchors can be used, because our info viewer does not follow
them correctly
- Whether this new variable may be introduced despite the feature freeze
- Whether a new position in concept index (shell completion) is fine
Suggested commit message:
Introduce a variable shell-completion-cur-dir and document it.
Document a related detail in exec-path variable.
Add some consistency in the documentation of completion in the manual:
- add a link from Completion section to Shell Mode,
- move documentation of shell-completion-fignore from Shell Mode to Shell
Mode Options,
- group Shell Mode Completion Options into a new unnumbered subsubsection.
FIXME: anchors used in this commit currently do not work correctly in Emacs
info viewer, however work correctly in Linux info viewer, so this must be
a bug in our info viewer.
* lisp/shell.el (shell-completion-cur-dir): New variable to allow shell
completion to use filenames from current directory.
(shell--command-completion-data): Use it.
* src/callproc.c (Vexec_path): Documentation of the library path in it.
* doc/mini.texi (Completion Options): Add a link to Shell Mode
Completion
Options.
* doc/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.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: complete_cur_dir_1_0.diff --]
[-- Type: text/x-diff; name="complete_cur_dir_1_0.diff", Size: 11080 bytes --]
=== 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 <jarekczek@poczta.onet.pl>
+
+ * 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 <xfq.free@gmail.com>
* 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 <jarekczek@poczta.onet.pl>
+
+ * 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 <fgallina@gnu.org>
* 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 <jarekczek@poczta.onet.pl>
+
+ * callproc.c (Vexec_path): Documentation of the library path in it.
+
2013-12-24 Eli Zaretskii <eliz@gnu.org>
* 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.
next prev parent reply other threads:[~2013-12-25 23:14 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-25 13:24 bug#15461: 24.3; exec-path on ms windows should contain current directory Jarek Czekalski
2013-09-25 15:48 ` Eli Zaretskii
2013-09-26 17:23 ` bug#15461: why do I need it Jarek Czekalski
2013-09-26 17:59 ` Eli Zaretskii
2013-09-26 20:39 ` Stefan Monnier
2013-09-26 20:40 ` bug#15461: answer Jarek Czekalski
2013-12-15 20:32 ` bug#15461: 24.3; exec-path on ms windows should contain current directory Jarek Czekalski
2013-12-15 21:16 ` Eli Zaretskii
2013-12-16 8:06 ` Jarek Czekalski
2013-12-16 16:45 ` Eli Zaretskii
2013-12-18 8:15 ` Jarek Czekalski
2013-12-25 23:14 ` Jarek Czekalski [this message]
2013-12-26 16:23 ` bug#15461: 24.3; [PATCH] " Eli Zaretskii
2013-12-26 22:27 ` Jarek Czekalski
2013-12-26 23:22 ` Juanma Barranquero
2013-12-27 8:19 ` Eli Zaretskii
2013-12-27 21:02 ` Jarek Czekalski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52BB66E7.2060302@poczta.onet.pl \
--to=jarekczek@poczta.onet.pl \
--cc=15461@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).