1a5fac54aSBram Moolenaar" netrwFileHandlers: contains various extension-based file handlers for 2a5fac54aSBram Moolenaar" netrw's browsers' x command ("eXecute launcher") 3ff034194SBram Moolenaar" Author: Charles E. Campbell 4*1d59aa1fSBram Moolenaar" Date: Sep 18, 2020 5*1d59aa1fSBram Moolenaar" Version: 11 6ff034194SBram Moolenaar" Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{1 7a5fac54aSBram Moolenaar" Permission is hereby granted to use and distribute this code, 8a5fac54aSBram Moolenaar" with or without modifications, provided that this copyright 9a5fac54aSBram Moolenaar" notice is copied with it. Like anything else that's free, 10a5fac54aSBram Moolenaar" netrwFileHandlers.vim is provided *as is* and comes with no 11a5fac54aSBram Moolenaar" warranty of any kind, either expressed or implied. In no 12a5fac54aSBram Moolenaar" event will the copyright holder be liable for any damages 13a5fac54aSBram Moolenaar" resulting from the use of this software. 14a5fac54aSBram Moolenaar" 15a5fac54aSBram Moolenaar" Rom 6:23 (WEB) For the wages of sin is death, but the free gift of God {{{1 16a5fac54aSBram Moolenaar" is eternal life in Christ Jesus our Lord. 17a5fac54aSBram Moolenaar 18a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 19a5fac54aSBram Moolenaar" Load Once: {{{1 20a5fac54aSBram Moolenaarif exists("g:loaded_netrwFileHandlers") || &cp 21a5fac54aSBram Moolenaar finish 22a5fac54aSBram Moolenaarendif 23*1d59aa1fSBram Moolenaarlet g:loaded_netrwFileHandlers= "v11" 245c73622aSBram Moolenaarif v:version < 702 255c73622aSBram Moolenaar echohl WarningMsg 265c73622aSBram Moolenaar echo "***warning*** this version of netrwFileHandlers needs vim 7.2" 275c73622aSBram Moolenaar echohl Normal 285c73622aSBram Moolenaar finish 295c73622aSBram Moolenaarendif 30a5fac54aSBram Moolenaarlet s:keepcpo= &cpo 31a5fac54aSBram Moolenaarset cpo&vim 32a5fac54aSBram Moolenaar 33a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 34d68071d8SBram Moolenaar" netrwFileHandlers#Invoke: {{{1 351056d988SBram Moolenaarfun! netrwFileHandlers#Invoke(exten,fname) 361056d988SBram Moolenaar" call Dfunc("netrwFileHandlers#Invoke(exten<".a:exten."> fname<".a:fname.">)") 37e6ae6225SBram Moolenaar let exten= a:exten 38c81e5e79SBram Moolenaar " list of supported special characters. Consider rcs,v --- that can be 39c81e5e79SBram Moolenaar " supported with a NFH_rcsCOMMAv() handler 40e6ae6225SBram Moolenaar if exten =~ '[@:,$!=\-+%?;~]' 41c81e5e79SBram Moolenaar let specials= { 42c81e5e79SBram Moolenaar\ '@' : 'AT', 43c81e5e79SBram Moolenaar\ ':' : 'COLON', 44c81e5e79SBram Moolenaar\ ',' : 'COMMA', 45c81e5e79SBram Moolenaar\ '$' : 'DOLLAR', 46c81e5e79SBram Moolenaar\ '!' : 'EXCLAMATION', 47c81e5e79SBram Moolenaar\ '=' : 'EQUAL', 48c81e5e79SBram Moolenaar\ '-' : 'MINUS', 49c81e5e79SBram Moolenaar\ '+' : 'PLUS', 50c81e5e79SBram Moolenaar\ '%' : 'PERCENT', 51c81e5e79SBram Moolenaar\ '?' : 'QUESTION', 52c81e5e79SBram Moolenaar\ ';' : 'SEMICOLON', 53c81e5e79SBram Moolenaar\ '~' : 'TILDE'} 54e6ae6225SBram Moolenaar let exten= substitute(a:exten,'[@:,$!=\-+%?;~]','\=specials[submatch(0)]','ge') 55c81e5e79SBram Moolenaar" call Decho('fname<'.fname.'> done with dictionary') 56c81e5e79SBram Moolenaar endif 571056d988SBram Moolenaar 58e6ae6225SBram Moolenaar if a:exten != "" && exists("*NFH_".exten) 59c81e5e79SBram Moolenaar " support user NFH_*() functions 60c81e5e79SBram Moolenaar" call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")') 61e6ae6225SBram Moolenaar exe "let ret= NFH_".exten.'("'.a:fname.'")' 62e6ae6225SBram Moolenaar elseif a:exten != "" && exists("*s:NFH_".exten) 63c81e5e79SBram Moolenaar " use builtin-NFH_*() functions 64c81e5e79SBram Moolenaar" call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")') 65e6ae6225SBram Moolenaar exe "let ret= s:NFH_".a:exten.'("'.a:fname.'")' 661056d988SBram Moolenaar endif 671056d988SBram Moolenaar 681056d988SBram Moolenaar" call Dret("netrwFileHandlers#Invoke 0 : ret=".ret) 691056d988SBram Moolenaar return 0 70a5fac54aSBram Moolenaarendfun 71a5fac54aSBram Moolenaar 72a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 731056d988SBram Moolenaar" s:NFH_html: handles html when the user hits "x" when the {{{1 74a5fac54aSBram Moolenaar" cursor is atop a *.html file 751056d988SBram Moolenaarfun! s:NFH_html(pagefile) 761056d988SBram Moolenaar" call Dfunc("s:NFH_html(".a:pagefile.")") 77a5fac54aSBram Moolenaar 78a5fac54aSBram Moolenaar let page= substitute(a:pagefile,'^','file://','') 79a5fac54aSBram Moolenaar 80a5fac54aSBram Moolenaar if executable("mozilla") 81a5fac54aSBram Moolenaar" call Decho("executing !mozilla ".page) 825c73622aSBram Moolenaar exe "!mozilla ".shellescape(page,1) 83a5fac54aSBram Moolenaar elseif executable("netscape") 84a5fac54aSBram Moolenaar" call Decho("executing !netscape ".page) 855c73622aSBram Moolenaar exe "!netscape ".shellescape(page,1) 86a5fac54aSBram Moolenaar else 871056d988SBram Moolenaar" call Dret("s:NFH_html 0") 88a5fac54aSBram Moolenaar return 0 89a5fac54aSBram Moolenaar endif 90a5fac54aSBram Moolenaar 911056d988SBram Moolenaar" call Dret("s:NFH_html 1") 92a5fac54aSBram Moolenaar return 1 93a5fac54aSBram Moolenaarendfun 94a5fac54aSBram Moolenaar 95a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 961056d988SBram Moolenaar" s:NFH_htm: handles html when the user hits "x" when the {{{1 97a5fac54aSBram Moolenaar" cursor is atop a *.htm file 981056d988SBram Moolenaarfun! s:NFH_htm(pagefile) 991056d988SBram Moolenaar" call Dfunc("s:NFH_htm(".a:pagefile.")") 100a5fac54aSBram Moolenaar 101a5fac54aSBram Moolenaar let page= substitute(a:pagefile,'^','file://','') 102a5fac54aSBram Moolenaar 103a5fac54aSBram Moolenaar if executable("mozilla") 104a5fac54aSBram Moolenaar" call Decho("executing !mozilla ".page) 1055c73622aSBram Moolenaar exe "!mozilla ".shellescape(page,1) 106a5fac54aSBram Moolenaar elseif executable("netscape") 107a5fac54aSBram Moolenaar" call Decho("executing !netscape ".page) 1085c73622aSBram Moolenaar exe "!netscape ".shellescape(page,1) 109a5fac54aSBram Moolenaar else 1101056d988SBram Moolenaar" call Dret("s:NFH_htm 0") 111a5fac54aSBram Moolenaar return 0 112a5fac54aSBram Moolenaar endif 113a5fac54aSBram Moolenaar 1141056d988SBram Moolenaar" call Dret("s:NFH_htm 1") 115a5fac54aSBram Moolenaar return 1 116a5fac54aSBram Moolenaarendfun 117a5fac54aSBram Moolenaar 118a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 1191056d988SBram Moolenaar" s:NFH_jpg: {{{1 1201056d988SBram Moolenaarfun! s:NFH_jpg(jpgfile) 1211056d988SBram Moolenaar" call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)") 122a5fac54aSBram Moolenaar 123a5fac54aSBram Moolenaar if executable("gimp") 1245c73622aSBram Moolenaar exe "silent! !gimp -s ".shellescape(a:jpgfile,1) 125a5fac54aSBram Moolenaar elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") 126a5fac54aSBram Moolenaar" call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'")) 1275c73622aSBram Moolenaar exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:jpgfile,1) 128a5fac54aSBram Moolenaar else 1291056d988SBram Moolenaar" call Dret("s:NFH_jpg 0") 130a5fac54aSBram Moolenaar return 0 131a5fac54aSBram Moolenaar endif 132a5fac54aSBram Moolenaar 1331056d988SBram Moolenaar" call Dret("s:NFH_jpg 1") 134a5fac54aSBram Moolenaar return 1 135a5fac54aSBram Moolenaarendfun 136a5fac54aSBram Moolenaar 137a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 1381056d988SBram Moolenaar" s:NFH_gif: {{{1 1391056d988SBram Moolenaarfun! s:NFH_gif(giffile) 1401056d988SBram Moolenaar" call Dfunc("s:NFH_gif(giffile<".a:giffile.">)") 141a5fac54aSBram Moolenaar 142a5fac54aSBram Moolenaar if executable("gimp") 1435c73622aSBram Moolenaar exe "silent! !gimp -s ".shellescape(a:giffile,1) 144a5fac54aSBram Moolenaar elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") 1455c73622aSBram Moolenaar exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:giffile,1) 146a5fac54aSBram Moolenaar else 1471056d988SBram Moolenaar" call Dret("s:NFH_gif 0") 148a5fac54aSBram Moolenaar return 0 149a5fac54aSBram Moolenaar endif 150a5fac54aSBram Moolenaar 1511056d988SBram Moolenaar" call Dret("s:NFH_gif 1") 152a5fac54aSBram Moolenaar return 1 153a5fac54aSBram Moolenaarendfun 154a5fac54aSBram Moolenaar 155a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 1561056d988SBram Moolenaar" s:NFH_png: {{{1 1571056d988SBram Moolenaarfun! s:NFH_png(pngfile) 1581056d988SBram Moolenaar" call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)") 159a5fac54aSBram Moolenaar 160a5fac54aSBram Moolenaar if executable("gimp") 1615c73622aSBram Moolenaar exe "silent! !gimp -s ".shellescape(a:pngfile,1) 162a5fac54aSBram Moolenaar elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") 1635c73622aSBram Moolenaar exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pngfile,1) 164a5fac54aSBram Moolenaar else 1651056d988SBram Moolenaar" call Dret("s:NFH_png 0") 166a5fac54aSBram Moolenaar return 0 167a5fac54aSBram Moolenaar endif 168a5fac54aSBram Moolenaar 1691056d988SBram Moolenaar" call Dret("s:NFH_png 1") 170a5fac54aSBram Moolenaar return 1 171a5fac54aSBram Moolenaarendfun 172a5fac54aSBram Moolenaar 173a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 1741056d988SBram Moolenaar" s:NFH_pnm: {{{1 1751056d988SBram Moolenaarfun! s:NFH_pnm(pnmfile) 1761056d988SBram Moolenaar" call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)") 177a5fac54aSBram Moolenaar 178a5fac54aSBram Moolenaar if executable("gimp") 1795c73622aSBram Moolenaar exe "silent! !gimp -s ".shellescape(a:pnmfile,1) 180a5fac54aSBram Moolenaar elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") 1815c73622aSBram Moolenaar exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pnmfile,1) 182a5fac54aSBram Moolenaar else 1831056d988SBram Moolenaar" call Dret("s:NFH_pnm 0") 184a5fac54aSBram Moolenaar return 0 185a5fac54aSBram Moolenaar endif 186a5fac54aSBram Moolenaar 1871056d988SBram Moolenaar" call Dret("s:NFH_pnm 1") 188a5fac54aSBram Moolenaar return 1 189a5fac54aSBram Moolenaarendfun 190a5fac54aSBram Moolenaar 191a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 1921056d988SBram Moolenaar" s:NFH_bmp: visualize bmp files {{{1 1931056d988SBram Moolenaarfun! s:NFH_bmp(bmpfile) 1941056d988SBram Moolenaar" call Dfunc("s:NFH_bmp(bmpfile<".a:bmpfile.">)") 195a5fac54aSBram Moolenaar 196a5fac54aSBram Moolenaar if executable("gimp") 197a5fac54aSBram Moolenaar exe "silent! !gimp -s ".a:bmpfile 198a5fac54aSBram Moolenaar elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") 1995c73622aSBram Moolenaar exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:bmpfile,1) 200a5fac54aSBram Moolenaar else 2011056d988SBram Moolenaar" call Dret("s:NFH_bmp 0") 202a5fac54aSBram Moolenaar return 0 203a5fac54aSBram Moolenaar endif 204a5fac54aSBram Moolenaar 2051056d988SBram Moolenaar" call Dret("s:NFH_bmp 1") 206a5fac54aSBram Moolenaar return 1 207a5fac54aSBram Moolenaarendfun 208a5fac54aSBram Moolenaar 209a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 2101056d988SBram Moolenaar" s:NFH_pdf: visualize pdf files {{{1 2111056d988SBram Moolenaarfun! s:NFH_pdf(pdf) 2121056d988SBram Moolenaar" call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)") 213a5fac54aSBram Moolenaar if executable("gs") 2145c73622aSBram Moolenaar exe 'silent! !gs '.shellescape(a:pdf,1) 215c81e5e79SBram Moolenaar elseif executable("pdftotext") 2165c73622aSBram Moolenaar exe 'silent! pdftotext -nopgbrk '.shellescape(a:pdf,1) 217a5fac54aSBram Moolenaar else 2181056d988SBram Moolenaar" call Dret("s:NFH_pdf 0") 219a5fac54aSBram Moolenaar return 0 220a5fac54aSBram Moolenaar endif 221a5fac54aSBram Moolenaar 2221056d988SBram Moolenaar" call Dret("s:NFH_pdf 1") 223a5fac54aSBram Moolenaar return 1 224a5fac54aSBram Moolenaarendfun 225a5fac54aSBram Moolenaar 226a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 2271056d988SBram Moolenaar" s:NFH_doc: visualize doc files {{{1 2281056d988SBram Moolenaarfun! s:NFH_doc(doc) 2291056d988SBram Moolenaar" call Dfunc("s:NFH_doc(doc<".a:doc.">)") 230a5fac54aSBram Moolenaar 231a5fac54aSBram Moolenaar if executable("oowriter") 2325c73622aSBram Moolenaar exe 'silent! !oowriter '.shellescape(a:doc,1) 233a5fac54aSBram Moolenaar redraw! 234a5fac54aSBram Moolenaar else 2351056d988SBram Moolenaar" call Dret("s:NFH_doc 0") 236a5fac54aSBram Moolenaar return 0 237a5fac54aSBram Moolenaar endif 238a5fac54aSBram Moolenaar 2391056d988SBram Moolenaar" call Dret("s:NFH_doc 1") 240a5fac54aSBram Moolenaar return 1 241a5fac54aSBram Moolenaarendfun 242a5fac54aSBram Moolenaar 243a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 2441056d988SBram Moolenaar" s:NFH_sxw: visualize sxw files {{{1 2451056d988SBram Moolenaarfun! s:NFH_sxw(sxw) 2461056d988SBram Moolenaar" call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)") 247a5fac54aSBram Moolenaar 248a5fac54aSBram Moolenaar if executable("oowriter") 2495c73622aSBram Moolenaar exe 'silent! !oowriter '.shellescape(a:sxw,1) 250a5fac54aSBram Moolenaar redraw! 251a5fac54aSBram Moolenaar else 2521056d988SBram Moolenaar" call Dret("s:NFH_sxw 0") 253a5fac54aSBram Moolenaar return 0 254a5fac54aSBram Moolenaar endif 255a5fac54aSBram Moolenaar 2561056d988SBram Moolenaar" call Dret("s:NFH_sxw 1") 257a5fac54aSBram Moolenaar return 1 258a5fac54aSBram Moolenaarendfun 259a5fac54aSBram Moolenaar 260a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 2611056d988SBram Moolenaar" s:NFH_xls: visualize xls files {{{1 2621056d988SBram Moolenaarfun! s:NFH_xls(xls) 2631056d988SBram Moolenaar" call Dfunc("s:NFH_xls(xls<".a:xls.">)") 264a5fac54aSBram Moolenaar 265a5fac54aSBram Moolenaar if executable("oocalc") 2665c73622aSBram Moolenaar exe 'silent! !oocalc '.shellescape(a:xls,1) 267a5fac54aSBram Moolenaar redraw! 268a5fac54aSBram Moolenaar else 2691056d988SBram Moolenaar" call Dret("s:NFH_xls 0") 270a5fac54aSBram Moolenaar return 0 271a5fac54aSBram Moolenaar endif 272a5fac54aSBram Moolenaar 2731056d988SBram Moolenaar" call Dret("s:NFH_xls 1") 274a5fac54aSBram Moolenaar return 1 275a5fac54aSBram Moolenaarendfun 276a5fac54aSBram Moolenaar 277a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 2781056d988SBram Moolenaar" s:NFH_ps: handles PostScript files {{{1 2791056d988SBram Moolenaarfun! s:NFH_ps(ps) 2801056d988SBram Moolenaar" call Dfunc("s:NFH_ps(ps<".a:ps.">)") 281a5fac54aSBram Moolenaar if executable("gs") 2821056d988SBram Moolenaar" call Decho("exe silent! !gs ".a:ps) 2835c73622aSBram Moolenaar exe "silent! !gs ".shellescape(a:ps,1) 284a5fac54aSBram Moolenaar redraw! 285a5fac54aSBram Moolenaar elseif executable("ghostscript") 2861056d988SBram Moolenaar" call Decho("exe silent! !ghostscript ".a:ps) 2875c73622aSBram Moolenaar exe "silent! !ghostscript ".shellescape(a:ps,1) 288a5fac54aSBram Moolenaar redraw! 289a5fac54aSBram Moolenaar elseif executable("gswin32") 2905c73622aSBram Moolenaar" call Decho("exe silent! !gswin32 ".shellescape(a:ps,1)) 2915c73622aSBram Moolenaar exe "silent! !gswin32 ".shellescape(a:ps,1) 292a5fac54aSBram Moolenaar redraw! 293a5fac54aSBram Moolenaar else 2941056d988SBram Moolenaar" call Dret("s:NFH_ps 0") 295a5fac54aSBram Moolenaar return 0 296a5fac54aSBram Moolenaar endif 297a5fac54aSBram Moolenaar 2981056d988SBram Moolenaar" call Dret("s:NFH_ps 1") 299a5fac54aSBram Moolenaar return 1 300a5fac54aSBram Moolenaarendfun 301a5fac54aSBram Moolenaar 302a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 3031056d988SBram Moolenaar" s:NFH_eps: handles encapsulated PostScript files {{{1 3041056d988SBram Moolenaarfun! s:NFH_eps(eps) 3051056d988SBram Moolenaar" call Dfunc("s:NFH_eps()") 306a5fac54aSBram Moolenaar if executable("gs") 3075c73622aSBram Moolenaar exe "silent! !gs ".shellescape(a:eps,1) 308a5fac54aSBram Moolenaar redraw! 309a5fac54aSBram Moolenaar elseif executable("ghostscript") 3105c73622aSBram Moolenaar exe "silent! !ghostscript ".shellescape(a:eps,1) 311a5fac54aSBram Moolenaar redraw! 312a5fac54aSBram Moolenaar elseif executable("ghostscript") 3135c73622aSBram Moolenaar exe "silent! !ghostscript ".shellescape(a:eps,1) 314a5fac54aSBram Moolenaar redraw! 315a5fac54aSBram Moolenaar elseif executable("gswin32") 3165c73622aSBram Moolenaar exe "silent! !gswin32 ".shellescape(a:eps,1) 317a5fac54aSBram Moolenaar redraw! 318a5fac54aSBram Moolenaar else 3191056d988SBram Moolenaar" call Dret("s:NFH_eps 0") 320a5fac54aSBram Moolenaar return 0 321a5fac54aSBram Moolenaar endif 3221056d988SBram Moolenaar" call Dret("s:NFH_eps 0") 323a5fac54aSBram Moolenaar return 1 324a5fac54aSBram Moolenaarendfun 325a5fac54aSBram Moolenaar 326a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 3271056d988SBram Moolenaar" s:NFH_fig: handles xfig files {{{1 3281056d988SBram Moolenaarfun! s:NFH_fig(fig) 3291056d988SBram Moolenaar" call Dfunc("s:NFH_fig()") 3301056d988SBram Moolenaar if executable("xfig") 3311056d988SBram Moolenaar exe "silent! !xfig ".a:fig 3321056d988SBram Moolenaar redraw! 3331056d988SBram Moolenaar else 3341056d988SBram Moolenaar" call Dret("s:NFH_fig 0") 3351056d988SBram Moolenaar return 0 3361056d988SBram Moolenaar endif 3371056d988SBram Moolenaar 3381056d988SBram Moolenaar" call Dret("s:NFH_fig 1") 3391056d988SBram Moolenaar return 1 3401056d988SBram Moolenaarendfun 3411056d988SBram Moolenaar 3421056d988SBram Moolenaar" --------------------------------------------------------------------- 3431056d988SBram Moolenaar" s:NFH_obj: handles tgif's obj files {{{1 3441056d988SBram Moolenaarfun! s:NFH_obj(obj) 3451056d988SBram Moolenaar" call Dfunc("s:NFH_obj()") 346a5fac54aSBram Moolenaar if has("unix") && executable("tgif") 347a5fac54aSBram Moolenaar exe "silent! !tgif ".a:obj 348a5fac54aSBram Moolenaar redraw! 349a5fac54aSBram Moolenaar else 3501056d988SBram Moolenaar" call Dret("s:NFH_obj 0") 351a5fac54aSBram Moolenaar return 0 352a5fac54aSBram Moolenaar endif 353a5fac54aSBram Moolenaar 3541056d988SBram Moolenaar" call Dret("s:NFH_obj 1") 355a5fac54aSBram Moolenaar return 1 356a5fac54aSBram Moolenaarendfun 357a5fac54aSBram Moolenaar 358a5fac54aSBram Moolenaarlet &cpo= s:keepcpo 3595b435d67SBram Moolenaarunlet s:keepcpo 360a5fac54aSBram Moolenaar" --------------------------------------------------------------------- 361a5fac54aSBram Moolenaar" Modelines: {{{1 362c81e5e79SBram Moolenaar" vim: fdm=marker 363