Re: filename completion and filereadable

2006-08-15 Thread Yakov Lerner

On 8/15/06, Alexander 'boesi' Bösecke <[EMAIL PROTECTED]> wrote:

Hi

Am 09.08.2006 13:49:15 schrieb Alexander 'boesi' Bösecke:

Well all the discussion about single and double quoted didn't solve my
problem - the completion of a filename adds a \ before a space.

Try the following:

:let s = "g:\\CS\ Simple\\"
:echo s
g:\CS Simple

As you can see the additional \ is removed. I think the same happens in
the following, because it just works:

:e g:\CS\ Simple\run.pyw  " Here I've used file completion

But when using input(...), the \ isn't removed. And the problem is now,
that filereadable doesn't accept that.

So the question is, where is the bug?


The bug is in completion in the input() function.
Since filename is unlikely to begin with whitespace, you have a workaround:

  let fn = input('Mainfile: ', expand('%:p'), 'file')
  fn = substitute(fn, '\\ ', ' ', 'g')

Yakov


Re: filename completion and filereadable

2006-08-15 Thread Alexander 'boesi' Bösecke
Hi

Am 09.08.2006 13:49:15 schrieb Alexander 'boesi' Bösecke:

Well all the discussion about single and double quoted didn't solve my
problem - the completion of a filename adds a \ before a space.

Try the following:

:let s = "g:\\CS\ Simple\\"
:echo s
g:\CS Simple

As you can see the additional \ is removed. I think the same happens in
the following, because it just works:

:e g:\CS\ Simple\run.pyw  " Here I've used file completion

But when using input(...), the \ isn't removed. And the problem is now,
that filereadable doesn't accept that.

So the question is, where is the bug? 


cu boesi
-- 
 was ist rl?
 und muss man das wissen?
...der moment wo einem klar wird,
  dass man zuviel chattet...


Re: filename completion and filereadable

2006-08-10 Thread A.J.Mechelynck

Alexander 'boesi' Bösecke wrote:

Hi

Am 10.08.2006 16:02:54 schrieb Alan G Isaac:

On Thu, 10 Aug 2006, Matthew Winn apparently wrote: 

But "..." versus '...' is just as explicit.
Ah, that explains why the question keeps coming up on this 
list and never in a Python forum ... Or not?


In fact, apart from Python and XML I can't think of any 
languages that don't make a distinction between double and 
single quotes, as it's an extremely useful difference and 
it's a waste of a limited character set to ignore it. 

Hmm, "I guess you 'never need' nested quotes?"


As an additional note not especially related to ViM - with '...' and
"..." you have 2 kind of strings. But how do you express unicode-strings?
Use `...` or something like that? And what happens, when in the future
there will be a 4. string-type? With the syntax of python that's no
problem. 



cu boesi


What happens in the future when there's a 4th string type? The whole 
point of this argument is to show you that there's even no need for a 
3rd one.


If the script is in Unicode, I can enter any character into a 'raw' or 
"cooked" string, using digraphs, a keymap, or the method described under 
":help i_CTRL-V_digit". No problem. To describe, in a non-Unicode 
script, strings containing Unicode codepoints not available in the 
script's encoding, I would have to use a "cooked" string with \u or 
maybe \ in it, where every h is a nybble, or else (for 
one or a few particular codepoints) move them to a data item at the 
start of the script, using for instance 'let s:bom = "\uFEFF"' then use 
string concatenation elsewhere in the script. This only shows that when 
describing strings containing non-Latin characters, Latin1 is not the 
best encoding for the script (and BTW, the ":scriptencoding" command may 
come in handy if the script is neither in Latin1 nor in UTF-8 with BOM.)



Best regards,
Tony.


Re: filename completion and filereadable

2006-08-10 Thread A.J.Mechelynck

Alan G Isaac wrote:
On Thu, 10 Aug 2006, Matthew Winn apparently wrote: 

But "..." versus '...' is just as explicit.


Ah, that explains why the question keeps coming up on this 
list and never in a Python forum ... Or not?


In fact, apart from Python and XML I can't think of any 
languages that don't make a distinction between double and 
single quotes, as it's an extremely useful difference and 
it's a waste of a limited character set to ignore it. 


Hmm, "I guess you 'never need' nested quotes?"

In any case, I did not suggest changing the current quote
behavior, just adding an additional syntax.

