Hi Yegappan,
I'm trying to do as you said:
In the prompt for adding a file to the workspace, you have to enter
the filename.
If you are using Vim7, you can make the attached change to the workspace
plugin to get filename completion at this prompt. With this change, you can
complete directory and filenames at the prompt.
- Yegappan
***************
*** 521,527 ****
let file_names = a:args
if file_names == ''
! let file_names = input("Enter file name(s): ")
if file_names == ''
return
endif
--- 521,527 ----
let file_names = a:args
if file_names == ''
! let file_names = input("Enter file name(s): ", '', 'file')
if file_names == ''
return
endif
What I did:
I assume you mean line 521, 527.
But when I look at the workspace.vim file the line numbers doesn't line up
with it.
Therefor I copied the whole function Ws_Add_Files
It is from line number 483--556
" Ws_Add_Files
" Add one or more files to the current group in the workspace
function! s:Ws_Add_Files(args, append)
" Get the current group
let lnum = line('.')
let cmd = s:Ws_Get_Entry_Idx_By_Line('s:ws_entry_', lnum)
if cmd == ''
" Add the new files at the end of the workgroup
let prefix="s:ws_entry"
let idx=""
endif
exe cmd
if {prefix}{idx}_type == 'group' || {prefix}{idx}_type == 'workspace'
" Cursor is on a group name. Add the new file to this group
let prefix = prefix . idx . '_'
let idx = 0
endif
let file_names = a:args
if file_names == ''
" let file_names = input("Enter file name(s): ")
!let file_names = input("Enter file name(s): ", '', 'file')
if file_names == ''
return
endif
endif
let len = strlen(file_names)
let start = 0
let i = 0
while start != -1 && start < len
" Skip whitespace characters
if file_names[start] =~ '\s'
let start = matchend(file_names, '\s\+', start)
endif
if file_names[start] == "'"
" Single-quoted file name
let pat = "'[^']\\+'"
elseif file_names[start] == '"'
" Double-quoted file name
let pat = '"[^"]\+"'
else
" Unquoted filename
let pat = '.\{-}[^\\]\(\s\|$\)'
endif
" Extract one filename
let fnames = matchstr(file_names, pat, start)
let skip_pat = "['" . '"]\=\zs.\{-}\ze[' . "'" . '"]\=$'
let fnames = matchstr(fnames, skip_pat)
let start = matchend(file_names, pat, start)
if fnames != ''
let fnames = glob(fnames) . "\n"
while fnames != ''
let one_fname = strpart(fnames, 0, stridx(fnames, "\n"))
if a:append
call s:Ws_Add_File(prefix, {prefix}count, one_fname)
else
call s:Ws_Add_File(prefix, idx + i, one_fname)
endif
let i = i + 1
let fnames = strpart(fnames, stridx(fnames, "\n") + 1)
endwhile
endif
endwhile
call s:Ws_Refresh()
endfunction
When I do it, and try to add a file, it ends up with:
C:\Windows\system32\cmd.exe /c let file_names = input("Enter file name(s):
", '', 'file')
'let' is not recognized as an internal or external command, operable program
or batch file.
shell returned 1
Hit any key to close this window...
What am I doing wrong?
Best regards,
Eric
_________________________________________________________________
Don’t miss your chance to WIN 10 hours of private jet travel from Microsoft®
Office Live http://clk.atdmt.com/MRT/go/mcrssaub0540002499mrt/direct/01/