unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#18950: 24.4.51; Wrong type argument: stringp on completing an asterisk in eshell with pcomplete-cycle-completions disabled
@ 2014-11-05  5:27 Dmitry Gutov
  2015-01-15  4:12 ` bug#18950: [PATCH] " samer
  0 siblings, 1 reply; 4+ messages in thread
From: Dmitry Gutov @ 2014-11-05  5:27 UTC (permalink / raw)
  To: 18950

1. M-x eshell
2. (setq pcomplete-cycle-completions nil)
3. Type `*', press TAB.
4. See an error, like:

Debugger entered--Lisp error: (wrong-type-argument stringp ("Anki/" "Audiobooks/" "Desktop/" "Documents/" "Downloads/" ...))
  file-name-directory(("Anki/" "Audiobooks/" "Desktop/" "Documents/" "Downloads/" ...))
  (if (file-name-directory filename) (pcomplete-executables) (if (and (> (length filename) 0) (eq (aref filename 0) eshell-explicit-command-char)) (setq filename (substring filename 1) pcomplete-stub filename glob-name t)) (let* ((paths (eshell-parse-colon-path eshell-path-env)) (cwd (file-name-as-directory (expand-file-name default-directory))) (path "") (comps-in-path nil) (file "") (filepath "") (completions nil)) (while paths (setq path (file-name-as-directory (expand-file-name (or (car paths) "."))) comps-in-path (and (file-accessible-directory-p path) (file-name-all-completions filename path))) (while comps-in-path (setq file (car comps-in-path) filepath (concat path file)) (if (and (not (member file completions)) (or (string-equal path cwd) (not ...)) (file-executable-p filepath)) (setq completions (cons file completions))) (setq comps-in-path (cdr comps-in-path))) (setq paths (cdr paths))) (pcomplete-uniqify-list (if glob-name completions (setq completions (append (and (eshell-using-module ...) (funcall ... filename)) (eshell-winnow-list (mapcar ... ...) nil (quote ...)) completions)) (append (and (or eshell-show-lisp-completions (and eshell-show-lisp-alternatives ...)) (all-completions filename obarray (quote functionp))) completions)))))
  (let ((filename (pcomplete-arg)) glob-name) (if (file-name-directory filename) (pcomplete-executables) (if (and (> (length filename) 0) (eq (aref filename 0) eshell-explicit-command-char)) (setq filename (substring filename 1) pcomplete-stub filename glob-name t)) (let* ((paths (eshell-parse-colon-path eshell-path-env)) (cwd (file-name-as-directory (expand-file-name default-directory))) (path "") (comps-in-path nil) (file "") (filepath "") (completions nil)) (while paths (setq path (file-name-as-directory (expand-file-name (or ... "."))) comps-in-path (and (file-accessible-directory-p path) (file-name-all-completions filename path))) (while comps-in-path (setq file (car comps-in-path) filepath (concat path file)) (if (and (not ...) (or ... ...) (file-executable-p filepath)) (setq completions (cons file completions))) (setq comps-in-path (cdr comps-in-path))) (setq paths (cdr paths))) (pcomplete-uniqify-list (if glob-name completions (setq completions (append (and ... ...) (eshell-winnow-list ... nil ...) completions)) (append (and (or eshell-show-lisp-completions ...) (all-completions filename obarray ...)) completions))))))
  eshell-complete-commands-list()
  ...

5. (setq pcomplete-cycle-completions t) -> and it works fine again.

In GNU Emacs 24.4.51.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.8)
 of 2014-11-03 on axl