Cheers,
Alan Isaac






No, in Vim v7, 'I don''t need nested quotes.' because a pair of single 
quotes within a single-quoted string means a single single-quote at that 
point in the resulting string. In pre-v7 Vim, I could have used string 
concatenation, which is less elegant, but works too.



Best regards,
Tony.


Re: filename completion and filereadable

2006-08-10 Thread Alexander 'boesi' Bösecke
Hi

Am 10.08.2006 16:02:54 schrieb Alan G Isaac:

> On Thu, 10 Aug 2006, Matthew Winn apparently wrote: 
> > But "..." versus '...' is just as explicit.
> 
> Ah, that explains why the question keeps coming up on this 
> list and never in a Python forum ... Or not?
> 
> > In fact, apart from Python and XML I can't think of any 
> > languages that don't make a distinction between double and 
> > single quotes, as it's an extremely useful difference and 
> > it's a waste of a limited character set to ignore it. 
> 
> Hmm, "I guess you 'never need' nested quotes?"

As an additional note not especially related to ViM - with '...' and
"..." you have 2 kind of strings. But how do you express unicode-strings?
Use `...` or something like that? And what happens, when in the future
there will be a 4. string-type? With the syntax of python that's no
problem. 


cu boesi
-- 
A Achkatz'l ofm Baam
des hot a schins Laam
braucht keen Pfenng Gald
un freit sich of dr Walt


Re[4]: filename completion and filereadable

2006-08-10 Thread Alan G Isaac
On Thu, 10 Aug 2006, Matthew Winn apparently wrote: 
> But "..." versus '...' is just as explicit.

Ah, that explains why the question keeps coming up on this 
list and never in a Python forum ... Or not?

> In fact, apart from Python and XML I can't think of any 
> languages that don't make a distinction between double and 
> single quotes, as it's an extremely useful difference and 
> it's a waste of a limited character set to ignore it. 

Hmm, "I guess you 'never need' nested quotes?"

In any case, I did not suggest changing the current quote
behavior, just adding an additional syntax.

Cheers,
Alan Isaac



Re: Re[2]: filename completion and filereadable

2006-08-10 Thread Matthew Winn
On Wed, 9 Aug 2006 23:03:12 -0400, Alan G Isaac <[EMAIL PROTECTED]>
wrote:

> On Thu, 10 Aug 2006, "A.J.Mechelynck" apparently wrote: 
> > What is "the raw string notation from Python" ? 
> > IMHO it would only create one additional type of string. We already have 
> > single-quoted 'raw' strings in Vim, yet many people constantly forget 
> > that double-quoted strings in Vim are "cooked". 
> 
> Yes, that is my point:
> Many people forget the difference between single and double 
> quoted strings. Indeed when reading vimscript the difference
> is not immediately obvious (easily forgettable), which is
> unfortunate.
> 
> Taking the Python approach that values explicitness,
> http://docs.python.org/ref/strings.html
> a raw string can be created
> r'like this' or r"like this".

But "..." versus '...' is just as explicit.  It's also something
shared by every Unix shell I've used, along with quite a few other
languages such as Perl.  In fact, apart from Python and XML I can't
think of any languages that don't make a distinction between double
and single quotes, as it's an extremely useful difference and it's
a waste of a limited character set to ignore it.

-- 
Matthew Winn


Re[2]: filename completion and filereadable

2006-08-09 Thread Alan G Isaac
On Thu, 10 Aug 2006, "A.J.Mechelynck" apparently wrote: 
>   :let q=r"like this" 

Yes, this would be parsed in a new way.
I wager this would bite very few
(since it is horrible style beyond belief).

Cheers,
Alan Isaac





Re: filename completion and filereadable

2006-08-09 Thread A.J.Mechelynck

Alan G Isaac wrote:
On Thu, 10 Aug 2006, "A.J.Mechelynck" apparently wrote: 
What is "the raw string notation from Python" ? 
IMHO it would only create one additional type of string. We already have 
single-quoted 'raw' strings in Vim, yet many people constantly forget 
that double-quoted strings in Vim are "cooked". 


Yes, that is my point:
Many people forget the difference between single and double 
quoted strings. Indeed when reading vimscript the difference

is not immediately obvious (easily forgettable), which is
unfortunate.

