* bug#7779: Miserable widget completion for type 'directory on w32
@ 2011-01-03 21:00 Lennart Borgman
2011-07-03 18:44 ` Juanma Barranquero
2019-08-28 15:47 ` Mauro Aranda
0 siblings, 2 replies; 14+ messages in thread
From: Lennart Borgman @ 2011-01-03 21:00 UTC (permalink / raw)
To: 7779
Suppose you have a defcustom with a ":type 'directory". Then you are
supposed to be able to use widget-complete to make it easier to fill
in this list. There are (at least) two problems with this on w32:
- The completion is case sensitive. However the file system is case
insensitive on w32.
- widget-complete is bound to M-TAB. This is by default bound to
Alt-Tab which is not available to applications on w32.
GNU Emacs 24.0.50.1 (i386-mingw-nt5.1.2600) of 2010-12-29 on LENNART-69DE564
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-01-03 21:00 bug#7779: Miserable widget completion for type 'directory on w32 Lennart Borgman
@ 2011-07-03 18:44 ` Juanma Barranquero
2011-07-03 18:48 ` Lennart Borgman
2019-08-28 15:47 ` Mauro Aranda
1 sibling, 1 reply; 14+ messages in thread
From: Juanma Barranquero @ 2011-07-03 18:44 UTC (permalink / raw)
To: Lennart Borgman; +Cc: 7779
On Mon, Jan 3, 2011 at 22:00, Lennart Borgman <lennart.borgman@gmail.com> wrote:
> - The completion is case sensitive.
It is? Can you show a test case?
> - widget-complete is bound to M-TAB. This is by default bound to
> Alt-Tab which is not available to applications on w32.
But you can use <ESC><TAB>, like you yourself discuss in bug#8256.
Juanma
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-07-03 18:44 ` Juanma Barranquero
@ 2011-07-03 18:48 ` Lennart Borgman
2011-07-03 18:52 ` Juanma Barranquero
0 siblings, 1 reply; 14+ messages in thread
From: Lennart Borgman @ 2011-07-03 18:48 UTC (permalink / raw)
To: Juanma Barranquero; +Cc: 7779
On Sun, Jul 3, 2011 at 20:44, Juanma Barranquero <lekktu@gmail.com> wrote:
> On Mon, Jan 3, 2011 at 22:00, Lennart Borgman <lennart.borgman@gmail.com> wrote:
>
>> - The completion is case sensitive.
>
> It is? Can you show a test case?
>
>> - widget-complete is bound to M-TAB. This is by default bound to
>> Alt-Tab which is not available to applications on w32.
>
> But you can use <ESC><TAB>, like you yourself discuss in bug#8256.
Didn't I say that you can't do that? If you use some vi emulation like Viper.
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-07-03 18:48 ` Lennart Borgman
@ 2011-07-03 18:52 ` Juanma Barranquero
2011-07-03 22:31 ` Lennart Borgman
0 siblings, 1 reply; 14+ messages in thread
From: Juanma Barranquero @ 2011-07-03 18:52 UTC (permalink / raw)
To: Lennart Borgman; +Cc: 7779
On Sun, Jul 3, 2011 at 20:48, Lennart Borgman <lennart.borgman@gmail.com> wrote:
>> It is? Can you show a test case?
>>
>>> - widget-complete is bound to M-TAB. This is by default bound to
>>> Alt-Tab which is not available to applications on w32.
>>
>> But you can use <ESC><TAB>, like you yourself discuss in bug#8256.
>
> Didn't I say that you can't do that? If you use some vi emulation like Viper.
Could you answer both questions, not only the second one?
As for that, if M-TAB cannot be reliably used on Windows, and ESC-TAB
cannot be used inside Viper, please propose an alternate binding for
using inside Viper.
Juanma
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-07-03 18:52 ` Juanma Barranquero
@ 2011-07-03 22:31 ` Lennart Borgman
2011-07-03 22:42 ` Juanma Barranquero
0 siblings, 1 reply; 14+ messages in thread
From: Lennart Borgman @ 2011-07-03 22:31 UTC (permalink / raw)
To: Juanma Barranquero; +Cc: 7779
On Sun, Jul 3, 2011 at 20:52, Juanma Barranquero <lekktu@gmail.com> wrote:
> On Sun, Jul 3, 2011 at 20:48, Lennart Borgman <lennart.borgman@gmail.com> wrote:
>
>>> It is? Can you show a test case?
>>>
>>>> - widget-complete is bound to M-TAB. This is by default bound to
>>>> Alt-Tab which is not available to applications on w32.
>>>
>>> But you can use <ESC><TAB>, like you yourself discuss in bug#8256.
>>
>> Didn't I say that you can't do that? If you use some vi emulation like Viper.
>
> Could you answer both questions, not only the second one?
>
> As for that, if M-TAB cannot be reliably used on Windows, and ESC-TAB
> cannot be used inside Viper, please propose an alternate binding for
> using inside Viper.
That might be a good suggestion, but I am not sure.
As everyone here no vi has two main states: input and command. Beside
that there are the normal Emacs key sequences states during input of
key sequences. (The clash between these states is why ESC-TAB can not
be used.)
For the "command" state the g key is unused. Using it directly would
be a waste, but a sequence beginning with g might be good.
But I am not very sure of the value of it since using it would require
switching to "command" state first. And I think you are most likely to
be in "input" mode if you want to do completion.
ESC is the only "control char" that I am using of those vi recognize
as its own. (The other are less important.)
I suggest finding a key sequence in Emacs that does not use M (Alt).
TAB by itself seems to be the favorite on EmacsWiki. Maybe use two
fast TABs for it by default. And have C-RET as backup?
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-07-03 22:31 ` Lennart Borgman
@ 2011-07-03 22:42 ` Juanma Barranquero
2011-07-03 22:56 ` Lennart Borgman
0 siblings, 1 reply; 14+ messages in thread
From: Juanma Barranquero @ 2011-07-03 22:42 UTC (permalink / raw)
To: Lennart Borgman; +Cc: 7779
On Mon, Jul 4, 2011 at 00:31, Lennart Borgman <lennart.borgman@gmail.com> wrote:
> ESC is the only "control char" that I am using of those vi recognize
> as its own. (The other are less important.)
>
> I suggest finding a key sequence in Emacs that does not use M (Alt).
> TAB by itself seems to be the favorite on EmacsWiki. Maybe use two
> fast TABs for it by default. And have C-RET as backup?
Are you proposing changing the default binding? I don't think users
used to the current binding should be penalized for the needs of
Viper. If anything, an expert Viper user like you will surely know how
to integrate a new keybinding into Viper. It is possible to bind
shift-Esc to work from the input state?
And, you still haven't answered the other question: do you still get
case sensitive completion of directories?
--
Juanma
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-07-03 22:42 ` Juanma Barranquero
@ 2011-07-03 22:56 ` Lennart Borgman
2011-07-03 23:04 ` Juanma Barranquero
0 siblings, 1 reply; 14+ messages in thread
From: Lennart Borgman @ 2011-07-03 22:56 UTC (permalink / raw)
To: Juanma Barranquero; +Cc: 7779
On Mon, Jul 4, 2011 at 00:42, Juanma Barranquero <lekktu@gmail.com> wrote:
> On Mon, Jul 4, 2011 at 00:31, Lennart Borgman <lennart.borgman@gmail.com> wrote:
>
>> ESC is the only "control char" that I am using of those vi recognize
>> as its own. (The other are less important.)
>>
>> I suggest finding a key sequence in Emacs that does not use M (Alt).
>> TAB by itself seems to be the favorite on EmacsWiki. Maybe use two
>> fast TABs for it by default. And have C-RET as backup?
>
> Are you proposing changing the default binding? I don't think users
> used to the current binding should be penalized for the needs of
> Viper. If anything, an expert Viper user like you will surely know how
> to integrate a new keybinding into Viper. It is possible to bind
> shift-Esc to work from the input state?
I just tried these and they work (the states are called "vi" and
"insert" - my bad):
(define-key viper-vi-intercept-map [(shift escape)] (lambda ()
(interactive) (message "you pushed shift esc"))) ;; vi state
(define-key viper-insert-intercept-map [(shift escape)] (lambda ()
(interactive) (message "you pushed shift esc"))) ;; insert state
So S-ESC could be used with both default Emacs bindings and in Viper mode.
Yes, I was proposing a change, but I think this should be discussed
more. The main problem is that there are a lot of different
completions. (Something I tried to address experimentally in
tabkey2.el in nXhtml.)
> And, you still haven't answered the other question: do you still get
> case sensitive completion of directories?
Oh, sorry I missed that one. So you want me to test this with the
latest build? (BTW I see problems with my w32 build on Windows 7
64-bit. Should we perhaps provide 64-bit binaries? Can we?)
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-07-03 22:56 ` Lennart Borgman
@ 2011-07-03 23:04 ` Juanma Barranquero
2011-07-03 23:23 ` Lennart Borgman
0 siblings, 1 reply; 14+ messages in thread
From: Juanma Barranquero @ 2011-07-03 23:04 UTC (permalink / raw)
To: Lennart Borgman; +Cc: 7779
On Mon, Jul 4, 2011 at 00:56, Lennart Borgman <lennart.borgman@gmail.com> wrote:
> So S-ESC could be used with both default Emacs bindings and in Viper mode.
>
> Yes, I was proposing a change, but I think this should be discussed
> more.
OK, so we have a keybinding that you could use in Viper, and you want
to propose a change. Care to do that in emacs-devel? (I don't think it
will be accepted, but we'll be able to reach a consensus of what to do
with Viper, I hope).
> Oh, sorry I missed that one. So you want me to test this with the
> latest build?
Yes. *AND* provide a precise, step-by-step recipe, starting from
"emacs -Q" (with stock Emacs, not your patched version), and
explaining clearly what you do get and what do you expected to get.
> (BTW I see problems with my w32 build on Windows 7
> 64-bit.
I don't see problems with stock Emacs on Windows 7 64-bit. If you're
able to reproduce these problems with the standard Emacs, could you
please file bug reports for them? (Again: with recipes and clear
explanations, which you often overlook.)
> Should we perhaps provide 64-bit binaries? Can we?)
It woud be nice, yes, but so far as I know, no one is working on
building a 64-bit Windows Emacs. It isn't trivial, it's not just a
matter of using a 64-bit compiler. But you are welcome to download,
for example, the Twilight Dragon Media 64-bit build of GCC
(http://tdm-gcc.tdragon.net/) and try it.
Juanma
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-07-03 23:04 ` Juanma Barranquero
@ 2011-07-03 23:23 ` Lennart Borgman
2011-07-03 23:31 ` Juanma Barranquero
2011-07-04 1:35 ` Lennart Borgman
0 siblings, 2 replies; 14+ messages in thread
From: Lennart Borgman @ 2011-07-03 23:23 UTC (permalink / raw)
To: Juanma Barranquero; +Cc: 7779
On Mon, Jul 4, 2011 at 01:04, Juanma Barranquero <lekktu@gmail.com> wrote:
> On Mon, Jul 4, 2011 at 00:56, Lennart Borgman <lennart.borgman@gmail.com> wrote:
>
>> So S-ESC could be used with both default Emacs bindings and in Viper mode.
>>
>> Yes, I was proposing a change, but I think this should be discussed
>> more.
>
> OK, so we have a keybinding that you could use in Viper, and you want
> to propose a change. Care to do that in emacs-devel? (I don't think it
> will be accepted, but we'll be able to reach a consensus of what to do
> with Viper, I hope).
I can do that later. This binding (S-ESC) is trivial, but I do not
know the state of the completion functions now.
>> Oh, sorry I missed that one. So you want me to test this with the
>> latest build?
>
> Yes. *AND* provide a precise, step-by-step recipe, starting from
> "emacs -Q" (with stock Emacs, not your patched version), and
> explaining clearly what you do get and what do you expected to get.
I just have to find the binaries as I said in another thread ... ;-)
>> (BTW I see problems with my w32 build on Windows 7
>> 64-bit.
>
> I don't see problems with stock Emacs on Windows 7 64-bit. If you're
> able to reproduce these problems with the standard Emacs, could you
> please file bug reports for them? (Again: with recipes and clear
> explanations, which you often overlook.)
Might be a problem with the old 32-bit compiler I used that shows up.
>> Should we perhaps provide 64-bit binaries? Can we?)
>
> It woud be nice, yes, but so far as I know, no one is working on
> building a 64-bit Windows Emacs. It isn't trivial, it's not just a
> matter of using a 64-bit compiler. But you are welcome to download,
> for example, the Twilight Dragon Media 64-bit build of GCC
> (http://tdm-gcc.tdragon.net/) and try it.
Thanks. Have you tried it? What problems did you see?
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-07-03 23:23 ` Lennart Borgman
@ 2011-07-03 23:31 ` Juanma Barranquero
2011-07-04 1:35 ` Lennart Borgman
1 sibling, 0 replies; 14+ messages in thread
From: Juanma Barranquero @ 2011-07-03 23:31 UTC (permalink / raw)
To: Lennart Borgman; +Cc: 7779
On Mon, Jul 4, 2011 at 01:23, Lennart Borgman <lennart.borgman@gmail.com> wrote:
> I can do that later. This binding (S-ESC) is trivial, but I do not
> know the state of the completion functions now.
OK, thanks.
> I just have to find the binaries as I said in another thread ... ;-)
I just sent the info in the other thread.
> Have you tried it?
No.
Juanma
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-07-03 23:23 ` Lennart Borgman
2011-07-03 23:31 ` Juanma Barranquero
@ 2011-07-04 1:35 ` Lennart Borgman
2011-07-04 2:59 ` Juanma Barranquero
1 sibling, 1 reply; 14+ messages in thread
From: Lennart Borgman @ 2011-07-04 1:35 UTC (permalink / raw)
To: Juanma Barranquero; +Cc: 7779
>> Yes. *AND* provide a precise, step-by-step recipe, starting from
>> "emacs -Q" (with stock Emacs, not your patched version), and
>> explaining clearly what you do get and what do you expected to get.
I wrote before:
"- The completion is case sensitive. However the file system is case
insensitive on w32."
Testing now with downloaded binaries emacs-20110627-bin-i386.zip
completion behaves even more strange. Try this:
emacs -Q
M-x load-library RET eshell RET
M-x customize-option RET eshell-directory-name RET
Then enter "c:/" in the directory field and do
M-x widget-complete
I would expect that to return the directory names.
After this I tried "c:/E". I have directories started with "c:/E" and
"c:/e". I only got those with "c:/e" (and some other things that
should not match at all).
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-07-04 1:35 ` Lennart Borgman
@ 2011-07-04 2:59 ` Juanma Barranquero
0 siblings, 0 replies; 14+ messages in thread
From: Juanma Barranquero @ 2011-07-04 2:59 UTC (permalink / raw)
To: Lennart Borgman; +Cc: 7779
On Mon, Jul 4, 2011 at 03:35, Lennart Borgman <lennart.borgman@gmail.com> wrote:
> After this I tried "c:/E". I have directories started with "c:/E" and
> "c:/e". I only got those with "c:/e" (and some other things that
> should not match at all).
It's a bit weird, yes. Sometimes it is "completing" all E's *and* all
directories, sometimes it does it right (but always case sensitive).
Definitely a bug, I'd say.
Juanma
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2011-01-03 21:00 bug#7779: Miserable widget completion for type 'directory on w32 Lennart Borgman
2011-07-03 18:44 ` Juanma Barranquero
@ 2019-08-28 15:47 ` Mauro Aranda
2019-09-06 21:16 ` Noam Postavsky
1 sibling, 1 reply; 14+ messages in thread
From: Mauro Aranda @ 2019-08-28 15:47 UTC (permalink / raw)
To: 7779; +Cc: lennart.borgman
[-- Attachment #1.1: Type: text/plain, Size: 666 bytes --]
I can reproduce the bug in the latest master. On a Windows machine,
and starting with emacs -Q, I do:
M-x customize-option RET tutorial-directory
and try to complete with C-M-i inside the editable-field, with different
names,
and different cases.
It doesn't work, because the completion is made case sensitive, even though
read-file-name-completion-ignore-case is t.
Also, the completion is made not only for directory names,
but also for file names. This also happens on a GNU/Linux machine.
Since the 'file widget suffers from the first mentioned bug as well,
the attached patch tries to improve the completion for both of these
widgets.
Best regards,
Mauro.
[-- Attachment #1.2: Type: text/html, Size: 879 bytes --]
[-- Attachment #2: 0001-Improve-file-name-completion-in-file-and-directory-w.patch --]
[-- Type: text/x-patch, Size: 1686 bytes --]
From 24be0bc9760e16af80747b4bc06fd953e050be4f Mon Sep 17 00:00:00 2001
From: Mauro Aranda <maurooaranda@gmail.com>
Date: Wed, 28 Aug 2019 08:29:57 -0300
Subject: [PATCH] Improve file name completion in file and directory widgets
(Bug#7779)
* lisp/wid-edit.el (widget 'file, widget 'directory): Respect the option
read-file-name-completion-ignore-case.
(widget 'directory): Filter the file names, to only perform directory name
completion.
---
lisp/wid-edit.el | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 1ddc461..ad65ca6 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -3083,7 +3083,9 @@ widget-regexp-validate
(define-widget 'file 'string
"A file widget.
It reads a file name from an editable text field."
- :completions #'completion-file-name-table
+ :completions (completion-table-case-fold
+ #'completion-file-name-table
+ (not read-file-name-completion-ignore-case))
:prompt-value 'widget-file-prompt-value
:format "%{%t%}: %v"
;; Doesn't work well with terminating newline.
@@ -3118,6 +3120,11 @@ widget-file-prompt-value
(define-widget 'directory 'file
"A directory widget.
It reads a directory name from an editable text field."
+ :completions (apply-partially #'completion-table-with-predicate
+ (completion-table-case-fold
+ #'completion-file-name-table
+ (not read-file-name-completion-ignore-case))
+ #'directory-name-p 'strict)
:tag "Directory")
(defvar widget-symbol-prompt-value-history nil
--
2.7.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* bug#7779: Miserable widget completion for type 'directory on w32
2019-08-28 15:47 ` Mauro Aranda
@ 2019-09-06 21:16 ` Noam Postavsky
0 siblings, 0 replies; 14+ messages in thread
From: Noam Postavsky @ 2019-09-06 21:16 UTC (permalink / raw)
To: Mauro Aranda; +Cc: 7779, lennart.borgman
Mauro Aranda <maurooaranda@gmail.com> writes:
> Since the 'file widget suffers from the first mentioned bug as well,
> the attached patch tries to improve the completion for both of these
> widgets.
Pushed to master.
[1: 5b11751]: 2019-09-06 17:02:08 -0400
Improve file name completion in file and directory widgets (Bug#7779)
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=5b117511aa1b5c451773891b505a7098a67f9532
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2019-09-06 21:16 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-03 21:00 bug#7779: Miserable widget completion for type 'directory on w32 Lennart Borgman
2011-07-03 18:44 ` Juanma Barranquero
2011-07-03 18:48 ` Lennart Borgman
2011-07-03 18:52 ` Juanma Barranquero
2011-07-03 22:31 ` Lennart Borgman
2011-07-03 22:42 ` Juanma Barranquero
2011-07-03 22:56 ` Lennart Borgman
2011-07-03 23:04 ` Juanma Barranquero
2011-07-03 23:23 ` Lennart Borgman
2011-07-03 23:31 ` Juanma Barranquero
2011-07-04 1:35 ` Lennart Borgman
2011-07-04 2:59 ` Juanma Barranquero
2019-08-28 15:47 ` Mauro Aranda
2019-09-06 21:16 ` Noam Postavsky
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).