Repository revision: 117658 michael.albinus@gmx.de-20141102112256-548dk6al63uy76uh
Windowing system distributor `The X.Org Foundation', version 11.0.11501000
System Description:	Ubuntu 14.04.1 LTS





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#18950: [PATCH] 24.4.51; Wrong type argument: stringp on completing an asterisk in eshell with pcomplete-cycle-completions disabled
  2014-11-05  5:27 bug#18950: 24.4.51; Wrong type argument: stringp on completing an asterisk in eshell with pcomplete-cycle-completions disabled Dmitry Gutov
@ 2015-01-15  4:12 ` samer
  2015-01-15 15:06   ` Stefan Monnier
  0 siblings, 1 reply; 4+ messages in thread
From: samer @ 2015-01-15  4:12 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 18950

Hi,

The function pcomplete-parse-arguments wasn't completing the input when
pcomplete-cycle-completions was nil, and so pcomplete would pass control
to one of eshell's completion functions, which would blow up when given
a list by pcomplete-arg (which is strange, because it's valid for
pcomplete-arg to return a list). But there is no reason for
pcomplete-parse-arguments to care about whether the user wants to cycle
completions, as only really matters in pcomplete-stub. The following
patch fixes the bug by making pcomplete-parse-arguments not care about
the value of pcomplete-cycle-completions.

Best,
Samer

Changes from HEAD~1 to working tree
2 files changed, 6 insertions(+), 2 deletions(-)
  lisp/ChangeLog    |    5 +++++
  lisp/pcomplete.el |    3 +--

	Modified   lisp/ChangeLog
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f413526..c904e03 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-15  Samer Masterson  <samer@samertm.com>
+
+	* pcomplete.el (pcomplete-parse-arguments): Parse arguments
+	regardless of pcomplete-cycle-completions's value. (bug#18950)
+
  2015-01-04  Dmitry Gutov  <dgutov@yandex.ru>

  	Add mouse interaction to xref.
	Modified   lisp/pcomplete.el
diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el
index 17327ea..7bcf2c1 100644
--- a/lisp/pcomplete.el
+++ b/lisp/pcomplete.el
@@ -755,8 +755,7 @@ this is `comint-dynamic-complete-functions'."
  	    pcomplete-index 0
  	    pcomplete-stub (pcomplete-arg 'last))
        (let ((begin (pcomplete-begin 'last)))
-	(if (and pcomplete-cycle-completions
-		 (listp pcomplete-stub) ;??
+	(if (and (listp pcomplete-stub) ;??
  		 (not pcomplete-expand-only-p))
  	    (let* ((completions pcomplete-stub) ;??
  		   (common-stub (car completions))






^ permalink raw reply related	[flat|nested] 4+ messages in thread

* bug#18950: [PATCH] 24.4.51; Wrong type argument: stringp on completing an asterisk in eshell with pcomplete-cycle-completions disabled
  2015-01-15  4:12 ` bug#18950: [PATCH] " samer
@ 2015-01-15 15:06   ` Stefan Monnier
  2015-01-16  2:36     ` Dmitry Gutov
  0 siblings, 1 reply; 4+ messages in thread
From: Stefan Monnier @ 2015-01-15 15:06 UTC (permalink / raw)
  To: samer; +Cc: 18950, Dmitry Gutov

> -	(if (and pcomplete-cycle-completions
> -		 (listp pcomplete-stub) ;??
> +	(if (and (listp pcomplete-stub) ;??

I haven't had time to look more closely at the bug and the code, but
if this indeed works, then it looks like a good change.


        Stefan





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#18950: [PATCH] 24.4.51; Wrong type argument: stringp on completing an asterisk in eshell with pcomplete-cycle-completions disabled
  2015-01-15 15:06   ` Stefan Monnier
@ 2015-01-16  2:36     ` Dmitry Gutov
  0 siblings, 0 replies; 4+ messages in thread
From: Dmitry Gutov @ 2015-01-16  2:36 UTC (permalink / raw)
  To: Stefan Monnier, samer; +Cc: 18950-done

On 01/15/2015 06:06 PM, Stefan Monnier wrote:
>> -	(if (and pcomplete-cycle-completions
>> -		 (listp pcomplete-stub) ;??
>> +	(if (and (listp pcomplete-stub) ;??
>
> I haven't had time to look more closely at the bug and the code, but
> if this indeed works, then it looks like a good change.

It does. Installed and marked as "tiny change".

Thanks, Samer!





^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-01-16  2:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-05  5:27 bug#18950: 24.4.51; Wrong type argument: stringp on completing an asterisk in eshell with pcomplete-cycle-completions disabled Dmitry Gutov
2015-01-15  4:12 ` bug#18950: [PATCH] " samer
2015-01-15 15:06   ` Stefan Monnier
2015-01-16  2:36     ` Dmitry Gutov

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).