Taking the Python approach that values explicitness,
http://docs.python.org/ref/strings.html
a raw string can be created
r'like this' or r"like this".
The preceding 'r' is obviously for 'raw'.
Very explicit; unlikely ever to be forgotten;
and I think backwards compatible (i.e.,
ordinary single and double quoted strings
can remain what they are).

Cheers,
Alan Isaac






Dunno what Bram would think of your proposal, but I wouldn' bet a 
eurocent on it.


And what about

:let q=r"like this"

where r happens to be a variable? With current Vim syntax, it is legal 
(move r to q, the rest is a Vim comment). Similarly


:if q==r"like this"
:while q

Re[2]: filename completion and filereadable

2006-08-09 Thread Alan G Isaac
On Thu, 10 Aug 2006, "A.J.Mechelynck" apparently wrote: 
> What is "the raw string notation from Python" ? 
> IMHO it would only create one additional type of string. We already have 
> single-quoted 'raw' strings in Vim, yet many people constantly forget 
> that double-quoted strings in Vim are "cooked". 

Yes, that is my point:
Many people forget the difference between single and double 
quoted strings. Indeed when reading vimscript the difference
is not immediately obvious (easily forgettable), which is
unfortunate.

Taking the Python approach that values explicitness,
http://docs.python.org/ref/strings.html
a raw string can be created
r'like this' or r"like this".
The preceding 'r' is obviously for 'raw'.
Very explicit; unlikely ever to be forgotten;
and I think backwards compatible (i.e.,
ordinary single and double quoted strings
can remain what they are).

Cheers,
Alan Isaac




Re: filename completion and filereadable

2006-08-09 Thread A.J.Mechelynck

Alan G Isaac wrote:
Am 09.08.2006 14:08:04 schrieb Yakov Lerner: 
Looks like an input() bug to me. 


On 8/9/06, Alexander 'boesi' Bösecke <[EMAIL PROTECTED]> wrote: 
To me it looks even more strange. I've tested a bit more.  
:echo filereadable("G:\Projekte\CS Simple\run.pyw") 


On Wed, 9 Aug 2006, Yakov Lerner apparently wrote: 
Use single quotes, where backslash is not treated specially. 
Otherwize "..\r..." will be treated as CR char, "...\t..." as 
tab char etc, which is not what you want. 


Since this is stumbled over so often,
I have an enhancement request:
allow raw strings to be created
with the raw string notation from Python.
This would be backwards compatible, I believe.

Cheers,
Alan Isaac








What is "the raw string notation from Python" ?

IMHO it would only create one additional type of string. We already have 
single-quoted 'raw' strings in Vim, yet many people constantly forget 
that double-quoted strings in Vim are "cooked".



Best regards,
Tony.


Re[2]: filename completion and filereadable

2006-08-09 Thread Alan G Isaac
>> Am 09.08.2006 14:08:04 schrieb Yakov Lerner: 
>>> Looks like an input() bug to me. 

> On 8/9/06, Alexander 'boesi' Bösecke <[EMAIL PROTECTED]> wrote: 
>> To me it looks even more strange. I've tested a bit more.  
>> :echo filereadable("G:\Projekte\CS Simple\run.pyw") 

On Wed, 9 Aug 2006, Yakov Lerner apparently wrote: 
> Use single quotes, where backslash is not treated specially. 
> Otherwize "..\r..." will be treated as CR char, "...\t..." as 
> tab char etc, which is not what you want. 

Since this is stumbled over so often,
I have an enhancement request:
allow raw strings to be created
with the raw string notation from Python.
This would be backwards compatible, I believe.

Cheers,
Alan Isaac





Re: filename completion and filereadable

2006-08-09 Thread Alexander 'boesi' Bösecke
Hi

Am 09.08.2006 15:16:08 schrieb Yakov Lerner:

> Use single quotes, where backslash is not treated specially.
> Otherwize "..\r..." will be treated as CR char, "...\t..." as
> tab char etc, which is not what you want.

Umm sorry I always forgot the difference between single and double
quoted. Python does not have this... *G*

But
:e G:\Projekte\CS\ Simple\run.pyw
This works! So the behaviour of ViM is a bit inconsistent, isn't it?
Either file-completion should not add the \ or filereadable (and other
functions) should accept it.


cu boesi
-- 
 was ist rl?
 und muss man das wissen?
...der moment wo einem klar wird,
  dass man zuviel chattet...


