mirror of
https://github.com/vim/vim.git
synced 2025-07-24 10:45:12 -04:00
This is a followup to 816fbcc262687b81fc46f82f7bbeb1453addfe0c (patch 9.0.1833: [security] runtime file fixes) It basically disables that external commands are run on loading of the filetype plugin, **unless** the user has set the `g:plugin_exec = 1` global variable in their configuration or for a specific filetype the variable g:<filetype>_exec=1. There are a few more plugins, that may execute system commands like debchangelog, gitcommit, sh, racket, zsh, ps1 but those do at least do not run those commands by default during loading of the filetype plugin (there the command is mostly run as convenience for auto-completion or to provide documentation lookup). closes: #13034 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Tim Pope <vim@tpope.org>
60 lines
1.6 KiB
VimL
60 lines
1.6 KiB
VimL
" Vim filetype plugin
|
|
" Language: awk, nawk, gawk, mawk
|
|
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
|
" Previous Maintainer: Antonio Colombo <azc100@gmail.com>
|
|
" Last Change: 2020 Sep 28
|
|
|
|
" This plugin was prepared by Mark Sikora
|
|
" This plugin was updated as proposed by Doug Kearns
|
|
|
|
" Only do this when not done yet for this buffer
|
|
if exists("b:did_ftplugin")
|
|
finish
|
|
endif
|
|
|
|
" Don't load another plugin for this buffer
|
|
let b:did_ftplugin = 1
|
|
|
|
let s:cpo_save = &cpo
|
|
set cpo&vim
|
|
|
|
setlocal comments=:#
|
|
setlocal commentstring=#\ %s
|
|
setlocal formatoptions-=t formatoptions+=croql
|
|
|
|
setlocal define=function
|
|
setlocal suffixesadd+=.awk
|
|
|
|
let b:undo_ftplugin = "setl fo< com< cms< def< sua<" .
|
|
\ " | unlet! b:browsefilter"
|
|
|
|
" TODO: set this in scripts.vim?
|
|
if exists("g:awk_is_gawk")
|
|
setlocal include=@include
|
|
setlocal suffixesadd+=.gawk
|
|
if has("unix") || has("win32unix")
|
|
setlocal formatprg=gawk\ -f-\ -o/dev/stdout
|
|
let b:undo_ftplugin .= " | setl fp<"
|
|
endif
|
|
|
|
" Disabled by default for security reasons.
|
|
if get(g:, 'awk_exec', get(g:, 'plugin_exec', 0))
|
|
let path = system("gawk 'BEGIN { printf ENVIRON[\"AWKPATH\"] }'")
|
|
let path = substitute(path, '^\.\=:\|:\.\=$\|:\.\=:', ',,', 'g') " POSIX cwd
|
|
let path = substitute(path, ':', ',', 'g')
|
|
|
|
let &l:path = path
|
|
endif
|
|
let b:undo_ftplugin .= " | setl inc< path<"
|
|
endif
|
|
|
|
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
|
let b:browsefilter = "Awk Source Files (*.awk,*.gawk)\t*.awk;*.gawk\n" .
|
|
\ "All Files (*.*)\t*.*\n"
|
|
endif
|
|
|
|
let &cpo = s:cpo_save
|
|
unlet s:cpo_save
|
|
|
|
" vim: nowrap sw=2 sts=2 ts=8
|