vim-patch:519cc559b08b (#16340)

Update runtime files
519cc559b0
This commit is contained in:
Christian Clason
2021-11-17 10:02:59 +01:00
committed by GitHub
parent eba317d7a9
commit c0efe49e78
23 changed files with 336 additions and 110 deletions

View File

@@ -1,7 +1,7 @@
" zip.vim: Handles browsing zipfiles " zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION " AUTOLOAD PORTION
" Date: Jan 07, 2020 " Date: Nov 08, 2021
" Version: 31 " Version: 32
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM> " Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" License: Vim License (see vim's :help license) " License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1 " Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
@@ -20,7 +20,7 @@
if &cp || exists("g:loaded_zip") if &cp || exists("g:loaded_zip")
finish finish
endif endif
let g:loaded_zip= "v31" let g:loaded_zip= "v32"
if v:version < 702 if v:version < 702
echohl WarningMsg echohl WarningMsg
echo "***warning*** this version of zip needs vim 7.2 or later" echo "***warning*** this version of zip needs vim 7.2 or later"
@@ -115,7 +115,13 @@ fun! zip#Browse(zipfile)
setlocal bufhidden=hide setlocal bufhidden=hide
setlocal nobuflisted setlocal nobuflisted
setlocal nowrap setlocal nowrap
set ft=tar
" Oct 12, 2021: need to re-use Bram's syntax/tar.vim.
" Setting the filetype to zip doesn't do anything (currently),
" but it is perhaps less confusing to curious perusers who do
" a :echo &ft
setf zip
run! syntax/tar.vim
" give header " give header
call append(0, ['" zip.vim version '.g:loaded_zip, call append(0, ['" zip.vim version '.g:loaded_zip,
@@ -187,8 +193,8 @@ fun! s:ZipBrowseSelect()
wincmd _ wincmd _
endif endif
let s:zipfile_{winnr()}= curfile let s:zipfile_{winnr()}= curfile
" call Decho("exe e ".fnameescape("zipfile:".zipfile.'::'.fname)) " call Decho("exe e ".fnameescape("zipfile://".zipfile.'::'.fname))
exe "noswapfile e ".fnameescape("zipfile:".zipfile.'::'.fname) exe "noswapfile e ".fnameescape("zipfile://".zipfile.'::'.fname)
filetype detect filetype detect
let &report= repkeep let &report= repkeep
@@ -203,11 +209,11 @@ fun! zip#Read(fname,mode)
set report=10 set report=10
if has("unix") if has("unix")
let zipfile = substitute(a:fname,'zipfile:\(.\{-}\)::[^\\].*$','\1','') let zipfile = substitute(a:fname,'zipfile://\(.\{-}\)::[^\\].*$','\1','')
let fname = substitute(a:fname,'zipfile:.\{-}::\([^\\].*\)$','\1','') let fname = substitute(a:fname,'zipfile://.\{-}::\([^\\].*\)$','\1','')
else else
let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','') let zipfile = substitute(a:fname,'^.\{-}zipfile://\(.\{-}\)::[^\\].*$','\1','')
let fname = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','') let fname = substitute(a:fname,'^.\{-}zipfile://.\{-}::\([^\\].*\)$','\1','')
let fname = substitute(fname, '[', '[[]', 'g') let fname = substitute(fname, '[', '[[]', 'g')
endif endif
" call Decho("zipfile<".zipfile.">") " call Decho("zipfile<".zipfile.">")
@@ -224,7 +230,7 @@ fun! zip#Read(fname,mode)
" the following code does much the same thing as " the following code does much the same thing as
" exe "keepj sil! r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1) " exe "keepj sil! r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1)
" but allows zipfile:... entries in quickfix lists " but allows zipfile://... entries in quickfix lists
let temp = tempname() let temp = tempname()
" call Decho("using temp file<".temp.">") " call Decho("using temp file<".temp.">")
let fn = expand('%:p') let fn = expand('%:p')
@@ -296,11 +302,11 @@ fun! zip#Write(fname)
" call Decho("current directory now: ".getcwd()) " call Decho("current directory now: ".getcwd())
if has("unix") if has("unix")
let zipfile = substitute(a:fname,'zipfile:\(.\{-}\)::[^\\].*$','\1','') let zipfile = substitute(a:fname,'zipfile://\(.\{-}\)::[^\\].*$','\1','')
let fname = substitute(a:fname,'zipfile:.\{-}::\([^\\].*\)$','\1','') let fname = substitute(a:fname,'zipfile://.\{-}::\([^\\].*\)$','\1','')
else else
let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','') let zipfile = substitute(a:fname,'^.\{-}zipfile://\(.\{-}\)::[^\\].*$','\1','')
let fname = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','') let fname = substitute(a:fname,'^.\{-}zipfile://.\{-}::\([^\\].*\)$','\1','')
endif endif
" call Decho("zipfile<".zipfile.">") " call Decho("zipfile<".zipfile.">")
" call Decho("fname <".fname.">") " call Decho("fname <".fname.">")

View File

@@ -10291,7 +10291,9 @@ wildmenumode() *wildmenumode()*
win_execute({id}, {command} [, {silent}]) *win_execute()* win_execute({id}, {command} [, {silent}]) *win_execute()*
Like `execute()` but in the context of window {id}. Like `execute()` but in the context of window {id}.
The window will temporarily be made the current window, The window will temporarily be made the current window,
without triggering autocommands. without triggering autocommands or changing directory. When
executing {command} autocommands will be triggered, this may
have unexpected side effects. Use |:noautocmd| if needed.
Example: > Example: >
call win_execute(winid, 'syntax enable') call win_execute(winid, 'syntax enable')

View File

@@ -319,21 +319,25 @@ Hints for translators:
3. Writing help files *help-writing* 3. Writing help files *help-writing*
For ease of use, a Vim help file for a plugin should follow the format of the For ease of use, a Vim help file for a plugin should follow the format of the
standard Vim help files. If you are writing a new help file it's best to copy standard Vim help files, except fot the fist line. If you are writing a new
one of the existing files and use it as a template. help file it's best to copy one of the existing files and use it as a
template.
The first line in a help file should have the following format: The first line in a help file should have the following format:
*helpfile_name.txt* For Vim version 7.3 Last change: 2010 June 4 *plugin_name.txt* {short description of the plugin}
The first field is a link to the help file name. The second field describes The first field is a help tag where ":help plugin_name" will jump to. The
the applicable Vim version. The last field specifies the last modification remainder of the line, after a Tab, describes the plugin purpose in a short
date of the file. Each field is separated by a tab. way. This will show up in the "LOCAL ADDITIONS" section of the main help
file. Check there that it shows up properly: |local-additions|.
If you want to add a version number of last modification date, put it in the
second line, right aligned.
At the bottom of the help file, place a Vim modeline to set the 'textwidth' At the bottom of the help file, place a Vim modeline to set the 'textwidth'
and 'tabstop' options and the 'filetype' to "help". Never set a global option and 'tabstop' options and the 'filetype' to "help". Never set a global option
in such a modeline, that can have consequences undesired by whoever reads that in such a modeline, that can have undesired consequences.
help.
TAGS TAGS

View File

@@ -45,6 +45,11 @@ To see what version of Python you have: >
There is no need to "import sys", it's done by default. There is no need to "import sys", it's done by default.
*python-environment*
Environment variables set in Vim are not always available in Python. This
depends on how Vim and Python were build. Also see
https://docs.python.org/3/library/os.html#os.environ
Note: Python is very sensitive to indenting. Make sure the "class" line and Note: Python is very sensitive to indenting. Make sure the "class" line and
"EOF" do not have any indent. "EOF" do not have any indent.

View File

@@ -46,6 +46,8 @@ modes.
where the map command applies. The result, including where the map command applies. The result, including
{rhs}, is then further scanned for mappings. This {rhs}, is then further scanned for mappings. This
allows for nested and recursive use of mappings. allows for nested and recursive use of mappings.
Note: Trailing spaces are included in the {rhs},
because space is a valid Normal mode command.
*:nore* *:norem* *:nore* *:norem*
:no[remap] {lhs} {rhs} |mapmode-nvo| *:no* *:noremap* *:nor* :no[remap] {lhs} {rhs} |mapmode-nvo| *:no* *:noremap* *:nor*
@@ -1419,6 +1421,7 @@ Possible values are (second column is the short name used in listing):
Special cases ~ Special cases ~
*:command-bang* *:command-bar* *:command-bang* *:command-bar*
*:command-register* *:command-buffer* *:command-register* *:command-buffer*
*:command-keepscript*
There are some special cases as well: There are some special cases as well:
-bang The command can take a ! modifier (like :q or :w) -bang The command can take a ! modifier (like :q or :w)

View File

@@ -102,6 +102,9 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
============================================================================== ==============================================================================
4. History *zip-history* {{{1 4. History *zip-history* {{{1
v32 Oct 22, 2021 * to avoid an issue with a vim 8.2 patch, zipfile: has
been changed to zipfile:// . This often shows up
as zipfile:/// with zipped files that are root-based.
v29 Apr 02, 2017 * (Klartext) reported that an encrypted zip file could v29 Apr 02, 2017 * (Klartext) reported that an encrypted zip file could
opened but the swapfile held unencrypted contents. opened but the swapfile held unencrypted contents.
The solution is to edit the contents of a zip file The solution is to edit the contents of a zip file

View File

@@ -289,11 +289,11 @@ In chapter 3 we briefly mentioned the history. The basics are that you can
use the <Up> key to recall an older command line. <Down> then takes you back use the <Up> key to recall an older command line. <Down> then takes you back
to newer commands. to newer commands.
There are actually four histories. The ones we will mention here are for ":" There are actually five histories. The ones we will mention here are for ":"
commands and for "/" and "?" search commands. The "/" and "?" commands share commands and for "/" and "?" search commands. The "/" and "?" commands share
the same history, because they are both search commands. The two other the same history, because they are both search commands. The three other
histories are for expressions and input lines for the input() function. histories are for expressions, debug more commands and input lines for the
|cmdline-history| input() function. |cmdline-history|
Suppose you have done a ":set" command, typed ten more colon commands and then Suppose you have done a ":set" command, typed ten more colon commands and then
want to repeat that ":set" command again. You could press ":" and then ten want to repeat that ":set" command again. You could press ":" and then ten

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types " Vim support file to detect file types
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2021 Oct 03 " Last Change: 2021 Nov 16
" Listen very carefully, I will say this only once " Listen very carefully, I will say this only once
if exists("did_load_filetypes") if exists("did_load_filetypes")

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin file " Vim filetype plugin file
" Language: Aap recipe " Language: Aap recipe
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2013 Apr 05 " Last Change: 2021 Nov 14
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
@@ -11,8 +11,9 @@ endif
" Don't load another plugin for this buffer " Don't load another plugin for this buffer
let b:did_ftplugin = 1 let b:did_ftplugin = 1
" Reset 'formatoptions', 'comments' and 'expandtab' to undo this plugin. " Reset 'formatoptions', 'comments', 'commentstring' and 'expandtab' to undo
let b:undo_ftplugin = "setl fo< com< et<" " this plugin.
let b:undo_ftplugin = "setl fo< com< cms< et<"
" Set 'formatoptions' to break comment lines but not other lines, " Set 'formatoptions' to break comment lines but not other lines,
" and insert the comment leader when hitting <CR> or using "o". " and insert the comment leader when hitting <CR> or using "o".
@@ -20,6 +21,12 @@ setlocal fo-=t fo+=croql
" Set 'comments' to format dashed lists in comments. " Set 'comments' to format dashed lists in comments.
setlocal comments=s:#\ -,m:#\ \ ,e:#,n:#,fb:- setlocal comments=s:#\ -,m:#\ \ ,e:#,n:#,fb:-
setlocal commentstring=#\ %s
" Expand tabs to spaces to avoid trouble. " Expand tabs to spaces to avoid trouble.
setlocal expandtab setlocal expandtab
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Aap Recipe Files (*.aap)\t*.aap\nAll Files (*.*)\t*.*\n"
let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin file " Vim filetype plugin file
" Language: Diff " Language: Diff
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Jul 18 " Last Change: 2021 Nov 14
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
@@ -9,10 +9,15 @@ if exists("b:did_ftplugin")
endif endif
let b:did_ftplugin = 1 let b:did_ftplugin = 1
let b:undo_ftplugin = "setl modeline<" let b:undo_ftplugin = "setl modeline< commentstring<"
" Don't use modelines in a diff, they apply to the diffed file " Don't use modelines in a diff, they apply to the diffed file
setlocal nomodeline setlocal nomodeline
" If there are comments they start with # " If there are comments they start with #
let &commentstring = "# %s" let &l:commentstring = "# %s"
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Diff Files (*.diff)\t*.diff\nPatch Files (*.patch)\t*.h\nAll Files (*.*)\t*.*\n"
let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif

View File

@@ -1,7 +1,8 @@
" Vim filetype plugin file. " Vim filetype plugin file.
" Language: Lua 4.0+ " Language: Lua
" Maintainer: Max Ischenko <mfi@ukr.net> " Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2012 Mar 07 " Previous Maintainer: Max Ischenko <mfi@ukr.net>
" Last Change: 2021 Nov 15
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
@@ -16,27 +17,30 @@ set cpo&vim
" Set 'formatoptions' to break comment lines but not other lines, and insert " Set 'formatoptions' to break comment lines but not other lines, and insert
" the comment leader when hitting <CR> or using "o". " the comment leader when hitting <CR> or using "o".
setlocal fo-=t fo+=croql setlocal formatoptions-=t formatoptions+=croql
setlocal com=:-- setlocal comments=:--
setlocal cms=--%s setlocal commentstring=--%s
setlocal suffixesadd=.lua setlocal suffixesadd=.lua
let b:undo_ftplugin = "setlocal fo< com< cms< sua<"
" The following lines enable the macros/matchit.vim plugin for if exists("loaded_matchit") && !exists("b:match_words")
" extended matching with the % key.
if exists("loaded_matchit")
let b:match_ignorecase = 0 let b:match_ignorecase = 0
let b:match_words = let b:match_words =
\ '\<\%(do\|function\|if\)\>:' . \ '\<\%(do\|function\|if\)\>:' .
\ '\<\%(return\|else\|elseif\)\>:' . \ '\<\%(return\|else\|elseif\)\>:' .
\ '\<end\>,' . \ '\<end\>,' .
\ '\<repeat\>:\<until\>' \ '\<repeat\>:\<until\>,' .
\ '\%(--\)\=\[\(=*\)\[:]\1]'
let b:undo_ftplugin .= " | unlet! b:match_words b:match_ignorecase"
endif
endif " exists("loaded_matchit") if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Lua Source Files (*.lua)\t*.lua\n" .
\ "All Files (*.*)\t*.*\n"
let b:undo_ftplugin .= " | unlet! b:browsefilter"
endif
let &cpo = s:cpo_save let &cpo = s:cpo_save
unlet s:cpo_save unlet s:cpo_save
let b:undo_ftplugin = "setlocal fo< com< cms< suffixesadd<"

View File

@@ -0,0 +1,29 @@
" Vim filetype plugin file
" Language: MikroTik RouterOS Script
" Maintainer: zainin <z@wintr.dev>
" Last Change: 2021 Nov 14
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
let s:save_cpo = &cpo
set cpo-=C
setlocal comments=:#
setlocal commentstring=#\ %s
setlocal formatoptions-=t formatoptions+=croql
let b:undo_ftplugin = "setlocal com< cms< fo<"
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "RouterOS Script Files (*.rsc)\t*.rsc\n" ..
\ "All Files (*.*)\t*.*\n"
let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif
let &cpo = s:save_cpo
unlet! s:save_cpo
" vim: nowrap sw=2 sts=2 ts=8 noet:

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin file " Vim filetype plugin file
" Language: Zimbu " Language: Zimbu
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2017 Dec 05 " Last Change: 2021 Nov 12
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
@@ -34,9 +34,11 @@ setlocal errorformat^=%f\ line\ %l\ col\ %c:\ %m,ERROR:\ %m
" When the matchit plugin is loaded, this makes the % command skip parens and " When the matchit plugin is loaded, this makes the % command skip parens and
" braces in comments. " braces in comments.
if exists("loaded_matchit") && !exists("b:match_words")
let b:match_words = '\(^\s*\)\@<=\(MODULE\|CLASS\|INTERFACE\|BITS\|ENUM\|SHARED\|FUNC\|REPLACE\|DEFINE\|PROC\|EQUAL\|MAIN\|IF\|GENERATE_IF\|WHILE\|REPEAT\|WITH\|DO\|FOR\|SWITCH\|TRY\)\>\|{\s*$:\(^\s*\)\@<=\(ELSE\|ELSEIF\|GENERATE_ELSE\|GENERATE_ELSEIF\|CATCH\|FINALLY\)\>:\(^\s*\)\@<=\(}\|\<UNTIL\>\)' let b:match_words = '\(^\s*\)\@<=\(MODULE\|CLASS\|INTERFACE\|BITS\|ENUM\|SHARED\|FUNC\|REPLACE\|DEFINE\|PROC\|EQUAL\|MAIN\|IF\|GENERATE_IF\|WHILE\|REPEAT\|WITH\|DO\|FOR\|SWITCH\|TRY\)\>\|{\s*$:\(^\s*\)\@<=\(ELSE\|ELSEIF\|GENERATE_ELSE\|GENERATE_ELSEIF\|CATCH\|FINALLY\)\>:\(^\s*\)\@<=\(}\|\<UNTIL\>\)'
let b:match_skip = 's:comment\|string\|zimbuchar' let b:match_skip = 's:comment\|string\|zimbuchar'
let b:undo_ftplugin ..= " | unlet! b:match_words b:match_skip"
endif
setlocal tw=78 setlocal tw=78
setlocal et sts=2 sw=2 setlocal et sts=2 sw=2
@@ -135,9 +137,60 @@ iabbr <buffer> <expr> until GCUpperSpace("until")
iabbr <buffer> <expr> while GCUpperSpace("while") iabbr <buffer> <expr> while GCUpperSpace("while")
iabbr <buffer> <expr> repeat GCUpper("repeat") iabbr <buffer> <expr> repeat GCUpper("repeat")
let b:undo_ftplugin ..=
\ " | iunabbr <buffer> alias" ..
\ " | iunabbr <buffer> arg" ..
\ " | iunabbr <buffer> break" ..
\ " | iunabbr <buffer> case" ..
\ " | iunabbr <buffer> catch" ..
\ " | iunabbr <buffer> check" ..
\ " | iunabbr <buffer> class" ..
\ " | iunabbr <buffer> interface" ..
\ " | iunabbr <buffer> implements" ..
\ " | iunabbr <buffer> shared" ..
\ " | iunabbr <buffer> continue" ..
\ " | iunabbr <buffer> default" ..
\ " | iunabbr <buffer> extends" ..
\ " | iunabbr <buffer> do" ..
\ " | iunabbr <buffer> else" ..
\ " | iunabbr <buffer> elseif" ..
\ " | iunabbr <buffer> enum" ..
\ " | iunabbr <buffer> exit" ..
\ " | iunabbr <buffer> false" ..
\ " | iunabbr <buffer> fail" ..
\ " | iunabbr <buffer> finally" ..
\ " | iunabbr <buffer> for" ..
\ " | iunabbr <buffer> func" ..
\ " | iunabbr <buffer> if" ..
\ " | iunabbr <buffer> import" ..
\ " | iunabbr <buffer> in" ..
\ " | iunabbr <buffer> io" ..
\ " | iunabbr <buffer> main" ..
\ " | iunabbr <buffer> module" ..
\ " | iunabbr <buffer> new" ..
\ " | iunabbr <buffer> nil" ..
\ " | iunabbr <buffer> ok" ..
\ " | iunabbr <buffer> proc" ..
\ " | iunabbr <buffer> proceed" ..
\ " | iunabbr <buffer> return" ..
\ " | iunabbr <buffer> step" ..
\ " | iunabbr <buffer> switch" ..
\ " | iunabbr <buffer> sys" ..
\ " | iunabbr <buffer> this" ..
\ " | iunabbr <buffer> throw" ..
\ " | iunabbr <buffer> try" ..
\ " | iunabbr <buffer> to" ..
\ " | iunabbr <buffer> true" ..
\ " | iunabbr <buffer> until" ..
\ " | iunabbr <buffer> while" ..
\ " | iunabbr <buffer> repeat"
if !exists("no_plugin_maps") && !exists("no_zimbu_maps") if !exists("no_plugin_maps") && !exists("no_zimbu_maps")
nnoremap <silent> <buffer> [[ m`:call ZimbuGoStartBlock()<CR> nnoremap <silent> <buffer> [[ m`:call ZimbuGoStartBlock()<CR>
nnoremap <silent> <buffer> ]] m`:call ZimbuGoEndBlock()<CR> nnoremap <silent> <buffer> ]] m`:call ZimbuGoEndBlock()<CR>
let b:undo_ftplugin ..=
\ " | silent! exe 'nunmap <buffer> [['" ..
\ " | silent! exe 'nunmap <buffer> ]]'"
endif endif
" Using a function makes sure the search pattern is restored " Using a function makes sure the search pattern is restored

View File

@@ -4,7 +4,7 @@ For instructions on installing this file, type
`:help matchit-install` `:help matchit-install`
inside Vim. inside Vim.
For Vim version 8.1. Last change: 2021 May 17 For Vim version 8.1. Last change: 2021 Nov 13
VIM REFERENCE MANUAL by Benji Fisher et al VIM REFERENCE MANUAL by Benji Fisher et al

View File

@@ -2,7 +2,7 @@
" "
" Author: Bram Moolenaar " Author: Bram Moolenaar
" Copyright: Vim license applies, see ":help license" " Copyright: Vim license applies, see ":help license"
" Last Change: 2021 Oct 26 " Last Change: 2021 Nov 14
" "
" WORK IN PROGRESS - Only the basics work " WORK IN PROGRESS - Only the basics work
" Note: On MS-Windows you need a recent version of gdb. The one included with " Note: On MS-Windows you need a recent version of gdb. The one included with
@@ -1191,6 +1191,7 @@ func s:GotoAsmwinOrCreateIt()
setlocal nowrap setlocal nowrap
setlocal number setlocal number
setlocal noswapfile setlocal noswapfile
setlocal buftype=nofile
setlocal modifiable setlocal modifiable
let asmbuf = bufnr('Termdebug-asm-listing') let asmbuf = bufnr('Termdebug-asm-listing')
@@ -1273,6 +1274,7 @@ func s:HandleCursor(msg)
exe 'edit ' . fnameescape(fname) exe 'edit ' . fnameescape(fname)
endif endif
endif endif
exe lnum
normal! zv normal! zv
exe 'sign unplace ' . s:pc_id exe 'sign unplace ' . s:pc_id
exe 'sign place ' . s:pc_id . ' line=' . lnum . ' name=debugPC file=' . fname exe 'sign place ' . s:pc_id . ' line=' . lnum . ' name=debugPC file=' . fname

View File

@@ -20,7 +20,7 @@
if &cp || exists("g:loaded_zipPlugin") if &cp || exists("g:loaded_zipPlugin")
finish finish
endif endif
let g:loaded_zipPlugin = "v31" let g:loaded_zipPlugin = "v32"
let s:keepcpo = &cpo let s:keepcpo = &cpo
set cpo&vim set cpo&vim

View File

@@ -5,6 +5,7 @@
" Authored By: Riccardo Casini <ric@libero.it> " Authored By: Riccardo Casini <ric@libero.it>
" Script URL: http://www.vim.org/scripts/script.php?script_id=1239 " Script URL: http://www.vim.org/scripts/script.php?script_id=1239
" ChangeLog: Please visit the script URL for detailed change information " ChangeLog: Please visit the script URL for detailed change information
" Included change from #970.
" Quit when a syntax file was already loaded. " Quit when a syntax file was already loaded.
if exists("b:current_syntax") if exists("b:current_syntax")
@@ -932,7 +933,7 @@ syn match autoitConst "\$SD_POWERDOWN"
" constants - string " constants - string
syn match autoitConst "\$STR_NOCASESENSE" syn match autoitConst "\$STR_NOCASESENSE"
syn match autoitConst "\$STR_CASESENSE" syn match autoitConst "\$STR_CASESENSE"
syn match autoitConst "\STR_STRIPLEADING" syn match autoitConst "\$STR_STRIPLEADING"
syn match autoitConst "\$STR_STRIPTRAILING" syn match autoitConst "\$STR_STRIPTRAILING"
syn match autoitConst "\$STR_STRIPSPACES" syn match autoitConst "\$STR_STRIPSPACES"
syn match autoitConst "\$STR_STRIPALL" syn match autoitConst "\$STR_STRIPALL"

View File

@@ -2,7 +2,8 @@
" Language: GDB command files " Language: GDB command files
" Maintainer: Claudio Fleiner <claudio@fleiner.com> " Maintainer: Claudio Fleiner <claudio@fleiner.com>
" URL: http://www.fleiner.com/vim/syntax/gdb.vim " URL: http://www.fleiner.com/vim/syntax/gdb.vim
" Last Change: 2012 Oct 05 " Last Change: 2021 Nov 15
" Additional changes by Simon Sobisch
" quit when a syntax file was already loaded " quit when a syntax file was already loaded
if exists("b:current_syntax") if exists("b:current_syntax")
@@ -21,19 +22,19 @@ syn match gdbInfo contained "all-registers"
syn keyword gdbStatement contained actions apply attach awatch backtrace break bt call catch cd clear collect commands syn keyword gdbStatement contained actions apply attach awatch backtrace break bt call catch cd clear collect commands
syn keyword gdbStatement contained complete condition continue delete detach directory disable disassemble display down syn keyword gdbStatement contained complete condition continue delete detach directory disable disas[semble] disp[lay] down
syn keyword gdbStatement contained echo else enable end file finish frame handle hbreak help if ignore syn keyword gdbStatement contained echo else enable end file finish frame handle hbreak help if ignore
syn keyword gdbStatement contained inspect jump kill list load maintenance make next nexti ni output overlay syn keyword gdbStatement contained inspect jump kill list load maintenance make next nexti ni output overlay
syn keyword gdbStatement contained passcount path print printf ptype pwd quit rbreak remote return run rwatch syn keyword gdbStatement contained passcount path print printf ptype python pwd quit rbreak remote return run rwatch
syn keyword gdbStatement contained search section set sharedlibrary shell show si signal source step stepi stepping syn keyword gdbStatement contained search section set sharedlibrary shell show si signal skip source step stepi stepping
syn keyword gdbStatement contained stop target tbreak tdump tfind thbreak thread tp trace tstart tstatus tstop syn keyword gdbStatement contained stop target tbreak tdump tfind thbreak thread tp trace tstart tstatus tstop
syn keyword gdbStatement contained tty undisplay unset until up watch whatis where while ws x syn keyword gdbStatement contained tty und[isplay] unset until up watch whatis where while ws x
syn match gdbFuncDef "\<define\>.*" syn match gdbFuncDef "\<define\>.*"
syn match gdbStatmentContainer "^\s*\S\+" contains=gdbStatement,gdbFuncDef syn match gdbStatmentContainer "^\s*\S\+" contains=gdbStatement,gdbFuncDef
syn match gdbStatement "^\s*info" nextgroup=gdbInfo skipwhite skipempty syn match gdbStatement "^\s*info" nextgroup=gdbInfo skipwhite skipempty
" some commonly used abbreviations " some commonly used abbreviations
syn keyword gdbStatement c disp undisp disas p syn keyword gdbStatement c cont p py
syn region gdbDocument matchgroup=gdbFuncDef start="\<document\>.*$" matchgroup=gdbFuncDef end="^end\s*$" syn region gdbDocument matchgroup=gdbFuncDef start="\<document\>.*$" matchgroup=gdbFuncDef end="^end\s*$"

View File

@@ -3,7 +3,8 @@
" Maintainer: Josh Wainwright <wainwright DOT ja AT gmail DOT com> " Maintainer: Josh Wainwright <wainwright DOT ja AT gmail DOT com>
" Last Maintainer: Andrew Rasmussen andyras@users.sourceforge.net " Last Maintainer: Andrew Rasmussen andyras@users.sourceforge.net
" Original Maintainer: John Hoelzel johnh51@users.sourceforge.net " Original Maintainer: John Hoelzel johnh51@users.sourceforge.net
" Last Change: 2020 May 12 " Last Change: 2021 Nov 16
" additional changes from PR #8949
" Filenames: *.gnu *.plt *.gpi *.gih *.gp *.gnuplot scripts: #!*gnuplot " Filenames: *.gnu *.plt *.gpi *.gih *.gp *.gnuplot scripts: #!*gnuplot
" URL: http://www.vim.org/scripts/script.php?script_id=4873 " URL: http://www.vim.org/scripts/script.php?script_id=4873
" Original URL: http://johnh51.get.to/vim/syntax/gnuplot.vim " Original URL: http://johnh51.get.to/vim/syntax/gnuplot.vim
@@ -32,22 +33,22 @@ syn match gnuplotSpecial "\\." contained
" syn match gnuplotSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[a-z\\]" contained " syn match gnuplotSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[a-z\\]" contained
" measurements in the units in, cm and pt are special " measurements in the units in, cm and pt are special
syn match gnuplotUnit "[0-9]+in" syn match gnuplotUnit "\d+in"
syn match gnuplotUnit "[0-9]+cm" syn match gnuplotUnit "\d+cm"
syn match gnuplotUnit "[0-9]+pt" syn match gnuplotUnit "\d+pt"
" external (shell) commands are special " external (shell) commands are special
syn region gnuplotExternal start="!" end="$" syn region gnuplotExternal start="^\s*!" end="$"
" ---- Comments ---- " " ---- Comments ---- "
syn region gnuplotComment start="#" end="$" contains=gnuplotTodo syn region gnuplotComment start="#" end="$" contains=gnuplotTodo,@Spell
" ---- Constants ---- " " ---- Constants ---- "
" strings " strings
syn region gnuplotString start=+"+ skip=+\\"+ end=+"+ contains=gnuplotSpecial syn region gnuplotString start=+"+ skip=+\\"+ end=+"+ contains=gnuplotSpecial,@Spell
syn region gnuplotString start="'" end="'" syn region gnuplotString start="'" end="'" contains=@Spell
" built-in variables " built-in variables
syn keyword gnuplotNumber GNUTERM GPVAL_TERM GPVAL_TERMOPTIONS GPVAL_SPLOT syn keyword gnuplotNumber GNUTERM GPVAL_TERM GPVAL_TERMOPTIONS GPVAL_SPLOT
@@ -76,7 +77,7 @@ syn keyword gnuplotNumber GPVAL_TERM_YSIZE GPVAL_VIEW_MAP GPVAL_VIEW_ROT_X
syn keyword gnuplotNumber GPVAL_VIEW_ROT_Z GPVAL_VIEW_SCALE syn keyword gnuplotNumber GPVAL_VIEW_ROT_Z GPVAL_VIEW_SCALE
" function name variables " function name variables
syn match gnuplotNumber "GPFUN_[a-zA-Z_]*" syn match gnuplotNumber "GPFUN_\h*"
" stats variables " stats variables
syn keyword gnuplotNumber STATS_records STATS_outofrange STATS_invalid syn keyword gnuplotNumber STATS_records STATS_outofrange STATS_invalid
@@ -104,23 +105,23 @@ syn keyword gnuplotError FIT_LAMBDA_FACTOR FIT_LOG FIT_SCRIPT
" integer number, or floating point number without a dot and with "f". " integer number, or floating point number without a dot and with "f".
syn case ignore syn case ignore
syn match gnuplotNumber "\<[0-9]\+\(u\=l\=\|lu\|f\)\>" syn match gnuplotNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
" floating point number, with dot, optional exponent " floating point number, with dot, optional exponent
syn match gnuplotFloat "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=[fl]\=\>" syn match gnuplotFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
" floating point number, starting with a dot, optional exponent " floating point number, starting with a dot, optional exponent
syn match gnuplotFloat "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=[fl]\=\>" syn match gnuplotFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
" floating point number, without dot, with exponent " floating point number, without dot, with exponent
syn match gnuplotFloat "\<[0-9]\+e[-+]\=[0-9]\+[fl]\=\>" syn match gnuplotFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
" hex number " hex number
syn match gnuplotNumber "\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>" syn match gnuplotNumber "\<0x\x\+\(u\=l\=\|lu\)\>"
syn case match syn case match
" flag an octal number with wrong digits by not highlighting " flag an octal number with wrong digits by not highlighting
syn match gnuplotOctalError "\<0[0-7]*[89]" syn match gnuplotOctalError "\<0\o*[89]"
" ---- Identifiers: Functions ---- " " ---- Identifiers: Functions ---- "
@@ -374,8 +375,8 @@ syn keyword gnuplotKeyword nohead nooutliers nowedge off opaque outliers
syn keyword gnuplotKeyword palette pattern pi pointinterval pointsize syn keyword gnuplotKeyword palette pattern pi pointinterval pointsize
syn keyword gnuplotKeyword pointtype ps pt radius range rectangle syn keyword gnuplotKeyword pointtype ps pt radius range rectangle
syn keyword gnuplotKeyword rowstacked screen separation size solid sorted syn keyword gnuplotKeyword rowstacked screen separation size solid sorted
syn keyword gnuplotKeyword textbox transparent units unsorted userstyles syn keyword gnuplotKeyword textbox units unsorted userstyles wedge
syn keyword gnuplotKeyword wedge x x2 xx xy yy syn keyword gnuplotKeyword x x2 xx xy yy
" set surface " set surface
syn keyword gnuplotKeyword surface implicit explicit syn keyword gnuplotKeyword surface implicit explicit
" set table " set table
@@ -477,9 +478,13 @@ syn keyword gnuplotKeyword nooutput
" keywords for 'test' command " keywords for 'test' command
syn keyword gnuplotKeyword terminal palette rgb rbg grb gbr brg bgr syn keyword gnuplotKeyword terminal palette rgb rbg grb gbr brg bgr
" The transparent gnuplot keyword cannot use 'syn keyword' as transparent
" has a special meaning in :syntax commands.
syn match gnuplotKeyword "\<transparent\>"
" ---- Macros ---- " " ---- Macros ---- "
syn match gnuplotMacro "@[a-zA-Z0-9_]*" syn match gnuplotMacro "@\w*"
" ---- Todos ---- " " ---- Todos ---- "

View File

@@ -1,8 +1,8 @@
" Vim syntax file " Vim syntax file
" Language: Lisp " Language: Lisp
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM> " Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Jul 11, 2019 " Last Change: Nov 10, 2021
" Version: 30 " Version: 31
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_LISP " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_LISP
" "
" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols taken from HyperSpec " Thanks to F Xavier Noria for a list of 978 Common Lisp symbols taken from HyperSpec
@@ -553,6 +553,8 @@ syn match lispParenError ")"
syn cluster lispCommentGroup contains=lispTodo,@Spell syn cluster lispCommentGroup contains=lispTodo,@Spell
syn match lispComment ";.*$" contains=@lispCommentGroup syn match lispComment ";.*$" contains=@lispCommentGroup
syn region lispCommentRegion start="#|" end="|#" contains=lispCommentRegion,@lispCommentGroup syn region lispCommentRegion start="#|" end="|#" contains=lispCommentRegion,@lispCommentGroup
syn region lispComment start="#+nil" end="\ze)" contains=@lispCommentGroup
syn match lispComment '^\s*#+nil.*$' contains=@lispCommentGroup
syn keyword lispTodo contained combak combak: todo todo: syn keyword lispTodo contained combak combak: todo todo:
" --------------------------------------------------------------------- " ---------------------------------------------------------------------

View File

@@ -0,0 +1,91 @@
" Vim syntax file
" Language: MikroTik RouterOS Script
" Maintainer: zainin <z@wintr.dev>
" Original Author: ndbjorne @ MikroTik forums
" Last Change: 2021 Nov 14
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
syn case ignore
syn iskeyword @,48-57,-
" comments
syn match routerosComment /^\s*\zs#.*/
" options submenus: /interface ether1 etc
syn match routerosSubMenu "\([a-z]\)\@<!/[a-zA-Z0-9-]*"
" variables are matched by looking at strings ending with "=", e.g. var=
syn match routerosVariable "[a-zA-Z0-9-/]*\(=\)\@="
syn match routerosVariable "$[a-zA-Z0-9-]*"
" colored for clarity
syn match routerosDelimiter "[,=]"
" match slash in CIDR notation (1.2.3.4/24, 2001:db8::/48, ::1/128)
syn match routerosDelimiter "\(\x\|:\)\@<=\/\(\d\)\@="
" dash in IP ranges
syn match routerosDelimiter "\(\x\|:\)\@<=-\(\x\|:\)\@="
" match service names after "set", like in original routeros syntax
syn match routerosService "\(set\)\@<=\s\(api-ssl\|api\|dns\|ftp\|http\|https\|pim\|ntp\|smb\|ssh\|telnet\|winbox\|www\|www-ssl\)"
" colors various interfaces
syn match routerosInterface "bridge\d\+\|ether\d\+\|wlan\d\+\|pppoe-\(out\|in\)\d\+"
syn keyword routerosBoolean yes no true false
syn keyword routerosConditional if
" operators
syn match routerosOperator " \zs[-+*<>=!~^&.,]\ze "
syn match routerosOperator "[<>!]="
syn match routerosOperator "<<\|>>"
syn match routerosOperator "[+-]\d\@="
syn keyword routerosOperator and or in
" commands
syn keyword routerosCommands beep delay put len typeof pick log time set find environment
syn keyword routerosCommands terminal error parse resolve toarray tobool toid toip toip6
syn keyword routerosCommands tonum tostr totime add remove enable disable where get print
syn keyword routerosCommands export edit find append as-value brief detail count-only file
syn keyword routerosCommands follow follow-only from interval terse value-list without-paging
syn keyword routerosCommands return
" variable types
syn keyword routerosType global local
" loop keywords
syn keyword routerosRepeat do while for foreach
syn match routerosSpecial "[():[\]{|}]"
syn match routerosLineContinuation "\\$"
syn match routerosEscape "\\["\\nrt$?_abfv]" contained display
syn match routerosEscape "\\\x\x" contained display
syn region routerosString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=routerosEscape,routerosLineContinuation
hi link routerosComment Comment
hi link routerosSubMenu Function
hi link routerosVariable Identifier
hi link routerosDelimiter Operator
hi link routerosEscape Special
hi link routerosService Type
hi link routerosInterface Type
hi link routerosBoolean Boolean
hi link routerosConditional Conditional
hi link routerosOperator Operator
hi link routerosCommands Operator
hi link routerosType Type
hi link routerosRepeat Repeat
hi link routerosSpecial Delimiter
hi link routerosString String
hi link routerosLineContinuation Special
let b:current_syntax = "routeros"

View File

@@ -6,8 +6,8 @@
" (previously Matt Neumann <mattneu@purpleturtle.com>) " (previously Matt Neumann <mattneu@purpleturtle.com>)
" (previously Allan Kelly <allan@fruitloaf.co.uk>) " (previously Allan Kelly <allan@fruitloaf.co.uk>)
" Original: Robin Becker <robin@jessikat.demon.co.uk> " Original: Robin Becker <robin@jessikat.demon.co.uk>
" Last Change: 2021 Oct 03 " Last Change: 2021 Nov 16
" Version: 1.14 " Version: 1.14 plus improvements from PR #8948
" URL: (removed, no longer worked) " URL: (removed, no longer worked)
" quit when a syntax file was already loaded " quit when a syntax file was already loaded
@@ -192,18 +192,18 @@ syn region tcltkCommand matchgroup=tcltkCommandColor start="\<lsort\>" matchgrou
syn keyword tclTodo contained TODO syn keyword tclTodo contained TODO
" Sequences which are backslash-escaped: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M16 " Sequences which are backslash-escaped: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M16
" Octal, hexadecimal, unicode codepoints, and the classics. " Octal, hexadecimal, Unicode codepoints, and the classics.
" Tcl takes as many valid characters in a row as it can, so \xAZ in a string is newline followed by 'Z'. " Tcl takes as many valid characters in a row as it can, so \xAZ in a string is newline followed by 'Z'.
syn match tclSpecial contained '\\\([0-7]\{1,3}\|x\x\{1,2}\|u\x\{1,4}\|[abfnrtv]\)' syn match tclSpecial contained '\\\(\o\{1,3}\|x\x\{1,2}\|u\x\{1,4}\|[abfnrtv]\)'
syn match tclSpecial contained '\\[\[\]\{\}\"\$]' syn match tclSpecial contained '\\[\[\]\{\}\"\$]'
" Command appearing inside another command or inside a string. " Command appearing inside another command or inside a string.
syn region tclEmbeddedStatement start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement syn region tclEmbeddedStatement start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement
" A string needs the skip argument as it may legitimately contain \". " A string needs the skip argument as it may legitimately contain \".
" Match at start of line " Match at start of line
syn region tclString start=+^"+ end=+"+ contains=@tclSpecialC skip=+\\\\\|\\"+ syn region tclString start=+^"+ end=+"+ contains=@tclSpecialC,@Spell skip=+\\\\\|\\"+
"Match all other legal strings. "Match all other legal strings.
syn region tclString start=+[^\\]"+ms=s+1 end=+"+ contains=@tclSpecialC,@tclVarRefC,tclEmbeddedStatement skip=+\\\\\|\\"+ syn region tclString start=+[^\\]"+ms=s+1 end=+"+ contains=@tclSpecialC,@tclVarRefC,tclEmbeddedStatement,@Spell skip=+\\\\\|\\"+
" Line continuation is backslash immediately followed by newline. " Line continuation is backslash immediately followed by newline.
syn match tclLineContinue '\\$' syn match tclLineContinue '\\$'
@@ -222,12 +222,12 @@ syn match tclNumber "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
"floating point number, without dot, with exponent "floating point number, without dot, with exponent
syn match tclNumber "\<\d\+e[-+]\=\d\+[fl]\=\>" syn match tclNumber "\<\d\+e[-+]\=\d\+[fl]\=\>"
"hex number "hex number
syn match tclNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>" syn match tclNumber "0x\x\+\(u\=l\=\|lu\)\>"
"syn match tclIdentifier "\<[a-z_][a-z0-9_]*\>" "syn match tclIdentifier "\<\h\w*\>"
syn case match syn case match
syn region tclComment start="^\s*\#" skip="\\$" end="$" contains=tclTodo syn region tclComment start="^\s*\#" skip="\\$" end="$" contains=tclTodo,@Spell
syn region tclComment start=/;\s*\#/hs=s+1 skip="\\$" end="$" contains=tclTodo syn region tclComment start=/;\s*\#/hs=s+1 skip="\\$" end="$" contains=tclTodo,@Spell
"syn match tclComment /^\s*\#.*$/ "syn match tclComment /^\s*\#.*$/
"syn match tclComment /;\s*\#.*$/hs=s+1 "syn match tclComment /;\s*\#.*$/hs=s+1

View File

@@ -161,10 +161,13 @@ syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
syn keyword vimCommand contained in syn keyword vimCommand contained in
" Insertions And Appends: insert append {{{2 " Insertions And Appends: insert append {{{2
" (buftype != nofile test avoids having append, change, insert show up in the command window)
" ======================= " =======================
if &buftype != 'nofile'
syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$"" syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$""
syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$"" syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$""
syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$"" syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$""
endif
" Behave! {{{2 " Behave! {{{2
" ======= " =======