summaryrefslogtreecommitdiff
path: root/uvim/runtime/plugin
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:44:22 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:44:22 +0300
commit934382c8a1ce738589dee9ee0f14e1cec812770e (patch)
treef13715762efd06518f8aec3a2bf39ac8a615987f /uvim/runtime/plugin
parent0b24459ac12b6cf9fd5a401d647796ca254a8fa8 (diff)
parent7088926316d8d4a7572a242d0765e99adfc8b083 (diff)
downloadProject-Tick-934382c8a1ce738589dee9ee0f14e1cec812770e.tar.gz
Project-Tick-934382c8a1ce738589dee9ee0f14e1cec812770e.zip
Add 'uvim/' from commit '7088926316d8d4a7572a242d0765e99adfc8b083'
git-subtree-dir: uvim git-subtree-mainline: 0b24459ac12b6cf9fd5a401d647796ca254a8fa8 git-subtree-split: 7088926316d8d4a7572a242d0765e99adfc8b083
Diffstat (limited to 'uvim/runtime/plugin')
-rw-r--r--uvim/runtime/plugin/README.txt17
-rw-r--r--uvim/runtime/plugin/getscriptPlugin.vim42
-rw-r--r--uvim/runtime/plugin/gzip.vim73
-rw-r--r--uvim/runtime/plugin/logiPat.vim340
-rw-r--r--uvim/runtime/plugin/manpager.vim56
-rw-r--r--uvim/runtime/plugin/matchparen.vim227
-rw-r--r--uvim/runtime/plugin/netrwPlugin.vim9
-rw-r--r--uvim/runtime/plugin/openPlugin.vim46
-rw-r--r--uvim/runtime/plugin/rrhelper.vim49
-rw-r--r--uvim/runtime/plugin/spellfile.vim16
-rw-r--r--uvim/runtime/plugin/tarPlugin.vim60
-rw-r--r--uvim/runtime/plugin/tohtml.vim254
-rw-r--r--uvim/runtime/plugin/tutor.vim12
-rw-r--r--uvim/runtime/plugin/vimballPlugin.vim52
-rw-r--r--uvim/runtime/plugin/zipPlugin.vim60
15 files changed, 1313 insertions, 0 deletions
diff --git a/uvim/runtime/plugin/README.txt b/uvim/runtime/plugin/README.txt
new file mode 100644
index 0000000000..6161b6f640
--- /dev/null
+++ b/uvim/runtime/plugin/README.txt
@@ -0,0 +1,17 @@
+The plugin directory is for standard Vim plugin scripts.
+
+All files here ending in .vim will be sourced by Vim when it starts up.
+Look in the file for hints on how it can be disabled without deleting it.
+
+getscriptPlugin.vim get latest version of Vim scripts
+gzip.vim edit compressed files
+logiPat.vim logical operators on patterns
+manpager.vim using Vim as manpager
+matchparen.vim highlight paren matching the one under the cursor
+netrwPlugin.vim edit files over a network and browse (remote) directories
+rrhelper.vim used for --remote-wait editing
+spellfile.vim download a spellfile when it's missing
+tarPlugin.vim edit (compressed) tar files
+tohtml.vim convert a file with syntax highlighting to HTML
+vimballPlugin.vim create and unpack .vba files
+zipPlugin.vim edit zip archives
diff --git a/uvim/runtime/plugin/getscriptPlugin.vim b/uvim/runtime/plugin/getscriptPlugin.vim
new file mode 100644
index 0000000000..f3abdbe1eb
--- /dev/null
+++ b/uvim/runtime/plugin/getscriptPlugin.vim
@@ -0,0 +1,42 @@
+" ---------------------------------------------------------------------
+" getscriptPlugin.vim
+" Maintainer: This runtime file is looking for a new maintainer.
+" Original Author: Charles E. Campbell
+" Date: Nov 29, 2013
+" Installing: :help glvs-install
+" Usage: :help glvs
+"
+" GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim
+"
+" (Rom 15:11 WEB) Again, "Praise the Lord, all you Gentiles! Let
+" all the peoples praise Him."
+" ---------------------------------------------------------------------
+" Initialization: {{{1
+" if you're sourcing this file, surely you can't be
+" expecting vim to be in its vi-compatible mode
+if exists("g:loaded_getscriptPlugin")
+ finish
+endif
+if &cp
+ if &verbose
+ echo "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
+ endif
+ finish
+endif
+let g:loaded_getscriptPlugin = "v37"
+let s:keepcpo = &cpo
+set cpo&vim
+
+" ---------------------------------------------------------------------
+" Public Interface: {{{1
+com! -nargs=0 GetLatestVimScripts call getscript#GetLatestVimScripts()
+com! -nargs=0 GetScripts call getscript#GetLatestVimScripts()
+sil! com -nargs=0 GLVS call getscript#GetLatestVimScripts()
+
+" ---------------------------------------------------------------------
+" Restore Options: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+
+" ---------------------------------------------------------------------
+" vim: ts=8 sts=2 fdm=marker nowrap
diff --git a/uvim/runtime/plugin/gzip.vim b/uvim/runtime/plugin/gzip.vim
new file mode 100644
index 0000000000..9138844e6c
--- /dev/null
+++ b/uvim/runtime/plugin/gzip.vim
@@ -0,0 +1,73 @@
+" Vim plugin for editing compressed files.
+" Maintainer: The Vim Project <https://github.com/vim/vim>
+" Last Change: 2025 Feb 28
+" Former Maintainer: Bram Moolenaar <Bram@vim.org>
+
+" Exit quickly when:
+" - this plugin was already loaded
+" - when 'compatible' is set
+" - some autocommands are already taking care of compressed files
+if exists("loaded_gzip") || &cp || exists("#BufReadPre#*.gz")
+ finish
+endif
+let loaded_gzip = 1
+
+augroup gzip
+ " Remove all gzip autocommands
+ au!
+
+ " Enable editing of gzipped files.
+ " The functions are defined in autoload/gzip.vim.
+ "
+ " Set binary mode before reading the file.
+ autocmd BufReadPre,FileReadPre *.gz,*.bz2,*.bz3,*.Z,*.lzma,*.xz,*.lz,*.zst,*.br,*.lzo,*.lz4 setlocal bin
+
+ " Use "gzip -d" and similar commands, gunzip isn't always available.
+ autocmd BufReadPost,FileReadPost *.br call gzip#read("brotli -d --rm")
+ autocmd BufReadPost,FileReadPost *.bz2 call gzip#read("bzip2 -d")
+ autocmd BufReadPost,FileReadPost *.bz3 call gzip#read("bzip3 -d")
+ autocmd BufReadPost,FileReadPost *.gz call gzip#read("gzip -dn")
+ autocmd BufReadPost,FileReadPost *.lz call gzip#read("lzip -d")
+ autocmd BufReadPost,FileReadPost *.lz4 call gzip#read("lz4 -d -q --rm")
+ autocmd BufReadPost,FileReadPost *.lzma call gzip#read("lzma -d")
+ autocmd BufReadPost,FileReadPost *.lzo call gzip#read("lzop -d -U")
+ autocmd BufReadPost,FileReadPost *.xz call gzip#read("xz -d")
+ autocmd BufReadPost,FileReadPost *.Z call gzip#read("uncompress")
+ autocmd BufReadPost,FileReadPost *.zst call gzip#read("zstd -d --rm")
+
+ autocmd BufWritePost,FileWritePost *.br call gzip#write("brotli --rm")
+ autocmd BufWritePost,FileWritePost *.bz2 call gzip#write("bzip2")
+ autocmd BufWritePost,FileWritePost *.bz3 call gzip#write("bzip3")
+ autocmd BufWritePost,FileWritePost *.gz call gzip#write("gzip")
+ autocmd BufWritePost,FileWritePost *.lz call gzip#write("lzip")
+ autocmd BufWritePost,FileWritePost *.lz4 call gzip#write("lz4 -q --rm")
+ autocmd BufWritePost,FileWritePost *.lzma call gzip#write("lzma -z")
+ autocmd BufWritePost,FileWritePost *.lzo call gzip#write("lzop -U")
+ autocmd BufWritePost,FileWritePost *.xz call gzip#write("xz -z")
+ autocmd BufWritePost,FileWritePost *.Z call gzip#write("compress -f")
+ autocmd BufWritePost,FileWritePost *.zst call gzip#write("zstd --rm")
+
+ autocmd FileAppendPre *.br call gzip#appre("brotli -d --rm")
+ autocmd FileAppendPre *.bz2 call gzip#appre("bzip2 -d")
+ autocmd FileAppendPre *.bz3 call gzip#appre("bzip3 -d")
+ autocmd FileAppendPre *.gz call gzip#appre("gzip -dn")
+ autocmd FileAppendPre *.lz call gzip#appre("lzip -d")
+ autocmd FileAppendPre *.lz4 call gzip#appre("lz4 -d -q --rm")
+ autocmd FileAppendPre *.lzma call gzip#appre("lzma -d")
+ autocmd FileAppendPre *.lzo call gzip#appre("lzop -d -U")
+ autocmd FileAppendPre *.xz call gzip#appre("xz -d")
+ autocmd FileAppendPre *.Z call gzip#appre("uncompress")
+ autocmd FileAppendPre *.zst call gzip#appre("zstd -d --rm")
+
+ autocmd FileAppendPost *.br call gzip#write("brotli --rm")
+ autocmd FileAppendPost *.bz2 call gzip#write("bzip2")
+ autocmd FileAppendPost *.bz3 call gzip#write("bzip3")
+ autocmd FileAppendPost *.gz call gzip#write("gzip")
+ autocmd FileAppendPost *.lz call gzip#write("lzip")
+ autocmd FileAppendPost *.lz4 call gzip#write("lz4 --rm")
+ autocmd FileAppendPost *.lzma call gzip#write("lzma -z")
+ autocmd FileAppendPost *.lzo call gzip#write("lzop -U")
+ autocmd FileAppendPost *.xz call gzip#write("xz -z")
+ autocmd FileAppendPost *.Z call gzip#write("compress -f")
+ autocmd FileAppendPost *.zst call gzip#write("zstd --rm")
+augroup END
diff --git a/uvim/runtime/plugin/logiPat.vim b/uvim/runtime/plugin/logiPat.vim
new file mode 100644
index 0000000000..a8c154e207
--- /dev/null
+++ b/uvim/runtime/plugin/logiPat.vim
@@ -0,0 +1,340 @@
+" LogiPat: Boolean logical pattern matcher
+" Maintainer: This runtime file is looking for a new maintainer.
+" Original Author: Charles E. Campbell
+" Date: Apr 04, 2016
+" Version: 4
+" Purpose: to do Boolean-logic based regular expression pattern matching
+" Copyright: Copyright (C) 1999-2011 Charles E. Campbell {{{1
+" Permission is hereby granted to use and distribute this code,
+" with or without modifications, provided that this copyright
+" notice is copied with it. Like most anything else that's free,
+" LogiPat.vim is provided *as is* and comes with no warranty
+" of any kind, either expressed or implied. By using this
+" plugin, you agree that in no event will the copyright
+" holder be liable for any damages resulting from the use
+" of this software.
+"
+" Usage: {{{1
+" :LogiPat ...
+"
+" Boolean logic supported:
+" () grouping operators
+" ! not the following pattern
+" | logical or
+" & logical and
+" "..pattern.."
+" Example: {{{1
+" :LogiPat !("january"|"february")
+" would match all strings not containing the strings january
+" or february
+" GetLatestVimScripts: 1290 1 :AutoInstall: LogiPat.vim
+"
+" Behold, you will conceive in your womb, and bring forth a son, {{{1
+" and will call his name Jesus. He will be great, and will be
+" called the Son of the Most High. The Lord God will give him the
+" throne of his father, David, and he will reign over the house of
+" Jacob forever. There will be no end to his kingdom. (Luke 1:31-33 WEB)
+
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if &cp || exists("loaded_logiPat")
+ finish
+endif
+let g:loaded_logiPat = "v4"
+let s:keepcpo = &cpo
+set cpo&vim
+"DechoRemOn
+
+" ---------------------------------------------------------------------
+" Public Interface: {{{1
+com! -nargs=* LogiPat call LogiPat(<q-args>,1)
+sil! com -nargs=* LP call LogiPat(<q-args>,1)
+sil! com -nargs=* LPR call LogiPat(<q-args>,1,"r")
+com! -nargs=+ LPE echomsg LogiPat(<q-args>)
+com! -nargs=+ LogiPatFlags let s:LogiPatFlags="<args>"
+sil! com -nargs=+ LPF let s:LogiPatFlags="<args>"
+
+" =====================================================================
+" Functions: {{{1
+
+" ---------------------------------------------------------------------
+" LogiPat: this function interprets the boolean-logic pattern {{{2
+fun! LogiPat(pat,...)
+" call Dfunc("LogiPat(pat<".a:pat.">)")
+
+ " LogiPat(pat,dosearch)
+ if a:0 > 0
+ let dosearch= a:1
+ else
+ let dosearch= 0
+ endif
+ if a:0 >= 3
+ let s:LogiPatFlags= a:3
+ endif
+
+ let s:npatstack = 0
+ let s:nopstack = 0
+ let s:preclvl = 0
+ let expr = a:pat
+
+ " Lexer/Parser
+ while expr != ""
+" call Decho("expr<".expr.">")
+
+ if expr =~ '^"'
+ " push a Pattern; accept "" as a single " in the pattern
+ let expr = substitute(expr,'^\s*"','','')
+ let pat = substitute(expr,'^\(\%([^"]\|\"\"\)\{-}\)"\([^"].*$\|$\)','\1','')
+ let pat = substitute(pat,'""','"','g')
+ let expr = substitute(expr,'^\(\%([^"]\|\"\"\)\{-}\)"\([^"].*$\|$\)','\2','')
+ let expr = substitute(expr,'^\s*','','')
+" call Decho("pat<".pat."> expr<".expr.">")
+
+ call s:LP_PatPush('.*'.pat.'.*')
+
+ elseif expr =~ '^[!()|&]'
+ " push an operator
+ let op = strpart(expr,0,1)
+ let expr = strpart(expr,strlen(op))
+ " allow for those who can't resist doubling their and/or operators
+ if op =~ '[|&]' && expr[0] == op
+ let expr = strpart(expr,strlen(op))
+ endif
+ call s:LP_OpPush(op)
+
+ elseif expr =~ '^\s'
+ " skip whitespace
+ let expr= strpart(expr,1)
+
+ else
+ echoerr "operator<".strpart(expr,0,1)."> not supported (yet)"
+ let expr= strpart(expr,1)
+ endif
+
+ endwhile
+
+ " Final Execution
+ call s:LP_OpPush('Z')
+
+ let result= s:LP_PatPop(1)
+" call Decho("result=".result)
+
+ " sanity checks and cleanup
+ if s:npatstack > 0
+ echoerr s:npatstack." patterns left on stack!"
+ let s:npatstack= 0
+ endif
+ if s:nopstack > 0
+ echoerr s:nopstack." operators left on stack!"
+ let s:nopstack= 0
+ endif
+
+ " perform the indicated search
+ if dosearch
+ if exists("s:LogiPatFlags") && s:LogiPatFlags != ""
+" call Decho("search(result<".result."> LogiPatFlags<".s:LogiPatFlags.">)")
+ call search(result,s:LogiPatFlags)
+ else
+" call Decho("search(result<".result.">)")
+ call search(result)
+ endif
+ let @/= result
+ endif
+
+" call Dret("LogiPat ".result)
+ return result
+endfun
+
+" ---------------------------------------------------------------------
+" s:String: Vim6.4 doesn't have string() {{{2
+func! s:String(str)
+ return "'".escape(a:str, '"')."'"
+endfunc
+
+" ---------------------------------------------------------------------
+" LP_PatPush: {{{2
+fun! s:LP_PatPush(pat)
+" call Dfunc("LP_PatPush(pat<".a:pat.">)")
+ let s:npatstack = s:npatstack + 1
+ let s:patstack_{s:npatstack} = a:pat
+" call s:StackLook("patpush") "Decho
+" call Dret("LP_PatPush : npatstack=".s:npatstack)
+endfun
+
+" ---------------------------------------------------------------------
+" LP_PatPop: pop a number/variable from LogiPat's pattern stack {{{2
+fun! s:LP_PatPop(lookup)
+" call Dfunc("LP_PatPop(lookup=".a:lookup.")")
+ if s:npatstack > 0
+ let ret = s:patstack_{s:npatstack}
+ let s:npatstack = s:npatstack - 1
+ else
+ let ret= "---error---"
+ echoerr "(LogiPat) invalid expression"
+ endif
+" call s:StackLook("patpop") "Decho
+" call Dret("LP_PatPop ".ret)
+ return ret
+endfun
+
+" ---------------------------------------------------------------------
+" LP_OpPush: {{{2
+fun! s:LP_OpPush(op)
+" call Dfunc("LP_OpPush(op<".a:op.">)")
+
+ " determine new operator's precedence level
+ if a:op == '('
+ let s:preclvl= s:preclvl + 10
+ let preclvl = s:preclvl
+ elseif a:op == ')'
+ let s:preclvl= s:preclvl - 10
+ if s:preclvl < 0
+ let s:preclvl= 0
+ echoerr "too many )s"
+ endif
+ let preclvl= s:preclvl
+ elseif a:op =~ '|'
+ let preclvl= s:preclvl + 2
+ elseif a:op =~ '&'
+ let preclvl= s:preclvl + 4
+ elseif a:op == '!'
+ let preclvl= s:preclvl + 6
+ elseif a:op == 'Z'
+ let preclvl= -1
+ else
+ echoerr "expr<".expr."> not supported (yet)"
+ let preclvl= s:preclvl
+ endif
+" call Decho("new operator<".a:op."> preclvl=".preclvl)
+
+ " execute higher-precdence operators
+" call Decho("execute higher-precedence operators")
+ call s:LP_Execute(preclvl)
+
+ " push new operator onto operator-stack
+" call Decho("push new operator<".a:op."> onto stack with preclvl=".preclvl." at nopstack=".(s:nopstack+1))
+ if a:op =~ '!'
+ let s:nopstack = s:nopstack + 1
+ let s:opprec_{s:nopstack} = preclvl
+ let s:opstack_{s:nopstack} = a:op
+ elseif a:op =~ '|'
+ let s:nopstack = s:nopstack + 1
+ let s:opprec_{s:nopstack} = preclvl
+ let s:opstack_{s:nopstack} = a:op
+ elseif a:op == '&'
+ let s:nopstack = s:nopstack + 1
+ let s:opprec_{s:nopstack} = preclvl
+ let s:opstack_{s:nopstack} = a:op
+ endif
+
+" call s:StackLook("oppush") "Decho
+" call Dret("LP_OpPush : s:preclvl=".s:preclvl)
+endfun
+
+" ---------------------------------------------------------------------
+" LP_Execute: execute operators from opstack using pattern stack {{{2
+fun! s:LP_Execute(preclvl)
+" call Dfunc("LP_Execute(preclvl=".a:preclvl.") npatstack=".s:npatstack." nopstack=".s:nopstack)
+
+ " execute all higher precedence operators
+ while s:nopstack > 0 && a:preclvl < s:opprec_{s:nopstack}
+ let op= s:opstack_{s:nopstack}
+" call Decho("op<".op."> nop=".s:nopstack." [preclvl=".a:preclvl."] < [opprec_".s:nopstack."=".s:opprec_{s:nopstack}."]")
+
+ let s:nopstack = s:nopstack - 1
+
+ if op == '!'
+ let n1= s:LP_PatPop(1)
+ call s:LP_PatPush(s:LP_Not(n1))
+
+ elseif op == '|'
+ let n1= s:LP_PatPop(1)
+ let n2= s:LP_PatPop(1)
+ call s:LP_PatPush(s:LP_Or(n2,n1))
+
+ elseif op =~ '&'
+ let n1= s:LP_PatPop(1)
+ let n2= s:LP_PatPop(1)
+ call s:LP_PatPush(s:LP_And(n2,n1))
+ endif
+
+" call s:StackLook("execute") "Decho
+ endwhile
+
+" call Dret("LP_Execute")
+endfun
+
+" ---------------------------------------------------------------------
+" LP_Not: writes a logical-not for a pattern {{{2
+fun! s:LP_Not(pat)
+" call Dfunc("LP_Not(pat<".a:pat.">)")
+ if a:pat =~ '^\.\*' && a:pat =~ '\.\*$'
+ let pat= substitute(a:pat,'^\.\*\(.*\)\.\*$','\1','')
+ let ret= '^\%(\%('.pat.'\)\@!.\)*$'
+ else
+ let ret= '^\%(\%('.a:pat.'\)\@!.\)*$'
+ endif
+" call Dret("LP_Not ".ret)
+ return ret
+endfun
+
+" ---------------------------------------------------------------------
+" LP_Or: writes a logical-or branch using two patterns {{{2
+fun! s:LP_Or(pat1,pat2)
+" call Dfunc("LP_Or(pat1<".a:pat1."> pat2<".a:pat2.">)")
+ let ret= '\%('.a:pat1.'\|'.a:pat2.'\)'
+" call Dret("LP_Or ".ret)
+ return ret
+endfun
+
+" ---------------------------------------------------------------------
+" LP_And: writes a logical-and concat using two patterns {{{2
+fun! s:LP_And(pat1,pat2)
+" call Dfunc("LP_And(pat1<".a:pat1."> pat2<".a:pat2.">)")
+ let ret= '\%('.a:pat1.'\&'.a:pat2.'\)'
+" call Dret("LP_And ".ret)
+ return ret
+endfun
+
+" ---------------------------------------------------------------------
+" StackLook: {{{2
+fun! s:StackLook(description)
+" call Dfunc("StackLook(description<".a:description.">)")
+ let iop = 1
+ let ifp = 1
+" call Decho("Pattern Operator")
+
+ " print both pattern and operator
+ while ifp <= s:npatstack && iop <= s:nopstack
+ let fp = s:patstack_{ifp}
+ let op = s:opstack_{iop}." (P".s:opprec_{s:nopstack}.')'
+ let fplen= strlen(fp)
+ if fplen < 30
+ let fp= fp.strpart(" ",1,30-fplen)
+ endif
+" call Decho(fp.op)
+ let ifp = ifp + 1
+ let iop = iop + 1
+ endwhile
+
+ " print just pattern
+ while ifp <= s:npatstack
+ let fp = s:patstack_{ifp}
+" call Decho(fp)
+ let ifp = ifp + 1
+ endwhile
+
+ " print just operator
+ while iop <= s:nopstack
+ let op = s:opstack_{iop}." (P".s:opprec_{s:nopstack}.')'
+" call Decho(" ".op)
+ let iop = iop + 1
+ endwhile
+" call Dret("StackLook")
+endfun
+
+" ---------------------------------------------------------------------
+" Cleanup And Modeline: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" vim: ts=4 fdm=marker
diff --git a/uvim/runtime/plugin/manpager.vim b/uvim/runtime/plugin/manpager.vim
new file mode 100644
index 0000000000..e3a8ea55a9
--- /dev/null
+++ b/uvim/runtime/plugin/manpager.vim
@@ -0,0 +1,56 @@
+" Vim plugin for using Vim as manpager.
+" Maintainer: Enno Nagel <ennonagel+vim@gmail.com>
+" Last Change: 2024 Jul 03
+" 2026 Mar 22 by Vim Project: strip OSC 9 sequences (#19787)
+" 2026 Mar 24 by Vim Project: strip Bell char: Ctrl-G (#19807)
+
+if exists('g:loaded_manpager_plugin')
+ finish
+endif
+let g:loaded_manpager_plugin = 1
+
+" Set up the current buffer (likely read from stdin) as a manpage
+command MANPAGER call s:ManPager()
+
+function s:ManPager()
+ " global options, keep these to a minimum to avoid side effects
+ if &compatible
+ set nocompatible
+ endif
+ if exists('+viminfofile')
+ set viminfofile=NONE
+ endif
+ syntax on
+
+ " Ensure text width matches window width
+ setlocal foldcolumn& nofoldenable nonumber norelativenumber
+
+ " In case Vim was invoked with -M
+ setlocal modifiable
+
+ " Emulate 'col -b'
+ exe 'silent! keepj keepp %s/\v(.)\b\ze\1?//e' .. (&gdefault ? '' : 'g')
+
+ " Remove ansi sequences
+ exe 'silent! keepj keepp %s/\v\e\[%(%(\d;)?\d{1,2})?[mK]//e' .. (&gdefault ? '' : 'g')
+
+ " Remove OSC 8 hyperlink sequences: \e]8;;...\e\ or \e]8;;...<BEL>
+ exe 'silent! keepj keepp %s/\v\e\]8;[^\x07\e]*%(%x07|\e\\)//e' .. (&gdefault ? '' : 'g')
+
+ " Remove empty lines above the header
+ call cursor(1, 1)
+ let n = search(".*(.*)", "c")
+ if n > 1
+ exe "1," . n-1 . "d"
+ endif
+
+ " Finished preprocessing the buffer, prevent any further modifications
+ setlocal nomodified nomodifiable
+
+ " Make this an unlisted, readonly scratch buffer
+ setlocal buftype=nofile noswapfile bufhidden=hide nobuflisted readonly
+
+ " Set filetype to man even if ftplugin is disabled
+ setlocal filetype=man
+ runtime ftplugin/man.vim
+endfunction
diff --git a/uvim/runtime/plugin/matchparen.vim b/uvim/runtime/plugin/matchparen.vim
new file mode 100644
index 0000000000..562148c19e
--- /dev/null
+++ b/uvim/runtime/plugin/matchparen.vim
@@ -0,0 +1,227 @@
+" Vim plugin for showing matching parens
+" Maintainer: The Vim Project <https://github.com/vim/vim>
+" Last Change: 2025 Apr 08
+" Former Maintainer: Bram Moolenaar <Bram@vim.org>
+
+" Exit quickly when:
+" - this plugin was already loaded (or disabled)
+" - when 'compatible' is set
+" - Vim has no support for :defer
+if exists("g:loaded_matchparen") || &cp || exists(":defer") != 2
+ finish
+endif
+let g:loaded_matchparen = 1
+
+if !exists("g:matchparen_timeout")
+ let g:matchparen_timeout = 300
+endif
+if !exists("g:matchparen_insert_timeout")
+ let g:matchparen_insert_timeout = 60
+endif
+if !exists("g:matchparen_disable_cursor_hl")
+ let g:matchparen_disable_cursor_hl = 0
+endif
+
+augroup matchparen
+ " Replace all matchparen autocommands
+ autocmd! CursorMoved,CursorMovedI,WinEnter,WinScrolled * call s:Highlight_Matching_Pair()
+ autocmd! BufWinEnter * autocmd SafeState * ++once call s:Highlight_Matching_Pair()
+ autocmd! WinLeave,BufLeave * call s:Remove_Matches()
+ autocmd! TextChanged,TextChangedI * call s:Highlight_Matching_Pair()
+ autocmd! TextChangedP * call s:Remove_Matches()
+augroup END
+
+" Skip the rest if it was already done.
+if exists("*s:Highlight_Matching_Pair")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+" The function that is invoked (very often) to define a ":match" highlighting
+" for any matching paren.
+func s:Highlight_Matching_Pair()
+ if !exists("w:matchparen_ids")
+ let w:matchparen_ids = []
+ endif
+ " Remove any previous match.
+ call s:Remove_Matches()
+
+ " Avoid that we remove the popup menu.
+ " Return when there are no colors (looks like the cursor jumps).
+ if pumvisible() || (&t_Co < 8 && !has("gui_running"))
+ return
+ endif
+
+ " Get the character under the cursor and check if it's in 'matchpairs'.
+ let c_lnum = line('.')
+ let c_col = col('.')
+ let before = 0
+
+ let text = getline(c_lnum)
+ let c_before = text->strpart(0, c_col - 1)->slice(-1)
+ let c = text->strpart(c_col - 1)->slice(0, 1)
+ let plist = split(&matchpairs, '.\zs[:,]')
+ let i = index(plist, c)
+ if i < 0
+ " not found, in Insert mode try character before the cursor
+ if c_col > 1 && (mode() == 'i' || mode() == 'R')
+ let before = strlen(c_before)
+ let c = c_before
+ let i = index(plist, c)
+ endif
+ if i < 0
+ " not found, nothing to do
+ return
+ endif
+ endif
+
+ " Figure out the arguments for searchpairpos().
+ if i % 2 == 0
+ let s_flags = 'nW'
+ let c2 = plist[i + 1]
+ else
+ let s_flags = 'nbW'
+ let c2 = c
+ let c = plist[i - 1]
+ endif
+ if c == '['
+ let c = '\['
+ let c2 = '\]'
+ endif
+
+ " Find the match. When it was just before the cursor move it there for a
+ " moment.
+ if before > 0
+ let save_cursor = getcurpos()
+ call cursor(c_lnum, c_col - before)
+ defer setpos('.', save_cursor)
+ endif
+
+ if !has("syntax") || !exists("g:syntax_on")
+ let s_skip = "0"
+ else
+ " do not attempt to match when the syntax item where the cursor is
+ " indicates there does not exist a matching parenthesis, e.g. for shells
+ " case statement: "case $var in foobar)"
+ "
+ " add the check behind a filetype check, so it only needs to be
+ " evaluated for certain filetypes
+ if ['sh']->index(&filetype) >= 0 &&
+ \ synstack(".", col("."))->indexof({_, id -> synIDattr(id, "name")
+ \ =~? "shSnglCase"}) >= 0
+ return
+ endif
+ " Build an expression that detects whether the current cursor position is
+ " in certain syntax types (string, comment, etc.), for use as
+ " searchpairpos()'s skip argument.
+ " We match "escape" for special items, such as lispEscapeSpecial, and
+ " match "symbol" for lispBarSymbol.
+ let s_skip = 'synstack(".", col("."))'
+ \ . '->indexof({_, id -> synIDattr(id, "name") =~? '
+ \ . '"string\\|character\\|singlequote\\|escape\\|symbol\\|comment"}) >= 0'
+ " If executing the expression determines that the cursor is currently in
+ " one of the syntax types, then we want searchpairpos() to find the pair
+ " within those syntax types (i.e., not skip). Otherwise, the cursor is
+ " outside of the syntax types and s_skip should keep its value so we skip
+ " any matching pair inside the syntax types.
+ " Catch if this throws E363: pattern uses more memory than 'maxmempattern'.
+ try
+ execute 'if ' . s_skip . ' | let s_skip = "0" | endif'
+ catch /^Vim\%((\a\+)\)\=:E363/
+ " We won't find anything, so skip searching, should keep Vim responsive.
+ return
+ endtry
+ endif
+
+ " Limit the search to lines visible in the window.
+ let stoplinebottom = line('w$')
+ let stoplinetop = line('w0')
+ if i % 2 == 0
+ let stopline = stoplinebottom
+ else
+ let stopline = stoplinetop
+ endif
+
+ " Limit the search time to 300 msec to avoid a hang on very long lines.
+ " This fails when a timeout is not supported.
+ if mode() == 'i' || mode() == 'R'
+ let timeout = exists("b:matchparen_insert_timeout") ? b:matchparen_insert_timeout : g:matchparen_insert_timeout
+ else
+ let timeout = exists("b:matchparen_timeout") ? b:matchparen_timeout : g:matchparen_timeout
+ endif
+ try
+ let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline, timeout)
+ catch /E118/
+ " Can't use the timeout, restrict the stopline a bit more to avoid taking
+ " a long time on closed folds and long lines.
+ " The "viewable" variables give a range in which we can scroll while
+ " keeping the cursor at the same position.
+ " adjustedScrolloff accounts for very large numbers of scrolloff.
+ let adjustedScrolloff = min([&scrolloff, (line('w$') - line('w0')) / 2])
+ let bottom_viewable = min([line('$'), c_lnum + &lines - adjustedScrolloff - 2])
+ let top_viewable = max([1, c_lnum-&lines+adjustedScrolloff + 2])
+ " one of these stoplines will be adjusted below, but the current values are
+ " minimal boundaries within the current window
+ if i % 2 == 0
+ if has("byte_offset") && has("syntax_items") && &smc > 0
+ let stopbyte = min([line2byte("$"), line2byte(".") + col(".") + &smc * 2])
+ let stopline = min([bottom_viewable, byte2line(stopbyte)])
+ else
+ let stopline = min([bottom_viewable, c_lnum + 100])
+ endif
+ let stoplinebottom = stopline
+ else
+ if has("byte_offset") && has("syntax_items") && &smc > 0
+ let stopbyte = max([1, line2byte(".") + col(".") - &smc * 2])
+ let stopline = max([top_viewable, byte2line(stopbyte)])
+ else
+ let stopline = max([top_viewable, c_lnum - 100])
+ endif
+ let stoplinetop = stopline
+ endif
+ let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline)
+ endtry
+
+ " If a match is found setup match highlighting.
+ if m_lnum > 0 && m_lnum >= stoplinetop && m_lnum <= stoplinebottom
+ if !g:matchparen_disable_cursor_hl
+ call add(w:matchparen_ids, matchaddpos('MatchParen', [[c_lnum, c_col - before], [m_lnum, m_col]], 10))
+ else
+ call add(w:matchparen_ids, matchaddpos('MatchParen', [[m_lnum, m_col]], 10))
+ endif
+ let w:paren_hl_on = 1
+ endif
+endfunction
+
+func s:Remove_Matches()
+ if exists('w:paren_hl_on') && w:paren_hl_on
+ while !empty(w:matchparen_ids)
+ silent! call remove(w:matchparen_ids, 0)->matchdelete()
+ endwhile
+ let w:paren_hl_on = 0
+ endif
+endfunc
+
+" Define commands that will disable and enable the plugin.
+command DoMatchParen call s:DoMatchParen()
+command NoMatchParen call s:NoMatchParen()
+
+func s:NoMatchParen()
+ let w = winnr()
+ noau windo call s:Remove_Matches()
+ unlet! g:loaded_matchparen
+ exe "noau ". w . "wincmd w"
+ au! matchparen
+endfunc
+
+func s:DoMatchParen()
+ runtime plugin/matchparen.vim
+ let w = winnr()
+ silent windo doau CursorMoved
+ exe "noau ". w . "wincmd w"
+endfunc
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/uvim/runtime/plugin/netrwPlugin.vim b/uvim/runtime/plugin/netrwPlugin.vim
new file mode 100644
index 0000000000..6d7a8660ff
--- /dev/null
+++ b/uvim/runtime/plugin/netrwPlugin.vim
@@ -0,0 +1,9 @@
+" Load the netrw package.
+
+if &cp || exists("g:loaded_netrw") || exists("g:loaded_netrwPlugin")
+ finish
+endif
+
+packadd netrw
+
+" vim:ts=8 sts=2 sw=2 et
diff --git a/uvim/runtime/plugin/openPlugin.vim b/uvim/runtime/plugin/openPlugin.vim
new file mode 100644
index 0000000000..b7274aadda
--- /dev/null
+++ b/uvim/runtime/plugin/openPlugin.vim
@@ -0,0 +1,46 @@
+vim9script
+
+# Vim runtime support library
+#
+# Maintainer: The Vim Project <https://github.com/vim/vim>
+# Last Change: 2025 Jun 22
+
+if exists("g:loaded_openPlugin") || &cp
+ finish
+endif
+g:loaded_openPlugin = 1
+
+import autoload 'dist/vim9.vim'
+
+command -complete=shellcmd -nargs=1 Launch vim9.Launch(trim(<f-args>))
+
+# technically, -nargs=1 is correct, but this throws E480: No match
+# when the argument contains a wildchar on Windows
+command -complete=file -nargs=* Open vim9.Open(trim(<f-args>))
+# Use URLOpen when you don't want completion to happen
+# (or because you want to avoid cmdline-special)
+command -nargs=1 URLOpen vim9.Open(trim(<f-args>))
+
+const no_gx = get(g:, "nogx", get(g:, "netrw_nogx", false))
+if !no_gx
+ def GetWordUnderCursor(): string
+ const url = matchstr(expand("<cWORD>"), '\%(\%(http\|ftp\|irc\)s\?\|file\)://\S\{-}\ze[^A-Za-z0-9/]*$')
+ if !empty(url)
+ return url
+ endif
+
+ const user_var = get(g:, 'gx_word', get(g:, 'netrw_gx', '<cfile>'))
+ return expand(user_var)
+ enddef
+
+ if maparg('gx', 'n') == ""
+ nnoremap <Plug>(open-word-under-cursor) <scriptcmd>vim9.Open(GetWordUnderCursor())<CR>
+ nmap gx <Plug>(open-word-under-cursor)
+ endif
+ if maparg('gx', 'x') == ""
+ xnoremap <Plug>(open-word-under-cursor) <scriptcmd>vim9.Open(getregion(getpos('v'), getpos('.'), { type: mode() })->join())<CR>
+ xmap gx <Plug>(open-word-under-cursor)
+ endif
+endif
+
+# vim: ts=8 sts=2 sw=2 et
diff --git a/uvim/runtime/plugin/rrhelper.vim b/uvim/runtime/plugin/rrhelper.vim
new file mode 100644
index 0000000000..5e23eef1b1
--- /dev/null
+++ b/uvim/runtime/plugin/rrhelper.vim
@@ -0,0 +1,49 @@
+" Vim plugin with helper function(s) for --remote-wait
+" Maintainer: Flemming Madsen <fma@cci.dk>
+" Last Change: 2008 May 29
+
+" Has this already been loaded?
+if exists("loaded_rrhelper") || !has("clientserver")
+ finish
+endif
+let loaded_rrhelper = 1
+
+" Setup answers for a --remote-wait client who will assume
+" a SetupRemoteReplies() function in the command server
+
+function SetupRemoteReplies()
+ let cnt = 0
+ let max = argc()
+
+ let id = expand("<client>")
+ if (type(id) == v:t_number && id == 0) || (type(id) == v:t_string && id == '')
+ return
+ endif
+
+ while cnt < max
+ " Handle same file from more clients and file being more than once
+ " on the command line by encoding this stuff in the group name
+ let uniqueGroup = "RemoteReply_".id."_".cnt
+
+ " Path separators are always forward slashes for the autocommand pattern.
+ " Escape special characters with a backslash.
+ let f = substitute(argv(cnt), '\\', '/', "g")
+ if exists('*fnameescape')
+ let f = fnameescape(f)
+ else
+ let f = escape(f, " \t\n*?[{`$\\%#'\"|!<")
+ endif
+ execute "augroup ".uniqueGroup
+ execute "autocmd ".uniqueGroup." BufUnload ". f ." call DoRemoteReply('".id."', '".cnt."', '".uniqueGroup."', '". f ."')"
+ let cnt = cnt + 1
+ endwhile
+ augroup END
+endfunc
+
+function DoRemoteReply(id, cnt, group, file)
+ call server2client(a:id, a:cnt)
+ execute 'autocmd! '.a:group.' BufUnload '.a:file
+ execute 'augroup! '.a:group
+endfunc
+
+" vim: set sw=2 sts=2 :
diff --git a/uvim/runtime/plugin/spellfile.vim b/uvim/runtime/plugin/spellfile.vim
new file mode 100644
index 0000000000..1730ac8a95
--- /dev/null
+++ b/uvim/runtime/plugin/spellfile.vim
@@ -0,0 +1,16 @@
+" Vim plugin for downloading spell files
+" Maintainer: The Vim Project <https://github.com/vim/vim>
+" Last Change: 2023 Aug 10
+" Former Maintainer: Bram Moolenaar <Bram@vim.org>
+
+" Exit quickly when:
+" - this plugin was already loaded
+" - when 'compatible' is set
+" - some autocommands are already taking care of spell files
+if exists("loaded_spellfile_plugin") || &cp || exists("#SpellFileMissing")
+ finish
+endif
+let loaded_spellfile_plugin = 1
+
+" The function is in the autoload directory.
+autocmd SpellFileMissing * call spellfile#LoadFile(expand('<amatch>'))
diff --git a/uvim/runtime/plugin/tarPlugin.vim b/uvim/runtime/plugin/tarPlugin.vim
new file mode 100644
index 0000000000..e55a367854
--- /dev/null
+++ b/uvim/runtime/plugin/tarPlugin.vim
@@ -0,0 +1,60 @@
+" tarPlugin.vim -- a Vim plugin for browsing tarfiles
+"
+" Original was copyright (c) 2002, Michael C. Toren <mct@toren.net>
+" Modified by Charles E. Campbell
+" Distributed under the GNU General Public License.
+"
+" Updates are available from <http://michael.toren.net/code/>. If you
+" find this script useful, or have suggestions for improvements, please
+" let me know.
+" Also look there for further comments and documentation.
+"
+" This part only sets the autocommands. The functions are in autoload/tar.vim.
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if &cp || exists("g:loaded_tarPlugin")
+ finish
+endif
+let g:loaded_tarPlugin = "v32"
+let s:keepcpo = &cpo
+set cpo&vim
+
+" ---------------------------------------------------------------------
+" Public Interface: {{{1
+augroup tar
+ au!
+ au BufReadCmd tarfile::* call tar#Read(expand("<amatch>"))
+ au FileReadCmd tarfile::* call tar#Read(expand("<amatch>"))
+ au BufWriteCmd tarfile::* call tar#Write(expand("<amatch>"))
+ au FileWriteCmd tarfile::* call tar#Write(expand("<amatch>"))
+
+ if has("unix")
+ au BufReadCmd tarfile::*/* call tar#Read(expand("<amatch>"))
+ au FileReadCmd tarfile::*/* call tar#Read(expand("<amatch>"))
+ au BufWriteCmd tarfile::*/* call tar#Write(expand("<amatch>"))
+ au FileWriteCmd tarfile::*/* call tar#Write(expand("<amatch>"))
+ endif
+
+ au BufReadCmd *.lrp call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tar call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tar.bz2 call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tar.bz3 call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tar.gz call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tar.lz4 call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tar.lzma call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tar.xz call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tar.Z call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tar.zst call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tbz call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tgz call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tlz4 call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.txz call tar#Browse(expand("<amatch>"))
+ au BufReadCmd *.tzst call tar#Browse(expand("<amatch>"))
+augroup END
+com! -nargs=? -complete=file Vimuntar call tar#Vimuntar(<q-args>)
+
+" ---------------------------------------------------------------------
+" Restoration And Modelines: {{{1
+" vim: fdm=marker
+let &cpo= s:keepcpo
+unlet s:keepcpo
diff --git a/uvim/runtime/plugin/tohtml.vim b/uvim/runtime/plugin/tohtml.vim
new file mode 100644
index 0000000000..56eb2c15bf
--- /dev/null
+++ b/uvim/runtime/plugin/tohtml.vim
@@ -0,0 +1,254 @@
+" Vim plugin for converting a syntax highlighted file to HTML.
+" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
+" Last Change: 2023 Sep 07
+"
+" The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and
+" $VIMRUNTIME/syntax/2html.vim
+"
+if exists('g:loaded_2html_plugin')
+ finish
+endif
+let g:loaded_2html_plugin = 'vim9.0_v2'
+
+"
+" Changelog: {{{
+" 9.0_v2 (this version): - Warn if using deprecated g:use_xhtml option
+" - Change default g:html_use_input_for_pc to "none"
+" instead of "fallback". All modern browsers support
+" the "user-select: none" and "content:" CSS
+" properties so the older method relying on extra
+" markup and unspecified browser/app clipboard
+" handling is only needed in rare special cases.
+" - Fix SourceForge issue #33: generate diff filler
+" correctly when new lines have been added to or
+" removed from end of buffer.
+" - Fix SourceForge issue #32/Vim Github issue #8547:
+" use translated highlight ID for styling the
+" special-use group names (e.g. LineNr) used
+" directly by name in the 2html processing.
+" - Fix SourceForge issue #26, refactoring to use
+" :let-heredoc style string assignment and
+" additional fixes for ".." vs. "." style string
+" concatenation. Requires Vim v8.1.1354 or higher.
+" 9.0_v1 (Vim 9.0.1275): - Implement g:html_no_doc and g:html_no_modeline
+" for diff mode. Add tests.
+" (Vim 9.0.1122): NOTE: no version string update for this version!
+" - Bugfix for variable name in g:html_no_doc
+" (Vim 9.0.0819): NOTE: no version string update for this version!
+" - Add options g:html_no_doc, g:html_no_lines,
+" and g:html_no_modeline (partially included in Vim
+" runtime prior to version string update).
+" - Updates for new Vim9 string append style (i.e. use
+" ".." instead of "."). Requires Vim version
+" 8.1.1114 or higher.
+"
+" 8.1 updates: {{{
+" 8.1_v2 (Vim 8.1.2312): - Fix SourceForge issue #19: fix calculation of tab
+" stop position to use in expanding a tab, when that
+" tab occurs after a syntax match which in turn
+" comes after previously expanded tabs.
+" - Set eventignore while splitting a window for the
+" destination file to ignore FileType events;
+" speeds up processing when the destination file
+" already exists and HTML highlight takes too long.
+" - Fix SourceForge issue #20: progress bar could not be
+" seen when DiffDelete background color matched
+" StatusLine background color. Added TOhtmlProgress
+" highlight group for manual user override, but
+" calculate it to be visible compared to StatusLine
+" by default.
+" - Fix SourceForge issue #1: Remove workaround for old
+" browsers which don't support 'ch' CSS unit, since
+" all modern browsers, including IE>=9, support it.
+" - Fix SourceForge issue #10: support termguicolors
+" - Fix SourceForge issue #21: default to using
+" generated content instead of <input> tags for
+" uncopyable text, so that text is correctly
+" prevented from being copied in chrome. Use
+" g:html_use_input_for_pc option to control the
+" method used.
+" - Switch to HTML5 to allow using vnu as a validator
+" in unit test.
+" - Fix fallback sizing of <input> tags for browsers
+" without "ch" support.
+" - Fix cursor on unselectable diff filler text.
+" 8.1_v1 (Vim 8.1.0528): - Fix SourceForge issue #6: Don't generate empty
+" script tag.
+" - Fix SourceForge issue #5: javascript should
+" declare variables with "var".
+" - Fix SourceForge issue #13: errors thrown sourcing
+" 2html.vim directly when plugins not loaded.
+" - Fix SourceForge issue #16: support 'vartabstop'.
+"}}}
+"
+" 7.4 updates: {{{
+" 7.4_v2 (Vim 7.4.0899): Fix error raised when converting a diff containing
+" an empty buffer. Jan Stocker: allow g:html_font to
+" take a list so it is easier to specfiy fallback
+" fonts in the generated CSS.
+" 7.4_v1 (Vim 7.4.0000): Fix modeline mangling for new "Vim:" format, and
+" also for version-specific modelines like "vim>703:".
+"}}}
+"
+" 7.3 updates: {{{
+" 7.3_v14 (Vim 7.3.1246): Allow suppressing line number anchors using
+" g:html_line_ids=0. Allow customizing
+" important IDs (like line IDs and fold IDs) using
+" g:html_id_expr evaluated when the buffer conversion
+" is started.
+" 7.3_v13 (Vim 7.3.1088): Keep foldmethod at manual in the generated file and
+" insert modeline to set it to manual.
+" Fix bug: diff mode with 2 unsaved buffers creates a
+" duplicate of one buffer instead of including both.
+" Add anchors to each line so you can put '#L123'
+" or '#123' at the end of the URL to jump to line 123
+" (idea by Andy Spencer). Add javascript to open folds
+" to show the anchor being jumped to if it is hidden.
+" Fix XML validation error: &nsbp; not part of XML.
+" Allow TOhtml to chain together with other commands
+" using |.
+" 7.3_v12 (Vim 7.3.0616): Fix modeline mangling to also work for when multiple
+" highlight groups make up the start-of-modeline text.
+" Improve render time of page with uncopyable regions
+" by not using one-input-per-char. Change name of
+" uncopyable option from html_unselectable to
+" html_prevent_copy. Added html_no_invalid option and
+" default to inserting invalid markup for uncopyable
+" regions to prevent MS Word from pasting undeletable
+" <input> elements. Fix 'cpo' handling (Thilo Six).
+" 7.3_v12b1: Add html_unselectable option. Rework logic to
+" eliminate post-processing substitute commands in
+" favor of doing the work up front. Remove unnecessary
+" special treatment of 'LineNr' highlight group. Minor
+" speed improvements. Fix modeline mangling in
+" generated output so it works for text in the first
+" column. Fix missing line number and fold column in
+" diff filler lines. Fix that some fonts have a 1px
+" gap (using a dirty hack, improvements welcome). Add
+" "colorscheme" meta tag. Does NOT include support for
+" the new default foldtext added in v11, as the patch
+" adding it has not yet been included in Vim.
+" 7.3_v11 ( unreleased ): Support new default foldtext from patch by Christian
+" Brabandt in
+" http://groups.google.com/d/topic/vim_dev/B6FSGfq9VoI/discussion.
+" This patch has not yet been included in Vim, thus
+" these changes are removed in the next version.
+" 7.3_v10 (Vim 7.3.0227): Fix error E684 when converting a range wholly inside
+" multiple nested folds with dynamic folding on.
+" Also fix problem with foldtext in this situation.
+" 7.3_v9 (Vim 7.3.0170): Add html_pre_wrap option active with html_use_css
+" and without html_no_pre, default value same as
+" 'wrap' option, (Andy Spencer). Don't use
+" 'fileencoding' for converted document encoding if
+" 'buftype' indicates a special buffer which isn't
+" written.
+" 7.3_v8 (Vim 7.3.0100): Add html_expand_tabs option to allow leaving tab
+" characters in generated output (Andy Spencer).
+" Escape text that looks like a modeline so Vim
+" doesn't use anything in the converted HTML as a
+" modeline. Bugfixes: Fix folding when a fold starts
+" before the conversion range. Remove fold column when
+" there are no folds.
+" 7.3_v7 (Vim 7-3-0063): see betas released on vim_dev below:
+" 7.3_v7b3: Fixed bug, convert Unicode to UTF-8 all the way.
+" 7.3_v7b2: Remove automatic detection of encodings that are not
+" supported by all major browsers according to
+" http://wiki.whatwg.org/wiki/Web_Encodings and
+" convert to UTF-8 for all Unicode encodings. Make
+" HTML encoding to Vim encoding detection be
+" case-insensitive for built-in pairs.
+" 7.3_v7b1: Remove use of setwinvar() function which cannot be
+" called in restricted mode (Andy Spencer). Use
+" 'fencoding' instead of 'encoding' to determine by
+" charset, and make sure the 'fenc' of the generated
+" file matches its indicated charset. Add charsets for
+" all of Vim's natively supported encodings.
+" 7.3_v6 (Vim 7.3.0000): Really fix bug with 'nowrapscan', 'magic' and other
+" user settings interfering with diff mode generation,
+" trailing whitespace (e.g. line number column) when
+" using html_no_pre, and bugs when using
+" html_hover_unfold.
+" 7.3_v5 ( unreleased ): Fix bug with 'nowrapscan' and also with out-of-sync
+" folds in diff mode when first line was folded.
+" 7.3_v4 (Vim 7.3.0000): Bugfixes, especially for xhtml markup, and diff mode
+" 7.3_v3 (Vim 7.3.0000): Refactor option handling and make html_use_css
+" default to true when not set to anything. Use strict
+" doctypes where possible. Rename use_xhtml option to
+" html_use_xhtml for consistency. Use .xhtml extension
+" when using this option. Add meta tag for settings.
+" 7.3_v2 (Vim 7.3.0000): Fix syntax highlighting in diff mode to use both the
+" diff colors and the normal syntax colors
+" 7.3_v1 (Vim 7.3.0000): Add conceal support and meta tags in output
+"}}}
+"}}}
+
+" TODO: {{{
+" * Check the issue tracker:
+" https://sourceforge.net/p/vim-tohtml/issues/search/?q=%21status%3Aclosed
+" * Options for generating the CSS in external style sheets. New :TOcss
+" command to convert the current color scheme into a (mostly) generic CSS
+" stylesheet which can be re-used. Alternate stylesheet support? Good start
+" by Erik Falor
+" ( https://groups.google.com/d/topic/vim_use/7XTmC4D22dU/discussion ).
+" * Add optional argument to :TOhtml command to specify mode (gui, cterm,
+" term) to use for the styling. Suggestion by "nacitar".
+" * Add way to override or specify which RGB colors map to the color numbers
+" in cterm. Get better defaults than just guessing? Suggestion by "nacitar".
+" * Disable filetype detection until after all processing is done.
+" * Add option for not generating the hyperlink on stuff that looks like a
+" URL? Or just color the link to fit with the colorscheme (and only special
+" when hovering)?
+" * Bug: Opera does not allow printing more than one page if uncopyable
+" regions is turned on. Possible solution: Add normal text line numbers with
+" display:none, set to display:inline for print style sheets, and hide
+" <input> elements for print, to allow Opera printing multiple pages (and
+" other uncopyable areas?). May need to make the new text invisible to IE
+" with conditional comments to prevent copying it, IE for some reason likes
+" to copy hidden text. Other browsers too?
+" * Bug: still a 1px gap throughout the fold column when html_prevent_copy is
+" "fn" in some browsers. Specifically, in Chromium on Ubuntu (but not Chrome
+" on Windows). Perhaps it is font related?
+" * Bug: still some gaps in the fold column when html_prevent_copy contains
+" 'd' and showing the whole diff (observed in multiple browsers). Only gaps
+" on diff lines though.
+" * Undercurl support via CSS3, with fallback to dotted or something:
+" https://groups.google.com/d/topic/vim_use/BzXA6He1pHg/discussion
+" * Redo updates for modified default foldtext (v11) when/if the patch is
+" accepted to modify it.
+" * Test case +diff_one_file-dynamic_folds+expand_tabs-hover_unfold
+" +ignore_conceal-ignore_folding+no_foldcolumn+no_pre+no_progress
+" +number_lines-pre_wrap-use_css+use_xhtml+whole_filler.xhtml
+" does not show the whole diff filler as it is supposed to?
+" * Bug: when 'isprint' is wrong for the current encoding, will generate
+" invalid content. Can/should anything be done about this? Maybe a separate
+" plugin to correct 'isprint' based on encoding?
+" * Check to see if the windows-125\d encodings actually work in Unix without
+" the 8bit- prefix. Add prefix to autoload dictionaries for Unix if not.
+" * Font auto-detection similar to
+" http://www.vim.org/scripts/script.php?script_id=2384 but for a variety of
+" platforms.
+" * Pull in code from http://www.vim.org/scripts/script.php?script_id=3113 :
+" - listchars support
+" - full-line background highlight
+" - other?
+" * Make it so deleted lines in a diff don't create side-scrolling (get it
+" free with full-line background highlight above).
+" * Restore open/closed folds and cursor position after processing each file
+" with option not to restore for speed increase.
+" * Add extra meta info (generation time, etc.)?
+" * Tidy up so we can use strict doctype in even more situations
+" * Implementation detail: add threshold for writing the lines to the html
+" buffer before we're done (5000 or so lines should do it)
+" * TODO comments for code cleanup scattered throughout
+"}}}
+
+" Define the :TOhtml command when:
+" - 'compatible' is not set
+" - this plugin or user override was not already loaded
+" - user commands are available. {{{
+if !&cp && !exists(":TOhtml") && has("user_commands")
+ command -range=% -bar TOhtml :call tohtml#Convert2HTML(<line1>, <line2>)
+endif "}}}
+
+" Make sure any patches will probably use consistent indent
+" vim: ts=8 sw=2 sts=2 noet fdm=marker
diff --git a/uvim/runtime/plugin/tutor.vim b/uvim/runtime/plugin/tutor.vim
new file mode 100644
index 0000000000..495f31704c
--- /dev/null
+++ b/uvim/runtime/plugin/tutor.vim
@@ -0,0 +1,12 @@
+" Tutor: New Style Tutor Plugin :h vim-tutor-mode
+" Maintainer: This runtime file is looking for a new maintainer.
+" Contributors: Phạm Bình An <phambinhanctb2004@gmail.com>
+" Original Author: Felipe Morales <hel.sheep@gmail.com>
+" Date: 2025 May 12
+
+if exists('g:loaded_tutor_mode_plugin') || &compatible
+ finish
+endif
+let g:loaded_tutor_mode_plugin = 1
+
+command! -nargs=? -complete=custom,tutor#TutorCmdComplete Tutor call tutor#TutorCmd(<q-args>)
diff --git a/uvim/runtime/plugin/vimballPlugin.vim b/uvim/runtime/plugin/vimballPlugin.vim
new file mode 100644
index 0000000000..fdae3d5c1a
--- /dev/null
+++ b/uvim/runtime/plugin/vimballPlugin.vim
@@ -0,0 +1,52 @@
+" vimballPlugin : construct a file containing both paths and files
+" Maintainer: This runtime file is looking for a new maintainer.
+" Original Author: Charles E. Campbell
+" Copyright: (c) 2004-2014 by Charles E. Campbell
+" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
+" (see |copyright|) except use "Vimball" instead of "Vim".
+" No warranty, express or implied.
+" *** *** Use At-Your-Own-Risk! *** ***
+"
+" (Rom 2:1 WEB) Therefore you are without excuse, O man, whoever you are who
+" judge. For in that which you judge another, you condemn yourself. For
+" you who judge practice the same things.
+" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
+
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if &cp || exists("g:loaded_vimballPlugin")
+ finish
+endif
+let g:loaded_vimballPlugin = "v37"
+let s:keepcpo = &cpo
+set cpo&vim
+
+" ------------------------------------------------------------------------------
+" Public Interface: {{{1
+com! -range -complete=file -nargs=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>)
+com! -nargs=? -complete=dir UseVimball call vimball#Vimball(1,<f-args>)
+com! -nargs=0 VimballList call vimball#Vimball(0)
+com! -nargs=* -complete=dir RmVimball call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
+augroup Vimball
+ au!
+ au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.bz3,*.vba.zip,*.vba.xz
+ \ if getline(1) =~ '^" Vimball Archiver' |
+ \ setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0, "Source this file to extract it! (:so %)")|endif |
+ \ endif
+ au SourceCmd *.vba.gz,*.vba.bz2,*.vba.bz3,*.vba.zip,*.vba.xz let s:origfile=expand("%")|if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if s:origfile!=expand("<afile>")|close|endif
+ au SourceCmd *.vba if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif
+ au BufEnter *.vmb,*.vmb.gz,*.vmb.bz2,*.vmb.bz3,*.vmb.zip,*.vmb.xz
+ \ if getline(1) =~ '^" Vimball Archiver' |
+ \ setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif |
+ \ endif
+ au SourceCmd *.vmb.gz,*.vmb.bz2,*.vmb.bz3,*.vmb.zip,*.vmb.xz let s:origfile=expand("%")|if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if s:origfile!=expand("<afile>")|close|endif
+ au SourceCmd *.vmb if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif
+augroup END
+
+" =====================================================================
+" Restoration And Modelines: {{{1
+" vim: fdm=marker
+let &cpo= s:keepcpo
+unlet s:keepcpo
+
+" vim: ts=4:
diff --git a/uvim/runtime/plugin/zipPlugin.vim b/uvim/runtime/plugin/zipPlugin.vim
new file mode 100644
index 0000000000..a9ab12158b
--- /dev/null
+++ b/uvim/runtime/plugin/zipPlugin.vim
@@ -0,0 +1,60 @@
+" zipPlugin.vim: Handles browsing zipfiles
+" PLUGIN PORTION
+" Date: Dec 07, 2021
+" Maintainer: This runtime file is looking for a new maintainer.
+" Former Maintainer: Charles E Campbell
+" Last Change:
+" 2025 Apr 02 by Vim Project: add *.whl to list of zip extensions (#17038)
+" 2025 Oct 06 by MultisampledNight: add *.pkpass to list of zip extensions (#18501)
+" License: Vim License (see vim's :help license)
+" Copyright: Copyright (C) 2005-2016 Charles E. Campbell {{{1
+" Permission is hereby granted to use and distribute this code,
+" with or without modifications, provided that this copyright
+" notice is copied with it. Like anything else that's free,
+" zipPlugin.vim is provided *as is* and comes with no warranty
+" of any kind, either expressed or implied. By using this
+" plugin, you agree that in no event will the copyright
+" holder be liable for any damages resulting from the use
+" of this software.
+"
+" (James 4:8 WEB) Draw near to God, and he will draw near to you.
+" Cleanse your hands, you sinners; and purify your hearts, you double-minded.
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if &cp || exists("g:loaded_zipPlugin")
+ finish
+endif
+let g:loaded_zipPlugin = "v33"
+let s:keepcpo = &cpo
+set cpo&vim
+
+" ---------------------------------------------------------------------
+" Options: {{{1
+if !exists("g:zipPlugin_ext")
+ let g:zipPlugin_ext='*.aar,*.apk,*.celzip,*.crtx,*.docm,*.docx,*.dotm,*.dotx,*.ear,*.epub,*.gcsx,*.glox,*.gqsx,*.ja,*.jar,*.kmz,*.odb,*.odc,*.odf,*.odg,*.odi,*.odm,*.odp,*.ods,*.odt,*.otc,*.otf,*.otg,*.oth,*.oti,*.otp,*.ots,*.ott,*.oxt,*.pkpass,*.potm,*.potx,*.ppam,*.ppsm,*.ppsx,*.pptm,*.pptx,*.sldx,*.thmx,*.vdw,*.war,*.whl,*.wsz,*.xap,*.xlam,*.xlsb,*.xlsm,*.xlsx,*.xltm,*.xltx,*.xpi,*.zip'
+endif
+
+" ---------------------------------------------------------------------
+" Public Interface: {{{1
+augroup zip
+ au!
+ au BufReadCmd zipfile:* call zip#Read(expand("<amatch>"), 1)
+ au FileReadCmd zipfile:* call zip#Read(expand("<amatch>"), 0)
+ au BufWriteCmd zipfile:* call zip#Write(expand("<amatch>"))
+ au FileWriteCmd zipfile:* call zip#Write(expand("<amatch>"))
+
+ if has("unix")
+ au BufReadCmd zipfile:*/* call zip#Read(expand("<amatch>"), 1)
+ au FileReadCmd zipfile:*/* call zip#Read(expand("<amatch>"), 0)
+ au BufWriteCmd zipfile:*/* call zip#Write(expand("<amatch>"))
+ au FileWriteCmd zipfile:*/* call zip#Write(expand("<amatch>"))
+ endif
+
+ exe "au BufReadCmd ".g:zipPlugin_ext.' call zip#Browse(expand("<amatch>"))'
+augroup END
+
+" ---------------------------------------------------------------------
+" Restoration And Modelines: {{{1
+" vim: fdm=marker
+let &cpo= s:keepcpo
+unlet s:keepcpo