@@ -171,7 +171,7 @@ endfunction
171171
172172" Note: A colon in the file name has side effects on Windows due to NTFS Alternate Data Streams; avoid it.
173173let s: bufprefix = ' gist' . (has (' unix' ) ? ' :' : ' _' )
174- function ! s: GistList (gistls, page) abort
174+ function ! s: GistList (gistls, page, pagelimit ) abort
175175 if a: gistls == # ' -all'
176176 let url = g: gist_api_url .' gists/public'
177177 elseif get (g: , ' gist_show_privates' , 0 ) && a: gistls == # ' starred'
@@ -196,9 +196,11 @@ function! s:GistList(gistls, page) abort
196196 exec ' silent noautocmd split' s: bufprefix .a: gistls
197197 endif
198198 endif
199+ 200+ let url = url . ' ?per_page=' . a: pagelimit
199201 if a: page > 1
200202 let oldlines = getline (0 , line (' $' ))
201- let url = url . ' ? page=' . a: page
203+ let url = url . ' & page=' . a: page
202204 endif
203205
204206 setlocal modifiable
@@ -527,7 +529,7 @@ function! s:GistListAction(mode) abort
527529 return
528530 endif
529531 if line = ~# ' ^more\.\.\.$'
530- call s: GistList (b: gistls , b: page+ 1 )
532+ call s: GistList (b: gistls , b: page+ 1 , g: gist_per_page_limit )
531533 return
532534 endif
533535endfunction
@@ -761,6 +763,8 @@ function! gist#Gist(count, bang, line1, line2, ...) abort
761763 let editpost = 0
762764 let anonymous = get (g: , ' gist_post_anonymous' , 0 )
763765 let openbrowser = 0
766+ let setpagelimit = 0
767+ let pagelimit = g: gist_per_page_limit
764768 let listmx = ' ^\%(-l\|--list\)\s*\([^\s]\+\)\?$'
765769 let bufnamemx = ' ^' . s: bufprefix .' \(\zs[0-9a-f]\+\ze\|\zs[0-9a-f]\+\ze[/\\].*\)$'
766770 if strlen (g: github_user ) == 0 && anonymous == 0
@@ -788,6 +792,14 @@ function! gist#Gist(count, bang, line1, line2, ...) abort
788792 elseif arg = ~# ' ^\(-G\|--gitclone\)$\C' && gistidbuf !=# ' ' && g: gist_api_url == # ' https://api.github.com/' && has_key (b: , ' gist' ) && has_key (b: gist , ' id' )
789793 exe ' !' printf (' git clone git@github.com:%s' , b: gist [' id' ])
790794 return
795+ elseif setpagelimit == 1
796+ let setpagelimit = 0
797+ let pagelimit = str2nr (arg)
798+ if pagelimit < 1 || pagelimit > 100
799+ echohl ErrorMsg | echomsg ' Page limit should be between 1 and 100: ' .arg | echohl None
800+ unlet args
801+ return 0
802+ endif
791803 elseif arg = ~# ' ^\(-la\|--listall\)$\C'
792804 let gistls = ' -all'
793805 elseif arg = ~# ' ^\(-ls\|--liststar\)$\C'
@@ -868,6 +880,14 @@ function! gist#Gist(count, bang, line1, line2, ...) abort
868880 endif
869881 elseif arg = ~# ' ^\(-b\|--browser\)$\C'
870882 let openbrowser = 1
883+ elseif arg = ~# ' ^\(-n\|--per-page\)$\C'
884+ if len (gistls) > 0
885+ let setpagelimit = 1
886+ else
887+ echohl ErrorMsg | echomsg ' Page limit can be set only for list commands' .arg | echohl None
888+ unlet args
889+ return 0
890+ endif
871891 elseif arg !~# ' ^-' && len (gistnm) == 0
872892 if gistdesc !=# ' '
873893 let gistdesc = matchstr (arg, ' ^\s*\zs.*\ze\s*$' )
@@ -904,7 +924,7 @@ function! gist#Gist(count, bang, line1, line2, ...) abort
904924 endif
905925
906926 if len (gistls) > 0
907- call s: GistList (gistls, 1 )
927+ call s: GistList (gistls, 1 , pagelimit )
908928 elseif len (gistid) > 0 && editpost == 0 && deletepost == 0
909929 call s: GistGet (gistid, clipboard )
910930 else
0 commit comments