Re: filename completion and filereadable

2006-08-09 Thread Yakov Lerner

On 8/9/06, Alexander 'boesi' Bösecke <[EMAIL PROTECTED]> wrote:

Hi

Am 09.08.2006 14:08:04 schrieb Yakov Lerner:

> Looks like an input() bug to me.

To me it looks even more strange. I've tested a bit more.

:echo filereadable("G:\Projekte\CS Simple\run.pyw")


Use single quotes, where backslash is not treated specially.
Otherwize "..\r..." will be treated as CR char, "...\t..." as
tab char etc, which is not what you want.

Yakov


Re: filename completion and filereadable

2006-08-09 Thread Alexander 'boesi' Bösecke
Hi

Am 09.08.2006 14:08:04 schrieb Yakov Lerner:

> Looks like an input() bug to me.

To me it looks even more strange. I've tested a bit more.

:echo filereadable("G:\Projekte\CS Simple\run.pyw")
:echo filereadable("G:\Projekte\CS\ Simple\run.pyw")
returns 0

:echo filereadable("G:\\Projekte\\CS Simple\\run.pyw")
:echo filereadable("G:\\Projekte\\CS\ Simple\\run.pyw")
:echo filereadable("G:/Projekte/CS Simple/run.pyw")
returns 1

In my script versions 1, 3 and 5 work. So there filereadable has a
problem with the quoted space. And in command mode the unqouted
backslash is the problem.


Here is the function from my script:
---snip---
function! s:SetMainScript()
  if s:mainfile == ""
let fnInput = expand('%:p')
  else
let fnInput = s:mainfile
  endif
  call inputsave()
  let fn = input('Mainfile: ', fnInput, 'file')
  call inputrestore()
  " input precedes  with \, but filereadable does not like that
  " let fn = substitute(fn, " ", " ", "g")
  if filereadable(fn) == 1
let s:mainfile = fn
let s:ExeDir = fnamemodify(fn, ':p:h')
echo s:mainfile . ' set as the starting program.'
  else
echoerr fn . ' is not readable'
  endif
endfunction
---snap---


cu boesi
-- 

...schlafen ist sowieso ungesund...
   .-==Police Academy I==-.


Re: filename completion and filereadable

2006-08-09 Thread Yakov Lerner

On 8/9/06, Alexander 'boesi' Bösecke <[EMAIL PROTECTED]> wrote:

Hi

I'm using
let fn = input('Mainfile: ', expand('%:p'), 'file')
to ask for a filename. When I press Tab to complete the filename, a
""will be replaced by a "\". So "G:\Projekte\CS
Simple\run.pyw" becomes "G:\Projekte\CS\ Simple\run.pyw". When I check
this filename with filereadable, it returns False. But when the filename
is "G:\Projekte\CS Simple\run.pyw" (ie. not using completion),
filereadable returns True.

Well I could modify the filename with
let fn = substitute(fn, " ", " ", "g")
before calling filereadable. But I think this can not be the right way.

So where is the error - is it me, is it input or is it filereadable?


Looks like an input() bug to me. Confirmed in Linux for filenames
containing spaces:
 :cd /tmp
 :!touch "a b"
 :let x=input("file->","","file")
Enter: 'a', space, 'b' , press Tab. Input turns into 'a\ b' and after
Enter, variable contains 4 chars 'a\ b'

Yakov


filename completion and filereadable

2006-08-09 Thread Alexander 'boesi' Bösecke
Hi

I'm using 
let fn = input('Mainfile: ', expand('%:p'), 'file')
to ask for a filename. When I press Tab to complete the filename, a
""will be replaced by a "\". So "G:\Projekte\CS
Simple\run.pyw" becomes "G:\Projekte\CS\ Simple\run.pyw". When I check
this filename with filereadable, it returns False. But when the filename
is "G:\Projekte\CS Simple\run.pyw" (ie. not using completion), 
filereadable returns True.

Well I could modify the filename with 
let fn = substitute(fn, " ", " ", "g")
before calling filereadable. But I think this can not be the right way.

So where is the error - is it me, is it input or is it filereadable?


thanks and cu boesi

-- 
Wenn de Lüch net waer un dr Neid
gäbs lauter glückliche Leid
Uhne Lüch un Neid = ganz gewiß
wär uf dr Ard is Paradies