Hi Christian ! On 8月20日, 下午7时19分, Christian Brabandt <[email protected]> wrote: > Hi eliweiq001! > > On Fr, 20 Aug 2010, eliweiq001 wrote: > > > > > > > On 8月20日, 下午4时35分, Christian Brabandt <[email protected]> wrote: > > > Hi eliweiq001! > > > > > And besides, when I > > > > :call OpenLastModified(1) > > > > > there is an error: > > > > > Error detected while processing function OpenLastModified: > > > > Line 5: > > > > E684: list index out of range: -1 > > > > E15: Invalid expression: files[-1] > > > > What make you think, you were supposed to call it with the parameter 1? > > > The optionally parameter to that function is supposed to be a path. > > > Therefore the command :OpenLastModified was provided, that allows for > > > tabcompleting a directory optionally. > > > > regards, > > > Christian > > > Because I don't understand the function, I just copy it and use it. > > > When I type :call OpenL > > and press Tab, it will change to :call OpenLastModified( > > another Tab, it will change to :call OpenLastModified(1() > > one more Tab, it will be :call > > OpenLastModified(10() > > one more Tab, it will be :call > > OpenLastModified(100() > > one more Tab, it will be :call > > OpenLastModified(101( > > ...... > > > So I don't know what does it mean. > > > If I :call OpenLastModified() > > it will say that Undefined variable: a:1 ......... > > > If I put a directory to be the parameter, it will say Undefined > > variable too. > > > Such as :call OpenLastModified(D:\) in windows, it will say > > E121: Undefined variable: D: > > E116: Invalid arguments for function OpenLastModified > > > Then I try :call OpenLastModified(.\) , it will say > > E15: Invalid expression: .\) > > E116: Invalid arguments for function OpenLastModified > > I see. There was 1 small problem. Use this slightly changed version > (which only selects C-files): > > fun! OpenLastModified(...) > let path=(!empty(a:1) ? a:1 : getcwd() ) > let files=split(glob(path . '/*.c', 1), '\n') > call filter(files, '!isdirectory(v:val)') > call sort(files, "CompareLastModified") > if !empty(files) > return ":tabe " . files[-1] > else > return ":echoerr 'No files found'" > endif > endfun > > func! CompareLastModified(a,b) > return getftime(a:a) == getftime(a:b) ? 0 : getftime(a:a) > getftime > (a:b) ? 1 : -1 > endfunc > > com! -complete=dir -nargs=? EditLastModified :exe OpenLastModified(<q-args>) > > So please in the command prompt type :EditLastModified followed by > Carriage Return. This will open the last modified file from the current > working directory (basically the directory that :pwd returns). You can > however optionally open the last modified file from a different > directory. Therefore you type: > :EditLastModified followed by a space followed by a directory, e.g. D:\ > followed by a return, e.g: > :EditLastModified D:\ > When using the 2nd form, you can use your Tab key to complete a > directory. > > Sorry for the confusion. > > regards, > Christian
I want to ask you something else. :exe OpenLastModified(<q-args>) You see, OpenLastModified is a function, but, why we can only use :exe but not :call ? I've tried :call but it won't work. regards. eliweiq001 -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php
