On Thu, Aug 21, at 12:26 Robert Webb wrote:
>
> I could also use readfile(), which would probably suffice, but is this
> more or less efficient than loading a file into a vim buffer. I will
> still need to read the whole file either way since I don't know how
> far through the file I will need to look.
>
> Now if there was a searchfile() function, that would be handy :-)
> Eg, pass it a file name and a pattern to search for, and maybe the
> maximum number of matches, and a list of matching lines is returned.
> That way if the match is found early and you only ask for one, then
> vim wouldn't bother reading the rest of the file.
Here is a result of your thoughts.
function! Searchfile(file, pattern, ...)
if exists("a:1")
let matchlimit = a:1
else
let matchlimit = 1
endif
let list = []
let matches = 0
for line in readfile(a:file)
if match(line, a:pattern) != -1
call add(list, line)
let matches += 1
if matches == matchlimit
break
endif
endif
endfor
return list
endfunction
> Rob.
Regards,
Ag.
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---