On 14/07/09 05:31, Matt Wozniski wrote:
>
> On Mon, Jul 13, 2009 at 9:45 PM, Tony Mechelynck wrote:
>>
>> [moving from vim_dev to vim_use]
>> On 14/07/09 02:06, Toni Ruottu wrote:
>>>
>>> I'd be perfectly happy in doing :w! and getting the file saved under a
>>> random named (like the ones you proposed) under ~/.vim/rubbish/. If
>>> someone then wants to make more advanced user interfaces for exploring
>>> the rubbish folder, that is fine with me too, but I'd do fine without
>>> one. I don't mind tidying the files in that folder up every once in a
>>> while, as long as my work is not interrupted with irritating problems,
>>> like thinking of file names.
>>
>> Hm, after studying some parts of the help, I think it would be harder to
>> implement than I thought, but I still think it could be done in
>> vimscript. The question, however, is: is the game worth the candle?
>>
>> If you believe that thinking of a name when saving an unnamed buffer is
>> too "irritating" for you to "think" of, well...
>>
>> Hm, here's an idea. Put this in your vimrc (untested, and, lurkers: this
>> is for Unix/Linux, not Windows):
>
> Unless I miss something, the only part of this that is really
> Unix-specific is the :!mkdir - so, why not use :call mkdir(s:savedir,
> 'p') instead?

Because it wasn't at the top of my consciousnes -- but, ":help mkdir()" 
says "not available on all systems"; and the description uses Unix 
protection bits (as in numeric arguments to chmod). I suspect it doesn't 
work on Windows, or not the same way. Windows has "mkdir" (make 
directory, synonymous to "md") in command.com or cmd.exe but AFAIK it 
hasn't got "mkdir -p".

Also, on Windows I expect ~/.vim will be replaced by ~/vimfiles, even on 
LFN systems where an initial period would be possible. OK, you could 
change that easily by "if has('unix')... else..." but as I said, this is 
a quickly-slopped-up example which can be made better.

>
>> let s:savedir = '~/.vim/rubbish'
>> while !isdirectory(s:savedir)
>>      exe '!mkdir -p' s:savedir
>>      if v:shell_error
>>          echomsg 'Cannot create' s:savedir
>>          s:savedir = input('Type another path to use: ', '', 'dir')
>>      endif
>> endwhile
>> command -nargs=0 -bar -bang -complete=file -range=% W
>>      \<line1>,<line2>call s:Write(<q-bang>)
>> function s:Write(bang) range
>>      try
>>          exe a:firstline ',' a:lastline 'w' a:bang
>>      catch
>>          exe 'w' savedir . '/' . localtime() . '.txt'
>>      endtry
>> endfunction
>
> ~Matt



Best regards,
Tony.
-- 
Psychotherapy is the theory that the patient will probably get well
anyhow and is certainly a damn fool.
                -- H. L. Mencken



--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Reply via email to