Created
January 6, 2012 05:21
-
-
Save ZyX-I/1569146 to your computer and use it in GitHub Desktop.
Test of various ways to get buffer contents
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
FILENAME="$1" \ | |
vim -u NONE -N -S readfile-test.vim --cmd 'let AddFileName=$FILENAME' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let g:max=20 | |
let g:fname=AddFileName | |
let g:reference=join(readfile(g:fname, 'b'), "\n") | |
function Diff(tmp, reference) | |
if &modified | |
tabnew | |
endif | |
let e1=1 | |
if a:tmp[-1:] isnot# "\n" | |
let e1=0 | |
endif | |
let e2=1 | |
if a:reference[-1:] isnot# "\n" | |
let e2=0 | |
endif | |
if e1 != e2 | |
if a:tmp[:-1-e1] is# a:reference[:-1-e2] | |
echom "Only end of line differs" | |
return | |
else | |
echom "End of line differs" | |
endif | |
endif | |
call setline(1, split(a:tmp, "\n", 1)) | |
diffthis | |
vertical new | |
call setline(1, split(a:reference, "\n", 1)) | |
file `=expand("<sfile>")` | |
diffthis | |
endfunction | |
command -nargs=0 Fin if !i | if tmp isnot# g:reference | call Diff(tmp, g:reference) | endif | endif | unlet tmp | let i+=1 | |
command -nargs=1 Test let start=reltime() | call <args>() | echohl MoreMsg | echom <q-args>.': '.reltimestr(reltime(start)) | echohl None | |
function Python3() | |
py3 import vim | |
let i=0 | |
while i < g:max | |
py3 fd=open(vim.eval("g:fname"), "rb") | |
py3 vim.eval(str(b"extend(l:, {'tmp': '"+(fd.read().replace(b"'", b"''"))+b"'})", "utf-8")) | |
py3 fd.close() | |
Fin | |
endwhile | |
endfunction | |
function Python2() | |
python import vim | |
let i=0 | |
while i < g:max | |
python fd=open(vim.eval("g:fname"), "rb") | |
python vim.eval("extend(l:, {'tmp': '"+(fd.read().replace("'", "''"))+"'})") | |
python fd.close() | |
Fin | |
endwhile | |
endfunction | |
function Python2_bindeval() | |
python import vim | |
let i=0 | |
while i < g:max | |
python fd=open(vim.eval("g:fname"), "rb") | |
python vim.bindeval('l:')['tmp']=fd.read() | |
python fd.close() | |
Fin | |
endwhile | |
endfunction | |
function Python3_bindeval() | |
py3 import vim | |
let i=0 | |
while i < g:max | |
py3 fd=open(vim.eval("g:fname"), "rb") | |
py3 vim.bindeval('l:')['tmp']=fd.read() | |
py3 fd.close() | |
Fin | |
endwhile | |
endfunction | |
function Pyeval() | |
let i=0 | |
while i < g:max | |
let tmp=pyeval('open(vim.eval("g:fname"), "rb").read()') | |
Fin | |
endwhile | |
endfunction | |
function Py3eval() | |
let i=0 | |
while i < g:max | |
let tmp=py3eval('open(vim.eval("g:fname"), "rb").read()') | |
Fin | |
endwhile | |
endfunction | |
function Vim_readfile() | |
let i=0 | |
while i < g:max | |
let tmp=join(readfile(g:fname), "\n") | |
Fin | |
endwhile | |
endfunction | |
function Vim_readfile_binary() | |
let i=0 | |
while i < g:max | |
let tmp=join(readfile(g:fname, "b"), "\n") | |
Fin | |
endwhile | |
endfunction | |
function Vim_buf_getline() | |
let i=0 | |
while i < g:max | |
let savedei=&eventignore | |
set eventignore=all | |
execute "silent tab sview ".fnameescape(g:fname) | |
let tmp=join(getline(0, '$'), "\n") | |
bwipeout | |
let &eventignore=savedei | |
unlet savedei | |
Fin | |
endwhile | |
endfunction | |
function Vim_buf_normal_yank() | |
let i=0 | |
while i < g:max | |
let savedei=&eventignore | |
set eventignore=all | |
execute "silent tab sview ".fnameescape(g:fname) | |
let savedreg=@a | |
silent normal! gg"ayG | |
let tmp=@a | |
let @a=savedreg | |
bwipeout | |
let &eventignore=savedei | |
unlet savedei | |
Fin | |
endwhile | |
endfunction | |
function Vim_read_normal_yank() | |
let i=0 | |
while i < g:max | |
let savedei=&eventignore | |
set eventignore=all | |
execute "silent tabnew" | |
execute "silent read ".fnameescape(g:fname) | |
silent 1d _ | |
let savedreg=@a | |
silent normal! gg"ayG | |
let tmp=@a | |
let @a=savedreg | |
bwipeout! | |
let &eventignore=savedei | |
unlet savedei | |
Fin | |
endwhile | |
endfunction | |
function Vim_buf_yank() | |
let i=0 | |
while i < g:max | |
let savedei=&eventignore | |
set eventignore=all | |
execute "silent tab sview ".fnameescape(g:fname) | |
let savedreg=@a | |
silent %yank a | |
let tmp=@a | |
let @a=savedreg | |
bwipeout | |
let &eventignore=savedei | |
unlet savedei | |
Fin | |
endwhile | |
endfunction | |
function Vim_read_yank() | |
let i=0 | |
while i < g:max | |
let savedei=&eventignore | |
set eventignore=all | |
execute "silent tabnew" | |
execute "silent read ".fnameescape(g:fname) | |
silent 1d _ | |
let savedreg=@a | |
silent %yank a | |
let tmp=@a | |
let @a=savedreg | |
bwipeout! | |
let &eventignore=savedei | |
unlet savedei | |
Fin | |
endwhile | |
endfunction | |
function System_shelltemp() | |
let i=0 | |
set shelltemp | |
while i<g:max | |
let tmp=system("cat ".shellescape(g:fname)) | |
Fin | |
endwhile | |
endfunction | |
function System_noshelltemp() | |
let i=0 | |
set noshelltemp | |
while i<g:max | |
let tmp=system("cat ".shellescape(g:fname)) | |
Fin | |
endwhile | |
endfunction | |
profile start lprofile | |
profile func * | |
if has('python3') | |
Test Python3 | |
Test Python3_bindeval | |
Test Py3eval | |
endif | |
if has('python') | |
Test Python2 | |
Test Python2_bindeval | |
Test Pyeval | |
endif | |
Test Vim_readfile | |
Test Vim_readfile_binary | |
Test Vim_buf_getline | |
Test Vim_buf_normal_yank | |
Test Vim_read_normal_yank | |
Test Vim_buf_yank | |
Test Vim_read_yank | |
Test System_shelltemp | |
Test System_noshelltemp |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment